Porter和Lancaster干扰algorithm的主要区别和优点是什么?
我正在处理java中的文档分类任务。
两种algorithm都被高度推荐,每种方法的优点和缺点是什么,哪些在自然语言处理任务的文献中更常用?
在它的基础上,porter和lancaster干扰algorithm的主要区别在于,lancaster干扰者比porter干扰者更具攻击性。 现在使用的三种主要的干扰algorithm是Porter,Snowball(Porter2)和Lancaster(Paice-Husk),基本上沿着这些相同的路线进行攻击性连续性。 波特是最不积极的algorithm,每个algorithm的具体细节实际上是相当冗长和技术性的。 尽pipe如此,这是一个失败的例子:
波特:最常用的词干毫无疑问,也是最温柔的词干。 实际上拥有Java支持的less数stemmers之一是一个加号,尽pipe它也是algorithm中计算最密集的(不是非常显着的限制)。 它也是最大的干扰algorithm。
搬运工2:几乎普遍认为是对搬运工的改进,并有很好的理由。 波特本人实际上承认,它比他原来的algorithm更好。 运行时间比搬运工稍快,周围有相当大的社区。
兰开斯特:非常积极的干扰algorithm,有时是一个错误。 通过搬运工和雪球,对于一个读者来说,干扰表征通常是相当直观的,而对于兰开斯特而言,这样的描述通常是相当直观的,因为许多较短的单词将变得完全混淆。 这里最快的algorithm,会大大减less你的工作集,但如果你想要更多的区别,而不是你想要的工具。
老实说,我觉得斯诺鲍通常是要走的路。 在某些情况下,兰开斯特会大大减less你的工作集,这可能是非常有用的,然而在我看来,雪球的边际速度增加并不值得精确度。 Porter的实现方式是最多的,所以通常是默认的转换algorithm,但是如果可以的话,可以使用雪球。