Структура данных Python для Treebank? - PullRequest
3 голосов
/ 14 ноября 2011

Я ищу структуру данных Python, которая обрабатывает структуру Penn Treebank.Вот пример того, как выглядит Treebank:

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

По сути, мне нужна структура данных, в которой я могу задавать такие вопросы, как «Каковы дети субъекта NP?или «Какие типы фраз доминируют в местоимении?», предпочтительно на Python.У кого-нибудь есть ключ?

Ответы [ 2 ]

3 голосов
/ 14 ноября 2011

Модули NLTK может быть хорошим началом для внедрения Penn Treebank и других связанных с НЛП вещей в Python.

1 голос
/ 15 ноября 2011

Я по-прежнему предлагаю использовать NLTK для чтения древовидного банка (см., Например, это сообщение в блоге ), но я могу представить, что он не поддерживает такие общие запросы.

«Каковы дети субъекта NP?»

Это будет dict, скажем children, отображение нетерминалов на sets либо нетерминалов, либо дочерних узлов.

«Какие типы фраз преобладают в местоимении?»

Это будет другой dict, скажем parents, сопоставляющий нетерминалы с sets нетерминалами.

Возможно, вы захотите построить реляционную базу данных узлов дерева.Точная схема будет зависеть от того, какие запросы вы хотите задать, но не забудьте проверить модуль Python sqlite3.

В качестве альтернативы, вы можете перекодировать древовидный банк в XML и используйте XPath для запроса . LXML - лучшая библиотека XML / XPath для Python, IMHO.

...