餘弦定理和新聞的分類似乎是兩件八桿子打不著的事,但是它們確有緊密的聯繫。具體說,新聞的分類很大程度上依靠餘弦定理。

Google 的新聞是自動分類和整理的。所謂新聞的分類無非是要把相似的新聞放到一類中。計算機其實讀不懂新聞,它只能快速計算。這就要求我們設計一個算法來算出任意兩篇新聞的相似性。為了做到這一點,我們需要想辦法用一組數字來描述一篇新聞。

我們來看看怎樣找一組數字,或者說一個向量來描述一篇新聞。回憶一下我們在「如何度量網頁相關性」 一文中介紹的TF/IDF 的概念。對於一篇新聞中的所有實詞,我們可以計算出它們的單文本詞彙頻率/逆文本頻率值(TF/IDF)。不難想像,和新聞主題有關的那些實詞頻率高, TF/IDF 值很大。我們按照這些實詞在詞彙表的位置對它們的 TF/IDF 值排序。比如,詞彙表有六萬四千個詞,分別為

單詞編號 漢字詞
------------------
1 阿
2 啊
3 阿斗
4 阿姨
...
789 服裝
....
64000 做作

在一篇新聞中,這 64,000 個詞的 TF/IDF 值分別為

單詞編號 TF/IDF 值
==============
1 0
2 0.0034
3 0
4 0.00052
5 0
...
789 0.034
...
64000 0.075


如果單詞表中的某個次在新聞中沒有出現,對應的值為零,那麼這 64,000 個數,組成一個64,000維的向量。我們就用這個向量來代表這篇新聞,並成為新聞的特徵向量。如果兩篇新聞的特徵向量相近,則對應的新聞內容相似,它們應當歸在一類,反之亦然。

學過向量代數的人都知道,向量實際上是多維空間中有方向的線段。如果兩個向量的方向一致,即夾角接近零,那麼這兩個向量就相近。而要確定兩個向量方向是否一致,這就要用到餘弦定理計算向量的夾角了。

餘弦定理對我們每個人都不陌生,它描述了三角形中任何一個夾角和三個邊的關係,換句話說,給定三角形的三條邊,我們可以用餘弦定理求出三角形各個角的角度。假定三角形的三條邊為 a, b 和 c,對應的三個角為 A, B 和 C,那麼角 A 的餘弦 --



如果我們將三角形的兩邊 b 和 c 看成是兩個向量,那麼上述公式等價於



其中分母表示兩個向量 b 和 c 的長度,分子表示兩個向量的內積。舉一個具體的例子,假如新聞 X 和新聞 Y 對應向量分別是
x1,x2,...,x64000 和
y1,y2,...,y64000,
那麼它們夾角的餘弦等於,



當兩條新聞向量夾角的餘弦等於一時,這兩條新聞完全重複(用這個辦法可以刪除重複的網頁);當夾角的餘弦接近於一時,兩條新聞相似,從而可以歸成一類;夾角的餘弦越小,兩條新聞越不相關。



我們在中學學習餘弦定理時,恐怕很難想像它可以用來對新聞進行分類。在這裡,我們再一次看到數學工具的用途。