Spacy NLP: Для имен собственных, которые могут быть глаголами - Неопределенности в соответствии с порядком ввода и деление на пунктуацию - PullRequest
2 голосов
/ 07 ноября 2019

Я использую Spacy NLP. Ни один синтаксический анализатор не всегда может правильно определить статус PROPN / NOUN / VERB неоднозначного токена, поскольку в большинстве языков слово, написанное одинаково, может иметь разные значения.

Например, «Encounter» может быть Encounter в терминахинопланетяне сажают вас в свой космический корабль (Существительное, вхождение) или «Встреча», как «Встреча с миром» -> вступают в контакт с (Глагол).

Spacy иногда идентифицирует одно и то же написанное слово по-разномудаже в подобных ситуациях: Even with the same format of sentence, spacy changes how it identifies proper noun vs verb

Это пунктуация ("="?), которая вызывает это?

Я ожидал непрерывной идентификации токенакак глагол или существительное, но не для изменения. Я понимаю, что использование обученных пространственных данных (с использованием en_small и en_medium) не использует LSTM по мере продвижения, поэтому я не должен ожидать, что spacy "установит преемственность из-за предыдущего решения в том же предложении", но я все еще удивлен, учитывая то же предложениеформат, а также идентичный контент, spacy определяет по-разному ..

Встреча с миром. Встреча с собой "и" Встреча с миром = Встреча с самим собой => разбирает VERB, NOUN соответственно

Irregardless of punctuation used, Encounter is identified as

"Встреча с самим собой. Встреча с миром. "

=> парсит VERB, VERB.

" Encounter the self "

=> парсит VERB

1 Ответ

0 голосов
/ 08 ноября 2019

Убедитесь, что вы используете актуальную версию spacy и современную модель, такую ​​как en_core_web_lg.

На моей установке я не получаю описанную вами ошибку:

nlp = spacy.load('en_core_web_lg')

doc = nlp("Encounter the world=Encounter the self.")
print([(t, t.pos_) for t in doc])
# [(Encounter, 'VERB'), (the, 'DET'), (world, 'NOUN'), (=, 'PUNCT'), (Encounter, 'VERB'), (the, 'DET'), (self, 'NOUN'), (., 'PUNCT')]

Моя версия spacy:

print(spacy.__version__)
# 2.2.1
...