「詞向量 (Word Embedding)」或「詞嵌入」是自然語言處理 (NLP) 中一種非常核心且強大的技術,它將詞語表示成低維、連續的向量空間中的點。與傳統的離散表示方法(如詞袋模型中的 one-hot encoding)不同,詞向量能夠捕捉詞語之間的語義關係和上下文信息。
你可以將詞向量想像成在一個高維空間中為每個詞語找到一個獨特的位置。位置相近的詞語在語義上也往往更相關。
為什麼需要詞向量?- 克服高維度和稀疏性: One-hot encoding 將每個詞語表示成一個長度等於詞彙表大小的向量,其中只有一個元素是 1,其餘都是 0。當詞彙表很大時,這種表示方法會導致向量非常高維且稀疏,難以有效地被模型處理。詞向量將詞語嵌入到低維空間(通常是幾百維),顯著降低了數據的複雜性。
- 捕捉語義關係: 詞向量的關鍵優勢在於它能夠編碼詞語之間的語義關係。例如,在一個好的詞向量空間中,“國王”的向量可能會與“男人”和“女王”的向量在某些方向上相似,“蘋果”的向量會與“香蕉”的向量相近,但與“桌子”的向量相距較遠。
- 提高模型性能: 通過使用詞向量作為模型的輸入,可以讓模型更好地理解詞語的含義和它們之間的關係,從而提高在各種 NLP 任務(如文本分類、情感分析、機器翻譯等)上的性能。
如何生成詞向量?
詞向量通常通過在大型文本語料庫上訓練無監督或半監督的機器學習模型來獲得。一些常見的方法包括:
- Word2Vec (2013年): 由 Google 開發,包含兩種主要的模型架構:
- CBOW (Continuous Bag-of-Words): 通過周圍詞語來預測目標詞語。 Skip-gram: 通過目標詞語來預測周圍詞語。 Word2Vec 通過訓練一個淺層的神經網路來學習詞向量。
- GloVe (Global Vectors for Word Representation) (2014年): 由史丹佛大學開發,GloVe 基於語料庫中詞語的共現矩陣進行訓練,旨在捕獲詞語的全局統計信息。
- FastText (2016年): 由 Facebook 開發,FastText 在 Word2Vec 的基礎上進行了擴展,它將每個詞語視為字符 n-gram 的組合。這使得 FastText 能夠更好地處理未登錄詞 (out-of-vocabulary words),並且在詞形相似的詞語之間共享表示。
- 基於 Transformer 的模型 (2017年至今): 像 BERT、GPT、RoBERTa 等現代 Transformer 模型也能夠生成詞向量,但與 Word2Vec 和 GloVe 生成的靜態詞向量不同,Transformer 模型生成的詞向量是上下文相關的 (contextualized)。這意味著同一個詞語在不同的句子中會有不同的向量表示,更能準確地反映其在特定語境下的含義。
詞向量的特性:
一個好的詞向量空間通常會呈現出一些有趣的特性,例如:
- 語義相似性: 語義上相似的詞語在向量空間中的距離較近(例如,可以使用餘弦相似度來衡量)。
- 類比關係: 詞向量可以捕捉到詞語之間的類比關係。例如,在一個訓練好的詞向量空間中,可能會發現 "king" - "man" + "woman" ≈ "queen"。
詞向量的應用:
詞向量被廣泛應用於各種 NLP 任務中,作為模型的輸入或特徵:
- 文本分類: 將文本表示為其包含詞語的詞向量的聚合(例如,取平均值)。
- 情感分析: 基於文本中詞語的情感詞典(通常由詞向量學習得到)判斷文本的情感傾向。
- 機器翻譯: 將源語言的詞語映射到目標語言的詞向量空間。
- 問答系統: 理解問題和答案中的詞語含義。
- 信息檢索: 計算查詢詞語與文檔詞語之間的相似度。
- 命名實體識別: 利用上下文詞語的詞向量來識別實體。
總之,詞向量或詞嵌入是一種強大且有效的文本表示方法,它能夠將詞語映射到低維連續的向量空間,捕捉詞語之間的語義關係,並顯著提升 NLP 模型的性能。隨著技術的發展,上下文相關的詞向量(例如來自 Transformer 模型)在許多任務中表現出了更優越的性能。