文章目录

  • 一、TF_IDF原理
    • 1、TF(item frequency)
    • 2、逆向文件频率IDF(inverse document frequency)
    • 3、TF-IDF
  • 二、TF-IDF算法实现
    • 1、方法一
    • 2、方法二
  • 三、达观实践

一、TF_IDF原理

TF-IDF(Term Frequency - Inverse Document Frequency,词频-逆文本频率)。TF-IDF是一种统计方法,用以评估一字词对于一个文件集或一个语料库中的其中一份文件的重要程度。 字词的重要性随着它在文件中出现的次数成正比增加,但同时会随着它在语料库中出现的频率成反比下降。

它由两部分组成,TF和IDF。

  • TF(词频),即统计文本中各个词的出现频率,并作为文本特征。
  • IDF,即“逆文本频率”。一个词语普遍重要性的度量。

1、TF(item frequency)

词频TF(item frequency)
某一给定词语在该文本中出现次数。该数字通常会被归一化(分子一般小于分母),以防止它偏向长的文件,因为不管该词语重要与否,它在长文件中出现的次数很可能比在段文件中出现的次数更大。

TF(x)=M(x)MTF(x)=\frac{M(x)}{M}TF(x)=MM(x)​
其中,MMM 表示文章的总词数,M(x)M(x)M(x) 表示词xxx在文章中的出现次数。

2、逆向文件频率IDF(inverse document frequency)

逆向文件频率IDF(inverse document frequency):一个词语普遍重要性的度量。
主要思想是:如果包含词条 t 的文档越少, IDF越大,则说明词条具有很好的类别区分能力。某一特定词语的IDF,可以由总文件数目除以包含该词语之文件的数目,再将得到的商取对数得到。

对于 xxx 的IDF的基本公式如下:
IDF(x)=logNN(x)IDF(x)=log\frac{N}{N(x)}IDF(x)=logN(x)N​
其中,NNN代表语料库中文本的总数,N(x)N(x)N(x)代表语料库中包含词xxx的文本总数。

为了避免特殊情况,对上式进行平滑处理,使得语料库中没有出现的词也可以得到一个合适的IDF值。最常见的IDF平滑后的公式如下
IDF(x)=logN+1N(x)+1+1IDF(x)=log\frac{N+1}{N(x)+1}+1IDF(x)=logN(x)+1N+1​+1

3、TF-IDF

TF−IDF(x)=TF(x)×IDF(x)TF-IDF(x)=TF(x)\times IDF(x)TF−IDF(x)=TF(x)×IDF(x)

二、TF-IDF算法实现

使用两种方法实现TF-IDF:

  • 第一种方法是在用 CountVectorizer类 向量化之后再调用 TfidfTransformer类 进行预处理。
  • 第二种方法是直接用 TfidfVectorizer 完成向量化与TF-IDF预处理。

1、方法一

# -*- coding:utf-8 -*-
from sklearn.feature_extraction.text import TfidfTransformer
from sklearn.feature_extraction.text import CountVectorizercorpus = ["I come to China to travel","This is a car polupar in China","I love tea and Apple","The work is to write some papers in science"]# 向量化
vectorizer = CountVectorizer()transformer = TfidfTransformer()
tfidf = transformer.fit_transform(vectorizer.fit_transform(corpus))
print(tfidf)

输出的各个文本各个词的TF-IDF值如下:

  (0, 16)    0.4424621378947393(0, 15)   0.697684463383976(0, 4) 0.4424621378947393(0, 3)    0.348842231691988(1, 14)    0.45338639737285463(1, 9)   0.45338639737285463(1, 6)   0.3574550433419527(1, 5)    0.3574550433419527(1, 3)    0.3574550433419527(1, 2)    0.45338639737285463(2, 12)  0.5(2, 7)   0.5(2, 1)   0.5(2, 0)   0.5(3, 18)  0.3565798233381452(3, 17)   0.3565798233381452(3, 15)   0.2811316284405006(3, 13)   0.3565798233381452(3, 11)   0.3565798233381452(3, 10)   0.3565798233381452(3, 8)    0.3565798233381452(3, 6)    0.2811316284405006(3, 5)    0.2811316284405006

2、方法二

TfidfVectorizer()

推荐使用:一步到位完成向量化,TF-IDF与标准化。

from sklearn.feature_extraction.text import TfidfVectorizercorpus = ["I come to China to travel","This is a car polupar in China","I love tea and Apple","The work is to write some papers in science"]tfidf2 = TfidfVectorizer()
re = tfidf2.fit_transform(corpus)
print(re)

输出的各个文本各个词的TF-IDF值和第一种的输出完全相同。

三、达观实践

采用方法二

from sklearn.feature_extraction.text import TfidfVectorizertfidf = TfidfVectorizer()
vectorizer = tfidf.fit(X_train['word_seg'])
X_train = vectorizer.fit_transform(X_train['word_seg'])
X_valid = vectorizer.fit_transform(X_valid['word_seg'])
print(X_train)

输出结果

  (0, 466302)    0.055682872725468624(0, 735749) 0.048322661901325954(0, 22559)  0.21754594654017237(0, 533960)  0.022913337050345733(0, 749018) 0.011395398329443985(0, 582264) 0.009735284700898725(0, 452264) 0.26752755253180194(0, 728808)  0.01526527311922612:    :(81820, 704892)    0.05852743581039402(81820, 432914)  0.06245002624655688(81820, 555672)  0.05787077716364361(81820, 130771)  0.065602189833585(81820, 412560)    0.08122709312494762(81820, 564061)  0.13065370153624445(81820, 19064)   0.06846498077803864(81820, 762455)  0.062386169747567895(81820, 52120)  0.060666492807123586(81820, 149165) 0.07180436011103326(81820, 490793)  0.07511200951474785(81820, 16951)   0.09416234746471083(81820, 311783)  0.09756707412477648

