NLTK:使用简单的语法和词性标签解析句子

时间:2015-02-27 21:29:01

标签: python parsing nltk grammar

对于像“这是一个简单的句子”这样的句子,它已被标记为:

[('This', 'DT'), ('is', 'VBZ'), ('a', 'DT'), ('simple', 'JJ'), ('sentence', 'NN')]

使用以下语法:

    my_grammar = nltk.CFG.fromstring("""
... S -> DP VP
... DP -> Det NP
... NP -> Adj N
... VP -> V DP
... Det -> 'DT'
... N -> 'NN'
... V -> 'VBZ'
... Adj -> 'JJ'
... """)

如何输出树结构。我试图使用词性标记代替已标记的单词,但仍然在树中显示单词本身以获得类似于:

    (S
     (DP This)
     (VP
      (V is)
      (DP (Det a)
       (NP
        (Adj simple) (N sentence))))
编辑:我已经尝试了答案here,但是当我开始使用命令时:

for tree in parser.parse(pos_tags):
...     print(tree)

没有返回任何内容

1 个答案:

答案 0 :(得分:0)

我想说,如果你使用上面的语法来解析给定的句子,那么解析器将不会返回任何内容,因为没有语法规则匹配最初的ThisDT短语。

您可以添加规则:DP -> Det