Есть ли способ получить весь кусок существительного, используя корневой токен в spaCy? - PullRequest
0 голосов
/ 22 марта 2019

Я очень новичок в использовании spaCy.Я часами читаю документацию и все еще растерялся, если можно сделать то, что у меня есть в моем вопросе.В любом случае ...

Как видно из заголовка, есть ли способ на самом деле получить данный кусок существительного, используя содержащий его токен.Например, с учетом предложения:

"Autonomous cars shift insurance liability toward manufacturers"

Можно ли получить кусок существительного "autonomous cars", когда у меня есть только токен "cars"?Вот пример фрагмента сценария, к которому я пытаюсь пойти.

startingSentence = "Autonomous cars and magic wands shift insurance liability toward manufacturers"
doc = nlp(startingSentence)
noun_chunks = doc.noun_chunks

for token in doc:
    if token.dep_ == "dobj":
        print(child) # this will print "liability"

        # Is it possible to do anything from here to actually get the "insurance liability" token?

Любая помощь будет принята с благодарностью.Спасибо!

1 Ответ

2 голосов
/ 23 марта 2019

Вы можете легко найти кусок существительного, который содержит идентифицированный вами токен, проверив, находится ли токен в одном из диапазонов фрагмента существительного:

doc = nlp("Autonomous cars and magic wands shift insurance liability toward manufacturers")
interesting_token = doc[7] # or however you identify the token you want
for noun_chunk in doc.noun_chunks:
    if interesting_token in noun_chunk:
        print(noun_chunk)

Вывод неправильный с en_core_web_sm и spacy 2.0.18, потому что shift не идентифицируется как глагол, поэтому вы получаете:

страховая ответственность смены волшебных палочек

С en_core_web_md это правильно:

страховая ответственность

(Имеет смысл включать примеры с реальной неопределенностью в документацию, потому что это реалистичный сценарий (https://spacy.io/usage/linguistic-features#noun-chunks),), но для новых пользователей сбивает с толку, если они достаточно неоднозначны, так что анализ нестабилен по версиям / моделям. )

...