添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

TF-IDF原理

TF-IDF是Term Frequency -  Inverse Document Frequency的缩写,即“词频-逆文本频率”。它由两部分组成,TF和IDF。

TF(词频),即统计文本中各个词的出现频率,并作为文本特征,这个很好理解。

IDF,即“逆文本频率”。为方便理解,举例说明。

from sklearn.feature_extraction.text import CountVectorizer vectorizer=CountVectorizer() text=["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"] # 文本的词频统计 print(vectorizer.fit_transform(text)) # 各个特征代表的词 print(vectorizer.get_feature_names()) # 每个文本的词向量特征 print(vectorizer.fit_transform(text).toarray())

在这个例子中,出现"to"的词频虽然高,但是重要性却应该比词频低的"China"和“Travel”要低。IDF就是来帮助我们来反应这个词的重要性的,进而修正仅仅用词频表示的词特征值。

概括来讲, IDF反应了一个词在所有文本中出现的频率,如果一个词在很多的文本中出现,那么它的IDF值应该低,比如上文中的“to”。而反过来如果一个词在比较少的文本中出现,那么它的IDF值应该高。比如一些专业的名词如“Machine Learning”。这样的词IDF值应该高。一个极端的情况,如果一个词在所有的文本中都出现,那么它的IDF值应该为0。IDF的定义如下:

IDF(x)=log(N/N(x))

其中,N代表语料库中文本的总数,而N(x)代表语料库中包含词x的文本总数。

为什么IDF的基本公式应该是上面这样,而不是像N/N(x)这样的形式呢?这就涉及到信息论相关的一些知识了。感兴趣的朋友建议阅读吴军博士的《数学之美》第11章。

上面的IDF公式已经可以使用了,但是在一些特殊的情况会有一些小问题,比如某一个生僻词在语料库中没有,这样我们的分母为0, IDF没有意义了。所以常用的IDF我们需要做一些平滑,使语料库中没有出现的词也可以得到一个合适的IDF值。平滑的方法有很多种,最常见的IDF平滑后的公式之一为:

IDF(x)=log((N+1)/(N(x)+1)) + 1

知道了IDF,就可以计算某个词的TF-IDF值了:

TF-IDF(x) = TF(x) * IDF(x)

TF-IDF代码

方法1:使用TfidfTransformer

