Вам нужно обработать документ, используя разные реплики, чтобы извлечь общие глаголы, используемые для описания предмета, а также вам нужно разбить строку, если у вас есть несколько слов для поиска. Например, для Билла Гейтса вам нужно будет искать комбинации «Билл», «Гейтс», «Билл Гейтс» и извлекать различные глаголы базовых сигналов, используемые для описания человека / объекта интереса.
Так, например, поиск «Gates»:
statments = textacy.extract.semistructured_statements(document, "Gates", cue = 'have', max_n_words = 200, )
даст вам больше таких вещей, как:
* entity: Gates , cue: had , fact: primary responsibility for Microsoft's product strategy from the company's founding in 1975 until 2006
* entity: Gates , cue: is , fact: notorious for not being reachable by phone and for not returning phone calls
* entity: Gates , cue: was , fact: the second wealthiest person behind Carlos Slim, but regained the top position in 2013, according to the Bloomberg Billionaires List
* entity: Bill , cue: were , fact: the second-most generous philanthropists in America, having given over $28 billion to charity
* entity: Gates , cue: was , fact: seven years old
* entity: Gates , cue: was , fact: the guest on BBC Radio 4's Desert Island Discs on January 31, 2016, in which he talks about his relationships with his father and Steve Jobs, meeting Melinda Ann French, the start of Microsoft and some of his habits (for example reading The Economist "from cover to cover every week
* entity: Gates , cue: was , fact: the world's highest-earning billionaire in 2013, as his net worth increased by US$15.8 billion to US$78.5 billion
Обратите внимание, что глаголы могут быть отрицательными, как в результат 2!
Я также отметил, что использование max_n_words с более чем 20 словами по умолчанию может привести к более интересным операторам.
Вот мой полный сценарий:
import wikipedia
import spacy
import textacy
import en_core_web_sm
subject = 'Bill Gates'
#The Wikipedia Page
wikiResults = wikipedia.search(subject)
#print("wikiResults:", wikiResults)
wikiPage = wikipedia.page(wikiResults[0]).content
print("\n\nwikiPage:", wikiPage, "'\n")
nlp = en_core_web_sm.load()
document = nlp(wikiPage)
uniqueStatements = set()
for word in ["Gates", "Bill", "Bill Gates"]:
for cue in ["be", "have", "write", "talk", "talk about"]:
statments = textacy.extract.semistructured_statements(document, word, cue = cue, max_n_words = 200, )
for statement in statments:
uniqueStatements.add(statement)
print("found", len(uniqueStatements), "statements.")
for statement in uniqueStatements:
entity, cue, fact = statement
print("* entity:",entity, ", cue:", cue, ", fact:", fact)
Разные предметы и глагол cues дают мне 23 результата вместо одного.