пространная лемматизация несоответствия с таблицей lemma_lookup - PullRequest
0 голосов
/ 09 апреля 2020

Кажется, что существует несогласованность при итерации по пространственному документу и лемматизации токенов по сравнению с поиском леммы слова в таблице Vocab lemma_lookup.

nlp = spacy.load("en_core_web_lg")
doc = nlp("I'm running faster")
for tok in doc: 
  print(tok.lemma_)

Это выводится "быстрее", как лемма для токена «быстрее» вместо «быстро». Однако токен существует в таблице lemma_lookup.

nlp.vocab.lookups.get_table("lemma_lookup")["faster"]

, которая выводит "fast"

Я что-то не так делаю? Или есть другая причина, почему эти два отличаются? Может быть, мои определения неверны, и я сравниваю яблоки с апельсинами?

Я использую следующие версии в Ubuntu Linux: spacy == 2.2.4 spacy-lookups-data == 0.1.0

1 Ответ

1 голос
/ 09 апреля 2020

С такой моделью, как en_core_web_lg, которая включает тегер и правила для лемматизатора на основе правил, она предоставляет леммы на основе правил, а не леммы поиска, когда POS-теги доступны для использования с правилами. Леммы поиска в целом невелики и используются только в качестве резервной копии, если модель / конвейер не имеет достаточно информации для предоставления основанных на правилах лемм.

При faster тег POS равен ADV, который оставлен как есть по правилам. Если бы он был помечен как ADJ, лемма была бы fast с текущими правилами.

Лемматизатор пытается предоставить лучшие леммы, которые он может, не требуя от пользователя каких-либо настроек, но он также не очень настраиваемый прямо сейчас (v2.2). Если вы хотите запустить теггер, но у вас есть леммы поиска, вам придется заменить леммы после запуска теггера.

...