sklearn.feature_extraction.text文本特征实验

本文探讨了使用sklearn.feature_extraction.text的CountVectorizer、HashingVectorizer、TfidfTransformer和TfidfVectorizer进行文本特征提取。实验集中在多标签分类任务上,采用OneVsRestClassifier和SVM线性核进行模型训练。通过比较TF-IDF和TF两种特征,发现在1000维时f1-macro和f1-sample达到最佳,且原始TF表现优于TF-IDF,可能是由于样本不均衡导致。此外,实验对比了全局和局部TF计算的影响,发现题目内独立计算TF可能更有优势。

sklearn.feature_extraction.text提供了4种文本特征提取方法:

  1. CountVectorizer
  2. HashingVectorizer
  3. TfidfTransformer
  4. TfidfVectorizer
    因为TfidfVectorizer等价于CountVectorizer->TfidfTransformer,所以实质上就是两种特征,一种是HashingVector,另一种则是Tfidf特征。

每一类都是由题目组成,但是每个题目长度都不长,分词筛选后也只剩下几个关键词,因此计算各个词的tf的时候结果基本都是1/题目分词数,所以我便想着能不能计算出每一类的各个词的tf,而不是对单独的每个题目计算tf。
因此我将同一类的所有题目分词都组合到一个文档,这样就可以在同一类上计算词频tf,而不是在每个题目上面单独计算。
首先根据tf值排序做词典筛选:
初始词典中词的数目为7000。

实验采用
model = OneVsRestClassifier(svm.SVC(kernel=’linear’))模型进行实验。
特征提取采用了tf-idf和tf两种,tf-idf在tf的基础上加入了逆文档词频idf。
f1-macro,f1-micro,f1-sample分别是应用于多标签分类的评价标准,评价的基本标准依然是f1值,只是计算方式有所不同。

  1. 首先在tf-idf提取的特征下进行不同词数的实验,从中可以看到
    在1000维的时候f1-macro和f1-sample准确率达到最高,说明特征并不是越多越好,只要有足够多的具有区分能力的特征就够了。
    500维的时候效果和1000维相差不大。
  2. 接着进行了tf-idf和tf两种特征提取方式的比较。从结果可以看出不采用idf时的效果要好,我个人认为这是由样本不均衡问题造成的结果,因为训练集中有些类的样本很多,有些则很少,对于样本少的类别,在计算tf值的时候因为只需要考虑本类样本,因此受不均衡问题的影响较小,但加入idf时,因为将所有训练样
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值