Я хочу сообщить тему каждого предложения;а также извлечь все его модификаторы.(Например, «Дональд Трамп» не просто «Трамп»; «(Средний) оставшийся срок аренды», а не просто «срок».)
Вот мой тестовый код:
import spacy
nlp = spacy.load('en_core_web_sm')
def handle(doc):
for sent in doc.sents:
shownSentence = False
for token in sent:
if(token.dep_=="nsubj"):
if(not shownSentence):
print("----------")
print(sent)
shownSentence = True
print("{0}/{1}".format(token.text, token.tag_))
print([ [t,t.tag_] for t in token.children])
handle(nlp('Donald Trump, legend in his own lifetime, said: "This transaction is a continuation of our main strategy to invest in assets which offer growth potential and that are coloured pink." The average remaining lease term is six years, and Laura Palmer was killed by Bob. Trump added he will sell up soon.'))
выход ниже.Мне интересно, почему я получаю "который / WDT" в качестве темы?Это просто шум модели, или это считается правильным поведением?(Между прочим, в моем реальном предложении, которое имело ту же структуру, я также получил «тот / WDT», помеченный как предмет.) ( ОБНОВЛЕНИЕ: Если я переключаюсь на 'en_core_web_md', тогда я получите get "that / WDT" для моего примера Трампа, это единственное отличие, которое дает переключение с маленькой на среднюю модель.)
Я могу легко отфильтровать их, посмотрев на tag_
;Меня больше интересует основная причина.
( ОБНОВЛЕНИЕ: Между прочим, "Лаура Палмер" не выделяется в качестве субъекта этим кодом, как значение dep_
это «nsubjpass», а не «nsubj».)
----------
Donald Trump, legend in his own lifetime, said: "This transaction is a continuation of our main strategy to invest in assets which offer growth potential and that are coloured pink."
Trump/NNP
[[Donald, 'NNP'], [,, ','], [legend, 'NN'], [,, ',']]
transaction/NN
[[This, 'DT']]
which/WDT
[]
----------
The average remaining lease term is six years, and Laura Palmer was killed by Bob.
term/NN
[[The, 'DT'], [average, 'JJ'], [remaining, 'JJ'], [lease, 'NN']]
----------
Trump added he will sell up soon.
Trump/NNP
[]
he/PRP
[]
(Кстати, большая картинка: разрешение местоимения. Я хочу превратить PRP в текст, к которому они относятся.)