資訊檢索中,在進行文字處理時,我們常會進行以下的步驟:

1. Tokenization: 斷詞

2. 過濾stopwords

3. Normalization: 將斷開的詞都變成標準的形式

舉例來說: U.S.A -> USA, on-line -> online;通常使用rule-based

  a).通通小寫

  b).去掉hyphen, period

4. Stemming 與 Lemmatization:

  a). Stemming: 通常是粗糙的過程,將字的尾巴去掉。

  舉例來說: automate, automatic, automation -> automat

  b). Lemmatization: 使用形態分析等方式,將字還原成原始字。

  舉例來說: am,are,is -> be

在這篇文章中,我要介紹 Stemming中常用的 Porter Stemming Algorithm 使用方式。

首先,請到 http://tartarus.org/martin/PorterStemmer/。

接著找到下圖中的 java

1.JPG

 

這個Java是一個程式碼,請把它貼到你自己的程式上(新開一個類別來貼),下圖即是該程式碼的樣子,其中main函數裡面的部分就是它教你怎使用他的程式。

2.JPG  

不過我覺得有點複雜,所以我用更簡單的範例帶給大家看,所以你可以用我的程式碼,把原本上圖中的main通通換掉。

public static void main(String[] args) 
{
    //建立一個Stemmer類別 s
    Stemmer s = new Stemmer();
    //以下是要處理的字
    String str = "protected";
    //之後將字串轉成字元進行處理
    char temp [] = new char[str.length()];
    temp=str.toCharArray();
    s.add(temp, str.length());
    //進行stem步驟
    s.stem();
    //輸出結果
    System.out.println("原本的字 "+str);
    System.out.println("Stemming後的字 "+s.toString());
}

貼好後執行看看,程式也很簡潔易懂。

arrow
arrow
    文章標籤
    Stemming Porter Stemming Algorithm
    全站熱搜

    葛瑞斯肯 發表在 痞客邦 留言(0) 人氣()