我正在寻找处理Penn Treebank结构的Python数据结构。这是Treebank的样子:
( (S
(NP-SBJ (PRP He) )
(VP (VBD shouted) )
(. .) ))
基本上,我想要一个数据结构,我可以问诸如“主题NP的孩子是什么?”或“什么类型的短语支配代词?”,最好是在Python中。有人有线索吗?
答案 0 :(得分:3)
NLTK modules可能是在Python中实现Penn Treebank和其他NLP相关内容的良好开端。
答案 1 :(得分:1)
我仍然建议使用NLTK来读取树库(参见例如this blog post),但我可以想象它不支持这种一般性查询。
“NP主题的孩子是什么?”
这将是dict
,比如children
,将非终结符映射到非终结符或子节点的sets
。
“什么类型的短语支配代词?”
这将是另一个dict
,比如parents
,将非终结点映射到非终结符的sets
。
您可能希望构建树节点的关系数据库。确切的模式取决于您想要询问的查询类型,但请务必查看Python sqlite3
模块。
或者,您可以使用XML和use XPath to query it重新编码树库。 LXML是Python的最佳XML / XPath库,恕我直言。