我有以下格式的文档术语列表(在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;
答案 0 :(得分:0)
您有每个术语在文档中出现的次数。
对所有这些值求和,并且您拥有文档中的术语总数。
然后将给定术语在文档中出现的次数除以计算的总和,然后得到频率。