问题是虽然SpaCy认为巴拉克奥巴马是一个人,但是在早期阶段对巴拉克奥巴马进行说明时,巴拉克奥巴马已被分成两个词,即:"巴拉克"和#34;奥巴马"输入:巴拉克奥巴马是总统
(欲望)输出:谁是总统?
附件是我的示例代码:
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 + "?")
答案 0 :(得分:0)
您正在描述命名实体识别(NER),而不是标记化。
nltk文档中的第7章描述了NER如何从标记化,部分语音标记到实体识别向前迈出几步。
http://www.nltk.org/book/ch07.html
nltk.ne_chunk()
很可能是您感兴趣的功能。
答案 1 :(得分:0)
Spacy会使用ent.text
给您实体的全文。