Maltparser在NLTK中给出错误 [英] Maltparser giving error in NLTK

查看:86
本文介绍了Maltparser在NLTK中给出错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的编码是

from nltk.parse import malt
mp = malt.MaltParser(working_dir="/other/apps/maltparser-1.8.1",mco="engmalt.poly-1.7.mco",additional_java_args=['-Xmx1024m'])
print mp.raw_parse("Hello World")

错误是

    Traceback (most recent call last):
  File "malt.py", line 13, in <module>
    print mp.raw_parse("Hello World")
  File "/usr/local/lib/python2.7/dist-packages/nltk/parse/malt.py", line 139, in raw_parse
    return self.parse(words, verbose)
  File "/usr/local/lib/python2.7/dist-packages/nltk/parse/malt.py", line 126, in parse
    return self.parse_sents([sentence], verbose)[0]
  File "/usr/local/lib/python2.7/dist-packages/nltk/parse/malt.py", line 114, in parse_sents
    return self.tagged_parse_sents(tagged_sentences, verbose)
  File "/usr/local/lib/python2.7/dist-packages/nltk/parse/malt.py", line 194, in tagged_parse_sents
    "code %d" % (' '.join(cmd), ret))
Exception: MaltParser parsing (java -Xmx1024m -jar /usr/local/bin/malt.jar -w /other/apps/maltparser-1.8.1 -c engmalt.poly-1.7.mco -i /other/apps/maltparser-1.8.1/malt_input.conlljOba1P -o /other/apps/maltparser-1.8.1/malt_output.conllPLcoTu -m parse) failed with exit code 1

推荐答案

NLTK中的MaltParser API仅具有

The MaltParser API in NLTK just had a patch that fixes and stabilizes the problems that it used to have:

  • How to use malt parser in python nltk
  • Malt Parser throwing class not found exception
  • MaltParser Not Working in Python NLTK

下面是在NLTK中如何使用MaltParser API的示例:

Here's an example of how to use MaltParser API in NLTK:

# Upgrade your NLTK.
alvas@ubi:~$ cd ~
alvas@ubi:~$ pip install -U nltk

# Get the latest MaltParser and model
alvas@ubi:~$ wget http://maltparser.org/dist/maltparser-1.8.1.zip
alvas@ubi:~$ unzip maltparser-1.8.1.zip 
alvas@ubi:~$ wget http://www.maltparser.org/mco/english_parser/engmalt.poly-1.7.mco

# In python, now you can do this:
alvas@ubi:~$ python
>>> from nltk.parse.malt import MaltParser
>>> mp = MaltParser('/home/alvas/maltparser-1.8.1', '/home/alvas/engmalt.poly-1.7.mco')
>>> sent1 = 'I shot an elephant in my pajamas .'.split()
>>> print(mp.parse_one(sent1).tree())
(shot I (elephant an (in (pajamas my))) .)

(有关更多信息,请参见此处演示代码或此处详细说明演示代码)

(See here for more demo code or here for a more elaborated demo code)

请注意,您还可以使用导出功能,并且在初始化MaltParser对象时可以避免使用完整路径.但是您仍然必须告诉对象要查找的解析器目录名称和模型文件名,例如

Note that you can also use the export features and you can escape the usage of full path when initializing the MaltParser object. But you have to still tell the object what is the name of the parser directory and model filename to look for, e.g.

alvas@ubi:~$ export MALT_PARSER='/home/$UID/maltparser-1.8.1/'
alvas@ubi:~$ export MALT_MODEL='/home/$UID/engmalt.poly-1.7.mco' 
alvas@ubi:~$ python
>>> from nltk.parse.malt import MaltParser
>>> mp = MaltParser('maltparser-1.8.1', 'engmalt.poly-1.7.mco')
>>> sent1 = 'I shot an elephant in my pajamas .'.split()
>>> print(mp.parse_one(sent1).tree())
(shot I (elephant an (in (pajamas my))) .)

这篇关于Maltparser在NLTK中给出错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