TFIDF

20211224

https://blog.csdn.net/blmoistawinde/article/details/80816179
tfidf参数ngram_range
有时候我们觉得单个的词语作为特征还不足够,能够加入一些词组更好,就可以设置这个参数,如下面允许词表使用1个词语,或者2个词语的组合:
这里顺便使用了一个方便的方法 get_feature_names() ,可以以列表的形式得到所有的词语

tfidf_model5 = TfidfVectorizer(token_pattern=r"(?u)\b\w+\b", ngram_range=(1,2), stop_words=["是", "的"]).fit(document)
print(tfidf_model5.get_feature_names())
"""
['一切', '一切 星球', '一条', '一条 天狗', '了', '便是', '便是 我', '全宇宙', '全宇宙 来', '吞', '吞 了', '呀', '天狗', '天狗 呀', '我', '我 一条', '我 了', '我 便是', '我 把', '把', '把 一切', '把 全宇宙', '把 日来', '把 月', '日来', '日来 吞', '星球', '星球 来', '月', '月 来', '来', '来 吞']
"""

20211203

https://zhuanlan.zhihu.com/p/40510749
max_df,min_df就是idf不要i就是出现某个字符串的文档总数
占总文档数的比例或者绝对数

20211202

tfidf会自动处理不在训练集范围内的字符

20211129

https://github.com/mayank408/TFIDF
tiidf实现
tf:文档内部,idf所有文档
https://blog.csdn.net/weixin_43483381/article/details/89709301
自己实现

https://blog.csdn.net/qq_22526061/article/details/100073492
sklearn-TfidfVectorizer源码

https://zhuanlan.zhihu.com/p/67883024
https://www.cnblogs.com/caiyishuai/p/9511567.html
sklearn-TfidfVectorizer彻底说清楚

https://blog.csdn.net/zxkln/article/details/6339290
tfidf实例

在这里插入图片描述
三种划分方式

https://mp.weixin.qq.com/s/GD8EzE3CmXh_w1gm5VpUOw
tfidf代码实现

https://www.cnblogs.com/caiyishuai/p/9351825.html
sklearn: TfidfVectorizer 中文处理及一些使用参数

https://blog.csdn.net/laobai1015/article/details/80451371
https://blog.csdn.net/weixin_41745696/article/details/97027118
Python中的TfidfVectorizer参数解析

一. 什么是TF-IDF
TF-IDF(Term Frequency-Inverse Document Frequency, 词频-逆文件频率).

是一种用于资讯检索与资讯探勘的常用加权技术。TF-IDF是一种统计方法,用以评估一字词对于一个文件集或一个语料库中的其中一份文件的重要程度。字词的重要性随着它在文件中出现的次数成正比增加,但同时会随着它在语料库中出现的频率成反比下降。

上述引用总结就是, 一个词语在一篇文章中出现次数越多, 同时在所有文档中出现次数越少, 越能够代表该文章.
这也就是TF-IDF的含义.
词频 (term frequency, TF) 指的是某一个给定的词语在该文件中出现的次数。这个数字通常会被归一化(一般是词频除以文章总词数), 以防止它偏向长的文件。(同一个词语在长文件里可能会比短文件有更高的词频,而不管该词语重要与否。)

但是, 需要注意, 一些通用的词语对于主题并没有太大的作用, 反倒是一些出现频率较少的词才能够表达文章的主题, 所以单纯使用是TF不合适的。权重的设计必须满足:一个词预测主题的能力越强,权重越大,反之,权重越小。所有统计的文章中,一些词只是在其中很少几篇文章中出现,那么这样的词对文章的主题的作用很大,这些词的权重应该设计的较大。IDF就是在完成这样的工作.

公式:
在这里插入图片描述
逆向文件频率 (inverse document frequency, IDF) IDF的主要思想是:如果包含词条t的文档越少, IDF越大,则说明词条具有很好的类别区分能力。某一特定词语的IDF,可以由总文件数目除以包含该词语之文件的数目,再将得到的商取对数得到。
公式:

在这里插入图片描述
 某一特定文件内的高词语频率,以及该词语在整个文件集合中的低文件频率,可以产生出高权重的TF-IDF。因此,TF-IDF倾向于过滤掉常见的词语,保留重要的词语。

