zoukankan      html  css  js  c++  java
  • 波特词干(Porter Streamming)提取算法无代码单纯理解

    最近写东西提到这个算法,要看一下,结果网上都是直接根据代码解释,对于我这种菜鸟在刚开始看一个算法的时候真心不想直接看代码学。奈何都是各种语言的代码,么得办法。先走了一遍,有了大致的了解,翻译成自己的话,也不知道准不准确,欢迎懂的大佬给我批评指正。

    附上官网:https://tartarus.org/martin/PorterStemmer/

    一、先把单词按下述规则整理成“CV”的格式

    我们假设,"C"代表一连串辅音字母,“V”代表一连串元音字母。所以,是所有单词都可以用四种字母组合来表示:

    CVCV……C

    CVCV……V

    VCVC……C

    VCVC……V

    用[ ]表示可选,即有或没有均可。则四种形式可以归纳为:

    [C]VCVCVC……[V]

    用m表示辅音串“C”的个数,进而可以将上述形式转化为:

    [C]VC{m}[V]

    这样,我们就可以将每个单词都写成这种形式。

    二、明确提取词干的规则

    链接:https://blog.csdn.net/zhanghaiyang9999/article/details/41628789

    *S  -词干以S结束 (同样适用于其他字符).

    *v* - 词干包含一个元音.

    *d  - 词干以两个相同辅音结束(如. -TT, -SS).

    *o  - 词干以cvc的形式结束, 但是第二个c(辅音)不是 W, X 或者Y (如 -WIL, -HOP).

    这些条件可以用AND,OR和NOT来运算,但只选择符合最长的一种,例如:

    SSES -> SS    AND
    IES  -> I           AND
    SS   -> SS      AND
    S    ->

    classes->class而不是classe,因为它会选择最长的匹配规则。

    另外,步骤一中提到的m也会作为条件规则的一部分。

    三、加入合适条件取出后缀

    (condition) S1 -> S2

    (condition) 是s1的条件,假如s1满足(condition) ,那么就转化为s2。(condition) 由步骤二中的规则和逻辑连接词AND,OR和NOT构成。

    我理解的大致步骤就是这样,然后就要看代码了,以后发现有错误再改喽。

  • 相关阅读:
    信息量
    MVC4的实战:排球计分(一)(综述)
    排球计分规则3.17
    观后感-----怎样成为一个高手
    本学期最后一个博客
    第五组作业
    个人作业
    第五组作业
    个人作业
    一周的总结
  • 原文地址:https://www.cnblogs.com/space130/p/10749076.html
Copyright © 2011-2022 走看看