波特和兰开斯特词干提取算法的主要区别和好处是什么?



我正在用java处理文档分类任务。

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

在最基本的情况下,波特和兰开斯特词干分析算法之间的主要区别在于兰开斯特词干分析器比波特词干分析器更具侵略性。目前使用的三种主要词干算法是Porter,Snowball(Porter2(和Lancaster(Paice-Husk(,侵略性连续体基本上遵循相同的路线。波特是最不激进的算法,每个算法的细节实际上都是相当冗长和技术性的。不过,这里有一个细分:

波特:毫无疑问,最常用的词干分析器,也是最温和的词干分析器之一。为数不多的实际上具有Java支持的词干分析器之一,这是一个加号,尽管它也是计算量最大的算法(授予的不是非常显着的幅度(。它也是最古老的词干提取算法。

Porter2:几乎被普遍认为是对Porter的改进,这是有充分理由的。波特本人实际上承认它比他原来的算法更好。计算时间比porter稍快,周围有一个相当大的社区。

兰卡斯特:非常激进的词干提取算法,有时会出错。对于波特和雪球,词干表示通常对读者来说相当直观,兰开斯特则不是这样,因为许多较短的单词会变得完全混淆。这里最快的算法,将大大减少你的工作单词集,但如果你想要更多的区别,而不是你想要的工具。

老实说,我觉得雪球通常是要走的路。在某些情况下,兰开斯特会大幅削减您的工作集,这可能非常有用,但在我看来,滚雪球的边际速度增加不值得缺乏精度。波特的实现最多,因此通常是默认的首选算法,但如果可以的话,请使用 snowball。

雪球 - 附加信息

Snowball 是一种小字符串处理语言,专为创建用于信息检索的词干提取算法。

Snowball

编译器将一个 Snowball 脚本转换为另一个脚本语言 - 目前是ISO C,C#,Go,Java,Javascript,Object Pascal,支持 Python 和 Rust。

名称的历史

由于它有效地提供了一个"后缀STRIPPER GRAMmar",所以我玩弄了有称其为"脱衣舞"的想法,但明智的是盛行,所以它被命名为"雪球",以致敬 SNOBOL,优秀的字符串处理语言 法伯先生, 格里斯沃尔德先生, 波奇先生和 1960 年代的波兰斯基。
---马丁·波特

在 Snowball

语言中实现的词干分析器有时简称为 Snowball 词干分析器。例如,请参阅自然语言工具包:nltk.stem.snowball。

相关内容

最新更新