gpt4 book ai didi

python - 如何为 NLTK 中的歧义句子生成多个解析树?

转载 作者:太空狗 更新时间:2023-10-29 21:55:20 26 4
gpt4 key购买 nike

我在 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 接口(interface)继承了 nbest_parse 方法,查看源代码 ( https://github.com/nltk/nltk/blob/master/nltk/parse/api.py ) 可以看出它只是默认运行基类的 parse 方法并将其作为可迭代对象返回。

正如有人试图在 Chunking with nltk 中解释的那样,分 block 类不是用于此目的的工具(现在!),看看 http://nltk.org/book/ch08.html , 有一些简单的示例,它们只会让您半途而废,需要大量的预处理和智能设计。

关于python - 如何为 NLTK 中的歧义句子生成多个解析树?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19057837/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com