Кажется, есть проблема с сингуляризацией существительного с spacy в немецком языке. Пространство, кажется, полагается на слова, которые должны быть написаны с заглавной буквы, чтобы признать их как существительные. Пример:
import spacy
nlp = spacy.load("C:\\Users\\somepath\\spacy\\de_core_md\\de_core_news_md\\de_core_news_md-2.2.5")
def lemmatize_text(text):
"""returns the text with each word in its basic form"""
doc = nlp(text)
return [word.lemma_ for word in doc]
lemmatize_text('Das Wort Tests wird erkannt. Allerdings werden tests nicht erkannt')
--> ['der', 'Wort', 'Test', 'werden', 'erkennen', '.', 'Allerdings', 'werden', 'tests', 'nicht', 'erkennen']
# should say 'Test' for both sentences
Это не было бы проблемой, если бы я сразу же использовал лемматизацию исходного текста. Однако моя предварительная обработка выглядит следующим образом:
- поворот в нижний регистр
- удаление пунктуации
- удаление стоп-слов
- лемматизация
Есть ли рекомендуемый порядок выполнения вышеуказанных шагов?
Я не лемматизирую первым, потому что слова в начале предложения не распознаются правильно:
lemmatize_text('Größer wird es nicht mehr. größer wird es nicht mehr.')
--> ['Größer', 'werden', 'ich', 'nicht', 'mehr', '.', 'groß', 'werden', 'ich', 'nicht', 'mehr', '.']
# should say 'groß' for both sentences