stem算法

今天研究sphider源码时,发现其中有个叫做stem($word)的函数,于是研究了一下,发现这是个叫词干抽取算法的东西,具体可以看看wikipedia上的解释:

http://en.wikipedia.org/wiki/Stemming

词干抽取就是将一个英语单词映射到其词根上,比如按照这种算法,fighting,fighter,fighted,fights等都会映射到fight这个词根,这在信息检索时是很重要的,比如你在搜索框输如downloads和download可能结果会差别很大,这是在信息检索上很不想看到的,于是就有各种提取词根的算法,在wiki上我能勉强理解的也就只有利用lookuptable实现lookup算法和suffix-stripping算法,这两种算法都比较好理解,也很好实现,其他的就不大明白了。

这个函数是这个算法的一种实现方式,这个函数是这个算法很简单的一种实现,就是利用php中的正则表达式还有substr()函数去除一个英文单词的无用词尾,我将这个函数单独拿出来测试了一下,这个函数分为5部执行,第一步是取出ing,比如fighting就会变为fight,剩下的几步也无非是类似的处理,不过还是的好好看看。

在网上查找资料时,发现这个算法在好多关于信息检索的地方会见到,比如说sphinx中也会出现这个算法,也有好多c语言的实现方式。










  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值