现在,把它变成雪球。
波特词干分析器使用了一个度量,米、单词长度或单词部分。如果C类是一个或多个辅音的序列,并且V(V)一个序列对于一个或多个元音,任何单词部分都有以下形式- [C类](风险资本)米[V(V)],
作为可选内容阅读C类,后面是米重复风险资本,后面是可选的V(V)。这定义了米.所以黄昏的这个度量为4。
c r e p u s c u l a r| | | | |[C] 伏、伏、伏1 2 3 4 大多数后缀删除规则都会留下一个词干测量值超过某个值,- (米> 0)电子设备 -> ee公司
表示“替换”电子设备具有ee公司如果茎之前电子设备具有度量值米> 0’. Porter词干分析器的实现通常有一个例程计算米每次都有可能被删除的候选者。
事实上,唯一的测试米Porter词干分析器中有米> 0,米>1、和,在两个有趣的地方,米= 1. 这表明有两个单词中的关键位置:从左到正确的,米>0变为真,然后米>1变为真。事实证明米>0在第一个辅音之后变为真在元音之后,以及米>1在第一个之后的点变为真元音后面的辅音跟在元音后面辅音后面。调用这些位置第页1和第页2,我们可以很简单地确定它们雪球:
定义v‘aeiouy’....做(gopast v gopast非v设置标记p1gopast v gopast非v设置标记p2) 右侧区域第页1表示为对1,区域到的权利第页2由对2:
c r e p u s c u l a r| |第1页第2页<---R1--><--R2--> 我们可以通过调用R1级和R2级,由定义,
将R1定义为$p1<=光标将R2定义为$p2<=游标 使用这些测试而不是计算米是可以接受的,只要堵塞过程不会改变第页1和第页2个位置,确实如此在Porter词干分析器中。
这里介绍的词干分析器的一个特别有趣的特性是他们对职位的常用第页1和第页2.标记细节第页1和第页由于元音和辅音不同。例如,法语我前面跟元音应被视为辅音(inqu(印度语)我意大利语); 葡萄牙语(昂和õ应视为元音对(圣约昂). 第三个重要的位置是pV值,它试图标记最短的可接受的动词词干。它的定义因语言而异。Porter词干分析器不使用pV值明确地说,但当动词结尾惯性导航与制导和经修订的只有在前面有元音时才被删除。因此,用英语pV值将被定义为第一个元音。
波特词干分析器分为五个步骤,步骤1进一步划分到步骤1一, 1b条和1c(c),以及步骤5到步骤5一和5b条。步骤1删除这个我-后缀和步骤2到4d日-后缀(*).复合材料d日-后缀是减少到单个d日-一次加一个后缀。例如,如果一个单词结束宗教的,步骤2将其减少为副本和步骤3至集成电路。三个步骤是足以用英语进行此过程。第5步做了一些整理。
可以通过以下方式看出,词干规则是多么容易转化为雪球比较步骤1的定义一从1980年的论文中,
步骤1a:SSES->SS抚摸->抚摸IES->I小马->小马领带->钛SS->SS抚摸->抚摸S->猫->猫 与雪球相当,
将步骤1a定义为([子字符串]('sss'(<-'ss')“ies”(<-'i)“ss”()“s”(删除))) 正在从末尾向右向左扫描要词根的单词。这个中最长的“ss”, “是”, “ss”或“s”搜索并定义为切片。(如果未找到,步骤1a发出信号(f).)如果“ss”找到了,它是替换为“ss”等等。当然,替换“ss”由“ss”是个假人动作,所以我们可以写
“ss”() 而不是
'ss'(<-'ss') 记住这一点删除只是手段<- ''.
整个算法真正棘手的部分是步骤1b条,这可能值得详细研究。在这里,没有最右边的示例单词,
步骤1b:(m>0)EED->EE(*v*)ED->(*v*)荷兰国际集团->如果步骤1b中的第二或第三条规则成功完成以下操作:自动变速箱->自动变速箱BL->BLEIZ->IZE(*d而非(*L或*S或*Z))->单个字母(m=1和*o)->E 规则的第一部分意味着电子设备映射到ee公司如果电子设备在中对1(相当于米>0),或经修订的和惯性导航与制导如果它们是前面有元音。在雪球中,这很简单,
将步骤1b定义为([子字符串](“eed”(R1<-“ee”)“ed”“ing”(测试gopast v删除))) 但这必须通过规则的第二部分进行修改。*d日表示双字母辅音测试-英国广播公司,日等。*L(左),*S公司,*Z轴是测试对于我,秒,z(z).*哦是一个短元音测试-它与辅音-vowel-consonant,右边的辅音不是w个,x个或年.如果短元音测试合格,米=1等于光标位于第页1.所以规则的第二部分是指地图在,bl(黑色),iz公司到吃了,布尔,确定大小; 将某些双字母映射为单字母;和添加e(电子)在一个音节的单词中短元音之后。
我们首先需要两个额外的分组,
定义v“aeiouy”用“w”、“x”和“y”辅音定义v_WXY v+“WXY”//v用“l”、“s”、“z”定义v_LSZ v+“LSZ”//v 还有一个短元音测试,
将shortv定义为(non-v_WXY v non-v) (v_WXY测试是第一位的,因为我们从右往后扫描左图。)
双字母到单字母映射可以按如下方式完成:首先定义作为下一个切片非v_LSZ并将其复制为字符串中国,作为单身字符,
字符串(ch)....[非v_LSZ]->ch 进一步测试中国,测试字符串的下一个字母是否相同作为中的一个中国,如果这发出信号t吨, 删除删除切片,
[非v_LSZ]->ch ch删除
步骤1b然后可以这样写,
将步骤1b定义为([子字符串](“eed”(R1<-“ee”)“ed”“正在”(测试gopast v删除(在(“at”“bl”“iz”)<+“e”之间测试)或([非v_LSZ]->ch ch删除)或(标记p1测试短路<+‘e’)))) 但我们可以通过旋转规则的第二部分变成另一部分在…之间命令,注意到需要取消发布的信件有b条,d日,(f),克,米,n个,第页,对和t吨,
将步骤1b定义为([子字符串](“eed”(R1<-“ee”)“ed”“正在”(测试gopast v删除测试子串('位于“bl”“iz”(<+“e”)“bb”“dd”“ff”“gg”“mm”“nn”“pp”“rr”“tt”//忽略双c、h、j、k、q、v、w和x([下一步]删除)“”(标记p1测试短路<+“e”))))) 注意第二个中的空字符串在…之间,作为默认情况。
Snowball中的Porter词干分析器如下所示。这是一个精确的与作者发布的其他实现,包括、和始终有,与原始算法。由于看到了算法的所有其他实现作者在某种程度上不准确,这可能是第一次正确实施。
|