这段代码实现了四组数据的 Simhash 函数。
import re
from simhash import Simhash, SimhashIndex
def get_features(s):
width = 3
s = s.lower()
s = re.sub(r'[^\w]+', '', s)
return [s[i:i + width] for i in range(max(len(s) - width + 1, 1))]
data = {
1: u'How are you? I Am fine. blar blar blar blar blar Thanks.',
2: u'How are you i am fine. blar blar blar blar blar than',
3: u'This is simhash test.',
}
objs = [(str(k), Simhash(get_features(v))) for k, v in data.items()]
index = SimhashIndex(objs, k=3)
现在我已经使用这段代码来索引一个巨大的数据集(训练数据集:train_data)。
def get_features(s):
width = 3
return [s[i:i + width] for i in range(max(len(s) - width + 1, 1))]
objs = [(str(k), Simhash(get_features(data_train[k]))) for k in range(len(data_train))]
index=SimhashIndex(objs,k=500)
但如果我把
'k=3'
它有效,但对于像
'k=500'
它进入永无止境的循环。请告诉我为什么会发生这种情况以及如何获取所有“data_train”数据的索引号。