Я по-прежнему предлагаю использовать NLTK для чтения древовидного банка (см., Например, это сообщение в блоге ), но я могу представить, что он не поддерживает такие общие запросы.
«Каковы дети субъекта NP?»
Это будет dict
, скажем children
, отображение нетерминалов на sets
либо нетерминалов, либо дочерних узлов.
«Какие типы фраз преобладают в местоимении?»
Это будет другой dict
, скажем parents
, сопоставляющий нетерминалы с sets
нетерминалами.
Возможно, вы захотите построить реляционную базу данных узлов дерева.Точная схема будет зависеть от того, какие запросы вы хотите задать, но не забудьте проверить модуль Python sqlite3
.
В качестве альтернативы, вы можете перекодировать древовидный банк в XML и используйте XPath для запроса . LXML - лучшая библиотека XML / XPath для Python, IMHO.