在对一段文本进行分词之后,有的词出现的次数会比较多,因此往往对其出现的频次进行统计,作为该词重要程度的度量。基于这个思想,词频(Term Frequency,TF)被广泛应用于基本的文本数据挖掘。在实际应用中,分词过后经常出现的词包含一些常用而又不带有信息量的词,例如中文里面的“的”“了”“呢”,英文中的“the”“it”“is”。
为了在评估的时候降低这种词的重要性比重,产生了逆文档频率(Inverse Document Frequency,IDF)这一概 念。它的计算公式为:
其中,N表示语料库中文档的总数,表示语料库中出现了 term这个词的文档数量。可以看出,如果一个词在多个文档中都出现 会上升,那么这个term的IDF就会下降。而我们常提到的TF-IDF 的计算公式为:
TF-IDF就是词频TF与逆文档频率IDF的乘积,它背后的思想是:词语的重要性与它在文件中出现的次数成正比,但同时会随着它在语料库中出现的频率成反比。要在R中计算TF-IDF是非常便捷的,可以使用tidytext包的bind_tf_idf函数进行实现。下面以新冠肺炎微博热搜话题为例进行说明:
library(tidyverse)
library(tidytext)
order <- read_excel("E:/code/data/data mining/Weibo_2020Coron.xlsx") %>% #导入数据
select("id","title")
order
#分词与计数
order %>%
unnest_tokens(title,title) %>%
count(id,title) -> count_table
#计算IF-IDF
count_table %>%
bind_tf_idf(title,id,n)
结果如下图所示: