`

TF-IDF及文本相似性度量

阅读更多

TF-IDF(term frequency–inverse document frequency)是一种用于资讯检索与文本挖掘的常用加权技术。TF-IDF是一种统计方法,用以评估一字词对于一个文件集或一个语料库中的其中一份文件的重要程度。字词的重要性随着它在文件中出现的次数成正比增加,但同时会随着它在语料库中出现的频率成反比下降。TF-IDF加权的各种形式常被搜索引擎应用,作为文件与用户查询之间相关程度的度量或评级。除了TF-IDF以外,互联网上的搜寻引擎还会使用基 于连结分析的评级方法,以确定文件在搜寻结果中出现的顺序。

在一份给定的文件里,词频(term frequency,TF)指的是某一个给定的词语在该文件中出现的次数。这个数字通常会被正规化,以防止它偏向长的文件。(同一个词语在长文件里可能会 比短文件有更高的词频,而不管该词语重要与否。)对于在某一特定文件里的词语ti来说,它的重要性可表示为:

 mathrm{tf_{i,j}} = frac{n_{i,j}}{sum_k  n_{k,j}}

以上式子中ni,j是该词在文件dj中的出现次数,而分 母则是在文件dj中所有字词的出现次数 之和。

逆向文件频率(inverse document frequency,IDF)是一个词语普遍重要性的度量。某一特定词语的IDF,可以由总文件数目除以包含该词语之文件的数目,再将得到的商取对数得到:

 mathrm{idf_i} =  log frac{|D|}{|{d: d ni  t_{i}}|}

其中

  • |D|:语料库中的文件总数
  •  |{d:dni t_{i}}| : 包含词语ti的文件数目(即 n_{i} neq 0的 文件数目)

然后

 mathrm{tf{}idf_{i,j}} = mathrm{tf_{i,j}}  cdot  mathrm{idf_{i}}

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

=================文本相似性度量=======================

方法一:向量空间模型

在向量空间模型中,文本泛指各种机器可读的记录。用D(Document)表示,特征项(Term,用t表示)是指出现在文档D中且能够代表该文档内容的 基本语言单位,主要是由词或者短语构成,文本可以用特征项集表示为D(T1,T2,…,Tn),其中Tk是特征项,1<=k<=N。例如一篇 文档中有a、b、c、d四个特征项,那么这篇文档就可以表示为D(a,b,c,d)。对含有n个特征项的文本而言,通常会给每个特征项赋予一定的权重表示 其重要程度。即D=D(T1,W1;T2,W2;…,Tn,Wn),简记为D=D(W1,W2,…,Wn),我们把它叫做文本D的向量表示。其中Wk是 Tk的权重,1<=k<=N。在上面那个例子中,假设a、b、c、d的权重分别为30,20,20,10,那么该文本的向量表示为 D(30,20,20,10)。在向量空间模型中,两个文本D1和D2之间的内容相关度Sim(D1,D2)常用向量之间夹角的余弦值表示,公式为:

其 中,W1k、W2k分别表示文本D1和D2第K个特征项的权值,1<=k<=N。
在自动归类中,我们可以利用类似的方法来计算待归类 文档和某类目的相关度。例如文本D1的特征项为a,b,c,d,权值分别为30,20,20,10,类目C1的特征项为a,c,d,e,权值分别为 40,30,20,10,则D1的向量表示为D1(30,20,20,10,0),C1的向量表示为C1(40,0,30,20,10),则根据上式计算 出来的文本D1与类目C1相关度是0.86

方法二:字符串相似度

对于象字符串计算相似度的算法有很多,常用的有最大公共字串,编辑距离等。

编辑距离就是用来计算从原串(s)转换到目标串(t)所需要的最少的插入,删除和替换的数目,在NLP中应用比较广泛,如一些评测方法中就用到了 (wer,mWer等),同时也常用来计算你对原文本所作的改动数。编辑距离的算法是首先由俄国科学家Levenshtein提出的,故又叫 Levenshtein Distance。

 

###############################################################################

百度百科:

简介

TF-IDF(term frequency–inverse document frequency)是一种用于资讯检索与资讯探勘的常用加权技术。TF-IDF是一种统计方法,用以评估一字词对于一个文件集或一个语料库中的其中一份文件的重要程度。字词的重要性随着它在文件中出现的次数成正比增加,但同时会随着它在语料库中出现的频率成反比下降。TF-IDF加权的各种形式常被搜寻引擎应用,作为文件与用户查询之间相关程度的度量或评级。除了TF-IDF以外,因特网上的搜寻引擎还会使用基于连结分析的评级方法,以确定文件在搜寻结果中出现的顺序。
TFIDF的主要思想是:如果某个词或短语在一篇文章中出现的频率TF高,并且在其他文章中很少出现,则认为此词或者短语具有很好的类别区分能力,适合用来分类。TFIDF实际上是:TF * IDF,TF词频(Term Frequency),IDF反文档频率(Inverse Document Frequency)。TF表示词条在文档d中出现的频率。IDF的主要思想是:如果包含词条t的文档越少,也就是n越小,IDF越大,则说明词条t具有很好的类别区分能力。如果某一类文档C中包含词条t的文档数为m,而其它类包含t的文档总数为k,显然所有包含t的文档数n=m+k,当m大的时候,n也大,按照IDF公式得到的IDF的值会小,就说明该词条t类别区分能力不强。但是实际上,如果一个词条在一个类的文档中频繁出现,则说明该词条能够很好代表这个类的文本的特征,这样的词条应该给它们赋予较高的权重,并选来作为该类文本的特征词以区别与其它类文档。这就是IDF的不足之处.

编辑本段原理

在一份给定的文件里,词频 (term frequency, TF) 指的是某一个给定的词语在该文件中出现的次数。这个数字通常会被归一化,以防止它偏向长的文件。(同一个词语在长文件里可能会比短文件有更高的词频,而不管该词语重要与否。)
逆向文件频率 (inverse document frequency, IDF) 是一个词语普遍重要性的度量。某一特定词语的IDF,可以由总文件数目除以包含该词语之文件的数目,再将得到的商取对数得到。
某一特定文件内的高词语频率,以及该词语在整个文件集合中的低文件频率,可以产生出高权重的TF-IDF。因此,TF-IDF倾向于保留文档中较为特别的词语,过滤常用词。

编辑本段典型用例

例1.有很多不同的数学公式可以用来计算TF-IDF。这边的例子以上述的数学公式来计算。词频 (TF) 是一词语出现的次数除以该文件的总词语数。假如一篇文件的总词语数是100个,而词语“母牛”出现了3次,那么“母牛”一词在该文件中的词频就是3/100=0.03。一个计算文件频率 (DF) 的方法是测定有多少份文件出现过“母牛”一词,然后除以文件集里包含的文件总数。所以,如果“母牛”一词在1,000份文件出现过,而文件总数是10,000,000份的话,其逆向文件频率就是 lg(10,000,000 / 1,000)=4。最后的TF-IDF的分数为0.03 * 4=0.12。
例2.在某个一共有一千词的网页中“原子能”、“的”和“应用”分别出现了 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,上述相关性计算个公式就由词频的简单求和变成了加权求和,即 TF1*IDF1 + TF2*IDF2 +... + TFN*IDFN。在上面的例子中,该网页和“原子能的应用”的相关性为 0.0161,其中“原子能”贡献了 0.0126,而“应用”只贡献了0.0035。这个比例和我们的直觉比较一致了。

向量空间模型

 
向量空间模型(VSM:Vector Space Model)由Salton等人于20世纪70年代提出,并成功地应用于著名的SMART文本检索系统。
VSM概念简单,把对文本内容的处理简化为向量空间中的向量运算,并且它以空间上的相似度表达语义的相似度,直观易懂。当文档被表示为文档空间的向量,就可以通过计算向量之间的相似性来度量文档间的相似性。文本处理中最常用的相似性度量方式是余弦距离。
M个无序特征项ti,词根/词/短语/其他每个文档dj可以用特征项向量来表示(a1j,a2j,…,aMj)权重计算,N个训练文档AM*N= (aij) 文档相似度比较1)Cosine计算,余弦计算的好处是,正好是一个介于0到1的数,如果向量一致就是1,如果正交就是0,符合相似度百分比的特性,余弦的计算方法为,向量内积/各个向量的模的乘积.2)内积计算,直接计算内积,计算强度低,但是误差大.
向量空间模型 (或 词组向量模型) 是一个应用于信息过滤,信息撷取,索引 以及评估相关性的代数模型。SMART是首个使用这个模型的信息检索系统。
文件(语料)被视为索引词(关键词)形成的多次元向量空间, 索引词的集合通常为文件中至少出现过一次的词组。
搜寻时,输入的检索词也被转换成类似于文件的向量,这个模型假设,文件和搜寻词的相关程度,可以经由比较每个文件(向量)和检索词(向量)的夹角偏差程度而得知。
实际上,计算夹角向量之间的余弦比直接计算夹角容易:
余弦为零表示检索词向量垂直于文件向量,即没有符合,也就是说该文件不含此检索词。
通过上述的向量空间模型,文本数据就转换成了计算机可以处理的结构化数据,两个文档之间的相似性问题转变成了两个向量之间的相似性问题。
分享到:
评论

相关推荐

    基于Python实现TF-IDF矩阵表示(人工智能实验)【100011921】

    将词频和逆文档频率相乘得到最终的TF-IDF值,作为词的重要性度量。 **伪代码** 1. 初始化一个空的TF-IDF矩阵,行对应文档,列对应词汇。 2. 对每个文档: a. 计算每个词的TF值。 b. 计算每个词的IDF值。 c. 将...

    Python实现新闻文本类情感分析(采用TF-IDF,余弦距离,情感依存等算法)

    首先,TF-IDF(Term Frequency-Inverse Document Frequency)是一种统计方法,用于衡量一个词在文档集中的重要性。在新闻情感分析中,TF-IDF帮助我们找出那些在特定新闻中频繁出现,但在整个新闻集合中不太常见的...

    [文本语义相似] 基于ngram-tf-idf的余弦距离

    余弦相似度是通过计算两个非零向量的夹角余弦值来度量它们的相似性。在numpy中,可以使用`cosine_similarity`函数计算余弦相似度。 ```python from sklearn.metrics.pairwise import cosine_similarity # 计算余弦...

    Cosine-similarity-Tf-Idf-:这是一个简单的Java代码,它接收一组文本文档并计算它们的余弦相似度

    余弦相似度是一种在信息检索和自然语言处理中广泛使用的度量方法,用于评估两个非零向量之间的角度,从而衡量它们之间的相似性。在文本分析中,这种度量常被用来比较两个文档的相似程度。Tf-Idf(Term Frequency-...

    kmeans算法文本聚类java源码(分词,TF/IDF等)

    《基于Java的KMeans算法实现文本聚类及TF-IDF权重计算详解》 在数据挖掘领域,文本聚类是一种常用的技术,它通过无监督学习方法将大量文本数据自动分类为不同的组,使得相同主题的文本聚集在一起。在这个过程中,...

    TF详细介绍.docx

    这个概念在处理大量文本数据时尤其有用,比如搜索引擎排名或者文档相似性分析。 TF(Term Frequency)指的是一个词在文档中出现的频率,它反映了这个词在文档内的相对重要性。如果一个词在文档中频繁出现,那么它的...

    python相似性度量完整代码以及结果图片

    学习和理解这些相似性度量方法,不仅可以提升你在数据分析和机器学习项目中的技能,还可以帮助你更好地解决实际问题,如推荐系统中的物品推荐、文本分类中的文档相似性判断等。通过实际操作和可视化结果,你将能够更...

    单词和文本相似性度量_Roff_代码_相关文件_下载

    在IT领域,尤其是在自然语言处理(NLP)中,计算单词和文本之间的相似性是至关重要的任务。"Roff"通常是指"Runoff",一种早期的文本格式化语言,但在这种上下文中,可能指的是某种特定的代码或工具集与Roff有关。...

    弦相似算法计算 短文本相似度

    它通过比较两文本集合交集的大小除以并集的大小来度量相似性。在处理短文本时,Jaccard相似度可以快速地给出两段文本是否有共同的关键词。 4. TF-IDF(词频-逆文档频率): 文件中提到的"nlp-tf-idf-main"可能是指...

    Content-based-Recommender-System:它是基于内容的推荐系统,对数据集中的N个最相似项目使用tf-idf和余弦相似度

    在本项目"Content-based-Recommendation-System"中,开发者使用了TF-IDF(词频-逆文档频率)和余弦相似度这两种关键的文本分析方法来实现这一目标。 首先,让我们深入了解TF-IDF。TF-IDF是一种统计方法,常用于信息...

    tfidf.rar_ tfidf matlab_tfidf_tfidf python_tfidf matlab_tfidf排

    6. **相似度计算**:使用余弦相似度或其他相似性度量方法,比较文档之间的TF-IDF向量,找出它们之间的相似性。MATLAB的`cosineSimilarity`函数可以实现这一点。 在Python中,`sklearn`库提供了`TfidfVectorizer`类...

    基于Simhash算法的海量文本相似性检测方法研究.pdf

    Simhash算法通过计算指纹值,并使用海明距离(Hamming Distance)作为相似性度量。海明距离是指两个等长字符串之间对应位置上不同字符的个数,计算简单且能够有效地反映字符串之间的差异程度。通过海明距离来检测...

    易语言源码易语言向量法计算文本相似度源码.rar

    TF是词频,IDF是逆文档频率,两者相乘得到的TF-IDF值能够反映一个词在整个语料库中的重要性。 4. **向量化**:将词频矩阵或TF-IDF矩阵转换为向量形式,常用的方法有词袋模型(BoW)或TF-IDF向量。 5. **计算相似度...

    基于向量空间模型的文本分类特征权重算法研究_苏力华

    实验结果表明,结合类间分布信息的特征权重算法相比于传统的 TF-IDF 算法,能够在文本分类任务中取得更高的精度,这意味着改进后的算法更能准确地捕捉到文本的类别特性,从而更有效地进行文本分类。 总的来说,向量...

    关于文本相似性算法的解读

    文本相似性算法是大数据分析和信息检索领域的重要组成部分,它帮助我们从海量信息中找到相关性和重复的内容。本文主要探讨了三种常见的文本相似性算法:基于空间向量的余弦算法、编辑距离算法(Levenshtein 距离)...

    AI人工智能课程 NLP技术-自然语言处理入门资料 NLP文本相似度 共27页.pdf

    总的来说,自然语言处理中的文本相似度计算是通过多种手段,如余弦相似度、TF-IDF和LCS等,将自然语言文本转化为可度量的数值,从而判断文本之间的相似程度。这些技术在AI领域有着广泛的应用,为智能化的信息处理...

    改进的卷积神经网络源代码相似性度量方法.pdf

    【标题】:改进的卷积神经网络源代码相似性度量方法 【描述】:本文介绍了一种结合统计信息的卷积神经网络(SICE-CNN)方法,用于提升源代码相似性检测的准确性和效率,尤其关注代码的语义特征。 【标签】:神经...

Global site tag (gtag.js) - Google Analytics