句子相似度計(jì)算

思路一:先求句向量,然后求余弦相似度

1.求得兩個(gè)句子的句向量

  • 生成文本詞頻向量
    用詞頻來代替呀忧,句子辞友,當(dāng)然這樣做忽略近義詞信息栅哀、語(yǔ)義信息、大量文本下運(yùn)算等諸多問題称龙。如果兩段很長(zhǎng)的文本進(jìn)行比較(比如上萬字的文章)留拾,豈不是維度要擴(kuò)增很多倍?而且矩陣會(huì)非常稀疏鲫尊,就是很多取值都是0痴柔,計(jì)算開銷大且效率低

  • tfidf提取句向量
    對(duì)剛才的問題進(jìn)行特征降維,可依舊解決不了文本語(yǔ)義問題

  • 深度學(xué)習(xí)方法包含語(yǔ)義信息疫向,參考前面的文章:
    bert生成句向量

  • 傳統(tǒng)的方法生成句向量

用每個(gè)詞的詞向量相加咳蔚,然后求平均

def sent2vec(s):
    words = s
    M = []
    for w in words:
        try:
            M.append(w2v.wv[w])
        except:
            continue
    M = np.array(M)
    v = M.sum(axis=0)
    return v / np.sqrt((v ** 2).sum())

2.求兩個(gè)向量之間的余弦夾角

####計(jì)算余弦夾角
def cos_sim(vector_a, vector_b):
    """
    計(jì)算兩個(gè)向量之間的余弦相似度
    :param vector_a: 向量 a
    :param vector_b: 向量 b
    :return: sim
    """
    vector_a = np.mat(vector_a)
    vector_b = np.mat(vector_b)
    num = float(vector_a * vector_b.T)
    denom = np.linalg.norm(vector_a) * np.linalg.norm(vector_b)
    cos = num / denom
    sim = 0.5 + 0.5 * cos
    return sim

思路二:求得詞向量,計(jì)算詞移距離WMD

詞移距離

Word2Vec將詞映射為一個(gè)詞向量搔驼,在這個(gè)向量空間中谈火,語(yǔ)義相似的詞之間距離會(huì)比較小,而詞移距離(WMD)正是基于word2vec的這一特性開發(fā)出來的舌涨。
兩個(gè)文檔中的任意兩個(gè)詞所對(duì)應(yīng)的詞向量求歐氏距離然后再加權(quán)求和


image.png

image.png

這個(gè)加權(quán)矩陣T有些類似于HMM中的狀態(tài)轉(zhuǎn)移矩陣糯耍,只不過其中的概率轉(zhuǎn)換為權(quán)重了而已。
如圖囊嘉,我們假設(shè)’Obama’這個(gè)詞在文檔1中的的權(quán)重為0.5(可以簡(jiǎn)單地用詞頻或者TFIDF進(jìn)行計(jì)算)温技,那么由于’Obama’和’president’的相似度很高,那么我們可以給由’Obama’移動(dòng)到’president’很高的權(quán)重扭粱,這里假設(shè)為0.4舵鳞,文檔2中其他的詞由于和’Obama’的距離比較遠(yuǎn),所以會(huì)分到更小的權(quán)重琢蛤。這里的約束是蜓堕,由文檔1中的某個(gè)詞i移動(dòng)到文檔2中的各個(gè)詞的權(quán)重之和應(yīng)該與文檔1中的這個(gè)詞i的權(quán)重相等抛虏,即’Obama’要把自己的權(quán)重(0.5)分給文檔2中的各個(gè)詞。同樣俩滥,文檔2中的某個(gè)詞j所接受到由文檔1中的各個(gè)詞所流入的權(quán)重之和應(yīng)該等于詞j在文檔2中的權(quán)重嘉蕾。
參考資料:
Supervised Word Mover’s Distance (可監(jiān)督的詞移距離) – NIPS 2016論文精選#2
https://blog.csdn.net/qrlhl/article/details/78512598
https://blog.csdn.net/weixin_40547993/article/details/89475630

  • 計(jì)算wmd詞移距離代碼如下:
from gensim.models import KeyedVectors
import jieba
import time
import os

start = time.time()
model = KeyedVectors.load_word2vec_format('vectors.bin', binary=True, unicode_errors='ignore')
end = time.time()
print('Cell took %.2f seconds to run.' % (end - start))
s01= "今天是個(gè)好日子"
s02= "今天是晴天"
s03= "天氣多云轉(zhuǎn)陰"
sentence_01 = list(jieba.cut(s01))
sentence_02= list(jieba.cut(s02))
sentence_03= list(jieba.cut(s03))

結(jié)果:

Cell took 16.98 seconds to run.
Loading model cost 0.701 seconds.
distance = 24.3276
Prefix dict has been built succesfully.
distance = 55.7726
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市霜旧,隨后出現(xiàn)的幾起案子错忱,更是在濱河造成了極大的恐慌,老刑警劉巖挂据,帶你破解...
    沈念sama閱讀 219,110評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件抽碌,死亡現(xiàn)場(chǎng)離奇詭異烛恤,居然都是意外死亡荚孵,警方通過查閱死者的電腦和手機(jī)较剃,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,443評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來个绍,“玉大人勒葱,你說我怎么就攤上這事“褪粒” “怎么了凛虽?”我有些...
    開封第一講書人閱讀 165,474評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)广恢。 經(jīng)常有香客問我凯旋,道長(zhǎng),這世上最難降的妖魔是什么钉迷? 我笑而不...
    開封第一講書人閱讀 58,881評(píng)論 1 295
  • 正文 為了忘掉前任至非,我火速辦了婚禮,結(jié)果婚禮上糠聪,老公的妹妹穿的比我還像新娘荒椭。我一直安慰自己,他們只是感情好舰蟆,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,902評(píng)論 6 392
  • 文/花漫 我一把揭開白布趣惠。 她就那樣靜靜地躺著,像睡著了一般夭苗。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上隔缀,一...
    開封第一講書人閱讀 51,698評(píng)論 1 305
  • 那天题造,我揣著相機(jī)與錄音,去河邊找鬼猾瘸。 笑死界赔,一個(gè)胖子當(dāng)著我的面吹牛丢习,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播淮悼,決...
    沈念sama閱讀 40,418評(píng)論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼咐低,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了袜腥?” 一聲冷哼從身側(cè)響起见擦,我...
    開封第一講書人閱讀 39,332評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎羹令,沒想到半個(gè)月后鲤屡,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,796評(píng)論 1 316
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡福侈,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,968評(píng)論 3 337
  • 正文 我和宋清朗相戀三年酒来,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片肪凛。...
    茶點(diǎn)故事閱讀 40,110評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡堰汉,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出伟墙,到底是詐尸還是另有隱情翘鸭,我是刑警寧澤,帶...
    沈念sama閱讀 35,792評(píng)論 5 346
  • 正文 年R本政府宣布远荠,位于F島的核電站矮固,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏譬淳。R本人自食惡果不足惜档址,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,455評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望邻梆。 院中可真熱鬧守伸,春花似錦、人聲如沸浦妄。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,003評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)剂娄。三九已至蠢涝,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間阅懦,已是汗流浹背和二。 一陣腳步聲響...
    開封第一講書人閱讀 33,130評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留耳胎,地道東北人惯吕。 一個(gè)月前我還...
    沈念sama閱讀 48,348評(píng)論 3 373
  • 正文 我出身青樓惕它,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親废登。 傳聞我的和親對(duì)象是個(gè)殘疾皇子淹魄,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,047評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容