Maven Apache OpenNLP tools getting NullPointerException



我正在尝试将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>

当我运行以下代码以创建语言检测器模型对象时

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();
}

}

我收到以下空指针异常,但不确定该怎么做。我也尝试将 opennlp 工具添加为外部 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)

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

InputStream is = new FileInputStream(new File("c:pathtolangdetect-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);

最新更新