from sklearn.feature_extraction.text import CountVectorizer from sklearn.feature_extraction.text import TfidfTransformer text=["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(text)) print(tfidf)

方法2:使用TfidfVectorizer(推荐)

from sklearn.feature_extraction.text import TfidfVectorizer text=["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(text) print(re)

可以看到,2种方法的结果相同,但是TfidfVectorizer更为简洁,因此在实际应用中推荐使用。

互信息的原理

点互信息PMI

点互信息PMI(Pointwise Mutual Information)这个指标常常用来衡量两个事物之间的相关性(比如两个词)。公式如下:

如果x跟y不相关,则p(x,y)=p(x)p(y)。二者相关性越大,则p(x, y)就相比于p(x)p(y)越大。

举个自然语言处理中的例子来说,我们想衡量like这个词的极性(正向情感还是负向情感)。我们可以预先挑选一些正向情感的词,比如good。然后计算like跟good的PMI。

互信息MI

点互信息PMI其实就是从信息论里面的互信息这个概念里面衍生出来的。 互信息即:

其衡量的是两个随机变量之间的相关性,即一个随机变量中包含的关于另一个随机变量的信息量。

可以看出,互信息其实就是对X和Y的所有可能的取值情况的点互信息PMI的加权和。

对特征矩阵使用互信息进行特征筛选

sklearn.metrics.mutual_info_score

from sklearn import datasets from sklearn import metrics as mr iris = datasets.load_iris() x = iris.data label = iris.target x0 = x[:, 0] x1 = x[:, 1] x2 = x[:, 2] x3 = x[:, 3] # 计算各特征与label的互信息 print(mr.mutual_info_score(x0, label)) print(mr.mutual_info_score(x1, label)) print(mr.mutual_info_score(x2, label)) print(mr.mutual_info_score(x3, label))

sklearn.feature_selection.mutual_info_classif

from sklearn import datasets from sklearn.feature_selection import mutual_info_classif iris = datasets.load_iris() x = iris.data label = iris.target mutual_info = mutual_info_classif(x, label, discrete_features= False) print(mutual_info)

文本挖掘预处理之TF-IDF https://www.cnblogs.com/pinard/p/6693230.html

《从零开始学习自然语言处理(NLP)》-TF-IDF算法(2) https://mp.weixin.qq.com/s?__biz=MzUyMjE2MTE0Mw==&mid=2247487478&idx=1&sn=44eec0f46d511dd181afe5eca26b456d&chksm=f9d1516ecea6d8785fb02f1082773711b9ead3c235315eded29dade64791e3df9d394091124d&scene=0&xtrack=1#rd

文本挖掘预处理之向量化与Hash Trick http://www.cnblogs.com/pinard/p/6688348.html

使用gensim、sklearn、python计算TF-IDF值 https://www.jianshu.com/p/f3b92124cd2b

sklearn:点互信息和互信息 https://blog.csdn.net/u013710265/article/details/72848755

NLP实践-Task3 https://blog.csdn.net/zh11403070219/article/details/88284390

sklearn.metrics.mutual_info_score https://scikit-learn.org/stable/modules/generated/sklearn.metrics.mutual_info_score.html#sklearn.metrics.mutual_info_score

sklearn.feature_selection.mutual_info_classif https://scikit-learn.org/stable/modules/generated/sklearn.feature_selection.mutual_info_classif.html#sklearn.feature_selection.mutual_info_classif

一.TF-IDF原理1.1为什么要用TF-IDF在将文本分词并向量化后,我们可以得到词汇表中每个词在各个文本中形成的词向量,比如在文本挖掘预处理之向量化与HashTrick这篇文章中,我们将下面4个短... 来自: starmoth的博客 一.什么是TF-IDFTF-IDF(TermFrequency-InverseDocumentFrequency,词频-逆文件频率).字词的重要性随着它在文件中出现的次数成正比增加,但同时会随着它在语... 来自: weixin_43589681的博客 学习笔记,,备忘录。。。内容来源:知乎:特征工程到底是什么?实际应用中的数据往往很多,并存在不相关的特性,特性之间也可能存在相互依赖。通过特征选择剔除不相关或冗余的特征,减少特征个数,减少运行时间的目... 来自: spring_willow的博客 为什么要做特征选取?构建词向量是为了表征一篇/段文本,方便对文本的分析、分类等操作。对于一个文本,词向量是一维向量,每个单元表征一个特征词。怎么获取这些特征词,简单粗暴的方法就是,对文本集(所有文本)... 来自: IT_bigstone的专栏 点互信息和互信息点互信息PMI机器学习相关文献里面,经常会用到点互信息PMI(PointwiseMutualInformation)这个指标来衡量两个事物之间的相关性(比如两个词)。其原理很简单,公式... 来自: 沐埜专栏 一、TF-IDF原理以及利用其进行特征筛选关于TF-IDF原理,之前写的一篇博客:特征工程之TF-IDF1.1简单使用这里简单总结一下使用sklearn提取文本tfidf特征,官方教程:http://... 来自: IOT_victor的博客 任务描述:TF-IDF原理以及利用其进行特征筛选互信息的原理以及利用其进行特征筛选TFIDF原理简介TFIDF一类用于计算单词在文章中重要程度的方法,分为两个部分,一部分是TF表示词频(通常会进行归一... 来自: hongyesuifeng的博客 TF-IDF原理。文本矩阵化,使用词袋模型,以TF-IDF特征值为权重。(可以使用Python中TfidfTransformer库)互信息的原理。使用第二步生成的特征矩阵,利用互信息进行特征筛选。参考... 来自: 盛夏光年 互信息是用来评价一个事件的出现对于另一个事件的出现所贡献的信息量,具体的计算公式为:其中U、C代表两个事件,e的取值可以为0或者1,1代表出现这个事件,0代表不出现。把上述公式拆解为统计形式为:其中N... 来自: liu_zhlai的博客 当数据预处理完成后,我们需要选择有意义的特征输入机器学习的算法和模型进行训练。通常来说,从两个方面考虑来选择特征:特征是否发散:如果一个特征不发散,例如方差接近于0,也就是说样本在这个特征上基本上没有... 来自: weixin_41931602的博客 笔者是一个痴迷于挖掘数据中的价值的学习人,希望在平日的工作学习中,挖掘数据的价值,找寻数据的秘密,笔者认为,数据的价值不仅仅只体现在企业中,个人也可以体会到数据的魅力,用技术力量探索行为密码,让大数据... 来自: livan1234的博客 【任务4-文本表示】TF-IDF原理。文本矩阵化,使用词袋模型,以TF-IDF特征值为权重。(可以使用Python中TfidfTransformer库)互信息的原理。使用第二步生成的特征矩阵,利用互信... 来自: Loewi的博客 TfidfVectorizer所属模块:sklearn功能:原始文本转化为tf-idf的特征矩阵,从而为后续的文本相似度计算,奠定基础该网站可在线测试本文代码,以便快速理解本文代码:http://ka... 来自: kakazai.cn 1、点互信息PMI机器学习相关文献里面,经常会用到点互信息PMI(PointwiseMutualInformation)这个指标来衡量两个事物之间的相关性(比如两个词)。其原理很简单,公式如下:在概率... 来自: 专注计算机体系结构 1、熵一个离散型的随机变量X的熵H(X)定义为熵常用以2为底的对数,则熵的单位用比特(bit)进行表示。以e为底的对数,则熵的单位用nat表示熵可以看做是随机变量平均不确定度的度量。 2、互信息定义(... 来自: wangyj705的专栏 互信息(mutualinformation)是用来评价一个事件的出现对于另一个事件的出现所贡献的信息量互信息公式在对文本进行特征选择的时候,X表示某个词,Y表示类别,xi表示这个词的取值,在这里只有两... 来自: weixin_34018169的博客 特征选择(featureselection)是从训练集合出现的词项中选出一部分子集的过程。在文本分类过程也仅仅使用这个子集作为特征。特征选择有两个主要目的:第一,通过减少有效的词汇空间来提高分类器训练... 来自: ahaha413525642的博客 我们可以通过前面的文章发现无论是皮尔森系数,还是斯皮尔曼等级相关都是计算的是数值特征的相关性。一旦遇上类型特征,这些特征本身的数值是没有意义的,那么就无法采用之前的方法计算相关性。要用互信息计算...... 来自: wqtltm的博客 1.TF-IDF原理。TF-IDF是TermFrequency-InverseDocumentFrequency的缩写,即“词频-逆文本频率”。它由两部分组成,TF和IDF。前面的TF也就是我们前面说... 来自: suifeng2018的专栏 TF*IDFTF称为词频,表示词在一篇文档中出现的频率=词在该文档中出现的次数/该文档中单词的总数---TF越大,表示该词对文档越重要DF称为文档频率,一个词在多少篇文章中出现过IDF称为逆文档频率=... 来自: zhourunan TF_IDF,DF都是通过简单的统计来选择特征,因此把它们放在一块介绍   1、TF-IDF   单词权重最为有效的实现方法就是TF*IDF,它是由Salton在1988年提出的。其中TF称为词频,用... 来自: liu_zhlai的博客 1、TF-IDF算法介绍    TF-IDF(termfrequency–inversedocumentfrequency,词频-逆向文件频率)是一种用于信息检索(informationretriev... 来自: Asia-Lee的博客 TF-IDF介绍(维基百科):tf-idf(英语:termfrequency–inversedocumentfrequency)是一种用于信息检索与文本挖掘的常用加权技术。tf-idf是一种统计方法,... 来自: chen_mushi的博客 在概率论和信息论中,两个随机变量的互信息(MutualInformation,简称MI)或转移信息(transinformation)是变量间相互依赖性的量度。不同于相关系数,互信息并不局限于实值随机... 来自: 徐奕的专栏 研究了下sklearn.feature_selection()中参考的EstimatingMutualInformation论文与MutualInformationbetweenDiscreteand... 来自: weixin_43864473的博客 1.       Google在研究博客中总结了他们2011年的精彩论文《ExcellentPapersfor2011》,包括社会网络、机器学习、人机交互、信息检索、自然语言处理、多媒体、系统等各个领... 来自: iteye_7838的博客 1TF-IDF原理TF-IDF原理在另一篇博客:关键词抽取模型已经提及,这里不在重复。2文本矩阵化笔者理解的文本矩阵化,即将文本进行“词向量化”。这里简述常见的语言表示模型(词嵌入、句表示、篇章表示)... 来自: Someone&的博客 互信息的概念互信息量定义基于信息熵的概念。在信息论中,信息熵可度量变量的不确定性。设在随机空间中,某一离散变量X的概率分布为p(x),则X的信息熵定义为:                      ... 来自: m0_37628529的博客 在做文本挖掘,特别是有监督的学习时,常常需要从文本中提取特征,提取出对学习有价值的分类,而不是把所有的词都用上,因此一些词对分类的作用不大,比如“的、是、在、了”等停用词。这里介绍两种常用的特征选择方... 来自: leiting_imecas的博客 ##什么是特征工程?##定义:特征工程是将原始数据转化为特征,更好表示预测模型处理的实际问题,提升对于未知数据的准确性。它是用目标问题所在的特定领域知识或者自动化的方法来生成、提取、删减或者组合变化得... 来自: sqiu_11的博客 最近看数学之美上面互信息的公式是 又看到统计学习方法上有一个信息增益的公式 G(D,A)=H(D)-H(D|A) 这不是一样吗?难道互信息就是信息增益? 还是说G(D,A)里面的这个D指的是系统总的熵 特征选择方法目的:减少特征数量、降维,使模型泛化能力更强,减少过拟合增强对特征和特征值之间的理解方法:一、方差选择法。(fromsklearn.feature_selectionimportVaria... 来自: AuGuSt_81的博客 1.TF-IDF原理。TF-IDF原理概述在一份给定的文件里,词频(termfrequency,TF)指的是某一个给定的词语在该文件中出现的次数。这个数字通常会被归一化(分子一般小于分母区别于IDF)... 来自: yanyiting666的博客 面对一篇文章,我们如何提取他的关键词呢。如果是我们自己去提取,那只需要读一遍,然后大脑中就会有一定的印象了,但是对于计算机来说,他没有人那样的思考能力啊,那怎么办,只能依靠算法了。今天分享的内容呢是如... 来自: 老区的自留地 最近在看关键字提取的算法,之前看了hanlp的textrank算法,今天看了下tf-idf算法,这两个算法都比较简单,优缺点也很明显,主要都是通过词频来统计的。这个算法主要是参考了TF-IDF与余弦相... 来自: 小小码农 本章通过BOW到tf-idf的变化,讨论featurescaling的效果.TF-IDF:BOW的变种tf-idf可以说就是BOW基础上的变种,全称:termfrequency-inversedocu... 来自: nemo的博客 本文转载于:https://blog.csdn.net/yihucha166/article/details/50646615特征选择的主要目的有两点:1.减少特征数量提高训练速度,这点对于一些复杂模... 来自: Python开发工程师 在本节中我们将使用sklearn.feature_selection模块中的类在高维度的样本集上进行特征选择、降维来提升估计器的性能。1.Removingfeatureswithlowvariance... 来自: 爱丹丹的博客 在数据挖掘工作中,通常处理的是一个包含大量特征且含义未知的数据集,并基于该数据集挖掘到有用的特征。那么这里面一般是四个步骤:特征工程、特征选择、模型构造、模型融合。特征工程主要是清洗特征、删除无用特征... 来自: 走那条小路 余弦计算相似度度量相似度度量(Similarity),即计算个体间的相似程度,相似度度量的值越小,说明个体间相似度越小,相似度的值越大说明个体差异越大。 文本相似度计算的处理流程是:   (1)找出两... 来自: qq_36527339的博客 文章开的比较久但内容没怎么写,不好意思!本文呢是根据自己参加中移动垃圾短信基于文本内容识别竞赛而写的基于文本内容识别竞赛,由于比赛结果不太好,就记录一下用sklearn做文本特征提取这一块吧,当时也参... 来自: 豌豆先生 目录TF-IDFTF-IDF原理TF-IDF实践互信息互信息计算参考链接TF-IDFTF-IDF原理TF-IDF(TermFrequency-InverseDocumentFrequency,词频-逆... 来自: chen_yiwei的博客 jquery/js实现一个网页同时调用多个倒计时(最新的)nn最近需要网页添加多个倒计时. 查阅网络,基本上都是千遍一律的不好用. 自己按需写了个.希望对大家有用. 有用请赞一个哦!nnnn//jsn... 来自: Websites 最近在EasyDarwin开源群里,有不少用户私信需求,要做一种能够多端同屏的系统,细分下来有屏幕采集端和同屏端,屏幕采集端细想也就是一个低延时的流媒体音视频服务器,同屏端也就是一个低延时的播放器,负... 来自: Babosa的专栏 /** n* deviceID的组成为:渠道标志+识别符来源标志+hash后的终端识别符 n*  n* 渠道标志为: n* 1,andriod(a) n* n* 识别符来源标志: n* 1, wifi... 来自: LANGZI7758521的专栏 扫二维码关注,获取更多技术分享nnn 本文承接之前发布的博客《 微信支付V3微信公众号支付PHP教程/thinkPHP5公众号支付》必须阅读上篇文章后才可以阅读这篇文章。由于最近一段时间工作比较忙,... 来自: Marswill 最近比较有空,大四出来实习几个月了,作为实习狗的我,被叫去研究Docker了,汗汗!nnDocker的三大核心概念:镜像、容器、仓库n镜像:类似虚拟机的镜像、用俗话说就是安装文件。n容器:类似一个轻量... 来自: 我走小路的博客 webService学习(二)—— 调用自定义对象参数rn本文主要内容:rn1、如何通过idea进行webService Client的简单实现(不再使用wsimport的方式,其实是ide帮我们做了... 来自: 止水的专栏 maker一下自己捣鼓的商品详情页,主要是选择商品类型的交互和样式,点击不同类型切换图片和文字,商品增加减少,还有商品预览图片(本地图片无法预览!!!)。。源码下载:http://download.c... 来自: dKnightL的博客 changfan6000000: Traceback (most recent call last): File "C:\Python34\lib\site-packages\wfastcgi.py", line 791, in main env, handler = read_wsgi_handler(response.physical_path) File "C:\Python34\lib\site-packages\wfastcgi.py", line 633, in read_wsgi_handler handler = get_wsgi_handler(os.getenv("WSGI_HANDLER")) File "C:\Python34\lib\site-packages\wfastcgi.py", line 603, in get_wsgi_handler handler = getattr(handler, name) AttributeError: 'module' object has no attribute 'app'

WIN10 server IIS8... changfan6000000: 您好, 你的WSGIHEANDER app.app 这个.app是怎么回事呢 我按照您的配置 结果报错如下

【NLP实践-Task10 BER... weixin_43643930: 请问训练完成后eval_accuracy才为0.1是什么原因造成的呢?

python3.4.2安装pand... yyy430: [reply]u011799274[/reply] https://pypi.org/project/pandas/0.20.3/#files 找到pandas-0.20.3-cp34-cp34m-win_amd64.whl