1
Я хочу анализировать предложения с помощью NLTK и отображать их куски как дерево. NLTK предлагает метод tree.draw()
рисовать дерево. Это следующий код рисует дерево для предложения «маленькая желтая собака залаяла на кошку»:Рисование сглаживания дерева NLTK с кусками NP
import nltk
sentence = [("the", "DT"), ("little", "JJ"), ("yellow", "JJ"), ("dog", "NN"), ("barked","VBD"), ("at", "IN"), ("the", "DT"), ("cat", "NN")]
pattern = "NP: {<DT>?<JJ>*<NN>}"
NPChunker = nltk.RegexpParser(pattern)
result = NPChunker.parse(sentence)
result.draw()
В результате это дерево:
Как я получить дерево с еще одним уровнем?
@alvas , почему вы изменили название на «Flatten»? Я бы не сказал, что вопрос OPs о уплощении - ветвление деревьев одинаково в обоих примерах. Скорее, ОП запрашивает отдельный уровень для тегов PoS (кстати, не только для слов, отличных от NP) ...). – lenz
@ lenz, потому что, скорее всего, это то, что ему нужно. Поскольку шаблон NP, который он использовал, - это то, что люди делают с извлечением термина, извлечением существительных/сущностей и т. Д. И '.draw()' является чисто представлением, поэтому он не изменит большую часть результатов синтаксического анализа =) Просто удвоить check, @raxer, это то, о чем вы просите? – alvas
@alvas, моя цель - еще одна презентация. Возьмем, к примеру, слово «желтый». У него есть pos tag 'JJ'. На первом рисунке «JJ» находится на том же слое, что и желтый. Но на второй картине 'JJ' имеет слой над словом желтый. Как я могу отобразить его, как на втором изображении? – raxer