java-Porter和Lancaster提取算法的主要区别和好处是什么?

我正在处理Java中的文档分类任务。

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

Adam Hess asked 2019-11-08T14:20:50Z
1个解决方案
112 votes

从根本上讲,porter和lancaster词干提取算法之间的主要区别在于lancaster词干提取器比porter提取器更具攻击性。 当今使用的三种主要的阻止算法是Porter,Snowball(Porter2)和Lancaster(Paice-Husk),而侵略性连续体基本上遵循相同的思路。 波特是最不积极的算法,实际上每种算法的细节都相当冗长和技术性。 这是您的细分:

波特:毫无疑问,最常用的茎梗,也是最柔和的茎梗之一。 少数几个实际上具有Java支持的词干分析器之一,这是一个加分,尽管它也是算法中计算量最大的一个(不允许有很大的余地)。 它也是最古老的词干算法。

Porter2:出于充分的理由,几乎被普遍认为是对Porter的改进。 实际上,波特本人也承认它比他原来的算法要好。 与搬运工相比,它的计算时间略短,并且周围有相当大的社区。

兰开斯特(Lancaster):非常激进的词干算法,有时会出错。 使用搬运工和滚雪球时,词干表达通常对读者而言是相当直观的,而对于兰卡斯特而言,则不然,因为许多较短的单词将完全被混淆。 这里最快的算法,将大大减少您的单词工作量,但是如果您想要更多的区别,而不是您想要的工具。

老实说,我觉得Snowball通常是要走的路。 在某些情况下,Lancaster会极大地缩减您的工作集,这可能非常有用,但是我认为,滚雪球般的边际速度增加并不值得缺乏精确性。 波特的实现最多,因此通常是默认的定位算法,但如果可以的话,请使用滚雪球。

Slater Victoroff answered 2019-11-08T14:21:51Z
translate from https://stackoverflow.com:/questions/10554052/what-are-the-major-differences-and-benefits-of-porter-and-lancaster-stemming-alg