python - 识别 spaCY 中的 "it"主题

标签 python machine-learning artificial-intelligence spacy recurrent-neural-network

大家好,我最近发现 spaCY 是一种识别句子中语法的有趣方法,我尝试了一些简单的方法并且它有效,但是当我尝试让它识别短句中的“it”主语时,它不起作用很好,请问有什么办法可以提高准确率吗?我说的这句话是“你喜欢吗?”在这种情况下,“it”是真正的主语。当我启动程序时,spaCY 将“您”识别为主题,而不是“它”。

有什么好方法可以避免这种“错误”?这是简单的代码:

import spacy

sentence = input('insert sentence: \n\n')
nlp = spacy.load('en')
sent = sentence
doc=nlp(sent)

sub_toks = [tok for tok in doc if (tok.dep_ == "nsubj") ]

print(sub_toks) 
print()

最佳答案

这实际上不是一个 Spacy 问题,而是一个语法问题。在句子中

Do you like it?

正如斯佩西告诉你的那样,主题是“你”这个词。 “it”这个词是动词“like”的宾语。您可能想浏览 Wiki page for subjectWiki page for object .

如果您正在寻找一个以“it”为主语的句子,Spacy 可以帮助您。

sent = nlp("it is very good")
for token in sent:
    print(token, token.dep_)

>> it nsubj
>> is ROOT
>> very advmod
>> good acomp

在这种情况下,Spacy 正确报告“it”是名义主语,并且 token.dep 等于 'nsubj'。相反,如果您真正想要的是直接对象,那么正如您从以下输出中看到的:

sent = nlp("do you like it")
for token in sent:
    print(token, token.dep_)

>> do aux
>> you nsubj
>> like ROOT
>> it dobj

您应该寻找 token.dep_ == 'dobj' 的 token 。如果您还需要间接对象,还可以检查 'iobj'。您可以阅读有关这些依赖项的作用的更多信息 here .

关于python - 识别 spaCY 中的 "it"主题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48301802/

相关文章:

python - 描述符 'join' 需要一个 'unicode' 对象,但收到一个 'str'

python - 如何将函数输出添加到文本文件中?

推荐系统 - 将交易计数转换为星级评级

java - BFS 不知情的搜索问题

algorithm - Prolog 程序的意外行为

python - 将列表的列表转换为字典的字典

python - 在 AWS Lambda 函数上执行 Python 脚本时出现问题

machine-learning - SKlearn (scikit-learn) 用于回归的多元特征选择

python - 属性错误: object has no attribute '_lazy_read'

artificial-intelligence - 如何从 COCO 数据集中过滤类?