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