什么是TD-IDF?(计算两篇文章相似度)

什么是TD-IDF?

计算特征向量(或者说计算词条的权重)

构造文档模型

我们这里使用空间向量模型来数据化文档内容:向量空间模型中将文档表达为一个矢量。

We use the spatial vector model to digitize the document content: the vector space model represents the document as a vector.

用特征向量(T1,W1;T2,W2;T3, W3;…;Tn,Wn)表示文档。

The eigenvectors (T1, W1; T2, W2; T3, W3; ... ; Tn, Wn) represents the document.

    • Ti是词条项  ti is term
    • Wi是Ti在文档中的重要程度 (Wi is the importance of term Ti in the document)

即将文档看作是由一组相互独立的词条组构成

Think of a document as a set of independent phrases

把T1,T2 …,Tn看成一个n 维坐标系中的坐标轴

T1, T2... Tn as an n - dimensional coordinate system

对于每一词条根据其重要程度赋以一定的权值Wi,作为对应坐标轴的坐标值。

Each term is assigned a certain weight, Wi, according to its importance, as the coordinate value of the corresponding coordinate axis.

权重Wi用词频表示,词频分为绝对词频相对词频

Weighted Wi is represented by word frequency, which is divided into absolute word frequency and relative word frequency.

  • 绝对词频,即用词在文本中出现的频率表示文本。Absolute word frequency, that is, the frequency of words in the text represents the text.
  • 相对词频,即为归一化的词频,目前使用 最为频繁的是TF*IDF(Term Frequency * Inverse Document Frequency)TF乘IDF The relative word frequency is the normalized word frequency, and TF*IDF is the most frequently used at present

将文档量化了之后我们很容易看出D1与Q更相似~因为D1与Q的夹角小,我们可以用余弦cos表示After quantifying the document, it‘s easy to see that D1 is more similar to Q ~ because the Angle between D1 and Q is small, we can express it in terms of cosine cosine of theta



分析一下这个例子:analyze this example

有三个文档D1,D2,Q there have three documents D1,D2,Q

这三个文档一共出现了三个词条,我们分别用T1,T2,T3表示  this documents appears three terms,we present them by using T1,T2,T3 individualy

在文档D1中词条T1的权重为2,T2权重为3,T3权重为5

在文档D2中词条T1权重为0,T2权重为7,T3权重为1

在文档Q中词条T1权重为0,T2权重为0,T3权重为2

T1 has a weight of 2, T2 has a weight of 3, and T3 has a weight of 5 in document D1

T1 has a weight of 0,  T2 has a weight of 7,  T3 has a weight of 1 in document D2

T1 has a weight of 0, T2 has a weight of 0, and T3 has a weight of 2 in document D3

  D1 D2 Q
T1 2 3 0
T2 3 7 0
T3 3 1 2


接下来我们看tf*idf的公式:

tf:tf(d,t) 表示词条t 在文档d 中的出现次数

Tf (d,t) represents the number of occurrences of  term t in document d

idf:idf(t)=log N/df(t)

  • df(t)  表示词条t 在文本集合中出现过的文本数目(词条t在哪些文档出现过) the  number of occurences of document in all doucuments  ,which term t appear in documents

  • N 表示文本总数  N represent the  numbers of all documents

对于词条t和某一文本d来说,词条在该文本d的权重计算公式:

For term t and a document d, the formula for calculating the weight of term in that dpcument d is:

  • 特征向量(T1,W1;T2,W2;T3, W3;…;Tn,Wn)就可以求出了!

