Apache OpenNLP错误它没有加载en-pos-maxent.bin

时间:2015-02-04 05:29:14

标签: java apache opennlp

我试图使用Apache OpenNLP POSTagger示例代码,我发现了一个错误,下面是代码

public String[] SentenceDetect(String qwe) throws IOException 
 {

POSModel model = new POSModelLoader().load(new File("/home/jebard/chabacano/Chabacano1/src/en-pos-maxent.bin"));
PerformanceMonitor perfMon = new PerformanceMonitor(System.err, "sent");
POSTaggerME tagger = new POSTaggerME(model);

String input = "Hi. How are you? This is Mike.";
ObjectStream<String> lineStream = new PlainTextByLineStream(
        new StringReader(input));
perfMon.start();
String line;
while ((line = lineStream.read()) != null) {

    String whitespaceTokenizerLine[] = WhitespaceTokenizer.INSTANCE
            .tokenize(line);
    String[] tags = tagger.tag(whitespaceTokenizerLine);

    POSSample sample = new POSSample(whitespaceTokenizerLine, tags);
    System.out.println(sample.toString());

    perfMon.incrementCounter();
}
perfMon.stopAndPrintFinalResult();

此行错误

  

.load(新文件(&#34; /home/jebard/chabacano/Chabacano1/src/en-pos-maxent.bin")

ModelLoader类型中的方法load(java.io.File)不适用于参数(org.apache.tomcat.jni.File)

2 个答案:

答案 0 :(得分:1)

这实际上不是OpenNLP中的错误。当您从包(aka namespace)File加载类org.apache.tomcat.jni.File时,代码中存在错误。

然而,API of OpenNLP要求您使用标准JDK包File中的类java.io,即您应该导入java.io.File

一般情况下,这应该可以解决您的问题。

重要提示

您应该迁移代码,因为不应通过POSModelLoader

加载模型
  

为命令行工具加载POS Tagger模型。

     

注意:请勿使用此类,内部使用

相反,您可以使用构造函数POSModel(InputStream in)通过引用实际模型文件的InputStream来加载模型文件。

此外,类POSModelLoader仅存在于以前的OpenNLP版本中(版本&lt; = 1.5.x)。在最新的OpenNLP版本1.6.0中,它已被完全删除。相反,您现在可以而且应该使用POSModel class的构造函数来加载/初始化您需要的模型。

答案 1 :(得分:0)

XML解析存在一些问题。试试这个,它对我有用。

    System.setProperty("org.xml.sax.driver", "org.xmlpull.v1.sax2.Driver");
    try {
        AssetFileDescriptor fileDescriptor = 
        context.getAssets().openFd("en_pos_maxent.bin");
        FileInputStream inputStream = fileDescriptor.createInputStream();
        POSModel posModel = new POSModel(inputStream);
        posTaggerME = new POSTaggerME(posModel);
    } catch (Exception e) {}