用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值计算了...

详细代码见附件...

你可能感兴趣的:(java,中文,TFIDF)