Ответ на ваш вопрос сложнее, чем я думал, но сейчас я объясню это подробно.
Лемматизация SpaCy обычно выполняется на основе таблицы поиска.Это означает, что он не зависит от компонентов конвейера и его лемматизация происходит перед конвейером.Тем не менее, английский язык и греческий язык разработаны таким образом, что лемматизация на основе правил может выполняться при наличии тега pos.Это означает, что если тегер включен, то мы можем воспользоваться POS-тегом, чтобы найти лучшую лемму, соответствующую слову, основанную на его теге.В этом случае лемматизация происходит сразу после компонента конвейера tagger.
Вкратце, если tagger отключен, мы следуем статической процедуре лемматизации на основе таблицы поиска, которая сопоставляет слова с их леммами, и лемматизация происходит до того, как любой компонент конвейера,В отличие от этого, когда тегер включен, процедура лемматизации основана на правилах и зависит от тега POS, поэтому это происходит после тегера.Я повторяю, что этот случай может произойти только для определенных языков, которые поддерживают лемматизацию на основе правил, таких как английский и греческий язык.
Пример кода:
import spacy
nlp = spacy.load('en')
nlp.remove_pipe('parser')
# uncommenting the following line means we go to rule based lemmatization
# nlp.remove_pipe('tagger')
nlp.remove_pipe('ner')
doc = nlp('those are random words')
for token in doc:
print(token.lemma_)
Вывод с закомментированной строкой:случайное слово
Вывод со строкой без комментария: это будет случайное слово
Надеюсь, оно теперь прояснено.