Malt 解析器抛出类未找到异常

2024-01-04

我正在尝试使用 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 解析 线程“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:

克隆https://github.com/nltk/nltk.git 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 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 目录中。

希望你能让它运行起来!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Malt 解析器抛出类未找到异常 的相关文章

随机推荐