【发布时间】:2016-05-24 20:03:54
【问题描述】:
我已经到处寻找这个问题的答案,但没有找到适合我需要的答案。
我正在尝试为 MaltParser 使用 nltk 包装器。过去似乎有很多人在使用 MaltParser 的 nltk 包装器时遇到问题,但我没有发现有相同的错误或相同的修复。这是代码,这是错误:
import nltk
maltParser = nltk.parse.malt.MaltParser(parser_dirname="/home/owen/maltparser-1.7.2",
model_filename="engmalt.linear-1.7",
additional_java_args=['-Xmx512m'])
result = maltParser.parse_one('This is a test sentence'.split())
print result.tree()
这是错误:
异常:MaltParser 解析(java -Xmx512m -cp /home/owen/maltparser-1.7.2/lib/libsvm.jar:/home/owen/maltparser-1.7.2/malt.jar:/home/owen/ maltparser-1.7.2/lib/log4j.jar:/home/owen/maltparser-1.7.2/maltparser-1.7.2.jar:/home/owen/maltparser-1.7.2/lib/liblinear-1.8.jar org .maltparser.Malt -c engmalt.linear-1.7 -i /tmp/malt_input.conll.ej6hqf -o /tmp/malt_output.conll.TZXpc2 -m parse) 失败,退出代码为 1
以下是我已经尝试过的所有方法以及不同的组合:
- 正在更新 nltk 和 java。
- 尝试不同版本的 MaltParser 和 .mco 模型文件
- 将 MaltParser 中的 .jar 文件重命名为 Malt.jar(显然,对于某些版本的 nltk 包装器,这是必须在某个时候完成的修复)
- 编辑 MALT_PARSER='/home/owen/maltparser-1.7.2/' 和 MALT_MODEL='/home/owen/maltparser-1.7.2/engmalt.poly-1.7.mco' 的 os 变量
- 将 .mco 文件移入和移出 maltparser-1.7.2 目录
仅供参考:我已经按照以下帖子中的步骤进行操作:
Step by step to getting malt parser in NLTK to work?
我可能尝试过其他一些方法。我不记得了。我真正想知道的是错误的含义以及可能导致错误的原因。我无法确定它的头或尾。
这里是所要求的信息:
lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 12.04.5 LTS
Release: 12.04
Codename: precise
owen@termedev:~/malttesting$ python -c "import nltk; print nltk.__version__"
3.2.1
owen@termedev:~/malttesting$ java -version
java version "1.8.0_91"
Java(TM) SE Runtime Environment (build 1.8.0_91-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.91-b14, mixed mode)
owen@termedev:~/malttesting$ python -c "import os; print os.environ['MALT_PARSER']; print os.environ['MALT_MODEL']"
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/usr/lib/python2.7/UserDict.py", line 23, in __getitem__
raise KeyError(key)
KeyError: 'MALT_PARSER'
感谢您的帮助
【问题讨论】:
-
我刚刚在新的 ubuntu 16.04 上尝试了
TL;DR,它似乎工作正常,即使使用mp = MaltParser('maltparser-1.8.1', 'engmalt.linear-1.7.mco', additional_java_args=['-Xmx512m'])。 -
所以我们需要更多信息,以便更好地帮助您。你在ubuntu上吗?如果是这样,请使用
$ lsb_release -a和$ python -c "import nltk; print nltk.__version__和$ java -version和python -c "import os; print os.environ['MALT_PARSER']; print os.environ['MALT_MODEL']"的终端输出更新您的问题 -
顺便说一句,我认为您并没有真正安装/更新 java,因此退出代码 1 错误,请尝试以下说明:tecadmin.net/install-oracle-java-8-jdk-8-ubuntu-via-ppa/#
-
我在您发布的 URL (tecadmin.net/install-oracle-java-8-jdk-8-ubuntu-via-ppa/#) 上运行了命令,它输出相同的错误
-
您好!我运行了来自 stackoverflow.com/questions/13207394/... 的 TL;DR 指令,它奏效了! :) 所以,现在它在从终端运行 python 时可以正常工作,但在 .py 文件中执行相同的 python 代码时就不行了。