обрабатываю Penn дерево банка v2 деревьев и часто сталкиваются с «сервис» -subtrees как эти (и некоторые другие типы)Как избавиться от -NONE- и * T * -i в ptb синтаксических деревьев с использованием nltk?
можно вручную добавить много правил, чтобы уточнить узлы, которые я на самом деле использовать дальше (синтаксический анализ с тегами и токенами и без ссылок «oh, look there» или «там, должно быть, был узел здесь» - как и те, которые были получены парсером Stanford), но я чаще всего оставляю некоторые из этих служебных узлов или огромные промежутки и «обрезанные ветви» (например, если вы удалите те узлы -NONE-
выше, вы оставите SBAR
слева без каких-либо детей, что странно).
Интересно, могу ли я удалить все, кроме фактических анализов (слов, тегов, знаков препинания), из вывода from nltk.corpus import ptb; ptb.parsed_sents()
и для всех?
Что относительно '-NONE -' вещей? проблема в том, что я не знаю всех видов этих сервисных узлов; Я привел только конкретный пример: –
Если ваш критерий для удаления состоит в том, чтобы удалить каждый узел «-NONE-» и каждый более высокий узел, который становится пустым в результате, вы должны соответствующим образом изменить критерий. Если этот тег всегда встречается с высотой 1, это довольно просто: удалите любое поддерево, которое доминирует над множеством узлов '-NONE-', поскольку оно имеет листья. – alexis
Большое спасибо за конкретный ответ, @alexis! это очень полезно, но проблема, о которой я говорил, немного отличается; Мне было интересно, могу ли я избавиться от всего, кроме самого синтаксиса, не зная заранее, что такое «все остальное» :), потому что оказалось, что там есть куча этих следов и коиндексов, и если вы удалите их, другие останется. Это очень полезный фрагмент для начала, хотя! –