【问题标题】:Grammar check using NLP [duplicate]使用 NLP 进行语法检查 [重复]
【发布时间】:2017-10-16 07:30:49
【问题描述】:

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

【问题讨论】:

    标签: python machine-learning nlp nltk


    【解决方案1】:

    检查此代码。使用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”的单个标签组合在一起。您可以根据您的要求定义此结构。我希望它有所帮助。

    【讨论】:

      【解决方案2】:

      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
      

      【讨论】:

        猜你喜欢
        • 2012-01-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-06-27
        • 2015-11-17
        • 2022-01-19
        • 2013-01-02
        相关资源
        最近更新 更多