![]() Google (谷歌)中國的博客網志,走近我們的產品、技術和文化 數學之美 系列 12 - 余弦定理和新聞的分類余弦定理和新聞的分類似乎是兩件八桿子打不著的事,但是它們確有緊密的聯系。具體說,新聞的分類很大程度上依靠余弦定理。 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, 那么它們夾角的余弦等于, 當兩條新聞向量夾角的余弦等于一時,這兩條新聞完全重復(用這個辦法可以刪除重復的網頁);當夾角的余弦接近于一時,兩條新聞相似,從而可以歸成一類;夾角的余弦越小,兩條新聞越不相關。 ![]() 我們在中學學習余弦定理時,恐怕很難想象它可以用來對新聞進行分類。在這里,我們再一次看到數學工具的用途。 |