【数据竞赛】“达观杯”文本智能处理挑战赛2相关推荐

  1. 【数据竞赛】“达观杯”文本智能处理挑战赛1

    一.数据竞赛简介 "达观杯"文本智能处理挑战赛 1.任务 建立模型通过长文本数据正文(article),预测文本对应的类别(class) 2.数据 传送门:链接: https:// ...

  2. “达观杯”文本智能处理挑战赛代码示例

    达观杯介绍: 类似kaggle的数据科学比赛,任何人可以参加 网址:http://www.dcjingsai.com/ 可以用支付宝实名注册 项目名称: "达观杯"文本智能处理挑战 ...

  3. 达观杯”文本智能处理挑战赛

    竞赛信息 1.网址 http://www.dcjingsai.com/common/cmpt/"达观杯"文本智能处理挑战赛_竞赛信息.html 2.任务 建立模型通过长文本数据正文 ...

  4. “达观杯”文本智能处理挑战赛,季军带你飞

    来自AI小白入门 前段时间和朋友何从庆(AI算法之心)等队友一起组队参加了这个比赛,本来以为小比赛人少,没想到参加的人会有几千人.最后我们队伍取得季军(4st/3131),虽有些许遗憾,但是也很荣幸认 ...

  5. “达观杯”文本智能处理挑战赛

         (本内容转载自公众号"科技与Python") 2018年人工智能的发展在运算智能和感知智能已经取得了很大的突破和优于人类的表现.而在以理解人类语言为入口的认知智能上,目前 ...

  6. 【数据竞赛】“达观杯”文本智能处理挑战赛3

    一.语言模型 在统计自然语言处理中,语言模型指的是计算一个句子的概率模型. 传统的语言模型 词的表示是原始的.面向字符串的. 向量角度:更高维.更稀疏的向量.若词汇表大小为 NNN,每个字符串形式的词 ...

  7. 【数据竞赛】“达观杯”文本智能处理挑战赛5

    一.LightGBM模型 1.XGBoost缺点 每轮迭代时,都需要遍历整个训练数据多次.如果把整个训练数据装进内存则会限制训练数据的大小:如果不装进内存,反复地读写训练数据又会消耗非常大的时间. 预 ...

  8. 【数据竞赛】“达观杯”文本智能处理挑战赛4

    一.逻辑回归 逻辑回归(Logistic Regression, LR)是一种常用的处理两类分类问题的线性模型. 1.概率估计 LR 模型计算输入特征的加权和(加上偏差项),之后将中间结果输入 log ...

  9. 【数据竞赛】“达观杯”文本智能处理挑战赛6——模型优化

    文章目录 一.超参数 1.网格搜索 2.随机搜索 3.贝叶斯优化 二.Stacking 1.核心图解 (1)构建新的训练集 (2)构建新的测试集 (3)最终的训练与预测 2.示例 (1)构建新的训练集 ...

最新文章

  1. Lambda表达式(简单解析)
  2. halcon 形状匹配
  3. [转]【Git】rebase 用法小结
  4. 我该如何学习spring源码以及解析bean定义的注册
  5. 华硕笔记本节能证书_新标准兼顾性能与续航 笔记本换代哪些型号值得买?
  6. 将基于 .NET Framework 的 WPF 项目迁移到基于 .NET Core 3
  7. element el-popover 使用v-if 控制显示/隐藏,当条件变化时,里面有部分内容无法显示
  8. python中的装饰器和抽象类
  9. kubernetes_Kubernetes领域的标准安全性。
  10. BZOJ 1013 球形空间产生器(高斯消元)
  11. 我的实用设计模式之关于Policy-based design
  12. 软件项目管理实用教程(人民邮电出版)第一章课后习题
  13. 广播前置放大器的作用_IP网络广播前置放大器
  14. 多闭环PID控制算法
  15. xpose 调试支付宝
  16. 极路由2刷机为openwrt固件
  17. 2014SQLServer还原数据库
  18. Android 9 (P) recovery升级Map of ‘@/cache/recovery/block.map‘ failed问题分析指南
  19. zcu111解决DP时钟报错问题
  20. 国仁猫哥:视频号企业运营指南教科书;不可错失的红利。

热门文章

  1. 双亲委派机制 详解(手画详图)面试高频 你值得拥有!!!
  2. Redis击穿、雪崩、穿透场景描述与解决方案
  3. python编写自定义模块_编写和导入自定义模块/类
  4. java 怎么把list流化_Java 中的数据流和函数式编程
  5. android 桌面图标创建,android创建桌面图标
  6. quartus 修改 时钟_Clock Quartus II 开发的多功能数字时钟,有计时、调 闹铃、警报等 Other systems 其他 274万源代码下载- www.pudn.com...
  7. 苹果自动关机_零下二十度,登山表爆表,苹果冻关机,电霸手机好
  8. 俄罗斯方块android论文,基于Android的俄罗斯方块游戏设计与实现(论文+任务书+答辩PPT+设计源码)...
  9. 统计一段英文中单词的个数c语言,C语言统计一篇英文短文中单词的个数实例代码...
  10. 同一个类 cannot be cast to_2021年动漫类年历推荐