我正试图用NLTK中的Malt Parser解析句子。当我执行raw_parse(sent)
时,它在退出代码1中出错。我在终端上执行了java命令并且它给出了Not Found异常,我不明白现在有什么问题?
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”中的异常java.lang.NoClassDefFoundError:org / apache / log4j / Layout
答案 0 :(得分:1)
您的工作目录未正确设置。 Log4j是Malt Parser使用的包(参见:maltparser-1.7.2 / lib / log4j.jar)。用于逻辑记录。
为了在NLTK中运行maltparser,工作目录应设置为此文件夹(在您的情况下:/home/abc/maltparser-1.7.2)。
所以,第一步是从git获取最新的NLT:
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目录中找到。
希望你能让它运转起来!