机器学习(三)

一、文本特征抽取之TF-IDF

上一篇博文中介绍了计数文本特征的处理。由于一个词出现的数量往往并不能很好地反映这个文章的类型,对于文章的文分类误差较大,故计数往往在现实生活中并不常用。这篇文章主要是我们在机器学习中常用的一种方法,TF和IDF

(一)、TF

TF(term frequency):检索词语或单词在文章中出现的频率,也是统计词语出现的数量。

(二)、IDF

IDF(inverse document frequency):逆文档频率。公式如下:
log(文章中词语的总数量/每一个词语在该文章中出现的次数。

(三)、 TF*IDF

TF*IDF这一公式反映的是某一个词语在该篇文章中的重要性。在sklearn中对应的API为TfidfVectorizer

import jieba
from sklearn.feature_extraction.text import TfidfVectorizer

def Chinese():
   """
   中文文本的特征提取
   :return:
   """
   # 将中文文本通过空格的形式分成词语
   T1 = jieba.cut("一叶知秋,是一个孤单的词。")
   T2 = jieba.cut("铅灰的天空,覆雪的原野,冰封的河面,构成了冷色。")

   # 将词语拼接成列表的形式
   word_list1 = list(T1)
   word_list2 = list(T2)

   # 将列表转换成字符串的形式
   string1 = " ".join(word_list1)
   string2 = " ".join(word_list2)
   
   # 实例化
   TI = TfidfVectorizer()

   # 将中文文本进行特征提取
   data = TI.fit_transform([string1, string2])

   print(TI.get_feature_names())

   # 将sparce矩阵转化成数字矩阵并且打印
   print(data.toarray())

输出结果如下:

['一个', '一叶知秋', '冰封', '冷色', '原野', '天空', '孤单', '构成', '河面', '覆雪']
[[0.57735027 0.57735027 0.         0.         0.         0.
  0.57735027 0.         0.         0.        ]
 [0.         0.         0.37796447 0.37796447 0.37796447 0.37796447
  0.         0.37796447 0.37796447 0.37796447]]

从上述结果我们可以看出,数值越大的词语在文章中越为重要,数值越小的在文章种越为次要(由于文本数据太小,仅仅举例)。这样就能更好的判别文章的类别了。相较于之前的计数方法要好得多。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值