【问题标题】:LingPipe Named Entity Recognizer outputs a lot of mismatchesLingPipe 命名实体识别器输出很多不匹配
【发布时间】:2015-03-06 15:08:11
【问题描述】:

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

有什么想法吗?

【问题讨论】:

    标签: nlp named-entity-recognition lingpipe


    【解决方案1】:

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

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

    【讨论】:

    • 支持研究论文,因为我也在测试几个 nlp 库,这非常有用!这也是试用LingPipe的原因。
    • chunker 的模型是从 LingPipe 的网站上获得的,并且是在新闻文章语料库上进行预训练的,这正是我正在测试的。这就是为什么我认为它应该比这表现得更好。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-25
    • 2014-03-17
    • 2011-07-31
    • 2018-03-08
    • 2020-07-02
    • 2010-11-04
    相关资源
    最近更新 更多