我正在尝试使用LingPipe并跟随this tutorial提取命名实体(人员,个人和组织)。这是我试图从中提取名称的full text,这里是代码(为简洁省略了异常处理):
Chunker chunker = readChunker("/path-to-chunker"); // custom method for
reading the model
String article = "Some long news article spanning multiple lines...";
Chunking chunking = chunker.chunk(article);
Set<Chunk> chunkingSet = chunking.chunkSet();
for (Chunk chunk : chunkingSet) {
String name = article.substring(chunk.start(), chunk.end()));
System.out.println(name);
}
这是我得到的输出(部分):
Tony Abbott
Indonesia
Joko Widodo
Sukumaran
Andrew Chan
Bali.
pair
the Bali
Nusa Kambangan
Indonesian
Indonesian
I’
Widodo. I
” Abbott
Julie Bishop
Widodo
al-Jazeera
Sukumaran
Chan
Bishop
”
正如您所看到的,有很多不匹配/部分匹配,例如Bali.
,pair
,the Bali
,I'
,Widodo. I
,{{ 1}}," Abbott
。我假设库的NER工作正常,问题是上面的代码在某种程度上误用了这个库中的类/方法。但我似乎无法找到代码有什么问题?
有什么想法吗?
答案 0 :(得分:2)
似乎问题出在你在第一行读到的chunker模型中。可能它使用了错误的标记化器,它是Bali.
,I'
,Widodo. I
," Abbott
,"
的来源。
pair
和the Bali
可以通过普通错误来解释(标记符通常精度不超过80-90%)。但是,此类错误的来源也可以通过错误的模型来解释 - 例如,它可以针对另一个域进行培训。