gpt4 book ai didi

java - NLTK 和 MaltParser 退出,错误代码为 1

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:53:44 30 4
gpt4 key购买 nike

我找遍了这个问题的答案,但没有找到适合我需要的答案。

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

这里是错误:

Exception: MaltParser parsing (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) failed with exit code 1

以下是我已经尝试过的不同组合:

  1. 更新 nltk 和 java。
  2. 尝试不同版本的 MaltParser 和 .mco 模型文件
  3. 将 MaltParser 中的 .jar 文件重命名为 Malt.jar(显然,这是必须在某些时候为某些版本的 nltk 包装器完成的修复)
  4. 编辑 MALT_PARSER='/home/owen/maltparser-1.7.2/' 和 MALT_MODEL='/home/owen/maltparser-1.7.2/engmalt.poly-1.7.mco' 的操作系统变量
  5. 将 .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'

感谢您的帮助

最佳答案

有几处可能出错了:

问题一:Java或NLTK版本未更新

首先检查您是否安装并更新了您的 NLTK:

$ pip install -U nltk

在 Ubuntu 上更新您的 Java,请参阅 http://tecadmin.net/install-oracle-java-8-jdk-8-ubuntu-via-ppa/#


问题2:MaltParser没有更新

尝试使用 MaltParser 版本 > 1.8 和适当的 .mco 文件(例如 engmalt.linear-1.7)


问题 3:为 MaltParser 设置 NLTK API

然后执行来自 Step by step to getting malt parser in NLTK to work?TL;DR 说明中的步骤

简而言之,当您在终端上运行时,您应该看不到任何错误:

cd && wget http://www.maltparser.org/mco/english_parser/engmalt.linear-1.7.mco && wget http://maltparser.org/dist/maltparser-1.8.1.zip && unzip maltparser-1.8.1.zip && export MALT_PARSER=$HOME/maltparser-1.8.1/ && export MALT_MODEL=$HOME/engmalt.linear-1.7.mco
python -c "from nltk.parse.malt import MaltParser; mp = MaltParser('maltparser-1.8.1', 'engmalt.linear-1.7.mco'); mp.parse_one('I shot an elephant in my pajamas .'.split()).tree()"

问题 4:环境变量设置不正确

您必须切换到运行脚本的目录,然后在运行脚本之前在终端上设置环境变量:

cd /home/username/directory_where_you_are_going_to_run_your_script
export MALT_PARSER=$HOME/maltparser-1.8.1/
export MALT_MODEL=$HOME/engmalt.linear-1.7.mco
python yourscript.py

主动回答

如果上面列出的问题的解决方案没有解决您在 NLTK 中使用 MaltParser API 的问题,那么您最好

  1. 确保您已正确安装 Java,请参阅 http://tecadmin.net/install-oracle-java-8-jdk-8-ubuntu-via-ppa/#
  2. 设置虚拟环境(参见 http://docs.python-guide.org/en/latest/dev/virtualenvs/)
  3. 使用 pip 安装 NLTK 和脚本所需的包
  4. 在终端上运行以下命令

[在终端上]:

cd && wget http://www.maltparser.org/mco/english_parser/engmalt.linear-1.7.mco && wget http://maltparser.org/dist/maltparser-1.8.1.zip && unzip maltparser-1.8.1.zip && export MALT_PARSER=$HOME/maltparser-1.8.1/ && export MALT_MODEL=$HOME/engmalt.linear-1.7.mco
python -c "from nltk.parse.malt import MaltParser; mp = MaltParser('maltparser-1.8.1', 'engmalt.linear-1.7.mco'); mp.parse_one('I shot an elephant in my pajamas .'.split()).tree()"

然后在设置环境变量后重新运行脚本,例如与:

cd /home/username/directory_where_you_are_going_to_run_your_script
export MALT_PARSER=$HOME/maltparser-1.8.1/
export MALT_MODEL=$HOME/engmalt.linear-1.7.mco
python yourscript.py

关于java - NLTK 和 MaltParser 退出,错误代码为 1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37422865/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com