跳到主要內容

簡易N-gram函式 - JAVA版

最近實在太容易用到N-gram,因此把自己用Java寫個簡單的N-gram的程式放上來,之後就可以直接copy-paste,因為我還頗懶的XD。
為了方便,所以回傳型態是用ArrayList。
如果不希望有重複字串,那就把回傳型態改成LinkedHashSet吧。

/** 
 * 從一個句子裡取得Ngram List 
 * @param sentence 要進行Ngram的句子 
 * @param max 最多要多少字數 
 * @param min 最少要多少字數 
 * @return */ 
public ArrayList< String > getNgram(String sentence,int max, int min){ 
    ArrayList< String > ngram_list = new ArrayList(50); 
    for(int termLength = min ; termLength <= max ; termLength++){ 
        for(int i = 0 ; i+termLength-1 < sentence.length() ; i++){ 
            ngram_list.add(sentence.substring(i, i+termLength));
        } 
    } 
    ngram_list.trimToSize(); 
    return ngram_list; 
}

不過這程式也只僅供參考,畢竟這也只是隨手寫出來的,效率應該還可以再提升!

留言

這個網誌中的熱門文章

input 陣列 - PHP

要如何在 input 裡面回傳陣列資料呢? 就寫了一個簡單的小範例。 以下是 php 原始碼 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 <?php /** 印出Get裡面的資訊 **/ if ( ! empty ( $_GET )) print_r ( $_GET ); /** 初始資料設定 **/ $id = array ( 0 => '#0001' , 1 => '#0002' ); $data [ $id [ 0 ]] = array ( 'date' => '2012-08-12' , 'note' => '上海出差' ); $data [ $id [ 1 ]] = array ( 'date' => '2012-08-17' , 'note' => '北京出差' ); /** 印出表單資訊 **/ echo "<form method='get'>" ; foreach ( $data as $key => $row ){ echo "<input type='text' name=' { $key } [date]' value=' { $row [ 'date' ] } ' />" ; echo "<input type='text' name=' { $key } [note]' value=' { $row [ 'note' ] } ' />" ; echo "<br />" ; } echo "<input type='submit' value='送出' />" ; e...