作为我的学术项目的一部分,我需要将一堆任意句子解析为依赖图.经过大量的搜索后,我得到了一个解决方案,我可以使用Malt Parser解析文本及其经过预先训练的语法.
我从http://www.maltparser.org/mco/mco.html下载了预训练模型(engmalt.linear-1.7.mco).我不知道如何使用这个语法文件和麦芽解析器解析我的句子(通过python接口获取麦芽).我已下载最新版本的malt解析器(1.7.2)并将其移至'/ usr/lib /'
import nltk;
parser =nltk.parse.malt.MaltParser()
txt="This is a test sentence"
parser.train_from_file('/home/rohith/malt-1.7.2/engmalt.linear-1.7.mco')
parser.raw_parse(txt)
Run Code Online (Sandbox Code Playgroud)
执行最后一行后,显示以下错误消息
Traceback (most recent call last):
File "<pyshell#7>", line 1, in <module>
parser.raw_parse(txt)
File "/usr/local/lib/python2.7/dist-packages/nltk-2.0b5-py2.7.egg/nltk/parse/malt.py", line 88, in raw_parse
return self.parse(words, verbose)
File "/usr/local/lib/python2.7/dist-packages/nltk-2.0b5-py2.7.egg/nltk/parse/malt.py", line 75, in parse
return self.tagged_parse(taggedwords, verbose)
File "/usr/local/lib/python2.7/dist-packages/nltk-2.0b5-py2.7.egg/nltk/parse/malt.py", line 122, in tagged_parse
return DependencyGraph.load(output_file)
File "/usr/local/lib/python2.7/dist-packages/nltk-2.0b5-py2.7.egg/nltk/parse/dependencygraph.py", line 121, in load
return DependencyGraph(open(file).read())
IOError: [Errno 2] No such file or directory: '/tmp/malt_output.conll'
Run Code Online (Sandbox Code Playgroud)
请帮我用这个麦芽解析器解析那句话.
我正在使用NLTK和Maltparser从自然语言的句子中提取依赖关系.我用这段代码做了一些使用Stanford解析器的实验:
sentence = '''I shot an elephant in my pajamas'''
os.popen("echo '"+sentence+"' > ~/stanfordtemp.txt")
parser_out = os.popen("/usr/local/Cellar/stanford-parser/2.0.3/bin/lexparser.sh ~/stanfordtemp.txt").readlines()
for i, tag in enumerate(parser_out):
if len(tag.strip()) > 0 and tag.strip()[0] == '(':
parse = " ".join(tag.strip())
print i, "Parse: ", tag
elif len(tag.strip()) > 0:
print i, "Typed dependencies: ", tag
bracketed_parse = " ".join( [tag.strip() for tag in parser_out if len(tag.strip()) > 0 and tag.strip()[0] == "("] )
print bracketed_parse
Run Code Online (Sandbox Code Playgroud)
并得到了这个好结果:
Parsing [sent. 1 len. 7]: I shot an elephant …Run Code Online (Sandbox Code Playgroud)