【问题标题】:How to find a name Entity in a text in java如何在java中的文本中查找名称实体
【发布时间】:2015-01-22 09:27:01
【问题描述】:

以下是java中使用opennlp编写的识别名称实体的代码

try {
        System.out.println("Input : Pierre Vinken is 61 years old");
        InputStream modelIn = new FileInputStream("en-ner-person.bin");
        TokenNameFinderModel model = new TokenNameFinderModel(modelIn);
        NameFinderME nameFinder = new NameFinderME(model);
        String[] sentence = new String[]{
                "Pierre",
                "Vinken",
                "is",
                "61",
                "years",
                "old",
                "."
                };

            Span nameSpans[] = nameFinder.find(sentence);
            for(Span s: nameSpans)
                System.out.println("Name Entity : "+s.toString());
    }
    catch (IOException e) {
      e.printStackTrace();
    }

这给出了输出:

输入:Pierre Vinken 61 岁

名称实体:[0..2) 人

但对于任何其他实体,如 GPE(地理和政治实体),它不能识别

例如

输入:泰姬陵在印度

它既不是泰姬陵也不是印度。可以做什么?

【问题讨论】:

    标签: java python entity-framework machine-learning nlp


    【解决方案1】:

    如文件名所示,en-ner-person.bin 仅识别人员。对于其他类型的实体,还有其他可用的 OpenNLP NER 模型。

    【讨论】:

    • 谢谢。那么我应该包括所有名称 Finder 模型吗?如果某个令牌在不止一种类型的模型中,它将如何识别实体之间的重叠?
    • 您必须对每个模型分别运行命名实体识别器(名称查找器),然后根据您的任务决定如何组合生成的注释。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多