[文本語義相似] 基於Word2Vec的wmdistance (Word Mover Distance)

 

文本相似在問答系統中有很重要的應用,如基於知識的問答系統(Knowledge-based QA),基於文檔的問答系統(Documen-based QA),以及基於FAQ的問答系統(Community-QA)等。像 對於問題的內容,需要進行相似度匹配,從而選擇出與問題最接近,同時最合理的答案。本節介紹 基於Word2Vec的wmdistance計算相似度。 

需要知識:

(1)Word2Vec

(2)Word Mover Distance (WMD)

 

基於gensim實現:

import time
import jieba
import gensim
import threading
import numpy as np


w2v_model_file = 'w2v_model_file'
w2v_model = gensim.models.Word2Vec.load(w2v_model_file)

w2v_model.init_sims(replace=True) # normalizes vectors
distance = w2v_model.wmdistance("提前結清", "我需要提前結清")  
print ('distance>>>>', distance) 

測試結果:

"你有什麼事你說。", "我是他家人/朋友,你有什麼事可以給我說?"                    0.6694891459671026
"呃,我想提前結清我名下那個款項。", "我需要提前結清"                            0.6992085239002946
"你們是你們哪,你們哪裏的。", "你們是哪裏,你們是誰?"                          0.27438064142232443   
"提前結清。", "我需要提前結清"                                              0.5150805852253076

 

其他:

(1)在文本相似標註上的應用:# 粗排:使用word mover distance(WMD)來進行初始的排查,最終得分0-0.15的太相似了,0.45-1分的基本不相關,所以從0.15-0.45分鐘選擇了10%來進行人工標註

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章