达观杯-文本智能处理挑战赛-02

TFIDF原理及实践

一、词袋模型

原理:
将每篇文章看成一袋子词,并忽略每个词出现的顺序。即将整段文本以词为单位切分开,然后每篇文章可以表示成一个长向量,向量中的每一维代表一个单词,而该维对应的权重则反映了这个词在原文章中的重要程度。权重与词在文本中出现的频率有关,而其中不考虑词与词之间的上下文关系。
词袋模型的三步骤:
分词——统计修订词特征值——标准化

二、TF-IDF概述

公式为:TF-IDF(t, d) = TF(t, d)*IDF(t)
其中,TF(t, d) 表示单词t在文档d中出现的频率,IDF(t)表示逆文档频率,用来衡量单词t对表达语义所起的重要性,表示为:
IDF(t) = log(文章总数 / (包含单词t的文章总数 + 1))
直观解释是,如果一个单词在非常多的文章里都出现,则可能是比较通用的词汇,对于区分某篇文章特殊语义的贡献比较小,因此对其权重做一定惩罚。

三、通过sk-learn进行tf-idf预处理

两种方法:
1)使用CountVectorizer类向量化之后,再调用TfidfTransformer类进行预处理。
2)第二种方法是直接使用TfidfVectorizer直接完成向量化与预处理。

方法一实践如下所示:

from sklearn.feature_extraction.text import TfidfTransformer
from sklearn.feature_extraction.text import CountVectorizer
import pandas as pd
my_data = pd.read_csv('../datasets/train_set.csv', nrows = 5000)
vectorizer = CountVectorizer()
transformer = TfidfTransformer()
tfidf = transformer.fit_transform(vectorizer.fit_transform(my_data['word_seg']))

方法二实践如下所示:

from sklearn.feature_extraction.text import TfidfVectorizer
my_data = pd.read_csv('../datasets/train_set.csv', nrows = 5000)
tfidfvectorizer = TfidfVectorizer()
re = tfidfvectorizer.fit_transform(my_data['word_seg'])

参考:https://www.cnblogs.com/pinard/p/6693230.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值