Как получить все существительные фразы в Spacy (Python) - PullRequest
2 голосов
/ 10 марта 2019

Я хотел бы извлечь "все" из существительных фраз из предложения. Мне интересно, как я могу это сделать. У меня есть следующий код:

doc2 = nlp("what is the capital of Bangladesh?")
for chunk in doc2.noun_chunks:
    print(chunk)

Выход:

1. what

2. the capital

3. bangladesh

Ожидаемое:

столица Бангладеш

Я пробовал ответы от spacy doc и StackOverflow. Ничего не получалось. Кажется, только cTakes и Stanford core NLP могут дать такой сложный NP.

Любая помощь приветствуется.

Ответы [ 2 ]

1 голос
/ 10 марта 2019

Spacy четко определяет существительный кусок как:

Базовая именная фраза, или «NP chunk», является именной фразой, которая не позволяет другим NP быть вложенными в нее - так что никакой NP-уровневая координация, без предложных фраз и без относительных предложений. "(https://spacy.io/api/doc#noun_chunks)

Если вы обрабатываете анализ зависимости по-разному, позволяя использовать модификаторы предложения и вложенные фразы / куски, то вы можете получитьто, что вы ищете.

Могу поспорить, что вы можете довольно легко изменить существующий пространственный код, чтобы сделать то, что вы хотите:

https://github.com/explosion/spaCy/blob/06c6dc6fbcb8fbb78a61a2e42c1b782974bd43bd/spacy/lang/en/syntax_iterators.py

0 голосов
/ 06 мая 2019

Для тех, кто все еще ищет этот ответ

noun_pharses=set()    
for nc in doc.noun_chunks:
    for np in [nc, doc[nc.root.left_edge.i:nc.root.right_edge.i+1]]:
       noun_pharses.add(np)

Вот как я получаю всю сложную именную фразу

...