NLTK:使用简单语法和词性标记解析句子
NLTK: Parsing sentences using a simple grammar and part of speech tags
对于像 "This is a simple sentence" 这样的句子,它的词性被标记为:
[('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)
没有返回任何内容
我会说,如果你使用上面的语法来解析给定的句子,解析器将 return 什么都没有,因为没有语法规则匹配初始 This
到 DT
短语。
您可以添加规则:DP -> Det
对于像 "This is a simple sentence" 这样的句子,它的词性被标记为:
[('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)
没有返回任何内容
我会说,如果你使用上面的语法来解析给定的句子,解析器将 return 什么都没有,因为没有语法规则匹配初始 This
到 DT
短语。
您可以添加规则:DP -> Det