【发布时间】:2019-09-25 02:20:26
【问题描述】:
我想找出句子的意图,我需要找出所指的实体代词。
考虑这个例子
我的名字是鲁沙布。我住在浦那。
在第二句中,“我”指的是 Rushabh。如何使用python找到它。
【问题讨论】:
我想找出句子的意图,我需要找出所指的实体代词。
考虑这个例子
我的名字是鲁沙布。我住在浦那。
在第二句中,“我”指的是 Rushabh。如何使用python找到它。
【问题讨论】:
我正在研究类似的问题,它与推文有关。该人包含多个人称引用,我需要找到哪个代词是为谁而存在的,以便我可以将其替换为名词,从而对情绪进行相应的分类。
import spacy
nlp = spacy.load('en')
sent = "Modi is a great leader.He has made India proud. Rahul Gandhi is naive . He is not fit to be prime minister."
doc=nlp(sent)
sub_toks = [tok for tok in doc if ((tok.dep_ == "nsubj") )]
print(sub_toks)
nc= [x for x in doc.noun_chunks]
print(nc)
l=[]
for i,token in enumerate(doc):
if token.pos_ in ('PROPN','PRON'):
l.append([token.text,i,token.pos_])
这给了我一个所需细节的列表,但我仍然需要找到一种方法来以更少的计算方式实现我的想法,因为我有超过 50K 的推文,而且每个句子的多个循环需要很长时间。
【讨论】:
通常,大多数启发式应用程序在给定堆栈中使用某种焦点。堆栈是可能被照应引用的实体列表(照应解析是您在此处触及其表面的主题)。这个列表包含名词、代词和抽象实体,如事件等。撇开抽象照应,这是所有这些应用领域中最复杂的,你检查焦点候选人的一致性(人称和数字的语法一致性)(最最近或在堆栈中突出)和堆栈的其余部分从最近的倒数开始,以匹配最佳。不要忘记更新堆栈,即删除随后未引用的实体。 得到不好的结果是很正常的,因为这仍然是一个活跃的研究领域,没有任何应用程序可以为您提供完美的召回率和准确率。如果你得到 70% 的正确率,你就已经算成功了。
如果您需要更高的精度,请尝试查找有关照应分辨率的语料库来训练机器学习模型。无论如何,今天它更受欢迎和有前途,尤其是在学习上述启发式方法时。
【讨论】:
在 NLP 中,它被称为共同引用解析。 python中有一个名为neuralcoref的包。 git.
【讨论】:
这是一个相当模糊的问题,但您可以在自然语言处理中搜索 POS(词性)标记。 Here 就是一个例子。
【讨论】: