目录

  • 1 目的和思想
  • 2 模型原理
  • 3 tf-idf 总结
  • 4 tf-idf 函数使用
    • 4.1 CountVectorizer
      • 4.1.1 输入
      • 4.1.2 函数及参数
      • 4.1.3 输出及应用
    • 4.2 TfidfTransformer
      • 4.2.1 输入
      • 4.2.2 函数及参数
      • 4.2.3 输出及应用
    • 4.3 TfidfVectorizer
      • 4.3.1 输入
      • 4.3.2 函数及参数
      • 4.3.3 输出及应用

1 目的和思想

tf-idf 模型的目的:用一个矩阵表示某词对文章的重要性
tf-idf 的整体思想:利用词在文章出现的频数进行计算得出值表示重要性大小

2 模型原理

模型实现:

  1. 统计每篇文章词频,形成矩阵
  2. 通过公式 t f ∗ i d f tf*idf tf∗idf 计算每个位置的值,norm正则化每个值,输出矩阵

TF-IDF = T F ∗ I D F TF*IDF TF∗IDF

  • TF: 词的频率(Term Frequency)
  • IDF(Inverse Document Frequency): 逆文档频率,所有文章的总数除以含有该词的文章数,再取对数
  • TF = 该词语在当前文档出现的次数
  • IDF= log_e(文档总数 +1/ 出现该词语的文档总数+1)+1

3 tf-idf 总结

只用了简单的统计和计算便表示出了词在文章中的重要性权重

4 tf-idf 函数使用

TfidfVectorizer = CountVectorizer + TfidfTransformer

  • CountVectorizer: 利用文本计算词频,生成词频矩阵
  • TfidfTransformer: 将词频矩阵计算tf-idf值
  • TfidfVectorizer: 利用文本生成词频矩阵,再计算tf-idf值

4.1 CountVectorizer

4.1.1 输入

corpus = ['This is the first document.','This document is the second document.','And this is the third one.','Is this the first document?',
]

4.1.2 函数及参数

from sklearn.feature_extraction.text import CountVectorizer
vectorizer = CountVectorizer()
# 将文本数据转换为计数的稀疏矩阵
X = vectorizer.fit_transform(corpus)

4.1.3 输出及应用

# 查看每个单词的位置
print(vectorizer.get_feature_names())
print(X.data)
# 由于 X 存储为稀疏矩阵,转换为 array方便查看
print(X.toarray())

4.2 TfidfTransformer

4.2.1 输入

稀疏矩阵 X 或 X.toarray() 都可作为输入

4.2.2 函数及参数

from sklearn.feature_extraction.text import TfidfTransformer
transformer = TfidfTransformer()
#将词频矩阵 X统计成TF-IDF值
tfidf = transformer.fit_transform(X)

4.2.3 输出及应用

print(tfidf.data)
#查看数据结构 tfidf[i][j]表示i类文本中的tf-idf权重
print(tfidf.toarray())

未加参数 norm=None的结果(norm作用为正则化)


4.3 TfidfVectorizer

4.3.1 输入

corpus = ['This is the first document.','This document is the second document.','And this is the third one.','Is this the first document?',
]

4.3.2 函数及参数

