我一直在试用Python NLTK Book中的一些例子。例如,第7章用这个例子讨论了Chinking:
grammar = r"""
NP:
{<.*>+} # Chunk everything
}<VBD|IN>+{ # Chink sequences of VBD and IN
"""
sentence = [("the", "DT"), ("little", "JJ"), ("yellow", "JJ"),
("dog", "NN"), ("barked", "VBD"), ("at", "IN"), ("the", "DT"), ("cat", "NN")]
cp = nltk.RegexpParser(grammar)
result = cp.parse(sentence)
据我说,这应该从结果中删除“吠叫”。但事实并非如此。我是python和nltk的新手,但我在这里缺少什么?有什么明显的东西需要在这里更新吗?感谢..
答案 0 :(得分:0)
chunking会创建块,而chinking会破坏这些块。
这正是Jacob Perkins所说的“使用NLTK 2.0 Cookbook进行Python文本处理”(我建议你这本书,因为你是NLTK的新手)。
这意味着{}会创建一些块并且} {将这些块拆分为较小的块(即将它们分开)但不会删除任何内容。
根据你的例子,看看显示什么
result.draw()
或者运行
from nltk.tree import Tree
Tree('S', [Tree('NP', [('the', 'DT'), ('little', 'JJ'), ('yellow', 'JJ'), ('dog', 'NN')]), ('barked', 'VBD'), ('at', 'IN'), Tree('NP', [('the', 'DT'), ('cat', 'NN')])]).draw()
(上面的代码示例显示了相同的东西。不同之处在于,第一个示例需要您运行初始示例,而第二个示例不需要任何内容)