文本向量化——基于TF-IDF词袋模型的文本向量化方法
点这里,上一篇文章——基于高频词汇的文本向量化方法
点这里,利用TF-IDF,基于支持向量机模型对两万条新闻进分类
1、解释TF-IDF词袋模型
TF:词频
IDF:逆向文件频率
举例子解释:假如有一个包含100篇文章的文本集合,里面包含关于足球、汽车、服饰三个大类的文章,我们对这100篇进行分类。
显然,关于这三大类不同的文章都有各自的特征词,这些特征词会在归属类出现频率高,却在另外两类不出现或者偶尔出现。例如,足球新闻里面,足球、队员、守门员、前锋、后卫 等关键词出现频率或者出现几率高,而在汽车和服饰两类文章中出现几率十分小。为了描述这两个特征,就引进了TF和IDF
TF就是记录某些词语在一篇文章中的频率,IDF就是记录某些词语在所有文章中出现的比例。以“守门员”一词为例,它在足球类新闻中TF值会较高,在其他新闻TF值很低;IDF0值=含有“守门员”的新闻数 / 总新闻数。(实际上IDF计算不是这样的,为了好理解,待会我再进一步修改和解释,这里用IDF0表示以示区别)
假设每篇文章有50个词,“守门员”出现5次,则在这篇文章中“守门员”的TF值=0.1;又假设100篇文章中一共30篇文章出现“守门员”,则这篇文章中“守门员”的IDF0=0.3. 可以看出,同一个词在不同文章中TF可能不同,但IDF0都相同;也可以看出“守门员”这个词的IDF0值越等于足球类文章在文本总集合中的比例,因为有关足球的文章中几乎都会出现“守门员”一词。
当然,通过以上分析知道,一个词的TF越大、IDF越小,它越有特征。TF大好理解,那么IDF小为什么越小越好呢?比如“的”这个词基本上出现在所有文章中,它的IDF是1,当然没有特征意义啦。
TF-IDF值就是TF和IDF0的结合值,由于一个越大越好、一个越小越好,直接让他们相乘是不合适的,IDF0值得变个形式,IDF=ln(1/IDF0), 这样得到得IDF就是越大越好了。TF-IDF=TF*IDF, 其值越大、反应这个词的特征越强。
2、TF-IDF是这样一个矩阵
列数是总文本集中出现的所有单词数,每列对应一个单词;行数是文章总数(这里我假设是100),每一行代表一篇文章。每一行的元素,就是这篇文章每个词语的TF-IDF值(当然,没有出现的单词TF=0,TF-IDF也等于0了)
这样就得出了一个总文本的特征矩阵&#