我目前正在进行一个自然语言处理的项目。我需要找出一句话中是否有名词。如何使用spacy实现这一功能?
我目前正在进行一个自然语言处理的项目。我需要找出一句话中是否有名词。如何使用spacy实现这一功能?
解决方案1:
import spacy
nlp = spacy.load('en_core_web_sm')
doc = nlp(u'hello india how are you?')
print(len([np.text for np in doc.noun_chunks])>0)
解决方案2:
import spacy
nlp = spacy.load('en_core_web_sm')
doc = nlp(u'hello india how are you?')
print(len([token.pos_ for token in doc if token.pos_=="NOUN"])>0)
True
,但第二个解决方案返回False
。以下代码可以修复它。"India" 被评估为专有名词,因此布尔逻辑需要包括 "NOUN" 或 "PROPN" 中的任一项。print(len([token.pos_ for token in doc if token.pos_=="NOUN" or "PROPN"])>0)
- datajoel