小智 31
你可以看一下pyStatParser,一个简单的python统计解析器,返回NLTK解析树.它带有公共树库,它只在您第一次实例化Parser对象时生成语法模型(大约8秒钟).它使用CKY算法,并在一秒钟内解析平均长度的句子(如下面的句子).
>>> from stat_parser import Parser
>>> parser = Parser()
>>> print parser.parse("How can the net amount of entropy of the universe be massively decreased?")
(SBARQ
(WHADVP (WRB how))
(SQ
(MD can)
(NP
(NP (DT the) (JJ net) (NN amount))
(PP
(IN of)
(NP
(NP (NNS entropy))
(PP (IN of) (NP (DT the) (NN universe))))))
(VP (VB be) (ADJP (RB massively) (VBN decreased))))
(. ?))
Run Code Online (Sandbox Code Playgroud)
syl*_*sm_ 23
我的库spaCy提供了一个高性能依赖解析器.
安装:
pip install spacy
python -m spacy.en.download all
Run Code Online (Sandbox Code Playgroud)
用法:
from spacy.en import English
nlp = English()
doc = nlp(u'A whole document.\nNo preprocessing require. Robust to arbitrary formating.')
for sent in doc:
for token in sent:
if token.is_alpha:
print token.orth_, token.tag_, token.head.lemma_
Run Code Online (Sandbox Code Playgroud)
崔等人.(2015)发现spaCy是最快的依赖解析器.它在一个线程上每秒处理超过13,000个句子.在标准的WSJ评估中,它得分为92.7%,比任何CoreNLP模型的准确率高出1%.
小智 7
有一个名为Pattern的库.它非常快速且易于使用.
>>> from pattern.en import parse
>>>
>>> s = 'The mobile web is more important than mobile apps.'
>>> s = parse(s, relations=True, lemmata=True)
>>> print s
'The/DT/B-NP/O/NP-SBJ-1/the mobile/JJ/I-NP/O/NP-SBJ-1/mobile' ...
Run Code Online (Sandbox Code Playgroud)
小智 5
使用 MaltParser,你有一个预训练的英语语法,还有一些其他的预训练语言。Maltparser 是一个依赖解析器,而不是一些简单的自底向上或自顶向下的解析器。
只需从http://www.maltparser.org/index.html下载 MaltParser并像这样使用 NLTK:
import nltk
parser = nltk.parse.malt.MaltParser()
Run Code Online (Sandbox Code Playgroud)