from sklearn.feature_extraction.text import TfidfVectorizer
tfidf_v = TfidfVectorizer(ngram_range=(1,2),  # N-gram统计词可以按n来分词max_features=3000)  # 不同词的数量最大为3000
# 直接统计成 TF-IDF值
X = tfidf_v.fit_transform(corpus)

4.3.3 输出及应用

# 查看每个单词的位置
print(tfidf_v.get_feature_names())
# 未转换的数据
print(X.data)
#查看数据结构 tfidf[i][j]表示i类文本中的tf-idf权重
print(X.toarray())

TF-IDF 词向量相关推荐

  1. 词向量 文本相似度计算

     一.abstract 为把人们所理解的自然语言让计算机也能够认识并且操作,需要将人的语言(即文字)转换成计算机的语言(即数字) 二 .词的两种表示方法 1.1离散表示(one-hot represe ...

  2. 用tensorflow做的cbow词向量

    1:先导入包 #encoding=utf8 from __future__ import absolute_import from __future__ import division from __ ...

  3. tf-idf词向量和bow_使用词袋Bow和TF IDF进行多标签分类

    tf-idf词向量和bow 1.加载数据 (1. Load the data) For this study, we are using Kaggle data for Toxic Comment C ...

  4. 自然语言处理入门学习笔记3:词向量

    词向量 为什么需要词向量 1.词向量可以大量的预料中拿到一些对知识表达的方式 2.无法直接对文本进行计算,文本是标记性语言,计算机对数字比较敏感,词向量吧文字转成了数值向量 词编码方式 从onehot ...

  5. 自然语言处理之语言模型与词向量

    自然语言处理之语言模型与词向量原理 语言模型 基于语法的语言模型   在研究机器如何"理解"自然语言之前,不妨先看看人们是怎么理解自己的语言的.根据语言学(Linguistics) ...

  6. 词向量之TF-IDF模型详解

    目录 0 前言 1 TF-IDF模型 1.1 TF-IDF数学形式 1.2 举例 2 TF-IDF的实现 2.1 TF-IDF简单python实现 2.2 TF-IDF的gesim实现: 2.3 TF ...

  7. 线性判别用于提取词向量_资源 | 你是合格的数据科学家吗?30道题测试你的NLP水平...

    原标题:资源 | 你是合格的数据科学家吗?30道题测试你的NLP水平 选自Analyticsvidhya 作者:Shivam Bansal 机器之心编译 参与:黄小天.李亚洲.Smith 近日,ana ...

  8. word2vec预训练词向量+通俗理解word2vec+CountVectorizer+TfidfVectorizer+tf-idf公式及sklearn中TfidfVectorizer

    文章目录 文分类实(一) word2vec预训练词向量 2 数据集 3 数据预处理 4 预训练word2vec模型 canci 通俗理解word2vec 独热编码 word2vec (Continuo ...

  9. 企业隐患排查文本挖掘比赛(二):算法篇(从词向量到BERT)

    1.文本挖掘的历程 对于NLP问题,首先要解决的是文本表示的问题.虽然人能够清楚地了解文本的含义,但是计算机只能处理数值运算,因此首先要考虑如何将文本转化为数值. 1.1 向量表示 1.1.1 词袋模 ...

  10. 线性判别用于提取词向量_干货 :你是合格的数据科学家吗?30道题测试你的NLP水平...

    选自Analyticsvidhya作者:Shivam Bansal 转自:机器之心 微信公众号 本文由:机器之心 编译 参与:黄小天.李亚洲.Smith 近日,analyticsvidhya 上出现了 ...

最新文章

  1. OWA登录页面显示为英文而不是中文
  2. 自定义Spinner之IconSpinner
  3. 【错误记录】Android Studio 编译报错 ( Cannot use connection to Gradle distribution . as it has been stopped. )
  4. 感知机算法的两种表示
  5. 每周分享第 19 期(20190426)
  6. java 链表实现堆栈_《Java数据结构与算法》笔记-CH5-链表-4用链表实现堆栈
  7. java简单文本编译器_java -简易文本编辑器
  8. 电商海报模板|psd分层海报素材轻松教你凸显你的主体产品!
  9. 如何实现一个简单的熔断以及Hystrix原理分析
  10. 自己过好就是最大的公益!
  11. vector容器——赋值操作
  12. 考研高数——书本资料选择复习规划
  13. 加载MNIST数据集
  14. 阿里巴巴Java开发手册(2018-2021泰山版整理)
  15. python自动生成sql建表语句
  16. discuz wooyun-2010-080723
  17. 工业过程建模与先进控制(十)MPC的MATLAB命令
  18. 安卓开发中的 “Android高手” ,需要具备哪些技术?
  19. win10连接打印机问题:不能访问此共享文件夹
  20. Mac OS制作Windows10启动盘

热门文章

  1. IDEA开发工具调试技巧(极大提升开发效率)
  2. Elasticsearch - Elasticsearch集群Cluster(三)
  3. 多视角证据融合的虚假新闻甄别
  4. python 二级考试操作题(一)
  5. R语言检验多重共线性 vif
  6. 通信系统建模与仿真 笔记2
  7. SpringBoot第 5 讲:SpringBoot+properties配置文件读取
  8. python计算波峰波谷值的方法(极值点)
  9. 遇到的Exception/error及解决办法记录汇总
  10. 摇杆芯片速度测试软件,摇杆控制小车+L9110芯片