Escape parentheses in NLTK parse tree

h4cxqtbf  于 4个月前  发布在  其他
关注(0)|答案(1)|浏览(70)

在NLTK中,我们可以将括号树转换为实际的Tree对象。然而,当一个标记包含括号时,解析结果可能不是你所期望的,因为NLTK将这些括号解析为一个新的节点。

举个例子,考虑这个句子:
They like(d) it a lot
这个句子可以被解析为:

(S (NP (PRP They)) (VP like(d) (NP (PRP it)) (NP (DT a) (NN lot))) (. .))

但是如果你用NLTK将其解析成树并输出,就会发现 (d) 被解析为一个新的节点,这是意料之中的事情。

from nltk import Tree

s = '(S (NP (PRP They)) (VP like(d) (NP (PRP it)) (NP (DT a) (NN lot))) (. .))'

tree = Tree.fromstring(s)
print(tree)

结果是

(S
  (NP (PRP They))
  (VP like (d ) (NP (PRP it)) (NP (DT a) (NN lot)))
  (. .))

所以 (d ) 是VP中的一个节点,而不是标记 like 的一部分。在树解析器中有没有方法可以解决括号的问题?

zy1mlcev

zy1mlcev1#

嗯,在这种情况下,为什么在解析树之前没有将开闭括号转换为 -LRB--RRB-?
更具体地说,(S (NP (PRP They)) (VP like(d) (NP (PRP it)) (NP (DT a) (NN lot))) (. .)) 是从哪里来的?了解它来自哪里,我们可以找到缺少 -LRB--RRB- 转换的正确正则表达式或预处理步骤。

相关问题