文本相似在問答系統中有很重要的應用,如基於知識的問答系統(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%來進行人工標註