余弦相似性 找出相似文章

2021-07-11 11:59:16 字數 1374 閱讀 6446

為了找出相似的文章,需要用到"余弦相似性"(cosine similiarity)。下面,我舉乙個例子來說明,什麼是"余弦相似性"。

為了簡單起見,我們先從句子著手。

句子a:我喜歡看電視,不喜歡看電影。

句子b:我不喜歡看電視,也不喜歡看電影。

請問怎樣才能計算上面兩句話的相似程度?

基本思路是:如果這兩句話的用詞越相似,它們的內容就應該越相似。因此,可以從詞頻入手,計算它們的相似程度。

第一步,分詞。

句子a:我/喜歡/看/電視,不/喜歡/看/電影。

句子b:我/不/喜歡/看/電視,也/不/喜歡/看/電影。

第二步,列出所有的詞。

我,喜歡,看,電視,電影,不,也。

第三步,計算詞頻。

句子a:我 1,喜歡 2,看 2,電視 1,電影 1,不 1,也 0。

句子b:我 1,喜歡 2,看 2,電視 1,電影 1,不 2,也 1。

第四步,寫出詞頻向量。

句子a:[1, 2, 2, 1, 1, 1, 0]

句子b:[1, 2, 2, 1, 1, 2, 1]

到這裡,問題就變成了如何計算這兩個向量的相似程度。

我們可以把它們想象成空間中的兩條線段,都是從原點([0, 0, ...])出發,指向不同的方向。兩條線段之間形成乙個夾角,如果夾角為0度,意味著方向相同、線段重合;如果夾角為90度,意味著形成直角,方向完全不相似;如果夾角為180度,意味著方向正好相反。因此,我們可以通過夾角的大小,來判斷向量的相似程度。夾角越小,就代表越相似。

以二維空間為例,上圖的a和b是兩個向量,我們要計算它們的夾角θ。餘弦定理告訴我們,可以用下面的公式求得:

假定a向量是[x1, y1],b向量是[x2, y2],那麼可以將餘弦定理改寫成下面的形式:

數學家已經證明,余弦的這種計算方法對n維向量也成立。假定a和b是兩個n維向量,a是 [a1, a2, ..., an] ,b是 [b1, b2, ..., bn] ,則a與b的夾角θ的余弦等於:

使用這個公式,我們就可以得到,句子a與句子b的夾角的余弦。

余弦值越接近1,就表明夾角越接近0度,也就是兩個向量越相似,這就叫"余弦相似性"。所以,上面的句子a和句子b是很相似的,事實上它們的夾角大約為20.3度。

由此,我們就得到了"找出相似文章"的一種演算法:

(3)生成兩篇文章各自的詞頻向量;

(4)計算兩個向量的余弦相似度,值越大就表示越相似。

"余弦相似度"是一種非常有用的演算法,只要是計算兩個向量的相似程度,都可以採用它。

**:

余弦相似性的應用 找出相似文章

為了找出相似的文章,需要用到 余弦相似性 cosine similiarity 下面,我舉乙個例子來說明,什麼是 余弦相似性 為了簡單起見,我們先從句子著手。table 句子a 我喜歡看電視,不喜歡看電影。句子b 我不喜歡看電視,也不喜歡看電影。table 請問怎樣才能計算上面兩句話的相似程度?基本...

TF IDF與余弦相似性的應用(二) 找出相似文章

為了找出相似的文章,需要用到 余弦相似性 cosine similiarity 下面,我舉乙個例子來說明,什麼是 余弦相似性 為了簡單起見,我們先從句子著手。句子a 我喜歡看電視,不喜歡看電影。句子b 我不喜歡看電視,也不喜歡看電影。請問怎樣才能計算上面兩句話的相似程度?基本思路是 如果這兩句話的用...

TF IDF與余弦相似性的應用(二) 找出相似文章

為了找出相似的文章,需要用到 余弦相似性 cosine similiarity 下面,我舉乙個例子來說明,什麼是 余弦相似性 為了簡單起見,我們先從句子著手。句子a 我喜歡看電視,不喜歡看電影。句子b 我不喜歡看電視,也不喜歡看電影。請問怎樣才能計算上面兩句話的相似程度?基本思路是 如果這兩句話的用...