Porter和Lancaster Stemming算法的主要区别和好处是什么?

Ada*_*ess 57 java nlp machine-learning

我正在研究java中的文档分类任务.

强烈推荐这两种算法,每种算法的优点和缺点是什么,哪些在自然语言处理任务的文献中更常用?

Sla*_*off 115

从它的基础知识来看,搬运工和兰卡斯特干扰算法之间的主要区别在于兰卡斯特干扰器比搬运工干扰器明显更具侵略性.目前使用的三种主要阻塞算法是Porter,Snowball(Porter2)和Lancaster(Paice-Husk),其攻击性连续性基本沿着这些相同的路线.Porter是最不具侵略性的算法,每种算法的细节实际上都是相当冗长和技术性的.以下是您的细分:

搬运工:毫无疑问是最常用的阀杆,也是最温和的阀杆之一.实际上具有Java支持的少数词干提取器之一是一个优点,虽然它也是算法中计算密集程度最高的(但不是非常显着).它也是最古老的词干算法.

波特2:几乎普遍认为是对搬运工的改进,并且有充分的理由.波特自己实际上承认它比他原来的算法更好.比搬运工的计算时间略快,周围有一个相当大的社区.

兰卡斯特:非常积极的词干算法,有时候是一个错误.对于搬运工和雪球来说,词干表示对于读者来说通常是相当直观的,而兰卡斯特则不然,因为许多较短的单词将变得完全混淆.这里最快的算法,会大大减少你的工作单词,但如果你想要更多的区别,而不是你想要的工具.

老实说,我觉得Snowball通常是要走的路.兰卡斯特在某些情况下会严重削减你的工作组,这可能非常有用,但是在我看来,雪球的边际速度增加并不值得缺乏精确度.虽然Porter拥有最多的实现,因此通常是默认的go-to算法,但如果可以,请使用滚雪球.

  • Snowball实际上是由Martin Porter设计的用于精确定义词干分析器的语言,它本身并不是一个词干分析器.您引用的算法称为"英语Stemmer"或"Porter2 Stemmer".它与"Porter Stemmer"非常相似,但略有改进的规则.如果您正在进行研究比较"Porter"(原始)被更频繁地使用,但如果您希望实际准确性坚持使用"Porter2".默认情况下,"Paice-Husk"是一个重型词干分析器,但如果您使用单独的规则文件来滚动自己的规则,则非常有用.3之间的计算时间非常微不足道. (40认同)
  • 为了答案的好处,Snowball语言和假设的Snowball词干之间的混淆得到了很好的传播.例如,NLTK使用术语"SnowballStemmer":http://www.nltk.org/howto/stem.html (4认同)