как получить дерево разбора с помощью python nltk?

учитывая следующее предложение:

The old oak tree from India fell down.

Как я могу получить следующее представление дерева синтаксического анализа предложения с помощью python NLTK?

(ROOT (S (NP (NP (DT The) (JJ old) (NN oak) (NN tree)) (PP (IN from) (NP (NNP India)))) (VP (VBD fell) (PRT (RP down)))))

мне нужен полный пример, который я не смог найти в интернете!


редактировать

Я прошел через эта книга глава чтобы узнать о разборе с помощью NLTK, но проблема в том, что мне нужна грамматика для разбора предложений или фраз, которых у меня нет. Я нашел это сообщение stackoverflow который также спросил о грамматике для разбора, но там нет убедительного ответа.

Итак, я ищу полный ответ, который может дать мне дерево разбора, вынесен приговор.

1 ответов


вот альтернативное решение с использованием StanfordCoreNLP вместо nltk. Есть несколько библиотек, которые строятся поверх StanfordCoreNLP, Я лично использую pycorenlp для разбора предложения.

сначала вы должны скачать stanford-corenlp-full папку, где у вас есть внутри. И запустите сервер внутри папки (порт по умолчанию-9000).

export CLASSPATH="`find . -name '*.jar'`"
java -mx4g -cp "*" edu.stanford.nlp.pipeline.StanfordCoreNLPServer [port?] # run server

затем в Python вы можете запустить следующее, чтобы пометить предложение.

from pycorenlp import StanfordCoreNLP
nlp = StanfordCoreNLP('http://localhost:9000')

text = "The old oak tree from India fell down."

output = nlp.annotate(text, properties={
  'annotators': 'parse',
  'outputFormat': 'json'
})

print(output['sentences'][0]['parse']) # tagged output sentence