文档的词频-反向文档频率(TF-IDF)计算
2013-05-04 14:50
369 查看
TF-IDF计算:
TF-IDF反映了在文档集合中一个单词对一个文档的重要性,经常在文本数据挖据与信息
提取中用来作为权重因子。在一份给定的文件里,词频(termfrequency-TF)指的是某一
个给定的词语在该文件中出现的频率。逆向文件频率(inversedocument frequency,
IDF)是一个词语普遍重要性的度量。某一特定词语的IDF,可以由总文件数目除以包含
该词语之文件的数目,再将得到的商取对数得到。
相关代码:
相关代码:
零词过滤(stop-words filter)
零词列表
ftp://ftp.cs.cornell.edu/pub/smart/english.stop
关于TF-IDF参考这里:
链接–> http://en.wikipedia.org/wiki/Tf*idf
本文出自 “流浪的鱼” 博客,请务必保留此出处http://gloomyfish.blog.51cto.com/8837804/1400300
TF-IDF反映了在文档集合中一个单词对一个文档的重要性,经常在文本数据挖据与信息
提取中用来作为权重因子。在一份给定的文件里,词频(termfrequency-TF)指的是某一
个给定的词语在该文件中出现的频率。逆向文件频率(inversedocument frequency,
IDF)是一个词语普遍重要性的度量。某一特定词语的IDF,可以由总文件数目除以包含
该词语之文件的数目,再将得到的商取对数得到。
相关代码:
private static Pattern r = Pattern.compile("([ \\t{}()\",:;. \n])"); private static List<String> documentCollection; //Calculates TF-IDF weight for each term t in document d private static float findTFIDF(String document, String term) { float tf = findTermFrequency(document, term); float idf = findInverseDocumentFrequency(term); return tf * idf; } private static float findTermFrequency(String document, String term) { int count = getFrequencyInOneDoc(document, term); return (float)((float)count / (float)(r.split(document).length)); } private static int getFrequencyInOneDoc(String document, String term) { int count = 0; for(String s : r.split(document)) { if(s.toUpperCase().equals(term.toUpperCase())) { count++; } } return count; } private static float findInverseDocumentFrequency(String term) { //find the no. of document that contains the term in whole document collection int count = 0; for(String doc : documentCollection) { count += getFrequencyInOneDoc(doc, term); } /* * log of the ratio of total no of document in the collection to the no. of document containing the term * we can also use Math.Log(count/(1+documentCollection.Count)) to deal with divide by zero case; */ return (float)Math.log((float)documentCollection.size() / (float)count); }建立文档的向量空间模型Vector Space Model并计算余弦相似度。
相关代码:
public static float findCosineSimilarity(float[] vecA, float[] vecB) { float dotProduct = dotProduct(vecA, vecB); float magnitudeOfA = magnitude(vecA); float magnitudeOfB = magnitude(vecB); float result = dotProduct / (magnitudeOfA * magnitudeOfB); //when 0 is divided by 0 it shows result NaN so return 0 in such case. if (Float.isNaN(result)) return 0; else return (float)result; } public static float dotProduct(float[] vecA, float[] vecB) { float dotProduct = 0; for (int i = 0; i < vecA.length; i++) { dotProduct += (vecA[i] * vecB[i]); } return dotProduct; } // Magnitude of the vector is the square root of the dot product of the vector with itself. public static float magnitude(float[] vector) { return (float)Math.sqrt(dotProduct(vector, vector)); }注意点:
零词过滤(stop-words filter)
零词列表
ftp://ftp.cs.cornell.edu/pub/smart/english.stop
关于TF-IDF参考这里:
链接–> http://en.wikipedia.org/wiki/Tf*idf
本文出自 “流浪的鱼” 博客,请务必保留此出处http://gloomyfish.blog.51cto.com/8837804/1400300
相关文章推荐
- 文档的词频-反向文档频率(TF-IDF)计算
- 文件文档文档的词频-反向文档频率(TF-IDF)计算
- 文档的词频-反向文档频率(TF-IDF)计算
- 文档的词频-反向文档频率(TF-IDF)计算
- 文档的词频-反向文档频率(TF-IDF)计算
- [python] LDA处理文档主题分布及分词、词频、tfidf计算
- [python] LDA处理文档主题分布及分词、词频、tfidf计算
- spark mllib 中的tf-idf算法计算文档相似度
- Python 评估字词在文件集的重要程度 (文档频率和逆向文档频率 TF-IDF)
- python 分词计算文档TF-IDF值并排序
- 关于TF(词频) 和TF-IDF(词频-逆向文件频率 )的理解
- 计算两篇文档的余弦相似度(tfidf)
- 三十三、利用scikit-learn计算tf-idf做文本词频分析
- 分享自用小工具:TF-IDF计算文档相似性的python实现
- [转]搜索引擎的文档相关性计算和检索模型(BM25/TF-IDF)
- python 分词计算文档TF-IDF值并排序
- NLP计算文档相似度之TF-IDF
- 在线编程题-计算文本的 TFIDF值
- TF-IDF解析及在计算广告中的应用
- 计算文章TF-IDF