Java 波特算法和兰开斯特算法的主要区别和优点是什么?

Java 波特算法和兰开斯特算法的主要区别和优点是什么?,java,machine-learning,nlp,Java,Machine Learning,Nlp,我正在用java处理文档分类任务 这两种算法都得到了高度推荐。每种算法的优点和缺点是什么?在自然语言处理任务的文献中,哪种算法更常用 从根本上讲,波特和兰开斯特词干分析算法之间的主要区别在于兰开斯特词干分析比波特词干分析更具攻击性。目前使用的三种主要的词干生成算法是波特、斯诺鲍(Porter2)和兰开斯特(Paice-Husk),攻击性连续体基本上遵循这些路线。波特是攻击性最小的算法,每种算法的细节实际上都相当冗长和技术性。不过,以下是您的详细信息: 波特:无疑是最常用的词干分析器,也是最温和的

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


这两种算法都得到了高度推荐。每种算法的优点和缺点是什么?在自然语言处理任务的文献中,哪种算法更常用

从根本上讲,波特和兰开斯特词干分析算法之间的主要区别在于兰开斯特词干分析比波特词干分析更具攻击性。目前使用的三种主要的词干生成算法是波特、斯诺鲍(Porter2)和兰开斯特(Paice-Husk),攻击性连续体基本上遵循这些路线。波特是攻击性最小的算法,每种算法的细节实际上都相当冗长和技术性。不过,以下是您的详细信息:

波特:无疑是最常用的词干分析器,也是最温和的词干分析器之一。它是少数几个真正支持Java的词干分析器之一,这是一个优势,尽管它也是算法中计算最密集的(没有很大的余量)。在很大程度上,它也是最古老的词干生成算法

搬运工2:几乎被普遍认为比搬运工有进步,这是有充分理由的。事实上,波特本人也承认这比他原来的算法要好。计算时间比porter稍快,周围有一个相当大的社区

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

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

雪球-附加信息 是一种小型字符串处理语言,设计用于创建 用于信息检索的词干算法

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

名称的历史 因为它有效地提供了一个“后缀剥离语法”,所以我不得不玩弄它 我想把它叫做“脱衣舞娘”,但理智是有道理的 流行,因此它被命名为“雪球”,作为对斯诺波尔的致敬 Farber、Griswold和Poage先生的优秀字符串处理语言 还有20世纪60年代的波隆斯基。
---马丁·波特


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

Snowball实际上是Martin Porter为精确定义词干分析器而设计的语言,它本身不是词干分析器。您提到的算法称为“英语词干分析器”或“Porter2词干分析器”。它非常类似于“Porter Stemmer”,但规则稍有改进。如果你正在为研究进行比较,“波特”(原文)会被更多地使用,但如果你想要实际的准确性,请使用“波特2”。“Paice外壳”在默认情况下是一个沉重的词干分析器,但如果您使用单独的规则文件来滚动您自己的规则,它会很有用。“3之间的计算时间非常小。”没有名字的人最初的答案,关于雪球是什么,把我搞糊涂了,因为它不是我读过的。感谢您消除了混淆。为了回答这个问题,Snowball语言和假定的Snowball词干分析器之间的混淆得到了很好的传播。例如,NLTK使用术语
SnowballStemmer