开发英语词干分析器(略有修订,2001年12月) (进一步修订,2002年9月)
我不止一次尝试改进波特的结构算法,使其遵循删除罗曼史结尾的模式语言词干分析器。不难看出为什么要这样做:步骤1b条Porter词干去除预计起飞时间和惯性导航与制导,其中包括我-后缀(*)附在动词上。如果删除这些后缀应该不需要移除d日-虽然后缀不是动词它会尝试这样做。这似乎是波特词干分析器的一个缺陷,不被浪漫主义者分享。同样,步骤之间的划分2、3和4似乎相当武断,在《浪漫词干集》中找不到。
然而,这些改进尝试都被放弃了。他们似乎导致算法更加复杂,但没有明显的改进。不注意步骤1结果的原因b条可能是这样英语词尾对词类的影响不如浪漫主义语言中的结尾。例如,条件和位置在法语中必须是名词,但在英语中可以是动词以及名词,- 我们都受到广告的制约
他们今天的定位不同 单独执行步骤2、3和4的一个可能原因是d日-英语中的后缀组合相当复杂已完成在别处.
但使用波特二十年后词干分析器,确实有一些改进,以及一种新算法因此这里提供英语。(它可以被称为“Porter2”以将其与派生它的Porter词干分析器区分开来。)变化并不太广泛:(1)终止年已更改为我不太常见,(2)后缀我们不会丢失它秒,(3)a为删除添加了几个附加后缀,包括(4)后缀第页此外,还包括一小部分例外表格。在2001年12月,又进行了两次调整:(5)步骤5一和5b条将旧的波特式茎干器组合成一个步骤。这意味着那场未公开的决赛陆上通信线未完成最终移除电子. (6)在步骤3中主动的,主动的仅在区域内时删除R(右)2(7)7月2005年进行了小调整(包括新的步骤0)以应对撇号。
首先,这里是基本算法,没有参考特殊形式。与波特算法的精确比较需要如果要做的话,一定要非常小心。这里我们用*点出发日期,截止日期+其他功能。在示例词汇表中,波特和波特2将不到5%的单词转换成不同的形式。 英语词干分析器的定义定义元音作为其中之一-
爱你
定义双重的作为其中之一-
bb-dd-ff-gg-mm-nn-pp-rr-tt
定义有效的锂-结束作为其中之一-
c d e g h k m n r t公司
R(右)1是元音后面第一个非元音之后的区域,或如果没有这样的非元音单词。(此定义可能会因某些例外情况而修改单词-见下文。)
R(右)2是中元音后面第一个非元音之后的区域R(右)1或如果没有这样的非元音,单词的结尾。(请参见笔记在R(右)1和R(右)2.)
定义短音节用一个词来说就是(一)后跟元音的元音非元音w个,x个或Y(Y)前面是非元音,或*(b条)单词开头的元音后跟非元音。
所以说唱,陷阱,诱捕以短音节结尾现在,在,在是被归类为短音节。但是根除,赐予,打扰不要以短音节。
一个词被称为短的如果它以短音节结尾,如果R(右)1为空。
所以床,流和切碎都是简短的单词,有孔小珠,嵌入,床是不是简短的单词。
撇号(')可以被视为一封信。(请参见笔记英语中的撇号。)
如果这个单词有两个或更少的字母,就保持原样。
否则,请执行以下每个操作,
删除初始值',如果存在。+然后,
设置初始值年,或年在元音之后,到Y(Y),然后建立区域R(右)1和R(右)2(请参见笔记元音标记。)
步骤0:+
- 搜索后缀中最长的,
- '
- 的
- “s”
- 如果发现,请移除。
第1步一:- 搜索以下后缀中最长的后缀,并执行已指示操作。
- 安全标准
- 替换为不锈钢
- 伊德+ ies公司*
- 替换为我如果前面有多个字母,则为即(所以领带 -> 领带,哭 -> 克里)
- 秒
- 如果前面的单词部分不在秒(所以气体和这保留秒,间隙和新西兰人失去它)
- 我们+ 不锈钢
- 什么都不做
第1步b条:- 搜索以下后缀中最长的后缀,并执行已指示操作。
- 需要紧急+
- 替换为ee公司如果在R(右)1
- 爱德华利+ 非常高兴+
- 如果前面的单词部分包含元音,则删除,删除后:
- 如果单词结束在,bl(黑色)或iz公司添加电子(所以奢侈 -> 奢侈的),或
- 如果单词以双精度结尾删除最后一个字母(所以跳跃 -> 单足蹦跳),或
- 如果单词短,请加上电子(所以单足蹦跳 -> 希望)
第1步c(c):*
- 替换后缀年或Y(Y)通过我如果前面有一个非元音,它不是单词的第一个字母(so哭泣 -> 克里,通过 -> 通过,说 -> 说)
第2步:- 搜索以下后缀中最长的后缀,如果在中找到和R(右)1,执行指示的操作。
- 民族:替换为选项
- 国家情报局:替换为性质
- anci公司:替换为昂(ance)
- abli公司:替换为能够的
- 恩特里:替换为耳鼻喉科
- (燃料)化:替换为确定大小
- 民族主义者:替换为吃了
- 阿里蒂·阿利主义:替换为铝
- 充满:替换为满满的
- 卓越:替换为乌斯
- 伊维蒂:替换为五
- 哔哩哔哩+:替换为布尔
- 奥美+:替换为og(运行日志)如果前面有我
- 完全(fulli)+:替换为满满的
- 莱斯利+:替换为较少的
- 锂+:如果前面有有效的锂-结束
第三步:- 搜索以下后缀中最长的后缀,如果在中找到和R(右)1,执行指示的操作。
- 民族+:替换为选项
- 国家的+:替换为吃了
- 实现:替换为铝
- 重复信息:替换为集成电路
- 充满:删除
- 主动的,主动的*:在中时删除R(右)2
第4步:- 搜索以下后缀中最长的后缀,如果在中找到和R(右)2,执行指示的操作。
- 可靠性评估民族主义占据主动地位
- 删除
- 离子
- 如果前面有,则删除秒或t吨
第五步:*
- 搜索以下后缀,如果找到,执行指示的操作。
- 电子
- 在中删除R(右)2或inR(右)1且前面没有短音节
- 我
- 在中删除R(右)2,前面有我
最后,转动任何剩余的Y(Y)单词中的字母变回小写。 一般特殊形式很容易扩展Snowball脚本,以便单词形式得到特殊处理。标准情况是某些单词W公司1, W公司2 ..., 不是通过词干分析过程,而是映射到表单X(X)1, X(X)2。。。分别是。如果脚本有通过调用进行词干分析
将阀杆定义为C 其中C类是一个命令,异常情况可以通过将其扩展到
将阀杆定义为(例外或C) 并进行例行程序例外:
将异常定义为([substring]限制在('西1'(<-'X1' )'西2'(<-'X2' )...))
达到极限导致测试整个字符串是否与的W公司我,如果找到匹配项,则将字符串替换为X(X)我.
更准确地说,我们可能有一组单词W公司11, W公司12 ...需要映射到的X(X)1,另一组W公司21, W公司22…需要映射到X(X)2等等,以及单词列表V(V)1, V(V)2。。。 V(V)k个保持不变。这个例外然后可以按如下方式编写例程:
其中('W11“W”12' ... (<-'X1')'西21“W”22' ... (<-'X2')...'西n1个“W”氮气' ... (<-'Xn个')“V”1“V”2' ... 'V(V)k个') 事实上例外情况1英语词干分析器的例行程序就是这样形状:
将exception1定义为([substring]限制在(/*特殊更改:*/“滑雪板”(<-“ski”)“天空”(<-“天空”)“垂死”(<-“死亡”)“撒谎”(<-'lie')“打结”(<-'tie')/*特殊-LY案例*/“空闲”(<-'idl)“温柔”(<-“温柔”)“丑陋”(<-'ugli)“早”(<-'earli)“仅”(<-'onli)“单个”(<-“单个”)//。。。此处可能有扩展。。。/*不变形式:*/“天空”“新闻”“豪”“atlas”“cosmos”“bias”“andes”//非复数形式//。。。此处可能有扩展。。。)) (稍后将对此处出现的单词进行更多介绍。)
在这里,我们看到在词干提取之前,单词被异常处理,但我们同样可以在完成词干分析后,对词干进行例外处理,因此,如果我们愿意,可以映射吸收的到吸收,还原到减少等,如洛文斯干管器.但更一般地说,在整个算法中,每个重要步骤都可能被识别例外情况,以及适当放置的在…之间会照顾他们的。例如,提出了一个观点文献中至少有两次是这样的通用被波特词干分析器:
生成 生成 生成 生成 一般的 通常地 通用的 一般地 慷慨的 慷慨地 | | -> | | 通用
| 为了解决这个过度阻塞的问题,我们对第页1中,的左点R(右)1,因此更换
gopast v gopast非v设置标记p1 具有
其中(“通用”//。。。这里可能包括其他茎。。。)或(gopast v gopast non-v)设置标记p1 之后的单词开始通用阀杆如下:
生成 生成 生成 生成
| | -> | | 发电机
| 一般的 通常地
| | -> | | 一般的
| 通用的 一般地
| | -> | | 通用的
| 慷慨的 慷慨地
| | -> | | 慷慨的
| 另一个示例由例外情况2例程,类似于例外情况1,但放置在步骤1a,可能已拆下端子秒,
将exception2定义为([substring]限制在(“围棋”“郊游”“罐头”“鲱鱼”“继续”超过“成功”//。。。此处可能有扩展。。。)) 因此,Snowball很容易添加异常列表。但要决定例外情况远非易事。基本上有两条攻击线系统化和零星化。人们可以系统地将例如,不规则动词。零碎的方法是根据人们的注意添加例外他们-就像通用以上。系统方法的问题是它应该通过调查整个语言词汇来完成,这比大多数人都要多准备好了。零碎方法的问题是它是任意的,而且通常产量很少。
英语词干分析器中的异常列表旨在说明问题(“如果您want to do it’),并且是逐段派生的。
一)新词干分析器在处理短单词结尾时改进了Porter词干分析器电子和年然而,这四种形式处理不当天空,天空,滑雪,滑雪板,通过将其中三个单词视为特殊情况。
b条)类似地惯性导航与制导三字母动词结尾形式即.那里只有三个这样的动词:死亡,躺和领带,因此为临终的,撒谎和捆扎.
c(c))一个人必须小心一点惯性导航与制导形式。一局,郊游,罐装,谁都不希望要阻止的在里面,外面的,可以.
d日)后缀的删除第页(不在Porter词干分析器中)有许多异常。某些简短的例外是无所事事,轻轻地,丑陋的,早期的,只有,单独地.罕见的词语(鬃毛状的,魁梧的,卷曲的,脾气暴躁的…)不包括在内。
电子)剩下的单词是根据波特算法用户的投诉而写的。新闻不是的复数形式新的(在为路透社)。豪是姓氏,需要与怎样(注意到在下议院的一次示威活动中寻找“杰弗里·豪爵士”)。成功etc不是过去分词,所以预计起飞时间不应拆除(指出在一封来自印度的电子邮件中发送给我)。鲱鱼不应该干到她(另一封来自的电子邮件俄罗斯)。
(f))最后,以一些非模糊的词语结尾秒已添加。
顺便说一句,这说明了从词干分析的实际用户那里可以得到多少反馈算法:二十年七八个单词!
因此,上述英语词干分析器的定义由以下内容补充:
英语词干分析器中的异常形式
- 如果单词开始通用,公社或砷,套R(右)1是单词。
词干特殊单词如下:,
滑雪板 | | -> | | 滑雪
| 天空 | | -> | | 天空
| 临终的 撒谎 捆扎
| | ->
| | 死亡 躺 领带
| 无所事事 轻轻地 丑陋的 早期的 只有 单独地
| | ->
| | idl公司 温和的 乌格利语 厄利 在线 单个
|
如果发现以下情况之一,请保持不变,
遵循步骤1一,保持以下不变,
|