【发布时间】:2015-08-11 07:46:49
【问题描述】:
我想用 NLTK 分析句子并将它们的块显示为树。 NLTK 提供了方法tree.draw() 来绘制一棵树。下面的代码为句子“the little yellow dog barked at the cat”画了一棵树:
import nltk
sentence = [("the", "DT"), ("little", "JJ"), ("yellow", "JJ"), ("dog", "NN"), ("barked","VBD"), ("at", "IN"), ("the", "DT"), ("cat", "NN")]
pattern = "NP: {<DT>?<JJ>*<NN>}"
NPChunker = nltk.RegexpParser(pattern)
result = NPChunker.parse(sentence)
result.draw()
结果是这棵树:
我怎样才能得到一棵像这样多一层的树?
【问题讨论】:
-
@alvas,你为什么把标题改成“Flatten”?我不会说 OPs 的问题是关于扁平化的——在两个例子中树的分支是相同的。相反,OP 要求为 PoS 标签设置一个单独的级别(顺便说一句:不仅适用于非 NP 词......)。
-
@lenz,因为很可能这就是他所需要的。因为他使用的 NP 模式是人们对术语提取、名词/实体提取等所做的事情。
.draw()纯粹是呈现,所以它不会改变很多解析结果 =) 只是为了仔细检查,@ raxer,这就是你要的吗? -
@alvas,我的目标是再做一次演示。以黄色这个词为例。它有 pos 标签
JJ。在第一张图片中,JJ与黄色位于同一层。但是在第二张图片上JJ在黄色这个词上面有一层。我怎样才能在第二张图片上显示它?