<tf-idf + 余弦相似度> 计算文章的相似度

背景知识:
(1)tf-idf
按照词TF-IDF值来衡量该词在该文档中的重要性的指导思想:如果某个词比较少见,但是它在这篇文章中多次出现,那么它很可能就反映了这篇文章的特性,正是我们所需要的关键词。
tf–idf is the product of two statistics, term frequency and inverse document frequency.
     //Various ways for determining the exact values of both statistics exist.
tf–idf= tf×idf
In the case of the term frequency tf(t,d), the simplest choice is to use the raw frequency of a term in a document, i.e. the number of times that term t occurs in document d.
Other possibilities include:
- Boolean "frequencies": tf(t,d) = 1 if t occurs in d and 0 otherwise;
- logarithmically scaled frequency: tf(t,d) = 1 + log f_t,d, or zero if ft,d is zero;
- augmented frequency, to prevent a bias towards longer documents, e.g. raw frequency divided by the maximum raw frequency of any term in the document:
          tf(t,d)=0.5+0.5*f_t,d/max(f_t'd)
The inverse document frequency is a measure of how much information the word provides, that is, whether the term is common or rare across all documents.
 

 

(2)余弦相似度
余弦值的范围在[-1,1]之间,值越趋近于1,代表两个向量的方向越接近;越趋近于-1,他们的方向越相反;接近于0,表示两个向量近乎于正交。
 

 一般情况下,相似度都是归一化到[0,1]区间内,因此余弦相似度表示为cosineSIM=0.5cosθ+0.5


计算过程:
(1)使用TF-IDF算法,找出两篇文章的关键词;
(2)每篇文章各取出若干个关键词(为公平起见,一般取的词数相同),合并成一个集合,计算每篇文章对于这个集合中的词的 词频
(注1:为了避免文章长度的差异,可以使用相对词频;注2:这一步选出的不同词的数量决定了词频向量的长度);
(3)生成两篇文章各自的词频向量(注:所有文章对应的词频向量等长,相同位置的元素对应同一词);
(4)计算两个向量的余弦相似度,值越大就表示越相似。
Note that: tf-idf值只在第一步用到。
举例说明:
文章A:我喜欢看小说。
文章B:我不喜欢看电视,也不喜欢看电影。
第一步: 分词
    文章A:我/喜欢/看/小说。
    文章B:我/不/喜欢/看/电视,也/不/喜欢/看/电影。
第二步,列出所有的词。
     我,喜欢,看,小说,电视,电影,不,也。
第三步,计算每个文档中各个词的词频tf。
  文章A:我 1,喜欢 1,看 1,小说 1,电视 0,电影 0,不 0,也 0。
  文章B:我 1,喜欢 2,看 2,小说 0,电视 1,电影 1,不 2,也 1。
第四步,计算各个词的逆文档频率idf。
  我 log(2/2)=0,喜欢 log(2/2)=0,看 log(2/2)=0,小说 log(2/1)=1,电视 log(2/1)=1,电影 log(2/1)=1,不 log(2/1)=1,也 log(2/1)=1。
第五步:计算每个文档中各个词的tf-idf值
  文章A:我 0,喜欢 0,看 0,小说 1,电视 0,电影 0,不 0,也 0。
  文章B:我 0,喜欢 0,看 0,小说 0,电视 1,电影 1,不 1,也 1。
第六步:选择每篇文章的关键词(这里选tf-idf排名前3的词作为关键词(至于并列大小的随机选))
  文章A:我 0,喜欢 0,小说 1
  文章B:电视 1,电影 1,不 1
第七步:构建用于计算相似度的词频向量(根据上一步选出的词:我,喜欢,小说,电视,电影,不)
   文章A:[1 1 1 0 0 0]
   文章B: [1 2 0 1 1 2]
第八步:计算余弦相似度值
     cosθ=3/sqrt(33)= 0.5222329678670935
   cosineSIM(A,B)=0.5222329678670935*0.5+0.5=0.7611164839335467
 
references:

转载于:https://www.cnblogs.com/wxiaoli/p/6940702.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: TF-IDF结合余弦相似度是一种常用的文本相似度分析方法。TF-IDF是一种用于评估一个词语在文档中的重要程度的统计方法,它考虑了一个词语在文档中出现的频率以及在整个语料库中出现的频率。余弦相似度是一种用于计算两个向量之间的相似度的方法,它可以用于计算文本之间的相似度。将TF-IDF余弦相似度结合起来,可以计算出两个文本之间的相似度,从而实现文本相似度分析。 ### 回答2: TF-IDF(term frequency-inverse document frequency)是一种常用的文本特征提取方法,被广泛用于文本数据挖掘和信息检索中。它的基本思想是将每个词汇在文本中的重要性权值化,从而实现文本相似度分析。 在TF-IDF中,文本中某个词汇的重要性被定义为该词汇在所有文档中出现的频率(即词频)与该词汇在当前文档中出现的频率的乘积的对数。TF-IDF计算方式可以分为两个步骤:第一步是计算词频TF(term frequency),即某个词汇在当前文档中出现的次数除以该文档中所有词汇的总数。第二步是计算逆文档频率IDF(inverse document frequency),即所有文档数目除以包含该词汇的文档数的对数。最终的TF-IDF权值为TF和IDF的乘积。 余弦相似度是一种常用的衡量两个文本相似度的方法,其基本思想是将文本向量映射到一个n维空间中,然后计算两个文本向量在该空间中的夹角余弦值。余弦值越大,表示两个文本的相似度越高。 把TF-IDF结合余弦相似度来做相似度分析,具体步骤如下: 1. 对于每个文本,利用TF-IDF方法计算每个词汇的权值。 2. 把文本中所有词汇的权值按照其在字典中的顺序排列,构成一个向量。 3. 对于两个文本,分别计算它们的TF-IDF向量。 4. 计算两个向量之间的夹角余弦值,它的值越接近1,表示两个向量越相似。 5. 如果需要对多个文本进行相似度分析,可以计算每个文本与其他文本的相似度,然后根据相似度值进行排名。 TF-IDF结合余弦相似度相似度分析具有以下优点: 1. 通过对每个词汇的权值进行计算,可以准确地反映它在文本中的重要性。 2. 余弦相似度可以在一个高维向量空间中进行,可以避免维数灾难的问题。 3. 多个文本可以进行快速的比较和排序。 4. 可以应用于各种文本数据挖掘和信息检索任务,如推荐系统、文本分类和信息抽取等。 综上所述,TF-IDF结合余弦相似度是一种非常有效的文本相似度分析方法,可以广泛应用于各种文本数据挖掘和信息检索任务中。 ### 回答3: tf-idf结合余弦相似度是一种常用的文本相似度分析方法。它可以用于比较不同文本之间的相似性,以便确定它们是否具有相同的主题或意义。 tf-idf是一种文本特征提取技术,可以计算出某个词在文本中的重要程度。具体来说,tf-idf通过计算某个词在文本中的频率(tf)和在文集中的逆文档频率(idf)来确定其重要程度。逆文档频率表示某个词在文集中的普及程度,计算公式为:$idf(t)=log\frac{N}{df_t}$,其中N表示文集中文档的总数,$df_t$表示出现词t的文档数。 余弦相似度是一种衡量两个向量之间夹角的度量方法。在文本相似度分析中,可以将文本看作是向量,其中每个维度表示一个词的重要程度。通过计算两个文本向量的余弦相似度,可以得到它们之间的相似度。 将tf-idf余弦相似度结合起来,可以实现文本相似度分析。具体来说,可以先将每个文本转换成一个向量,根据tf-idf计算出每个向量中每个词的重要程度,并根据余弦相似度计算出两个向量之间的相似度。通过比较所有文本之间的相似度,可以找到相似度较高的文本,进而确定它们之间是否具有相同的主题或意义。 总之,tf-idf结合余弦相似度是一种有效的文本相似度分析方法,可以帮助我们快速准确地比较不同文本之间的相似性。在信息检索、推荐系统、自然语言处理等领域都有广泛的应用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值