【发布时间】:2018-01-30 03:38:43
【问题描述】:
输入:巴拉克奥巴马是总统
(欲望)输出:谁是总统?
问题是SpaCy虽然将巴拉克奥巴马识别为一个人,但在前期对文字进行分词时,巴拉克奥巴马已经被分成了两个词,即:“Barack”和“Obama”
附上我的示例代码:
import spacy
from nltk import word_tokenize
nlp = spacy.load('en_core_web_sm')
text = 'Barack Obama is the President'
BreakText = word_tokenize(text)
document = nlp(text)
person = []
for ent in document.ents:
if ent.label_ == 'PERSON':
person.append(ent)
k = person[0]
j = BreakText.index(str(k))
BreakText[j] = 'Who'
Final = " ".join(BreakText)
print(Final + "?")
或者还有其他方法可以得到我想要的输出吗?
更新:这行得通!
k = person[0]
o = text.replace(str(k), 'Who')
print(o + "?")
【问题讨论】:
-
Barak 和 Obama 是两个不同的词,所以也许用词来标记不是你想要的?看起来这会让你的令牌成为短语。
标签: python named-entity-recognition spacy