在这里插入图片描述
实例

一:有很多不同的数学公式可以用来计算TF-IDF。这边的例子以上述的数学公式来计算。词频 (TF) 是一词语出现的次数除以该文件的总词语数。假如一篇文件的总词语数是100个,而词语“母牛”出现了3次,那么“母牛”一词在该文件中的词频就是3/100=0.03。一个计算文件频率 (DF) 的方法是测定有多少份文件出现过“母牛”一词,然后除以文件集里包含的文件总数。所以,如果“母牛”一词在1,000份文件出现过,而文件总数是10,000,000份的话,其逆向文件频率就是 log(10,000,000 / 1,000)=4。最后的TF-IDF的分数为0.03 * 4=0.12。

二:根据关键字k1,k2,k3进行搜索结果的相关性就变成TF1IDF1 + TF2IDF2 + TF3IDF3。比如document1的term总量为1000,k1,k2,k3在document1出现的次数是100,200,50。包含了 k1, k2, k3的docuement总量分别是 1000, 10000,5000。document set的总量为10000。 TF1 = 100/1000 = 0.1 TF2 = 200/1000 = 0.2 TF3 = 50/1000 = 0.05 IDF1 = log(10000/1000) = log(10) = 2.3 IDF2 = log(10000/100000) = log(1) = 0; IDF3 = log(10000/5000) = log(2) = 0.69 这样关键字k1,k2,k3与docuement1的相关性= 0.12.3 + 0.20 + 0.050.69 = 0.2645 其中k1比k3的比重在document1要大,k2的比重是0.

三:在某个一共有一千词的网页中“原子能”、“的”和“应用”分别出现了 2 次、35 次 和 5 次,那么它们的词频就分别是 0.002、0.035 和 0.005。 我们将这三个数相加,其和 0.042 就是相应网页和查询“原子能的应用” 相关性的一个简单的度量。概括地讲,如果一个查询包含关键词 w1,w2,…,wN, 它们在一篇特定网页中的词频分别是: TF1, TF2, …, TFN。 (TF: term frequency)。 那么,这个查询和该网页的相关性就是:TF1 + TF2 + … + TFN。

读者可能已经发现了又一个漏洞。在上面的例子中,词“的”站了总词频的 80% 以上,而它对确定网页的主题几乎没有用。我们称这种词叫“应删除词”(Stopwords),也就是说在度量相关性是不应考虑它们的频率。在汉语中,应删除词还有“是”、“和”、“中”、“地”、“得”等等几十个。忽略这些应删除词后,上述网页的相似度就变成了0.007,其中“原子能”贡献了 0.002,“应用”贡献了 0.005。细心的读者可能还会发现另一个小的漏洞。在汉语中,“应用”是个很通用的词,而“原子能”是个很专业的词,后者在相关性排名中比前者重要。因此我们需要给汉语中的每一个词给一个权重,这个权重的设定必须满足下面两个条件:

  1. 一个词预测主题能力越强,权重就越大,反之,权重就越小。我们在网页中看到“原子能”这个词,或多或少地能了解网页的主题。我们看到“应用”一次,对主题基本上还是一无所知。因此,“原子能“的权重就应该比应用大。

  2. 应删除词的权重应该是零。

我们很容易发现,如果一个关键词只在很少的网页中出现,我们通过它就容易锁定搜索目标,它的权重也就应该大。反之如果一个词在大量网页中出现,我们看到它仍然不很清楚要找什么内容,因此它应该小。概括地讲,假定一个关键词 w 在 Dw 个网页中出现过,那么 Dw 越大,w的权重越小,反之亦然。在信息检索中,使用最多的权重是“逆文本频率指数” (Inverse document frequency 缩写为IDF),它的公式为log(D/Dw)其中D是全部网页数。比如,我们假定中文网页数是D=10亿,应删除词“的”在所有的网页中都出现,即Dw=10亿,那么它的IDF=log(10亿/10亿)= log (1) = 0。假如专用词“原子能”在两百万个网页中出现,即Dw=200万,则它的权重IDF=log(500) =6.2。又假定通用词“应用”,出现在五亿个网页中,它的权重IDF = log(2)则只有 0.7。也就只说,在网页中找到一个“原子能”的比配相当于找到九个“应用”的匹配。利用 IDF,上述相关性计算个公式就由词频的简单求和变成了加权求和,即 TF1IDF1 + TF2IDF2 +… + TFN*IDFN。在上面的例子中,该网页和“原子能的应用”的相关性为 0.0161,其中“原子能”贡献了 0.0126,而“应用”只贡献了0.0035。这个比例和我们的直觉比较一致了。

