【文本分类】基于类信息的TF-IDF权重分析与改进

简介: 【文本分类】基于类信息的TF-IDF权重分析与改进

摘要:改进TFIDF,增加了类间因子、类内因子,应用于文本的特征选择,提高了精度 。

参考文献:[1]姚严志,李建良.基于类信息的TF-IDF权重分析与改进[J].计算机系统应用,2021,30(09):237-241.

一、引言


  权重计算的方法多种多样, 常用的包括文档频率、信息增益、互信息、卡方分布、TF-IDF 等。

二、基础算法


2.1、TF-IDF算法【词频-逆文档频】


  可以与sklearn中提供的TF-IDF方法TfidfVectorizer结合介绍。

c0b4f5f48bb842ab9cacd0e0d66e306d.jpg   1、 如上图,TF-IDF的值为TF*IDF。

   1.1、 tf(t, d):tf代表特征词t在文本d中出现的次数,其实就是独热(OneHot)。

    词频标准化:但是有可能d比较长,那么相应的每个特征词t相较于在其他文本di出现的次数就多,可能造成不公平,所以提出tf(t, d):tf代表特征词t在文本d中出现的频率,也就是拿t出现的次数除以d中的所有词出现次数和。

   1.2、 idf(t):idf表示逆文档频率。nd是语料库中所有文档数,df(t, d)是整个语料库中含有特征词t的文本数目。

   idf的多个公式:以上3个公式,第二个是教科书的定义。真正使用起来,使用第一或者第三个,第一个是加了平滑,第三个没有加。当sklearn中方法TfidfVectorizer使用smooth_idf = True时,使用的是第一个公式,smooth_idf = False时,使用的是第三个公式。

     2、出来TF-IDF值之后,需要基于每个文本d,来使用归一化。归一化采用L2范数,也就是欧几里得归一化,控制TF-IDF的值到区间[0,1]。


[注一]:上图的两种tf的计算方法,一旦经过欧几里得归一化之后,效果是一样的,代入L2范数很容易消去下面的分母,这也是为什么sklearn直接使用词出现次数而不使用词频的原因。

2.2、改进算法【TF-IDF-CI】


提出TF-IDF的缺点。


  传统 TF-IDF 并不能很好的区分类间和类内分布所带来的影响.。

  类间分布指的是特征词在不同类别间的分布情况,集中分布于某个类别的特征词,比在各个类别均匀分布的特征词更好;

  类内分布指的是特征词在某类别内的分布情况,在某类别内各文档均普遍出现的特征词,比仅出现于类别内一小部分文档的特征词更好。

提出两种因子。


  类间离散度因子CIac和类内离散度因子CIic

fa9895f2f09449c28ebc55ef0f09b254.png

 这些因子都是比较常规的求解方法,其中思想有借鉴意义。

[注二]:上图标注的1,也是对数据进行归一化,采用arctan,函数图像与sigmoid很像。选取函数是否会有一定的规则?值得思考。

image.png

[注三]:上图标注的2,这个公式是非常常规的方差公式,教科书上方差的分母应该是N,本文为N-1。调查后,发现除以N是当样本趋于无穷的时候,我们使用有限个样本时,方差会略小,实验证明分母取N-1效果比较好。


[注四]:上图标注的3,分母n(t, c)为0的情况非常多,论文中没有交代如何平滑。

三、代码实验


3.1、实验思路


  根据以下4种方法:

  (1)sklearn中的TF-IDF

  (2)手写的TF-IDF

  (3)sklearn中的TF-IDF + 论文中的两种因子

  (4)手写的TF-IDF + 论文中的两种因子

  比较不同算法之间,文本分类的准确率。

[注五]:TF-IDF主要是用来表示特征词的权重,基于类信息改进的TF-IDF可以应用于训练集,因为训练集是已知类别标签的;但是无法应用于测试集,因为我们在表示权重的时候不应该去拿测试集的标签,测试集标签只是用来验证结果的。参阅文献后,发现他们是对训练集用交叉验证的,感觉自欺欺人了,难以用到工程实践,求大佬指教。。。

参考了论文:张玉芳, 彭时名, 吕佳. 基于文本分类 TFIDF 方法的改进与应用. 计算机工程, 2006, 32(19): 76–78. [doi: 10.3969/j.issn.1000-3428.2006.19.028]

3.2、数据集


  数据来源于 https://github.com/cystanford/text_classification 。数据集共包含四个类别,分别为“女性”,“体育”,“文学”,“校园”,原始数据集已经划分了测试集和训练集,并给出了停用词文档。

3.3、实验结果


5折交叉检验:

