TF-IDF计算三
2011-08-31 00:14
204 查看
逆向文件频率(inverse document frequency,IDF)是一个词语普遍重要性的度量。某一特定词语的IDF,可以由总文件数目除以包含该词语之文件的数目,再将得到的商取对数.
IDF i = log N / n i
N 是代表语料库中文件数量的总数, n i 是代表包含词语n i 的文件数目所包含的词 i 的总数.
class IDFs
{
HashMap<String,Double> IDFsList = new HashMap<String, Double>();
ArrayList<ArrayList<String>> IDFsMainFileList = new ArrayList<ArrayList<String>>();
ArrayList<String> IDFsave = new ArrayList<String>();
int Ncount;
public IDFs(ArrayList<ArrayList<String>> idf)
{
IDFsMainFileList = idf;
Ncount = IDFsMainFileList.size();
}
public HashMap<String,Double> PrintIDFs()
{
for(int i=0; i<IDFsMainFileList.size(); i++)
{
ArrayList<String> IDFsSubFileList = IDFsMainFileList.get(i);
ArrayList<String> list = new ArrayList<String>();
for(int j=0; j<IDFsSubFileList.size(); j++)
{
if(!list.contains(IDFsSubFileList.get(j)))
{
list.add(IDFsSubFileList.get(j));
//Take elements from arraylist<arraylist<string>>
if(!IDFsList.containsKey(IDFsSubFileList.get(j)))
{
IDFsList.put(IDFsSubFileList.get(j),1.0);//save elements to arraylist<hashmap<String,Double>>
IDFsave.add(IDFsSubFileList.get(j));//take elements from hashmap
}
else
{
double value = IDFsList.get(IDFsSubFileList.get(j));
value++;
IDFsList.put(IDFsSubFileList.get(j),value);
}
}
}
}
for(int k=0; k<IDFsave.size(); k++)
{
double nTotal = IDFsList.get(IDFsave.get(k));
double temp = Ncount / nTotal;
double idfs = Math.log(temp);
IDFsList.put(IDFsave.get(k), idfs);
}
return IDFsList;
}
}
IDF i = log N / n i
N 是代表语料库中文件数量的总数, n i 是代表包含词语n i 的文件数目所包含的词 i 的总数.
class IDFs
{
HashMap<String,Double> IDFsList = new HashMap<String, Double>();
ArrayList<ArrayList<String>> IDFsMainFileList = new ArrayList<ArrayList<String>>();
ArrayList<String> IDFsave = new ArrayList<String>();
int Ncount;
public IDFs(ArrayList<ArrayList<String>> idf)
{
IDFsMainFileList = idf;
Ncount = IDFsMainFileList.size();
}
public HashMap<String,Double> PrintIDFs()
{
for(int i=0; i<IDFsMainFileList.size(); i++)
{
ArrayList<String> IDFsSubFileList = IDFsMainFileList.get(i);
ArrayList<String> list = new ArrayList<String>();
for(int j=0; j<IDFsSubFileList.size(); j++)
{
if(!list.contains(IDFsSubFileList.get(j)))
{
list.add(IDFsSubFileList.get(j));
//Take elements from arraylist<arraylist<string>>
if(!IDFsList.containsKey(IDFsSubFileList.get(j)))
{
IDFsList.put(IDFsSubFileList.get(j),1.0);//save elements to arraylist<hashmap<String,Double>>
IDFsave.add(IDFsSubFileList.get(j));//take elements from hashmap
}
else
{
double value = IDFsList.get(IDFsSubFileList.get(j));
value++;
IDFsList.put(IDFsSubFileList.get(j),value);
}
}
}
}
for(int k=0; k<IDFsave.size(); k++)
{
double nTotal = IDFsList.get(IDFsave.get(k));
double temp = Ncount / nTotal;
double idfs = Math.log(temp);
IDFsList.put(IDFsave.get(k), idfs);
}
return IDFsList;
}
}
相关文章推荐
- 文件文档文档的词频-反向文档频率(TF-IDF)计算
- 关键词权重计算算法:TF-IDF
- python scikit-learn计算tf-idf词语权重
- TF-IDF与余弦相似性的计算
- TF-IDF词项权重计算
- TF-IDF在关键词自动提取、计算文本相似度和摘要自动生成上的应用
- 分享自用小工具:TF-IDF计算文档相似性的python实现
- Java计算TF-IDF值
- python计算tfidf
- spark mllib 中的tf-idf算法计算文档相似度
- 在线编程题-计算文本的 TFIDF值
- 使用spark的TF-IDF算法计算单词的重要性
- 文档的词频-反向文档频率(TF-IDF)计算
- python scikit-learn计算tf-idf词语权重
- 使用scikit-learn tfidf计算词语权重
- 关键词权重计算算法 - TF-IDF
- 在线编程题-计算文本的 TFIDF值
- TF-IDF词项权重计算
- 使用Gensim建立bow TFIDF LSI模型对文本相似度计算
- TF-IDF解析及在计算广告中的应用