日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

simhash笔记

發布時間:2024/3/26 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 simhash笔记 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
  • simhash也有其局限性,在處理小于500字的短文本時,simhash的表現并不是很好
  • 舉例
  • from simhash import Simhash def simhash_similarity(text_a, text_b):"""計算兩個文本的simhash相似度"""a_simhash = Simhash(text_a)b_simhash = Simhash(text_b)max_hashbit = max(len(bin(a_simhash.value)), len(bin(b_simhash.value)))# 漢明距離distince = a_simhash.distance(b_simhash)#print(distince)similar = 1 - distince / max_hashbitreturn similar
  • 源代碼
  • def build_simhash_dict(hash_list):"""基于simhash構建倒排索引,將hash_list中的每個元素放入這個倒排索引中"""#hash_list = list(df['simhash'])hash_dict = {}SPLITS_NUM = 8for i,h in enumerate(hash_list):#將哈希數值轉化成01序列,并填充到64維hash_string = str(bin(h.value).replace('0b', '')).zfill(64)# 將64維的simhash值分成8份意味著,# 如果在查重時,沒有召回結果,說明海明距離肯定>=8。# 如果有召回結果,不一定說明海明距離<8,具體海明距離是多少,還需要根據召回結果計算;## 同理,如果分成4份,這意味著在查重時,如果沒有召回結果,說明海明距離肯定>=4。# 如果有召回結果,不一定說明海明距離<4,具體海明距離是多少,還需要根據召回結果計算。for j in range(0, SPLITS_NUM):#將64維的數據分成8份,作為hash_dict的鍵key = hash_string[j*SPLITS_NUM : (j+1)*SPLITS_NUM]#查找Key是否在字典中,如果不在,則把key添加到hash_dict中,然后把hash_list中的元素添加進去。if key not in hash_dict.keys():hash_dict[key] = []hash_dict[key].append(hash_list[i])#查找Key是否在字典中,如果在,直接把hash_list中的元素添加進去。else:hash_dict[key].append(hash_list[i])return hash_dictdef compute_shortest_distance(h, hash_dict):"""如果hash_dict存在distance < 8,則從中找出舉例海明距離最短的值distance,并返回該值;否則,返回默認最小值"""hash_string = str(bin(h.value).replace('0b', '')).zfill(64)reverse_list = []for j in range(0, SPLITS_NUM):key = hash_string[j*SPLITS_NUM : (j+1)*SPLITS_NUM]if key in hash_dict:reverse_list.extend(hash_dict[key])min_value = 1000for i in reverse_list:distance = h.distance(i)if distance < min_value:min_value = distancereturn min_value

    參考文獻

    • https://geek.digiasset.org/pages/affiliate/text-simhash-good-re-process-deep_21Apr03114628313403/
    • https://zhuanlan.zhihu.com/p/71488127
    • https://cloud.tencent.com/developer/article/1379302 (這篇文章講得比較好,在實際落地時怎么操作比較清楚)
    • https://blog.csdn.net/ineedstudytosurvive/article/details/113986137 (源代碼不錯)

    總結

    以上是生活随笔為你收集整理的simhash笔记的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。