以下是使用OpenNLP在Java中识别命名实体的代码
try { System.out.println("输入 : 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("命名实体 : "+s.toString()); } catch (IOException e) { e.printStackTrace(); }
这会产生以下输出 :
输入 : Pierre Vinken is 61 years old
命名实体 : [0..2) person
但是对于其他实体如GPE(地理和政治实体),它无法识别
例如
输入 : Taj Mahal is in India
它既不识别Taj Mahal也不识别India。该怎么办?
回答:
正如文件名所示,en-ner-person.bin
只能识别人物。OpenNLP还有其他可用的NER模型来识别其他类型的实体。