Eigenvectors (T1, W1; T2, W2; T3, W3; ... ; Tn, Wn, that‘s it!

是不是很简单呢~

进一步思考:

如果说一个词条t几乎在每一个文档中都出现过那么:

If an term t appears in almost every document, then:

idf(t)=log N/df(t)

趋近于0,此时w(t)也趋近于0,从而使得该词条在文本中的权重很小,所以词条对文本的区分度很低。

near 0,w(t) is also tend to zero,then make the weight of this term in the dicument is small ,so the distinction of this term in document is very low

停用词:在英文中如a,of,is,in.....这样的词称为停用词,它们都区分文档的效果几乎没有,但是又几乎在每个文档中都出现,此时idf的好处就出来了

In English, such as a,of,is,in... Such words, called stop words, have little effect on distinguishing documents but appear in almost every document, and the benefits of idf come out

我们通常根据w(d,t)值的大小,选择指定数目的词条作为文本的特征项,生成文本的特征向量(去掉停用词)We usually select a specified number of entries as text feature items based on the size of the w(d,t) value, and generate text feature vectors (minus stop words).

这种算法一方面突出了文档中用户需要的词,另一方面,又消除了在文本中出现频率较高但与文本语义无关的词条的影响

On the one hand, this algorithm highlights the words needed by users in the document, while on the other hand, it eliminates the influence of terms that appear frequently in the text but have nothing to do with the semantic meaning of the document

文本间相似性 :

基于向量空间模型的常用方法,刚才我们提到过可以用余弦值来计算,下面我讲一下具体步骤

Now, the usual way of doing it based on vector space models, we mentioned earlier that you can do it with cosines, so let me go through the steps

内积不会求得自行百度。。。。

为了提高计算效率:可以先算x‘=x/|x|,y‘=y/|y|;大量计算两两文档间相似度时,为降低计算量,先对文档向量进行单位化。

In order to improve the efficiency of calculation, x‘=x/|x|,y‘=y/|y|; When calculating the similarity between two documents in large quantities, in order to reduce the amount of computation, So let‘s first unit the document vector

ok~tf*idf就先到这里

总结:

我们可以通过计算tf*idf的值来作为特征向量的权重

然后通过计算特征向量之间的余弦值来判断相似性。

We can calculate the value of tf*idf as the weight of the eigenvector

Then the similarity is determined by calculating the cosine between the eigenvectors

原文地址:https://www.cnblogs.com/ldphoebe/p/12228905.html

时间: 2024-11-09 23:34:38

什么是TD-IDF?(计算两篇文章相似度)的相关文章

计算两篇文章相似度

[[(0, 1), (1, 1), (2, 1), (3, 1), (4, 1), (5, 1), (6, 1)], [(0, 1), (4, 1), (5, 1), (7, 1), (8, 1), (9, 2), (10, 1)], [(0, 1), (3, 1), (4, 1), (5, 1), (6, 1), (7, 1), (10, 1)]] 例如(9,2)这个元素代表第二篇文档中id为9的单词“silver”出现了2次. 有了这些信息,我们就可以基于这些“训练文档”计算一个TF-IDF

使用余弦定理计算两篇文章的相似性

使用余弦定理计算两篇文章的相似性:(方法论,细致易懂版) http://blog.csdn.net/dearwind153/article/details/52316151 python 实现(代码): http://outofmemory.cn/code-snippet/35172/match-text-release (结巴分词下载及安装:http://www.cnblogs.com/kaituorensheng/p/3595879.html) java 实现(代码+方法描述): https

对张子阳先生对委托和事件的两篇文章的读后思考(说得很透,内附故事一篇)

第一篇 C#中的委托和事件 第二篇 C#中的委托和事件(续) 首先,张子阳先生的这是两篇关于委托和事件间关系的文章,是目前为止我读过的介绍委托和事件以及异步调用最简明清晰文章,作者通过非常有节奏的"标题"->"问题"->"思路"->"实现"->"讲解"的结构,分步骤一步一步地将委托和事件的实现.应用与原理阐述得非常清楚,并且在行文期间将自己有趣的思考过程通过生动的语言表达了出来,使人

两篇文章带你走入.NET Core 世界:Kestrel+Nginx+Supervisor 部署上云服务器(二)

背景: 上一篇:两篇文章带你走入.NET Core 世界:CentOS+Kestrel+Ngnix 虚拟机先走一遍(一) 已经交待了背景,这篇就省下背景了,这是第二篇文章了,看完就木有下篇了. 直接进入主题: 1.购买云服务器 之前在虚拟机跑了一下,感觉还不够真实,于是,准备买台服务器,认真的跑一下. 有阿里云,腾讯云,华为云,还有好多云,去哪买一个? 之前做为华为云的云享专家去参加了一下活动,本来也准备写篇文章,不过相同游记文太多, 这里就转一篇了:让华为云MVP告诉你——在华为的一天可以做什

看到关于JS线程的两篇文章

JavaScript的setTimeout与setInterval是两个很容易欺骗别人感情的方法,因为我们开始常常以为调用了就会按既定的方式执行, 我想不少人都深有同感, 例如 [javascript] view plaincopyprint? setTimeout( function(){ alert(’你好!’); } , 0); setInterval( callbackFunction , 100); 认为setTimeout中的问候方法会立即被执行,因为这并不是凭空而说,而是JavaS

两篇文章的相似度(文章相似度)

package com.etoak.simHash; import com.hankcs.hanlp.seg.common.Term; import com.hankcs.hanlp.tokenizer.StandardTokenizer; import org.apache.commons.lang3.StringUtils; import org.jsoup.Jsoup; import org.jsoup.safety.Whitelist; import java.math.BigInteg

动手实践用LDA模型计算两篇英文文档相似度

知道原理的同学这部分可以略过直接看实践部分 什么是TD-IDF? 构造文档模型 我们这里使用空间向量模型来数据化文档内容:向量空间模型中将文档表达为一个矢量. 用特征向量(T1,W1:T2,W2:T3, W3:…:Tn,Wn)表示文档. Ti是词条项,Wi是Ti在文档中的重要程度, 即将文档看作是由一组相互独立的词条组构成,把T1,T2 …,Tn看成一个n 维坐标系中的坐标轴,对于每一词条,根据其重要程度赋以一定的权值Wi,作为对应坐标轴的坐标值. 权重Wi用词频表示,词频分为绝对词频和相对词频

计算两组标签相似度算法——levenshtein distance 编辑距离算法

标签在数据分析中起到很重要的作用,给用户打标签,给商品打标签,给新闻打标签,好的标签可以为我们后期分析数据时提供很大的便利.有时我们需要计算两个对象之间标签的相似度.目前学习的算法是levenshtein distance 编辑距离算法. 代码示例: //标签相似度 public static double levenshtein(String s1, String s2) { System.out.println("levenshtein str1:"+s1+" str2:

帮朋友写的两篇文章

理解万岁,心怀感恩,热爱生活 时间如白驹过隙,转眼之间又到毕业之际,回想去年刚刚毕业恍如昨日般历历在目,四年的大学生活充满了汗水.喜悦和感动,我成长了不少,也收获了很多.对我印象最深的是毕业季,感慨时间如此漫长,终于从小师妹熬到大师姐,如今已是陕师大的一名校友.虽说告别要趁早,但总是感觉人生已到垂暮之年,还有好多事情没来得及做.人总是后知后觉,人总是后知后觉后还没不愿行动.也不知道当时自己是怎么想的,总想以折腾的方式来对大学生活做最后的告别. 如今我已经在人生的A4纸上草草划去三分之一,未来的三