TF-IDF 算法
TF-IDF算法介绍
基本原理
TF-IDF(term frequency–inverse document frequency,词频-逆向文件频率)是一种用于信息检索(information retrieval)与文本挖掘(textmining)的常用加权技术。\ TF-IDF是一种统计方法,用以评估一字词对于一个文件集或一个语料库中的其中一份文件的重要程度。 字词的重要性随着它在文件中出现的次数成正比增加,但同时会随着它在语料库中出现的频率成反比下降。\ TF-IDF的主要思想是:如果某个单词在一篇文章中出现的频率高,并且在其他文章中很少出现,则认为此词或者短语具有很好的类别区分能力,适合用来分类。
算法
词频(Term Frequency,tf)
词频(TF)是搜索词语在文章中出现的频率。词频(term frequency,tf)指的是某一个给定的词语在该文件中出现的频率。这个数字是对词数(termcount)的标准化,以防止它偏向长的文件。\ (同一个词语在长文件里可能会比短文件有更高的词数,而不管该词语重要与否。)
单词i在文件j中出现的词频公式为:
以上式子中假设
- 文件中共有k个词语
- 是 在文件中出现的次数。
- 分子是该词在文件中的出现次数
- 而分母则是在文件中所有字词的出现次数之和。
逆向文件频率(Inverse Document Frequency,idf)
逆向文件频率(inverse document frequency,idf)是一个词语普遍重要性的度量。某一特定词语的idf,可以由总文件数目除以包含该词语之文件的数目,再将得到的商取对数得到。通常,这个对数取以10为底(记为lg)
其中
- :语料库中的文件总数
- :包含词语的文件数目(即的文件数目)如果词语不在资料中,就导致分母为零,因此一般情况下使用
TF-IDF
例子
mysql 全文索引的case,,且tf不做归一化处理,查找单词是 “database”
数据
id | title | body | score |
---|---|---|---|
6 | Database, Database, Database | database database database | 1.0886961221694946 |
3 | Optimizing Your Database | In this database tutorial ... | 0.36289870738983154 |
1 | MySQL Tutorial | This database tutorial ... | 0.18144935369491577 |
2 | How To Use MySQL | After you went through a ... | 0 |
4 | MySQL vs. YourSQL | When comparing databases ... | 0 |
5 | MySQL Security | When configured properly, MySQL ... | 0 |
7 | 1001 MySQL Tricks | 1. Never run mysqld as root. 2. ... | 0 |
8 | MySQL Full-Text Indexes | MySQL fulltext indexes use a .. | 0 |
说明
共8条数据,其中3条匹配到了“database”,其中id=6的数据共匹配了6次,所以 ,