【发布时间】:2017-10-16 07:30:49
【问题描述】:
我想检查一个句子是否有特定的词性标签结构。我可以使用 python 自然语言工具包吗?如果有,怎么做?
【问题讨论】:
标签: python machine-learning nlp nltk
我想检查一个句子是否有特定的词性标签结构。我可以使用 python 自然语言工具包吗?如果有,怎么做?
【问题讨论】:
标签: python machine-learning nlp nltk
检查此代码。使用python中的NLTK包,您可以定义
import nltk
sentence = "I want to check if a sentence has a specific parts of speech tag structure."
tagged = nltk.pos_tag(nltk.word_tokenize(sentence))
grammar = r"""
NP:
{<NNS><IN><NN><NN><NN>}
{<PRP><VBP>}
"""
cp = nltk.RegexpParser(grammar)
result = cp.parse(tagged)
print result
结果会是这样的
(S
(NP I/PRP want/VBP)
to/TO
check/VB
if/IN
a/DT
sentence/NN
has/VBZ
a/DT
specific/JJ
(NP parts/NNS of/IN speech/NN tag/NN structure/NN)
./.)
如您所见,它给出了 nltk 树作为输出,其中(NP parts/NNS of/IN speech/NN tag/NN structure/NN) 与我们语法中定义的称为“NP”的单个标签组合在一起。您可以根据您的要求定义此结构。我希望它有所帮助。
【讨论】:
spaCy 是一个易于使用的 NLP 和 POS 标记界面。您可以使用spaCy 轻松提取词性。下面截取的代码来自他们的网站(稍作调整,仅查看 POS):
import spacy
nlp = spacy.load('en')
doc = nlp(u'They told us to duck.')
for word in doc:
print(word, word.tag, word.tag_, word.pos, word.pos_)
这会返回:
They 479 PRP 93 PRON
told 489 VBD 98 VERB
us 479 PRP 93 PRON
to 486 TO 92 PART
duck 474 NN 90 NOUN
. 453 . 95 PUNCT
【讨论】: