基于R语言的TF-IDF算法(文本挖掘)
Posted 轻松学统计
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于R语言的TF-IDF算法(文本挖掘)相关的知识,希望对你有一定的参考价值。
#TF-IDF算法主要适用于文本挖掘,主要的功能是对文本关键词的提取
#TF表示term frequency ,代表词频
#词频的计算有很多种:
#①单词在某篇文章中出现的次数:这种计算方式不常用,因为会偏向较长的文章
#②单词在某篇文章中出现的次数/该篇文章词数的总和
#③单词在某篇文章中出现的次数/该篇文章中出现次数最多的词的次数
#词频的含义:如果某个词在文章中出现的次数很高,则该词越重要。
#IDF表示inverse document frequency ,代表逆文档频率
#逆文档频率的计算公式为:
#log( 语料库的文档总数/(包含该词的文档总数+1) )
#其中+1没有具体的含义,只是为了在数学计算上避免分母为0。
#逆文档频率的含义:如果一个词在所有文章中出现的次数越多,说明该词越不重要。
#TF-IDF = TF * IDF
#该式子表示TFIDF的值与某词在某篇文章中出现的次数成正比,与某词在整个语料库中出现的次数呈反比。
#—————————R中的代码———————————#
install.packages("jiebaR")
library(jiebaR)
wk = worker()
setwd("C:/Users/mac/Desktop/R")
news <- readLines("testa.txt",encoding='UTF-8')
#我们选择的文件是之前发“R语言之FSelector包的变量选择”3个文档的合并文件。
head(news)
#文档的简单分词
a = wk[news]
a
#由于文章不长,因此分词结果共计分割了1505个词,下图显示前105行的词。
#一边来说,拿到一个文档,我们不应该直接进行分词,而是应该对文档进行数据预处理工作,
#但由于这里主要是演示TFIDF的算法的操作,因此这一部分会在后续的分享中放出
a_freq = freq(a) #计算词频
a_freq #显示前20个词的词频
##词频可视化
library(wordcloud2)
wordcloud2(a_freq,color = "random-light")
#关键词提取
keys = worker("keywords",topn = 10)
vector_keywords(a,keys)
#显示前10个TFIDF得分最高的词
#本文本中变量,formula,class,data,simple,cutoff,算法,iris,housevotes84,选择
#这10个词是该文本的关键词。其中iris和housevotes84都是数据集,而本篇文章主要运用的数据集也正是这两个
#本文的主题是变量选择,我们发现此包把变量选择两个词分开了,所以在分词方面还有提升的空间,
#也是后续可以优化的所在。
以上是关于基于R语言的TF-IDF算法(文本挖掘)的主要内容,如果未能解决你的问题,请参考以下文章
python [NLTK实现TF-IDF]#TF-IDF#算法#数据挖掘#文本挖掘#文本分类