相关疑难解决方法(0)

如何在python nltk中使用麦芽解析器

作为我的学术项目的一部分,我需要将一堆任意句子解析为依赖图.经过大量的搜索后,我得到了一个解决方案,我可以使用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)

请帮我用这个麦芽解析器解析那句话.

python parsing nlp nltk

14
推荐指数
1
解决办法
8828
查看次数

使用NLTK和MaltParser的依赖性解析器

我正在使用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)

dependencies parsing nltk python-2.7

6
推荐指数
1
解决办法
1104
查看次数

标签 统计

nltk ×2

parsing ×2

dependencies ×1

nlp ×1

python ×1

python-2.7 ×1