Malt Parser投掷课没有发现exception

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

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线程“main”中的exceptionjava.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安装

要使用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目录中。

希望你能让它运转起来!