Porter 和 Lancaster Stemming 算法的主要区别和优点是什么?

我在爪哇文档分类工作。

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

39766 次浏览

从根本上说,Porter 和 Lancaster 干茎算法之间的主要区别在于 Lancaster 干茎明显比 Porter 干茎更具侵略性。今天使用的三种主要的干扰算法是 Porter、 Snowball (Porter2)和 Lancaster (Paice-Husk) ,攻击性连续体基本上遵循这些相同的路线。Porter 是最不具侵略性的算法,每个算法的具体细节实际上都相当冗长和技术性。下面是一个分类:

波特: 毫无疑问,最常用的茎,也是最温和的茎之一。它是少数几个真正支持 Java 的词干分析器之一,这是一个优点,尽管它也是算法中计算密集度最高的算法之一(当然不是非常显著)。它也是最古老的词干分析算法。

搬运工2: 几乎所有人都认为这是对搬运工的一种改进,而且理由很充分。波特自己也承认这比他最初的算法要好。计算时间比 porter 稍快一点,周围有相当大的社区。

兰开斯特: 非常积极的干扰算法,有时会出现故障。对于 Porter 和滚雪球,词干表示法对于读者来说通常是相当直观的,而对于 Lancaster 则不然,因为许多较短的单词会变得完全混淆。这里最快的算法,将大大减少你的工作字集,但如果你想要更多的区别,而不是你想要的工具。

说实话,我觉得雪球通常是最好的选择。在某些情况下,兰开斯特会大大削减你的工作设备,这可能是非常有用的,但边际速度增加超过雪球在我看来,不值得缺乏精度。Porter 具有最多的实现,因此通常是默认的 go-to 算法,但如果可以的话,使用雪球。

雪球-附加信息

Snowball 是一种小型字符串处理语言,专门用于创建 用于信息检索的干扰算法。

Snowball 编译器将一个 Snowball 脚本翻译成另一个 目前 ISO C,C # ,Go,Java,Javascript,Object Pascal, 支持 Python 和 Rust。

这个名字的历史

因为它有效地提供了一个“ STRIPPER 语法”的后缀,所以我把玩了一下 把它叫做“脱衣舞表演”,但是理智已经 因此,它被命名为“雪球”,以向 SNOBOL 致敬 优秀的字符串处理语言先生法伯,格里斯沃尔德,波奇 还有波隆斯基。
马丁 · 波特

在 Snowball 语言中实现的词干分析器有时简称为 Snowball 词干分析器。例如,请参见自然语言工具包: 雪球