一个好的Java库用于词性标注是什么?

29
3个回答

16
你是否想在特定领域中标记POS?大多数通用标注器都是基于新闻稿文本进行训练的。通常,当你在特定领域(如生物医学文本)中使用它们时,它们并不表现出色。有其他专门针对此类领域进行训练的标注器,例如生物医学文本的dTagger(Java)。
对于新闻稿文本,Adwait Ratnaparkhi的MXPOST非常出色,并且是我推荐的一个。
其他Java实现包括:
  1. MontyLingua
  2. Berkeley Parser(不是真正的POS标注器,但所有完整的解析器通常都会包含POS标注器。谷歌搜索“Java语法解析器”,你会发现很多。)
  3. QTag
  4. LBJ

OpenNLPLingpipe,正如其他帖子所述,也相当不错。

有关POS标记的最新信息可以在这里找到。正如您所看到的,LTAG-Spinal(另一位作者也提到了它)目前排名最佳,但各个标记器之间的差异并不大。我自己没有使用过LTAG。

还要注意,POS标记的基准性能约为90%。基线意味着 - (a) 从词汇表中选择最常见的POS标记标记每个单词,以及 (b) 将每个未知单词标记为名词。


您的MXPOST链接是指向一个压缩归档文件的FTP站点。我搜索了一下,除了它是一个人的CS论文外,找不到太多有关MXPOST的信息。我正确地认为,MXPOST没有太多社区支持吗? - Glenn
1
@Glenn 是的。虽然OPENNLP似乎是MXPOST的一个等效实现。我从OPENNLP网站上引用了以下内容:
  1. 如果您熟悉Adwait Ratnaparkhi的maxent实现中的特征选择,那么您应该没有问题,因为我们的POS标记器实现使用与他相同的特征。
  1. 他(Adwait)关于NLP的maxent介绍和论文是使opennlp.maxent和我们的Grok maxent组件(POS标记器、句子结束检测器、分词器、名称查找器)成为可能的关键!
OpenNLP似乎有一个活跃的sourceforge社区。
- hashable
最终,LingPipe 对我来说是最好的选择。它在轻松嵌入其他系统方面表现最佳。它在词性标注方面也做得相当不错。 - Glenn

3

3
我曾使用过LingPipe和Stanford的POS标注器。后者是最先进的POS标注器,但根据我的经验,它太慢了(尽管他们提供了不太准确但相对较快的模型)。当然,这总是取决于您想要实现什么目标,速度和准确性之间总会存在一个权衡。
我曾经使用过基于LBJ的NER软件,虽然它非常准确,但源代码非常混乱。LingPipe和Stanford的源代码非常干净且有良好的文档。
您还可以查看LTAG-spinal。我还没有使用过它,但从算法描述和列出的准确性来看,它肯定比您目前拥有的替代方案更好。
希望能对您有所帮助。

6
斯坦福的最佳模型速度适中。但事实上,LTAG-spinal比它慢3倍,而且提升很微不足道。对于通用目的,我们推荐使用left3words模型:使用它进行标记的速度与Ratnaparkhi或OpenNLP标记器相似或更快,但比两者都更准确。在斯坦福POS标记器FAQ中查找更多信息。 - Christopher Manning
我在那里找不到与OpenNlp的比较(只有其他标记器)- 我是否忽略了什么? - benroth
@ChristopherManning 我刚刚使用Penn Treebank进行了10倍交叉验证。似乎left3words比opennlp稍微差一些。但是Bidirectional确实更好。您能否告诉我有关您进行比较的数据的更多信息?谢谢! - Wei Qiu
@benroth:好的,OpenNLP在那个FAQ评论中似乎没有出现。 - Christopher Manning
@Wei Qiu:这个评论是基于我在2010年对各种标注器进行比较实验的结果。我刚刚查看了那些结果。当时我使用的是opennlp-1.4.3(当时最新的、Apache之前的版本)。在那个时候,opennlp的准确率(maxent模型)在Penn Treebank WSJ 22-24节上略逊于Stanford POS标注器(96.80% vs. 96.87%),但速度要慢得多(10.71秒 vs. 6.92秒)。我最近没有重复这个实验。 - Christopher Manning
@所有人:请注意,斯坦福的标注器使用GPL许可证,这意味着您很可能需要开放您的代码库。为什么不使用Apache风格的许可证,斯坦福? - U Avalos

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接