觸屏版
全國服務(wù)熱線:0571-87205688
登錄
注冊
客戶中心
關(guān)注云客
在上一篇文章中已經(jīng)詳細(xì)的介紹了利用TF-IDF算法。接下來,我們再來研究一下另一個相關(guān)的問題。這個問題也是我們做SEO的最關(guān)心的,有些時候,我們除了要明白如何找到并提取文章關(guān)鍵詞,我們還需要找到與原文章相似的其他文章。比如,我們平時在搜索引擎的新聞欄目下搜索某條新聞的時候,在主新聞下方,還提供了多條相似的新聞。
為了找出相似的文章,我們就需要用到另外一個公式原理了,那就是 余弦相似性(cosine similiarity) 。
一、什么是 余弦相似性 ?
余弦相似性是指通過測量兩個向量內(nèi)積空間的夾角的余弦值來度量它們之間的相似性。0度角的余弦值是1,而其他任何角度的余弦值都不大于1;并且其最小值是-1。從而兩個向量之間的角度的余弦值確定兩個向量是否大致指向相同的方向。兩個向量有相同的指向時,余弦相似度的值為1;兩個向量夾角為90 時,余弦相似度的值為0;兩個向量指向完全相反的方向時,余弦相似度的值為-1。在比較過程中,向量的規(guī)模大小不予考慮,僅僅考慮到向量的指向方向。余弦相似度通常用于兩個向量的夾角小于90 之內(nèi),因此余弦相似度的值為0到1之間。
值得注意的是余弦相似度可以用在任何維度的向量比較中,它尤其在高維正空間中的利用尤為頻繁。例如在信息檢索中,每個詞條擁有不同的度,一個文檔是由一個由有權(quán)值的特征向量表示的,權(quán)值的計算取決于詞條在該文檔中出現(xiàn)的頻率。余弦相似度因此可以給出兩篇文檔其主題方面的相似度。
二、搜索引擎是如何判定相似文章的?
下面,還是以舉例子的方式來說明如何才能找出相似文章?
為了簡單起見,我們先從句子著手。
句子A:我喜歡看電視,不喜歡看電影。
句子B:我不喜歡看電視,也不喜歡看電影。
那么我們怎樣才能計算出上面兩句話的相似程度呢?
建議的基本思路是:如果這兩句話的用詞越相似,它們的內(nèi)容就應(yīng)該越相似。因此,可以從詞頻入手,計算它們的相似程度。
第1步:分詞
句子A:我/喜歡/看/電視,不/喜歡/看/電影。
句子B:我/不/喜歡/看/電視,也/不/喜歡/看/電影。
第2步:列出所有的詞
我,喜歡,看,電視,電影,不,也。
第3步:計算詞頻
句子A:我 1,喜歡 2,看 2,電視 1,電影 1,不 1,也 0。
句子B:我 1,喜歡 2,看 2,電視 1,電影 1,不 2,也 1。
第4步:寫出詞頻向量
句子A:[1, 2, 2, 1, 1, 1, 0]
句子B:[1, 2, 2, 1, 1, 2, 1]
到這里,問題就變成了如何計算這兩個向量的相似程度。
我們可以把它們想象成空間中的兩條線段,都是從原點(diǎn)([0, 0, ...])出發(fā),指向不同的方向。兩條線段之間形成一個夾角,如果夾角為0度,意味著方向相同、線段重合;如果夾角為90度,意味著形成直角,方向完全不相似;如果夾角為180度,意味著方向正好相反。因此,我們可以通過夾角的大小,來判斷向量的相似程度。夾角越小,就代表越相似,如下圖所示:
以二維空間為例,上圖的a和b是兩個向量,我們要計算它們的夾角 。余弦定理告訴我們,可以用下面的公式求得:
假定a向量是[x1, y1],b向量是[x2, y2],那么覺得就可以將余弦定理改寫成下面的形式:
數(shù)學(xué)家也已經(jīng)證明,余弦的這種計算方法對n維向量也成立。假定A和B是兩個n維向量,A是 [A1, A2, ..., An] ,B是 [B1, B2, ..., Bn] ,則A與B的夾角 的余弦等于:
使用這個公式,我們就可以得到,句子A與句子B的夾角的余弦,如下圖所示:
余弦值越接近1,就表明夾角越接近0度,也就是兩個向量越相似,這就叫 余弦相似性 。所以,上面的句子A和句子B是很相似的,事實(shí)上它們的夾角大約為20.3度。
由此,我們就得到了 找出相似文章 的一種算法:
(1)使用TF-IDF算法,找出兩篇文章的關(guān)鍵詞;
(2)每篇文章各取出若干個關(guān)鍵詞(比如20個),合并成一個集合,計算每篇文章對于這個集合中的詞的詞頻(為了避免文章長度的差異,可以使用相對詞頻);
(3)生成兩篇文章各自的詞頻向量;
(4)計算兩個向量的余弦相似度,值越大就表示越相似。
覺得 余弦相似度 也可能只是搜索引擎在文章相識度其中的一方面的算法,但的確也是一種非常有用的算法,而且就是在其他領(lǐng)域的,只要是計算兩個向量的相似程度,都可以利用這個原理。
評論(0人參與,0條評論)
發(fā)布評論
最新評論