如何在Java中实现TF?

时间:2016-11-06 18:42:04

标签: java information-retrieval

我有以下格式的文档术语列表(在txt文件中)。文档总数为1400.例如:

doc 1:你好,我,你好,费用,每日(这里doc 1是一个文本文件) doc 2:费用,你好(这里doc 2是一个文本文件) .........

现在我如何在java中实现TF? TF是术语出现的计时器数/文档中术语总数

到目前为止的代码,它计算一个术语在文档中出现的次数



public class termdoc {
    public static void main(String[]args) throws FileNotFoundException, UnsupportedEncodingException{
        File file2 = new File("D:\\logs\\termdoc.txt");
        PrintWriter tdr = new PrintWriter(file2, "UTF-8");
        Map<String, Integer> m = new HashMap<>();
        Map<Integer,Map>m1=new HashMap<>();
        String wrd;
        int unqwrd=0;
        
        for(int i=1;i<=1400;i++){
            Scanner tdsc=new Scanner(new File("D:\\logs\\AfterStem"+i+".txt"));
            while(tdsc.hasNext()){
              Integer docid=i;
              wrd=tdsc.next();
              Integer freq=m.get(wrd);
              m.put(wrd, (freq == null) ? 1 : freq + 1);
              m1.put(docid,m);
       
           }
        tdr.println(m1);
        m.clear();
        m1.clear();
        tdsc.close();
        
    }
        //System.out.println(m.size() + " distinct words");
        tdr.close();
       
        
}
    
}
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:0)

您有每个术语在文档中出现的次数。

对所有这些值求和,并且您拥有文档中的术语总数。

然后将给定术语在文档中出现的次数除以计算的总和,然后得到频率。