Python 树库的数据结构?

3 投票
2 回答
1969 浏览
提问于 2025-04-17 06:18

我在找一种可以处理Penn Treebank结构的Python数据结构。下面是Treebank的一个示例:

( (S
    (NP-SBJ (PRP He) )
    (VP (VBD shouted) )
    (. .) ))

简单来说,我想要一个数据结构,可以让我问一些问题,比如“主语的孩子节点是什么?”或者“哪些短语类型主导这个代词?”,最好是用Python来实现。有没有人知道该怎么做?

2 个回答

1

我还是建议使用NLTK来读取树库(可以参考一下这篇博客),不过我能想象它可能不支持这种通用查询。

“主语名词短语的孩子是什么?”

这会是一个叫做children的字典,里面把非终结符映射到一组非终结符或子节点。

“什么类型的短语主导了这个代词?”

这会是另一个字典,叫做parents,里面把非终结符映射到一组非终结符。

你可能想要建立一个树节点的关系数据库。具体的结构取决于你想要查询什么,但一定要看看Python的sqlite3模块。

另外,你也可以把树库重新编码成XML格式,然后用XPath来查询。我认为LXML是Python中最好的XML/XPath库。

3

NLTK模块可能是用Python实现Penn Treebank和其他自然语言处理相关内容的一个不错的起点。

撰写回答