在 spaCY 中识别 "it" 个主题
recognize "it" subject in spaCY
大家好,我最近发现 spaCY 是一种识别句子中语法的有趣方法,我尝试了一些简单的方法并且它有效,但是当我尝试让它识别短句中的 "it" 主语时,它效果不是很好,有没有办法提高准确性?我说的句子是 "do you like it?",在这种情况下 "it" 是真正的主题。当我启动程序时,spaCY 将 "you" 识别为主题,而不是 "it"。
避免这种情况的好方法是什么"errors"?这是简单的代码:
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?
主题 - 正如 Spacy 告诉您的那样 - 是单词 "you"。单词 "it" 是动词 "like" 的 宾语 。您可能需要浏览 Wiki page for subject and the Wiki 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'
处寻找令牌。如果您还需要间接对象,您还可以检查 'iobj'
。您可以阅读更多关于这些依赖项的作用 here.
大家好,我最近发现 spaCY 是一种识别句子中语法的有趣方法,我尝试了一些简单的方法并且它有效,但是当我尝试让它识别短句中的 "it" 主语时,它效果不是很好,有没有办法提高准确性?我说的句子是 "do you like it?",在这种情况下 "it" 是真正的主题。当我启动程序时,spaCY 将 "you" 识别为主题,而不是 "it"。
避免这种情况的好方法是什么"errors"?这是简单的代码:
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?
主题 - 正如 Spacy 告诉您的那样 - 是单词 "you"。单词 "it" 是动词 "like" 的 宾语 。您可能需要浏览 Wiki page for subject and the Wiki 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'
处寻找令牌。如果您还需要间接对象,您还可以检查 'iobj'
。您可以阅读更多关于这些依赖项的作用 here.