核心概念#
餘弦定理和新聞分類看似八竿子打不著,卻有著密切的聯繫。2002 年 Google 推出自動新聞服務,其中新聞的自動分類技術,很大程度上依靠的是餘弦定理。
新聞的特徵向量#
- 計算機無法「讀懂」新聞,但可以「算」新聞——將文字轉化為一組可計算的數字
- 對新聞中的所有實詞計算 TF-IDF 值,按照詞彙表的位置依次排列,組成一個向量
- 這個向量稱為新聞的特徵向量(Feature Vector),每個維度的大小代表該詞對新聞主題的貢獻
假設詞彙表有 64,000 個詞,每篇新聞就對應一個 64,000 維的向量。若某個詞未出現,對應值為零。同類新聞的用詞相似,因此它們的特徵向量「長得像」。
向量距離的度量#
- 不同新聞因長度不同,向量各維度的數值大小不同,單純比較數值沒有意義
- 關鍵在於向量的方向:方向一致說明用詞比例基本一致,即主題相近
- 用餘弦定理計算兩個向量的夾角來判斷相似度:
$$\cos\theta = \frac{x_1 y_1 + x_2 y_2 + \cdots + x_n y_n}{\sqrt{x_1^2 + x_2^2 + \cdots + x_n^2} \cdot \sqrt{y_1^2 + y_2^2 + \cdots + y_n^2}}$$
- 餘弦值在 0 到 1 之間:接近 1 表示兩篇新聞相似;接近 0 表示不相關
新聞分類算法#
- 方法一:已知新聞類別的特徵向量,對新文章計算與各類別的餘弦相似性,歸入最近的類別
- 方法二(自底向上聚合):計算所有新聞兩兩的餘弦相似性,將相似性大於閾值的合併成小類,再不斷合併成大類,直到類內相似性低於閾值為止
延伸閱讀:計算向量餘弦的技巧#
- 簡化分母:先存儲向量長度,計算餘弦時直接取用,可節省約 2/3 的計算量
- 利用稀疏性:一篇新聞的非零元素通常不超過 1,000 個,只需計算非零元素的內積,複雜度可降低約 100 倍
- 刪除虛詞:去掉「的」「是」「和」等虛詞,不僅提高計算速度,還能提高分類準確性(虛詞的權重其實是噪聲)
- 位置加權:標題和文章開頭結尾的詞比正文中間的詞更重要,對這些位置的詞加權可提高準確性
本章小結#
本章介紹的新聞分類方法準確性很好,適用於百萬數量級的文本集合。對於更大規模的文本處理,下一章將介紹基於矩陣運算的更快速方法。