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