最近實在太容易用到N-gram,因此把自己用Java寫個簡單的N-gram的程式放上來,之後就可以直接copy-paste,因為我還頗懶的XD。
為了方便,所以回傳型態是用ArrayList。
如果不希望有重複字串,那就把回傳型態改成LinkedHashSet吧。
不過這程式也只僅供參考,畢竟這也只是隨手寫出來的,效率應該還可以再提升!
為了方便,所以回傳型態是用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; }
不過這程式也只僅供參考,畢竟這也只是隨手寫出來的,效率應該還可以再提升!
留言
張貼留言