如何使用NLTK生成解析树?

时间:2016-11-06 12:29:40

标签: nltk stanford-nlp

我正在尝试生成这样的树:

我无法找到有关它的任何相关信息。请帮忙。

解析

(ROOT
  (S
    (NP (PRP$ My) (NN dog))
    (ADVP (RB also))
    (VP (VBZ likes)
      (S
        (VP (VBG eating)
          (NP (NN sausage)))))
    (. .)))

感谢。

2 个答案:

答案 0 :(得分:0)

NLTK附带了许多基于CFG和其他语法形式的解析器,但它们是很少实际使用的教学工具:它们只能处理一小部分英语语法。 (如果这是您所追求的,那么您的问题与this SO question重复。)

要使用nltk解析普通英文文本,您需要安装nltk知道如何与之交互的第三方解析器。你最好的选择可能就是Stanford Parser,因为你标记了你的问题,你可能已经知道了。您需要最新版本的nltk(或至少版本3.1,但稍后会更好。)abovementioned SO问题在答案中有其他一些建议;不知道他们是否有任何好处。

答案 1 :(得分:0)

您可以使用StanfordCoreNLP来实现这一目标

下载:

pip安装pycorenlp

使用以下命令在此(stanford-corenlp-full-2018-01-31)目录中启动服务器-

  

java -mx4g -cp“ *” edu.stanford.nlp.pipeline.StanfordCoreNLPServer   -端口9000-超时15000

from pycorenlp import StanfordCoreNLP
nlp = StanfordCoreNLP('http://localhost:9000')
 output = nlp.annotate(textInput, properties={
    'annotators': 'parse',
    'outputFormat': 'json',
    'timeout': 1000,
})
print(output['sentences'][0]["parse"])

样本输入:

  

有什么方法可以将Spotify音乐与特定环境相关联,所以当我对Siri Start Beach Ambient说话时

输出:

(ROOT (SQ (VBZ Is) (NP (EX there)) (NP (NP (DT any) (NN way)) (S (VP (TO to) (VP (VB associate) (NP (JJ spotify) (NN music)) (PP (IN with) (NP (NP (DT a) (JJ specific)) (ADJP (JJ ambient) (RB so) (SBAR (WHADVP (WRB when)) (S (NP (PRP I)) (VP (VBP say) (PP (TO to) (NP (NNP Siri) (NNP Start) (NNP Beach) (NNP Ambient))))))))))))) (. .))) 希望这会有所帮助。