我想要構造一個成對距離矩陣,其中「距離」是實現here時兩個字符串之間的相似度分數。我正在考慮使用sci-kit learn的成對距離方法來做到這一點,因爲我之前已經使用它來進行其他計算,並且容易的並行化非常棒。計算成對simhash「距離」
下面是相關的代碼:
def hashdistance(str1, str2):
hash1 = simhash(str1)
hash2 = simhash(str2)
distance = 1 - hash1.similarity(hash2)
return distance
strings = [d['string'] for d in data]
distance_matrix = pairwise_distances(strings, metric = lambda u,v: hashdistance(u, v))
strings
看起來像['foo', 'bar', 'baz']
。
當我嘗試這個時,它會拋出錯誤ValueError: could not convert string to float
。這可能是一件非常愚蠢的事情,但我不確定爲什麼需要在這裏發生轉換,以及爲什麼它會拋出該錯誤:metric
中的匿名函數可以接收字符串並返回一個浮點數;爲什麼輸入需要浮動,以及如何創建基於simhash'距離'的成對距離矩陣?