如何在 java 中的文本中查找名称实体

How to find a name Entity in a text in java

以下是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(地理和政治实体),它无法识别

例如

输入:泰姬陵在印度

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

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