首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何处理在OpenNLP中使用自定义NER模型时的“OpenNLP”?

如何处理在OpenNLP中使用自定义NER模型时的“OpenNLP”?
EN

Stack Overflow用户
提问于 2016-02-04 18:00:01
回答 1查看 291关注 0票数 2

我正在尝试执行OpenNLP模型,我已经为我的定制名称进行了培训。我执行了以下命令来创建自定义模型:

opennlp TokenNameFinderTrainer -encoding UTF-8 -lang en -data c:\Users\nshah\Desktop\en Desktop. -model en-ner-personName.bin

我能够成功地创建名为en-ner-personName.bin.的模型

现在,我试图执行我的程序如下:

代码语言:javascript
复制
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

import opennlp.tools.namefind.NameFinderME;
import opennlp.tools.namefind.TokenNameFinderModel;
import opennlp.tools.util.InvalidFormatException;
import opennlp.tools.util.Span;

public class NameFinder {

    public String nameFind(String inputText){

        String finalNames = "";
        try {

            TokenNameFinderModel tokenNameFinderModel = new TokenNameFinderModel(new FileInputStream("D://NISUM_OFFICIAL_WORKSPACE//opennlp//src//models//en-ner-personName.bin"));
            NameFinderME nameFinderME = new NameFinderME(tokenNameFinderModel);
            Tokenization tokenize = new Tokenization();
            String[] tokens = tokenize.tokenization(inputText);
            Span drugSp[] = nameFinderME.find(tokens);
            String [] sp = Span.spansToStrings(drugSp, tokens);
            StringBuilder string = new StringBuilder();
            if(sp.length!=0){
                for(int i=0;i<=sp.length;i++){
                    string = string.append(sp[i]+"\n");
                }
                finalNames = string.toString();
            }
        } catch (InvalidFormatException e) {
            e.printStackTrace();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return finalNames;
    }

}

但是,在执行上面的程序之后,我在控制台上得到了下面的异常,如前所述:

代码语言:javascript
复制
Could not instantiate the opennlp.tools.namefind.TokenNameFinderFactory. The initialization throw an exception.
opennlp.tools.util.ext.ExtensionNotLoadedException: Unable to find implementation for opennlp.tools.util.BaseToolFactory, the class or service opennlp.tools.namefind.TokenNameFinderFactory could not be located!
    at opennlp.tools.util.ext.ExtensionLoader.instantiateExtension(ExtensionLoader.java:97)
    at opennlp.tools.util.BaseToolFactory.create(BaseToolFactory.java:106)
    at opennlp.tools.util.model.BaseModel.initializeFactory(BaseModel.java:254)
    at opennlp.tools.util.model.BaseModel.loadModel(BaseModel.java:237)
    at opennlp.tools.util.model.BaseModel.<init>(BaseModel.java:181)
    at opennlp.tools.namefind.TokenNameFinderModel.<init>(TokenNameFinderModel.java:110)
    at com.naimesh.opennlp.DrugNameFinder.drugNameFind(DrugNameFinder.java:19)
    at com.naimesh.opennlp.TextFinder.main(TextFinder.java:18)
Exception in thread "main" java.lang.IllegalArgumentException: opennlp.tools.util.InvalidFormatException: Could not instantiate the opennlp.tools.namefind.TokenNameFinderFactory. The initialization throw an exception.
    at opennlp.tools.util.model.BaseModel.initializeFactory(BaseModel.java:256)
    at opennlp.tools.util.model.BaseModel.loadModel(BaseModel.java:237)
    at opennlp.tools.util.model.BaseModel.<init>(BaseModel.java:181)
    at opennlp.tools.namefind.TokenNameFinderModel.<init>(TokenNameFinderModel.java:110)
    at com.naimesh.opennlp.DrugNameFinder.drugNameFind(DrugNameFinder.java:19)
    at com.naimesh.opennlp.TextFinder.main(TextFinder.java:18)
Caused by: opennlp.tools.util.InvalidFormatException: Could not instantiate the opennlp.tools.namefind.TokenNameFinderFactory. The initialization throw an exception.
    at opennlp.tools.util.BaseToolFactory.create(BaseToolFactory.java:117)
    at opennlp.tools.util.model.BaseModel.initializeFactory(BaseModel.java:254)
    ... 5 more
Caused by: opennlp.tools.util.ext.ExtensionNotLoadedException: Unable to find implementation for opennlp.tools.util.BaseToolFactory, the class or service opennlp.tools.namefind.TokenNameFinderFactory could not be located!
    at opennlp.tools.util.ext.ExtensionLoader.instantiateExtension(ExtensionLoader.java:97)
    at opennlp.tools.util.BaseToolFactory.create(BaseToolFactory.java:106)
    ... 6 more

请有人在这个问题上帮助我,我尝试了很多东西和阅读博客,但找不到有用的东西。如果有人能给出有用的解决方案,那将是非常感谢的。

EN

回答 1

Stack Overflow用户

发布于 2016-05-23 10:05:21

这是因为您已经使用opennlp (1.6.0)的不同版本训练和创建了模型model.bin,而且在代码中使用的是1.5.3,这是因为使用了使用不同版本培训的模型。检查代码中使用的opennlp版本(检查.classpath)

希望这能有所帮助!干杯!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35208252

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档