
[英]How to create a function in nltk to generate aspect of a verb in a sentence?
[英]How to generate multiple parse trees for an ambiguous sentence in NLTK?
我在Python中有以下代码。
sent = [("very","ADJ"),("colourful","ADJ"),("ice","NN"),("cream","NN"),("van","NN")]
patterns= r"""
NP:{<ADJ>*<NN>+}
"""
NPChunker=nltk.RegexpParser(patterns) # create chunk parser
for s in NPChunker.nbest_parse(sent):
print s.draw()
输出是:
(S (NP very/ADJ colourful/ADJ ice/NN cream/NN van/NN))
但是输出应该有另外2个解析树。
(S (NP very/ADJ colourful/ADJ ice/NN) (NP cream/NN) (NP van/NN))
(S (NP very/ADJ colourful/ADJ ice/NN cream/NN) van/NN)
问题是RegexpParser只采用了第一个正则表达式。 如何一次生成所有可能的解析树?
RegexpParser类无法实现这一点。 它从ParserI接口继承了nbest_parse方法,并查看源代码( https://github.com/nltk/nltk/blob/master/nltk/parse/api.py ),可以看出它只是默认为运行基类的parse方法并将其作为iterable返回。
当有人试图用nltk在Chunking中解释时, 分块类不是用于此目的的工具(还有!),看看http://nltk.org/book/ch08.html ,有一些简单的例子,这只会让你想要实现的目标只有一半,需要进行大量的预处理和智能设计。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.