达观杯”文本智能处理挑战赛——(二)TF-IDF理论并实践
一、特征工程(方案)
用传统的监督学习模型对一段文文本进行分类的基本过程:
一段原始文本→(数据预处理)→处理后的文本→(特征工程)→Features→输入→y=f(x_1,x_2,x_3,…)→输出→类别
特征工程是整个机器学习过程中最要的部分。特征决定了机器学习的上限,而机器学习算法只是逼近这个上限。因此,在机器学习的文本挖掘的预处理中,通常考虑采用TF-IDF的处理,那么什么是TF-IDF,为什么一般我们要加这一步预处理呢?这里就对TF-IDF的原理做一个介绍。
1、 TF—IDF
TF—IDF是一种统计方法,用以评估字词对于一个文件集或一个语料库中其中一个文件的重要程度,字词的重要性随着它在文件中出现的次数成正比增加,但同时会随着它在语料库中出现的频率成反比下降
2、TF-IDF的计算
词频(TF)=某个词在文章出现的次数/文章的总词数词频(TF)=某个词在文章出现的次数/文章的总词数
逆文档频率(IDF)。 IDF反应了一个词在所有文本中出现的频率,如果一个词在很多的文本中出现,那么它的IDF值应该低。而反过来如果一个词在比较少的文本中出现,那么它的IDF值应该高,说明词条具有很好的类别区分能力。
此处分母加一是为了避免当所有的文档都不包含该词时,分母为0的情况
TF-IDF=词频(TF)*逆文档频率(IDF)
sklearn中一般使用CountVectorizer和TfidfVectorizer这两个类来提取文本特征
CountVectorizer() [词频统计把文本特征处理成数字向量]
vectorizer = CountVectorizer(ngram_range=(1,2), min_df=3, max_df=0.9, max_features=100000)
参数说明:
ngram_range=(1,2) :词组切分的长度范围
min_df=3 :表示词出现的次数,作为一个阈值,当构造语料库的关键词集的时候,如果某个词的document frequence小于max_df,这个词不会被当作关键词
max_df=0.9 :表示词出现的次数与语料库文档数的百分比,作为一个阈值,当构造语料库的关键词集的时候,如果某个词的document frequence大于max_df,这个词不会被当作关键词
max_features=100000 :默认为None,可设为int,对所有关键词的term frequency进行降序排序,只取前max_features个作为关键词集
3.应用实例
二、代码实现
1、接着上一篇,由于特征处理的数据量过大,程序运行时有点崩溃。所以这里将上一篇读取数据量的代码改为:
只读取前500个数据进行分析。
2、进行TF-IDF的预处理