0

我正在尝试使用 LingPipe 并按照本教程提取命名实体(人员、人员和组织) 。这是我试图从中提取名称的全文,这是代码(为简洁起见,省略了异常处理):

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, " Abbott, "。我假设库的 NER 工作得很好,问题是上面的代码在某种程度上滥用了这个库中的类/方法。但我似乎无法找到代码有什么问题?

有任何想法吗?

4

1 回答 1

2

似乎问题出在您在第一行中阅读的 chunker 模型中。可能,它使用了错误的分词器,它是Bali., I', Widodo. I, " Abbott,的来源"pair并且the Bali可以用普通错误来解释(标注器的精度通常不超过 80-90%)。然而,此类错误的来源也可以用坏模型来解释——例如,它可以针对另一个领域进行训练。

顺便说一句,你为什么使用长管,而不是斯坦福 NER?通常,它显示出更好的结果;例如,第一个可用的(即随机的)文章。此外,这里是 Standford NER 的一个很好的分步教程。

于 2015-03-06T21:21:02.473 回答