Поиск конкретных токенов, участвующих в экземплярах coref - Spacy и Neuralcoref - PullRequest
0 голосов
/ 05 февраля 2019

Я ищу подходящий способ поиска случаев, когда определенные местоимения использовались в экземплярах контрольных точек в некоторых документах, на которые я смотрю.У меня проблемы с памятью, и это заставляет меня думать, что я делаю это не очень экономно, но я также не уверен, правильно ли я поступаю.Идея состоит в том, чтобы на данный момент идентифицировать все его экземпляры, а они - в экземплярах контрольных точек, но я, возможно, захочу расширить это.Затем я хочу заменить все эти примеры на ключевое слово coreference.

В данный момент мой код выглядит следующим образом:

import spacy
import neuralcoref
import en_coref_md
import os

nlp_en = en_coref_md.load()
path = './input_zenodo/'
filelist = os.listdir(path)

for file in filelist:
    try:
        file = open(path+file).read()
        doc = nlp_en(file)
        is_pronoun = 'it' 
    except MemoryError:
        print('MemoryError:'+file+'\n')  

    for token in doc:
        if token.text == is_pronoun:
                print(token._.in_coref)
                print(token._.coref_clusters)

Если кто-то может дать совет относительно потенциальноЯ был бы очень признателен за более экономичные способы сделать это, или совет относительно того, как заменить только эти ключевые кластеры в документе.

1 Ответ

0 голосов
/ 07 февраля 2019

Если вы просто хотите заменить каждую ссылку на ее заголовок, для этого есть встроенный атрибут coref_resolved для этого в neuralcoref:

import spacy
nlp = spacy.load('en_coref_lg')
text = "Rufus is my dog. He is a good boy."
doc = nlp(text)

print(doc._.coref_resolved)

возвращает

"Rufus is my dog. Rufus is a good boy."

Код, который его реализует, здесь , и это похоже на то место, где его можно изменить, если вы действительно хотите разрешить местоимения, а не все corefs.

...