Java Malt解析器引发类未找到异常

Java Malt解析器引发类未找到异常,java,python,nltk,Java,Python,Nltk,我正在尝试用NLTK中的Malt解析器解析句子。当我执行raw_parse(sent)时,它给出了一个退出代码1的错误。我在终端上执行了java命令,它给出了类NotFoundException,我不明白现在出了什么问题 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.conllrPZgw

我正在尝试用NLTK中的Malt解析器解析句子。当我执行
raw_parse(sent)
时,它给出了一个退出代码1的错误。我在终端上执行了java命令,它给出了类NotFoundException,我不明白现在出了什么问题

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


您的工作目录设置不正确。Log4j是Malt解析器使用的包(请参阅:maltparser-1.7.2/lib/Log4j.jar)。用于逻辑记录

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

因此,第一步是从git获得最新的NLTK:

git克隆

安装NLTK:

sudo python setup.py安装

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

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),可以从这里下载:

将此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目录中


希望你能让它运行起来

您的工作目录设置不正确。Log4j是Malt解析器使用的包(请参阅:maltparser-1.7.2/lib/Log4j.jar)。用于逻辑记录

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

因此,第一步是从git获得最新的NLTK:

git克隆

安装NLTK:

sudo python setup.py安装

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

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),可以从这里下载:

将此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目录中


希望你能让它运行起来

请注意,最新版本的NLTK对该模块进行了很好的修补,请参阅。请注意,最新版本的NLTK对该模块进行了很好的修补,请参阅