既然是文本分析,那说明数据集中的特征都是一些文本,比如下面的数据集:
该文本分析任务,需要我们根据已有特征,来预测新闻所述类别。解决文本分析任务,总体上包含以下 3 步:
- 数据清洗,去停用词;
- TF-IDF 关键词提取,得到词频向量;
- 计算词频向量的相似度。
下面我们分别来讨论每个部分。
数据清洗:去停用词
数据清洗工作非常关键,好的数据能大幅度提高模型的准确率,也是我们获得好模型的基础。对于文本分析任务,数据清洗工作中一项必不可少的步骤就是 去停用词。
什么是停用词呢?
所谓停用词就是在预料中大量出现,但又没什么含义的词。比如说一些特殊字符:,
?
:
。
等等,再比如一些没有语义的词:唉,乎,矣,一些,一个,一方面,另一方面等等。
我们可以通过搜索引擎搜索到很多的停用词表,对于常规任务,选择其中使用比较多的停用词表下载下来即可。
注:停用词由于在文本中出现得非常频繁,且没有特殊意义,因此停用词的存在会影响我们关键词的提取。
TF-IDF 关键词提取
在去掉停用词之后,我们就可以开始提取文本中的关键词了。那如何评估一段文本中哪些词是关键词呢?
假设有一篇题为《中国的蜜蜂养殖》的文章,首先出现次数最多的是:“的” “是” “在” 这类最常用的词,我们需要去掉这些停用词。去掉之后,进行词频(Term Frequency)统计。发现“中国” “蜜蜂” “养殖” 这三个词出现的次数一样多,那这三个关键词是否同等重要呢?
但是,我们如果仔细想一下就会发现,“中国” 其实是很常见的词,比如《中国女足》《中国航天》《舌尖上的中国》等等。相对而言,“蜜蜂” 和 “养殖” 不那么常见。
在提取关键词时,看来光靠词频是不行的,而是要同时考察词频 TF 和逆文档频率 IDF。
词频 Term Frequency
词频的计算公式为:
词频 TF = 某个词在文本中出现的次数 / 文本中一共包含多少个词。
比如《中国的蜜蜂养殖》:假定该文长度为 1000 个词,"中国"、"蜜蜂"、"养殖" 各出现 20 次, 则这三个词的词频 TF 都为 0.02。
逆文档频率 Inverse Document Frequency
如果某个词比较少见,但是它在这篇文章中多次出现,那么它很可能就反映了这篇文章的特性,正是我们所需要的关键词。为此,我们引入逆文档概率 IDF 的概念性来衡量一个关键词的稀缺性。
逆文档概率的计算公式为:
逆文档概率 IDF = log( 语料库的文档总数 / (包含该词的文档数 + 1) )
在语料库文档总数一定的情况下,包含该词的文档数越少,那么 IDF 计算结果就会越大。即 IDF 越大,该关键词越稀缺。公式中,(包含该词的文档数 + 1) 之所以 +1
是因为 log1 = 0
,IDF 若为 0 则 TF * IDF 就会为 0 ,就没办法比较关键性了O(∩_∩)O哈哈~
还是《中国的蜜蜂养殖》的例子,假设搜索 Google 发现,包含 "的" 字的网页共有 250 亿张,假定这就是中文网页总数,也就是我们语料库的文档总数。包含 "中国" 的网页共有 62.3 亿张,包含 "蜜蜂" 的网页为 0.484 亿张,包含 "养殖" 的网页为 0.973 亿张。
利用逆文档概率公式,计算得出 "中国" "蜜蜂" "养殖" 三个词的 IDF 值分别为:0.603
2.713
2.410
,则蜜蜂的稀有度最高,其次是养殖。
TF-IDF 关键词提取
TF-IDF 的计算公式:
TF-IDF = 词频 TF * 逆文档概率 IDF
下面,我们来计算 "中国" "蜜蜂" "养殖" 三个词的 TF-IDF :
通过 TF-IDF 我们就可以完成关键词的提取啦~利用提取出的关键词,我们就可以构造词频向量,最后文本分析任务就会转换为计算词频向量的相似度问题了。
计算相似度
词频向量的相似度计算使用余弦相似度:
计算公式为:
网友评论