从根本上讲,porter和lancaster词干提取算法之间的主要区别是lancaster词干提取器比porter提取器更具攻击性。当今使用的三种主要的阻止算法是Porter,Snowball(Porter2)和Lancaster(Paice-Husk),其侵略性连续性基本上遵循相同的思路。波特是最不积极的算法,实际上每种算法的细节都相当冗长和技术性。这是您的细分:
波特:毫无疑问,最常用的茎梗,也是最柔和的茎梗之一。少数几个实际上具有Java支持的词干分析器之一,这是一个加分,尽管它也是算法中计算量最大的一个(不允许有很大的保证)。它也是最古老的词干算法。
Porter2:有充分的理由,几乎被普遍认为是对Porter的改进。实际上,波特本人也承认它比他原来的算法要好。与porter相比,它的计算时间略短,并且周围有相当大的社区。
兰开斯特(Lancaster):非常激进的词干算法,有时会出错。使用搬运工和滚雪球时,词干表达通常对读者而言是相当直观的,而对于兰卡斯特而言,则不然,因为许多较短的单词将完全被混淆。这里最快的算法,将大大减少您的单词工作量,但是如果您想要更多的区别,而不是您想要的工具。
老实说,我觉得Snowball通常是最好的选择。在某些情况下,Lancaster会极大地缩减您的工作集,这可能非常有用,但是我认为,滚雪球般的边际速度增加并不值得缺乏精确性。波特的实现最多,因此通常是默认的定位算法,但如果可以的话,请使用滚雪球。
0
我正在处理Java中的文档分类任务。
强烈推荐这两种算法,每种算法都有什么优点和缺点,并且在自然语言处理任务的文献中更常用?