[搜索]波特词干(Porter Streamming)提取算法详解(1)
2014-11-30 16:48
369 查看
英语词汇由两部分构成,词干和词缀,词缀又分前缀和后缀,这里的词干提取仅只去除后缀的操作。
波特词干提取算法的原文在这里
http://tartarus.org/~martin/PorterStemmer/def.txt
先说一些基本定义
小写c代表辅音字母,小写字母v代表元音字母。大写字母C代表一串辅音字母,长度大于0。大写字母V代表一串连续的元音字母,长度大于0.因此,一个单词或者一个单词的一部分,可以表示为如下的四种形式之一。
CVCV ... C
CVCV ... V
VCVC ... C
VCVC ... V
这四种形式可以归纳为一种形式:
[C]VCVC ... [V]
可以进一步表示为如下形式:
[C](VC){m}[V].
其中方括号表示是可选的,{m}表示前面单词的一部分的重复次数。如下面的一些例子。
m=0 TR, EE, TREE, Y, BY.(没有出现)
m=1 TROUBLE, OATS, TREES, IVY.(出现一次,见黑体部分)
m=2 TROUBLES, PRIVATE, OATEN, ORRERY.(出现两次,见黑体部分)
去除后缀的规则如下形式:
(condition) S1 -> S2
也就是说,如果这个单词的后缀是S1,如果词干满足条件(condition),那么就用S2替换S1,这种形式的描述和CFG的描述一致。这个条件通常是由m决定的,上面已经示例来m。例如:
(m > 1) EMENT ->
条件就是m>1,S1就是ELMENT,S2是空。
如果按照上面的这个规则,那么就可以把单词replacement替换成replace。因为m=2,可以参见黑体部分。
(待续)
波特词干提取算法的原文在这里
http://tartarus.org/~martin/PorterStemmer/def.txt
先说一些基本定义
小写c代表辅音字母,小写字母v代表元音字母。大写字母C代表一串辅音字母,长度大于0。大写字母V代表一串连续的元音字母,长度大于0.因此,一个单词或者一个单词的一部分,可以表示为如下的四种形式之一。
CVCV ... C
CVCV ... V
VCVC ... C
VCVC ... V
这四种形式可以归纳为一种形式:
[C]VCVC ... [V]
可以进一步表示为如下形式:
[C](VC){m}[V].
其中方括号表示是可选的,{m}表示前面单词的一部分的重复次数。如下面的一些例子。
m=0 TR, EE, TREE, Y, BY.(没有出现)
m=1 TROUBLE, OATS, TREES, IVY.(出现一次,见黑体部分)
m=2 TROUBLES, PRIVATE, OATEN, ORRERY.(出现两次,见黑体部分)
去除后缀的规则如下形式:
(condition) S1 -> S2
也就是说,如果这个单词的后缀是S1,如果词干满足条件(condition),那么就用S2替换S1,这种形式的描述和CFG的描述一致。这个条件通常是由m决定的,上面已经示例来m。例如:
(m > 1) EMENT ->
条件就是m>1,S1就是ELMENT,S2是空。
如果按照上面的这个规则,那么就可以把单词replacement替换成replace。因为m=2,可以参见黑体部分。
(待续)
相关文章推荐
- [搜索]波特词干(Porter Streamming)提取算法详解(3)
- [搜索]波特词干(Porter Streamming)提取算法详解(2)
- Python排序搜索基本算法之堆排序实例详解
- 字符串关键字搜索匹配提取处理算法
- lucene多种搜索方式详解例子
- 图象的骨架提取算法
- 作业调度问题深度搜索定界算法
- 作业调度问题深度搜索定界算法
- Google工程师详述Google的搜索结果排列算法
- 关于路径搜索算法的实用性优化
- 路由器原理和路由协议、算法详解(1)
- lucene多种搜索方式详解例子
- 路由器原理和路由协议、算法详解
- 路由器原理和路由协议、算法详解(3)
- Hash 算法详解
- 路由器原理和路由协议、算法详解(2)
- 工程师详述Google的搜索结果排列算法
- Google工程师详述Google的搜索结果排列算法 (ZT)
- 瞬间模糊搜索1000万基本句型的语言算法
- 路由器原理和路由协议、算法详解(5)