Malt Parser抛出类没有发现异常

时间:2013-11-20 09:15:41

标签: java python nltk

我正试图用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

1 个答案:

答案 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目录中找到。

希望你能让它运转起来!