Tf-idf推导及理解

目录

1 什么是Tf-idf?

2 Tf-idf可以用来做什么?


1 什么是Tf-idf?

TF-IDF是一种统计方法,用以评估一字词对于一个文件集或一个语料库中的其中一份文件的重要程度。

百度百科:TF-IDF(term frequency–inverse document frequency)是一种用于信息检索与数据挖掘的常用加权技术。TF是词频(Term Frequency),IDF是逆文本频率指数(Inverse Document Frequency)。

顾名思义,Tf-idf由tf和idf两部分组成,tf是指一个词在当前document里面出现的频率,idf是指这个词在全体语料库中出现频率的倒数。根据这个定义,说明一个词对于一个document的重要程度与这个词出现在当前document的频率成正比,与出现在全体语料库中的频率成反比。通俗理解,一个词在一篇文章中出现次数越多,这个词对这篇文章越重要;在全体语料中出现频率越多,说明,这个词只是一个常用词而已,两者乘积就是Tf-idf。注意:这里document不一定是文章,可能是句子之类的,或者是其他的。

公式如下:tfidf(w)=tf(d,w)*idf(w),其中,

a) 要将文档向量化,我们可以使用TF-IDF(Term Frequency-Inverse Document Frequency)方法。首先,我们需要计算每个文档中每个词的TFIDF值,然后将它们相乘得到TF-IDF值。 TF(词频)表示某个词在文档中出现的频率,可以使用以下公式计算: TF = (词在文档中出现的次数) / (文档中总词数) IDF(逆文档频率)表示某个词在文档集合中的重要性,可以使用以下公式计算: IDF = log((总文档数) / (包含该词的文档数)) 最后,将TFIDF相乘得到TF-IDF值。 根据上述方法,计算五篇文档的TF-IDF向量化矩阵的维度如下: ``` from sklearn.feature_extraction.text import TfidfVectorizer train = ["Hello world", "Hello python Hello", "world python Hello", "Hello Hello java", "Hello linux shell"] vectorizer = TfidfVectorizer() tfidf_matrix = vectorizer.fit_transform(train) print(tfidf_matrix.shape) ``` 运行上述代码,输出结果为: ``` (5, 7) ``` 因此,TF-IDF向量化矩阵的维度为5x7。 b) 要计算五篇文档之间的相似度,可以使用`pairwise_distances`函数从`sklearn.metrics.pairwise`模块。该函数可以计算文档集合中的两两文档之间的距离或相似度。 根据上述代码,计算五篇文档之间的相似度矩阵的维度如下: ``` from sklearn.feature_extraction.text import TfidfVectorizer from sklearn.metrics.pairwise import pairwise_distances train = ["Hello world", "Hello python Hello", "world python Hello", "Hello Hello java", "Hello linux shell"] vectorizer = TfidfVectorizer() tfidf_matrix = vectorizer.fit_transform(train) similarity_matrix = pairwise_distances(tfidf_matrix, metric='cosine') print(similarity_matrix.shape) ``` 运行上述代码,输出结果为: ``` (5, 5) ``` 因此,相似度矩阵的维度为5x5。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值