国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

simhash+漢明距離計算文本相似度

lx1036 / 698人閱讀

摘要:由于最近需要做大規模的文本相似度的計算,所以用到了漢明距離來快速計算文本的相似度。的原理如下圖其中的采用的是的的結果。附上的源代碼對列表進行降維海明距離判定距離是否相似

****由于最近需要做大規模的文本相似度的計算,所以用到了simhash+漢明距離來快速計算文本的相似度。**
**simhash的原理如下圖:其中的weight采用的是jieba的tf-idf的結果。****

**附上python3的源代碼:**

import math
import jieba
import jieba.analyse

class SimHash(object):

def __init__(self):
    pass
def getBinStr(self, source):
    if source == "":
        return 0
    else:
        x = ord(source[0]) << 7
        m = 1000003
        mask = 2 ** 128 - 1
        for c in source:
            x = ((x * m) ^ ord(c)) & mask
        x ^= len(source)
        if x == -1:
            x = -2
        x = bin(x).replace("0b", "").zfill(64)[-64:]
        return str(x)

def getWeight(self, source):
    # fake weight with keyword
    return ord(source)
def unwrap_weight(self, arr):
    ret = ""
    for item in arr:
        tmp = 0
        if int(item) > 0:
            tmp = 1
        ret += str(tmp)
    return ret

def simHash(self, rawstr):
    seg = jieba.cut(rawstr)
    keywords = jieba.analyse.extract_tags("|".join(seg), topK=100, withWeight=True)
    ret = []
    for keyword, weight in keywords:
        binstr = self.getBinStr(keyword)
        keylist = []
        for c in binstr:
            weight = math.ceil(weight)
            if c == "1":
                keylist.append(int(weight))
            else:
                keylist.append(-int(weight))
        ret.append(keylist)
    # 對列表進行"降維"
    rows = len(ret)
    cols = len(ret[0])
    result = []
    for i in range(cols):
        tmp = 0
        for j in range(rows):
            tmp += int(ret[j][i])
        if tmp > 0:
            tmp = "1"
        elif tmp <= 0:
            tmp = "0"
        result.append(tmp)
    return "".join(result)

def getDistince(self, hashstr1, hashstr2):
    length = 0
    for index, char in enumerate(hashstr1):
        if char == hashstr2[index]:
            continue
        else:
            length += 1
    return length

if name == "__main__":

simhash = SimHash()
s1 = u"I am very happy"
s2 = u"I am very happu"

hash1 = simhash.simHash(s1)
hash2 = simhash.simHash(s2)
distince = simhash.getDistince(hash1, hash2)
value = 5
print("海明距離:", distince, "判定距離:", value, "是否相似:", distince<=value)

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/42802.html

相關文章

  • 如何運用python完成Sim哈希算法

      此篇文章主要是闡述了如何運用python完成Sim哈希算法,文章內容依托于python的相關信息開展Sim哈希算法的詳細介紹一下,具有很強的參考意義,感興趣的朋友可以了解一下  1.為何需用Simhash?  傳統式相關性優化算法:語義相似度測算,一般采用線性空間實體模型(VSM),先向文字中文分詞,提取特征,依據特點創建文字空間向量,把文字中間相關性測算轉化成矩陣的特征值之間的距離測算,如歐...

    89542767 評論0 收藏0
  • 8種相似量方式的原理及實現

    摘要:實現參考鏈接計算各類距離關于機器學習距離的理解機器學習中的相似性度量如何通俗易懂地理解皮爾遜相關系數數學應用 8種相似度度量方式的原理及實現 歐氏距離(Euclidean Distance) 歐氏距離(也稱歐幾里得度量)指在m維空間中兩個點之間的真實距離,或者向量的自然長度(即該點到原點的距離) showImg(https://raw.githubusercontent.com/ele...

    lewif 評論0 收藏0
  • 利用python進行識別相似圖片(一)

    摘要:圖像指紋與漢明距離在介紹下面其他判別相似度的方法前,先補充一些概念。漢明距離為,即代表兩張圖片完全一樣。下一次將講述利用和以訓練好的模型來進行人臉識別。本文參考文章和圖片來源的文章賴勇浩的文章下一篇地址利用進行識別相似圖片二 文章簡介 在網上看到python做圖像識別的相關文章后,真心感覺python的功能實在太強大,因此將這些文章總結一下,建立一下自己的知識體系。當然了,圖像識別這個...

    HitenDev 評論0 收藏0
  • 詳解相似圖片匹配算法:差異值哈希算法 + 顏色直方圖

    摘要:由于最近涉及到匹配相似圖片的問題,所以在此記錄下解決辦法差異值哈希算法顏色直方圖環境要求庫庫差異值哈希算法檢索相似圖片,第一個想到的就是差異值哈希算法。 由于最近涉及到匹配相似圖片的問題,所以在此記錄下解決辦法:差異值哈希算法 + 顏色直方圖 環境要求:Python cv2庫 math庫 差異值哈希算法 檢索相似圖片,第一個想到的就是差異值哈希算法。這個算法的步驟是: 縮小尺寸 一般...

    eternalshallow 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<