【发布时间】:2015-04-01 17:49:15
【问题描述】:
我使用的是 nltk 的 Tree 数据结构。下面是示例 nltk.Tree。
(S
(S
(ADVP (RB recently))
(NP (NN someone))
(VP
(VBD mentioned)
(NP (DT the) (NN word) (NN malaria))
(PP (TO to) (NP (PRP me)))))
(, ,)
(CC and)
(IN so)
(S
(NP
(NP (CD one) (JJ whole) (NN flood))
(PP (IN of) (NP (NNS memories))))
(VP (VBD came) (S (VP (VBG pouring) (ADVP (RB back))))))
(. .))
我不知道 nltk.Tree 数据结构。我想为每个叶节点提取父节点和超级父节点,例如对于“最近”,我想要(ADVP,RB),对于“某人”,它是(NP,NN)这是我想要的最终结果。早期的答案使用 eval() 函数来做到这一点,我想避免。
[('ADVP', 'RB'), ('NP', 'NN'), ('VP', 'VBD'), ('NP', 'DT'), ('NP', 'NN'), ('NP', 'NN'), ('PP', 'TO'), ('NP', 'PRP'), ('S', 'CC'), ('S', 'IN'), ('NP', 'CD'), ('NP', 'JJ'), ('NP', 'NN'), ('PP', 'IN'), ('NP', 'NNS'), ('VP', 'VBD'), ('VP', 'VBG'), ('ADVP', 'RB')]
【问题讨论】:
-
@leekaiinthesky 该代码使用了 eval() 函数,导致堆栈完全错误。但是我已经通过使用 nltk 树数据结构解决了这个问题。我在下面发布了我的答案。
标签: python tree nltk stanford-nlp