使用NLP进行语法检查

时间:2017-10-16 07:30:50

标签: python machine-learning nlp nltk

我想检查句子是否具有特定的词性标记结构。我可以使用python自然语言工具包吗?如果是这样,怎么样?

2 个答案:

答案 0 :(得分:0)

检查此代码。使用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)与一个名为&#34; NP&#34;的单个标记组合在一起。在我们的语法中定义。您可以根据自己的要求定义此结构。我希望它有所帮助。

答案 1 :(得分:-1)

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