曾云澤
(中國民航大學,天津 300300)
在信息爆炸時代,人們迫切希望從海量信息中獲取與自身需要和興趣吻合度高的內容。為了滿足此需求,出現了多種應用,如搜索引擎、自動問答系統、文檔分類與聚類、文獻查重、文獻精準推送等,而這些應用場景的關鍵技術之一就是文本相似度計算技術[1]。例如給定兩個句子:“今天天氣很糟糕,已經開始下雨了。”、“今天風雨交加、電閃雷鳴。”,盡管兩個句子描述的都是今天天氣很糟糕,但是使用不同的句子相似度計算算法得出的結論會大相徑庭。下文將從傳統方法開始,詳細描述句子相似度計算技術的發展狀況。
基于詞匹配的方法是自然語言處理任務中最經典、最直觀的方法。給定兩個存在多個用詞相同的文本,通過相同詞語的出現頻率來度量該兩個文本間的相似度。但是這種方法有個致命的缺點,如果兩個文本存在多個相似詞語但不存在多個相同詞語,則該方法計算的結果為這兩個文本不相似。這種方法不能正確理解到詞語的語義信息,例如“高興”進而“開心”語義上是相同的,但是用詞不同。因此為了解決這個問題,提出了基于分布式詞向量方法。
分布式詞向量的概念最早由Hinton提出,首先將每個詞映射為一個固定長度的向量,每個詞向量可以視為高緯詞向量空間的一個點,則詞匯間的相似性可以由向量間的距離進行度量[2]。通過word2vec中的CBOW和Skip-Gram模型[3],語義相似但用詞不同的詞語對應的詞向量距離非常相近,反之語義不相似的詞向量距離較遠。常用的向量距離度量方式有余弦相似度、歐幾里得距離、馬氏距離等。但是基于詞向量的方法也有其不足,例如“我購買不了這項服務”和“我要開通服務”,由于這兩個句子存在相似的詞語“購買”-“開通”,且存在相同用詞“服務”,因此基于詞向量的方法判斷這兩個句子相似度極高。但是這兩個句子明顯語義不同,造成這種荒謬的結果的原因在于該方法沒有結合兩個句子間的上下文信息,不同綜合考慮兩個句子的語言環境信息,為了解決這個問題,提出了神經網絡的方法。
現在主流的神經網絡結構主要有卷積神經網絡CNN、循環神經網絡RNN[4]。基于神經網絡的方法最大的優點就是可以在考慮兩個文本之間的上下文信息,充分考慮在不同語言環境下,相同或相似用詞實際的語義信息[4]。例如上文提及的兩個句子:“今天天氣很糟糕,已經開始下雨了”、“今天風雨交加、電閃雷鳴”,使用基于神經網絡的方法,可以很容易地得到這兩個句子語義相同的結果。而且基于神經網絡的方法拓展性、泛化能力可以簡單地通過增加隱藏層的數量得到逐步提高,因此基于神經網絡的方法是現在文本相似度計算的主流研究方向。