用WVTool實現中文TFIDF

這幾天在做TFIDF的Java實現,昨天實現了英文的TFIDF,但是中文的老是出問題,分詞後只能顯示部分詞(只能計算3個漢字組成的詞)的TFIDF值,讓人很鬱悶....

經過仔細分析,終於發現了問題的所在,是由於edu.udo.cs.wvtool.generic.wordfilter.AbstractStopWordFilter這個抽象類惹的禍,在這個抽象類中有如下代碼:

    private int minNumChars;  //一次讀取的最低字數

    private final static int DEFAULT_MIN_CHARS = 3;  //minNumChars默認值

所以導致中文TFIDF值只能計算3個字組成的詞,修改辦法有兩種:

1.將 DEFAULT_MIN_CHARS 默認值改爲1;

2.在AbstractStopWordFilter的子類中添加構造方法,使它能夠給minNumChars賦值。以DummyWordFilter爲例,添加後如下:

public class DummyWordFilter extends AbstractStopWordFilter {
 public DummyWordFilter(){
  
 }
 public DummyWordFilter(int i){
  super(i);
 }
    protected boolean isStopword(String t) {
        return false;
    }

}

這樣就可以實現中文的TFIDF值計算了...

詳細代碼見附件...

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章