文本相似计算是进行文本聚类的基础,和传统结构化数值数据的聚类方法类似,文本聚类是通过计算文本之间"距离"来表示文本之间的相似度并产生聚类。文本相似度的常用计算方法有余弦定理和Jaccard系数。但是文本数据与普通的数值数据或类属数据不同,文本数据是一种半结构化数据,在进行文本挖掘之前必须要对文本数据源进行处理,如分词、向量化表示等,其目的就是使用量化的数值来表达这些半结构化的文本数据。使其适用于分析计算。

进行文本数据挖掘或信息检索的时候,会对文本进行分词处理,经过分词处理以后,一个文本的表示就变为由若干关键词(Token)来表示的多维向量。可表示为: d(t1,t2,…,tn),d表示被处理的文档,tn表示在d中出现过至少一次的关键词。在文本挖掘过程中会处理大量的文档,记为d1,d2,…,dm。经分词后,这些文档的向量表示就变为:dm(t1,t2,…,tn),m表示文档个数、n表示某个文档中关键词的个数。下面的例子中有两个包含若干关键词的文档,在本文的后面会一直使用这个例子所提供的数据。

d1 (A, B, C, C, S, D, A, B, T, S, S, S, T, W, W)

d2(C, S, S, T, W, W, A, B, S, B)

在了解了文档的向量表示以后再来看看TFIDF加权统计方法(在一些简单的处理方法中,可以只通过词频来计算文本间的相似度,不过当某个关键词在两篇长度相差很大的文本中出现的频率相近时会降低结果的准确性)。TFIDF是一种加权技术,它通过统计的方法来计算和表达某个关键词在文本中的重要程度。TFIDF是由两部分组成,一部分是TF(Token Frequency),表示一个词在文档中出现的次数,即词频。另一部分是IDF(Inverse Document Frequency),表示某个词出现在多少个文本中(或者解释为有多少个文本包含了这个词),即逆向文档频率,通常由公式IDFt=log((1+|D|)/|Dt|),其中|D|表示文档总数,|Dt|表示包含关键词t的文档数量。TFIDF的值就是由这两部分相乘得到的,还要指出的是TFIDF不是指某一个特定的公式,而是表示了一系列基于基本TFIDF方法变形(分别对TF和IDF这两部分进行处理)的公式的集合,而TFIDFtd=tftd*ln(idft)(t关键词在文本d中的词频乘以t的逆向文档频率的自然对数)是被多数系统证明是最有效的一个公式。现在来看看上面那个例子中给出的数据,由例子给出的数据可得到词频矩阵如下:

在这里插入图片描述
通常需要把词频数据正规化,以防止词频数据偏向于关键词较多即较长的文本。如某一个词在文档d1中出现了100次,在d2中出现了100次,仅从词频看来这个词在这两个文档中的重要性相同,然而再考虑另一个因素,就是d1的关键词总数是1000,而d2的关键词总数是100000,所以从总体上看,这个词在d1和d2中的重要性是不同的。因此就需要对词频做正规化处理。正规化处理的方法是用词频除以所有文档的关键词总数,将上面的词频矩阵进行正规化处理后,结果如下表:

在这里插入图片描述
然后再计算每个关键词对应的逆向文档频率即IDF的值。如下表所示:
在这里插入图片描述
最后将正规化后的词频与IDF值相乘,结果如下:

在这里插入图片描述

在得到TFIDF权值以后就可以利用这些数据利用余弦定理或Jaccard系数来计算文本之间的相似度以实现文本聚类等标准的文本挖掘算法了

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值