有没有办法让NLTK返回完全用所有Treebank子句和Treebank短语分界标记的文本(或等效的;它不必是Treebank)?我需要能够返回两个条款和短语(单独)。我发现的唯一一件事是在第7章的NLTK Bird / Klein / Loper书中,它说你不能同时处理名词短语和动词短语,但我想要做的远不止这些!我认为Stanford POS解析器可以做到这一点,但客户端只想使用NLTK。感谢。
答案 0 :(得分:1)
你看过第8章了吗?这听起来像你想要的东西:
>>> from nltk.corpus import treebank
>>> t = treebank.parsed_sents('wsj_0001.mrg')[0]
>>> print t
(S
(NP-SBJ
(NP (NNP Pierre) (NNP Vinken))
(, ,)
(ADJP (NP (CD 61) (NNS years)) (JJ old))
(, ,))
(VP
(MD will)
(VP
(VB join)
(NP (DT the) (NN board))
(PP-CLR
(IN as)
(NP (DT a) (JJ nonexecutive) (NN director)))
(NP-TMP (NNP Nov.) (CD 29))))
(. .))
除了您已经找到的分块资源。但如果您的意思是要解析您提供的文本,还有以下选项:
>>> sr_parse = nltk.ShiftReduceParser(grammar1)
>>> sent = 'Mary saw a dog'.split()
>>> print sr_parse.parse(sent)
(S (NP Mary) (VP (V saw) (NP (Det a) (N dog))))
但这取决于事先手动填充grammar1。分块比分析更容易。