方法 准确率
sklearn中的TF-IDF 0.8699288361952732
手写的TF-IDF 0.8699288361952732
sklearn中的TF-IDF + 论文中的两种因子 0.6966538843005425
手写的TF-IDF + 论文中的两种因子 0.6966538843005425

[注六]:手写出来的特征矩阵,是3306*24000维的,跑一次SVC需要10分钟,我们需要使用scipy.sparse,把普通二维矩阵,转化为稀疏矩阵csr_matrix,此时算法只需要30秒就可以完成。

实验结果分析:


  准确率下降了!满脸问号???

  检查了很多遍,2.2节公式平滑那里也调了很多参数,准确率都很低。

  虽然实验结果不如意,但是学到了很多关于TF-IDF的理论。

欣慰的是,从数据中可以发现我手写的TF-IDF算法和sklearn提供的效果一模一样!

相关文章
|
2月前
|
机器学习/深度学习 自然语言处理 算法
基于TF-IDF+KMeans聚类算法构建中文文本分类模型(附案例实战)
基于TF-IDF+KMeans聚类算法构建中文文本分类模型(附案例实战)
142 1
|
4月前
|
机器学习/深度学习 算法 PyTorch
实战图像softmax分类模型
本文是学习softmax图像分类模型的总结,主要分享softmax图像分类模型的技术原理,以及用代码实现验证,供大家参考。
92 3
|
算法 数据挖掘 Linux
【文本分类】采用同义词的改进TF-IDF权重的文本分类
【文本分类】采用同义词的改进TF-IDF权重的文本分类
【文本分类】采用同义词的改进TF-IDF权重的文本分类
|
机器学习/深度学习 自然语言处理 算法
【文本分类】基于改进TF-IDF特征的中文文本分类系统
【文本分类】基于改进TF-IDF特征的中文文本分类系统
186 0
【文本分类】基于改进TF-IDF特征的中文文本分类系统
|
机器学习/深度学习 自然语言处理 数据处理
基于TF-IDF与逻辑回归模型实现文本实体关系抽取任务
基于TF-IDF与逻辑回归模型实现文本实体关系抽取任务
131 0
基于TF-IDF与逻辑回归模型实现文本实体关系抽取任务
|
机器学习/深度学习 算法 TensorFlow
TF之LSTM:基于tensorflow框架自定义LSTM算法实现股票历史(1990~2015数据集,6112预测后100+单变量最高)行情回归预测
TF之LSTM:基于tensorflow框架自定义LSTM算法实现股票历史(1990~2015数据集,6112预测后100+单变量最高)行情回归预测
TF之LSTM:基于tensorflow框架自定义LSTM算法实现股票历史(1990~2015数据集,6112预测后100+单变量最高)行情回归预测
|
机器学习/深度学习 算法
DL之CNN:利用自定义DeepConvNet【7+1】算法对mnist数据集训练实现手写数字识别并预测(超过99%)
DL之CNN:利用自定义DeepConvNet【7+1】算法对mnist数据集训练实现手写数字识别并预测(超过99%)
DL之CNN:利用自定义DeepConvNet【7+1】算法对mnist数据集训练实现手写数字识别并预测(超过99%)
|
机器学习/深度学习
DL之DNN:自定义MultiLayerNet【6*100+ReLU,SGD】对MNIST数据集训练进而比较【多个超参数组合最优化】性能
DL之DNN:自定义MultiLayerNet【6*100+ReLU,SGD】对MNIST数据集训练进而比较【多个超参数组合最优化】性能
DL之DNN:自定义MultiLayerNet【6*100+ReLU,SGD】对MNIST数据集训练进而比较【多个超参数组合最优化】性能
|
计算机视觉
TF之TFSlim:利用经典VGG16模型(InceptionV3)在ImageNet数据集基础上训练自己的五个图像类别数据集的训练过程记录
TF之TFSlim:利用经典VGG16模型(InceptionV3)在ImageNet数据集基础上训练自己的五个图像类别数据集的训练过程记录
TF之TFSlim:利用经典VGG16模型(InceptionV3)在ImageNet数据集基础上训练自己的五个图像类别数据集的训练过程记录
|
机器学习/深度学习 算法 算法框架/工具
DL之CNN:基于CRNN_OCR算法(keras,CNN+RNN)利用数据集(torch,mdb格式)训练来实现新图片上不定长度字符串进行识别—预测过程
DL之CNN:基于CRNN_OCR算法(keras,CNN+RNN)利用数据集(torch,mdb格式)训练来实现新图片上不定长度字符串进行识别—预测过程
DL之CNN:基于CRNN_OCR算法(keras,CNN+RNN)利用数据集(torch,mdb格式)训练来实现新图片上不定长度字符串进行识别—预测过程