java - Malt 解析器抛出类未找到异常

标签 java python nltk

我正在尝试使用 NLTK 中的 Malt Parser 来解析句子。当我执行 raw_parse(sent) 时,它给出了退出代码 1 的错误。我在终端上执行了 java 命令,它给出了类未找到异常,我不明白现在出了什么问题?

java -Xmx1024m -jar /usr/local/bin/malt.jar -w /home/abc/maltparser-1.7.2 -c engmalt.linear-1.7 -i /home/abc/maltparser-1.7.2/malt_input.conllrPZgwc -o /home/abc/maltparser-1.7.2/malt_output.conllDMSKpg -m parse Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/log4j/Layout

最佳答案

您的工作目录设置不正确。 Log4j 是 Malt Parser 使用的包(参见:maltparser-1.7.2/lib/log4j.jar)。用于逻辑日志记录。

为了在 NLTK 中运行 maltparser,工作目录应设置为此文件夹(在您的情况下:/home/abc/maltparser-1.7.2)。

所以,第一步是从 git 获取最新的 NLTK:

git clone https://github.com/nltk/nltk.git

安装NLTK:

sudo python setup.py install

要使用 NLTK 运行 Malt Parser,请尝试以下代码示例:

import os
import nltk

os.environ['MALTPARSERHOME']="/home/abc/maltparser-1.7.2"
verbose = False
maltParser = nltk.parse.malt.MaltParser(working_dir="/home/abc/maltparser-1.7.2", 
    mco="engmalt.linear-1.7",
    additional_java_args=['-Xmx512m'])
print(maltParser.raw_parse('This is a test sentence', verbose=verbose).tree().pprint())

您可能会注意到,我正在使用预先学习的 mco 文件 (engmalt.linear-1.7),可以从此处下载: http://www.maltparser.org/mco/english_parser/engmalt.html

将此 mco 文件移动到:/home/abc/maltparser-1.7.2 目录。

最后,NLTK 除外,malt.jar 除外。因此,创建一个副本(或重命名):

cp maltparser-1.7.2.jar malt.jar

它仍然可以位于您的/home/abc/maltparser-1.7.2.jar 目录中。

希望您能运行它!

关于java - Malt 解析器抛出类未找到异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20091698/

相关文章:

java - 在 Jruby 中显式重写 Java 方法?

python - 如何使用Python API为应用服务上传和配置SSL证书

python - 将静态 Assets 从本地机器部署到 heroku - 无法打开文件 'manage.py' : [Errno 2] No such file or directory

python - 从python中的数组制作数组

python - 在 python 中从树构建语法

python - 如何在 Python 中使用 WordNet 获取词域?

python - 我如何根据时态(现在时、过去时、将来时等)对句子进行分类?

java - 如何从动态创建的 EditText 获取输入?

java - 在 Java 中将字符串转换为日期对象

java - 对象化查询 : filter by date