Maven Apache OpenNLP 工具出现 NullPointerException

问题描述 投票:0回答:1

我正在尝试将

Apache OpenNLP
Maven
一起使用。我在
POM
:

中添加了依赖项
<groupId>org.example</groupId>
<artifactId>nlp-fun</artifactId>
<version>1.0-SNAPSHOT</version>

<properties>
    <maven.compiler.target>1.8</maven.compiler.target>
    <maven.compiler.source>1.8</maven.compiler.source>
</properties>

<dependencies>
    <!-- https://mvnrepository.com/artifact/org.apache.opennlp/opennlp-tools -->
    <dependency>
        <groupId>org.apache.opennlp</groupId>
        <artifactId>opennlp-tools</artifactId>
        <version>1.9.2</version>
    </dependency>

</dependencies>

当我运行以下代码来创建

LanguageDetectorModel
对象时:

public class Program {

    public void fun() throws Exception{
        InputStream targetStream = new FileInputStream(new File("C:\\Users\\aaa\\Desktop\\nlp-fun\\src\\main\\input.txt"));
        LanguageDetectorModel m = new LanguageDetectorModel(targetStream);
        LanguageDetector myCategorizer = new LanguageDetectorME(m);
    }

    public static void main(String[] args) throws Exception{
        Program program = new Program();
        program.fun();
    }
}

我收到以下信息

NullPointerException
,但我不知道该怎么办。

我也尝试添加

opennlp-tools
作为
external jar
,但这也不起作用:

Exception in thread "main" java.lang.NullPointerException
at opennlp.tools.util.model.BaseModel.getManifestProperty(BaseModel.java:506)
at opennlp.tools.util.model.BaseModel.initializeFactory(BaseModel.java:248)
at opennlp.tools.util.model.BaseModel.loadModel(BaseModel.java:234)
at opennlp.tools.util.model.BaseModel.<init>(BaseModel.java:176)
at opennlp.tools.langdetect.LanguageDetectorModel.<init>(LanguageDetectorModel.java:50)
at Program.fun(Program.java:18)
at Program.main(Program.java:24)
java maven nullpointerexception opennlp
1个回答
1
投票

targetStream
应该是语言检测模型。您可以从
OpenNLP 网站
下载模型文件 (langdetect-183.bin)。接下来,您可以使用模型来确定文本的语言。请参阅 OpenNLP 用户手册中的示例,也复制如下:

InputStream is = new FileInputStream(new File("c:\path\to\langdetect-183.bin"));
LanguageDetectorModel m = new LanguageDetectorModel(is);

String inputText = "What language is this text?"
LanguageDetector myCategorizer = new LanguageDetectorME(m);

// Get the most probable language
Language bestLanguage = myCategorizer.predictLanguage(inputText);
System.out.println("Best language: " + bestLanguage.getLang());
System.out.println("Best language confidence: " + bestLanguage.getConfidence());

// Get an array with the most probable languages
Language[] languages = myCategorizer.predictLanguages(null);
© www.soinside.com 2019 - 2024. All rights reserved.