首頁>技術>

本文講述短短文字相似度計算是基於:word2vec基礎之上。

word2vec是谷歌開源的基於兩層神經網路。採用skip-gram模型訓練,遍歷訓練文件內容,相鄰詞之間的視窗滑動。每個詞對映到一個向量,可以用來表示詞於詞之間到距離關係。

基礎準備:

1、專有詞庫建立:建立專有的個性化詞庫(依據業務的特徵針對性梳理,詞、短句、短語都可以作為最小單位的詞)。

2、切詞:不建議使用第三方切詞工具,可以開發一個切詞工具,最大化匹配切詞(可以baidu一下,後續我也會整理開源出來)。

3、word2vec的java版本,模型訓練建議採用線上資料訓練(生產環境),理由:資料量比較大,如果採用文字匯出的形式,費時費力,而且,失敗的機率很大(個人踩坑體驗)。

相似度演算法設計

由於詞向量可以計算詞與詞之間的距離。但是,現階段的需求是需要計算文字相似度。

計算過程:

句子A 詞01、詞02、詞03

句子B 詞10、詞11、詞12

1、解決問題

1、詞向量之間的距離計算方式:

a、向量乘積計算方式(未找到資料依據,但是,經過測試結果較準確)。

b、歐式距離計算方式(經典演算法)。

c、餘玄夾角計算方式(可以做嘗試,對結果做分析)。

2、詞向量權重設計標準

詞向量到權重能夠明顯改進相似度演算法的準確性。

例如:美國爆發金融危機(權重:0.9)、樓市崩盤(權重:0.8)、股災(權重0.75)、普通名詞(權重0.6),權重越大越將加強句子的相似度。

3、文字之間的相似度計算方式

方法一:首先,計算每個句子的句子向量,過程為:每個句子切詞後,將句子對應每個詞的第i列向量列數值做累加,形成的向量作為句子的句子向量。其次,就是句子向量之間的餘玄計算。

方法二:首先,對句子A做切詞,形成集合1,對句子B做切詞,形成集合2。

從集合1獲取第一個詞X1,計算詞X1到集合2裡面的最近的詞的距離。並做距離*詞權重累加為SUM1。

權重1累加= 集合1每個詞的權重的累加WEIGHT_SUM1。

從集合2獲取第一個詞Y1,計算詞Y到集合1裡面的最近的詞的距離。並做距離*詞權重累加為SUM2.

權重2累加=集合2每個詞的權重的累加WEIGHT_SUM2。

距離= (SUM1 + SUM2) / (WEIGHT_SUM1 + WEIGHT_SUM2);

9
最新評論
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • 「HarmonyOS Java UI」 堆疊佈局