我试图理解这篇论文,但我真的在努力完成一些步骤。
我添加了一些让我感到困惑的片段,但整个代码都可以在这里找到。
基本上,第一步是计算一个共现矩阵和一个稀有词列表,我对此很好。
然后我们需要一个 NN 列表和一个 NN 矩阵作为自动编码器的输入,并获得我们使用 LSH 的那些。
在这里,据我了解,我们正在为输入数据创建一个 hashsize-bit 哈希,然后我们正在为 co-occ 矩阵的每个值计算一个索引向量。
from lshash import LSHash
lsh = LSHash(hashsize, wordcount)
for i in range(len(cooc_matr)):
lsh.index(cooc_matr[i])
然后我们正在创建 NN 列表和矩阵:
friendslist = []
sim_matr = []
for i in range(len(rarewords)):
result = lsh.query(cooc_matr[rarewords[i]], num_results=friends,
distance_func='euclidean')
length = len(result)
fri = []
sim = []
for j in range(length):
fri.append(str(np.array(result[j][0])))
sim.append(float(result[j][1]))
if length < friends:
count = friends - length
for i in range(count):
fri.append(str(8))
sim.append(-1)
friendslist.append(fri)
sim_matr.append(sim)
这段代码有两点我不明白:首先,查询所有罕见词的每个共现值是什么意思(lsh.query(cooc_matr[rarewords[i]], num_results=friends,distance_func='euclidean')
)。
其次,我完全不知道这个循环的目的是什么:
for i in range(count):
fri.append(str(8))
sim.append(-1)
friendslist.append(fri)
sim_matr.append(sim)
以及为什么将 a 附加str(8)
到fri
列表中。
如果您能帮助我理解,我将不胜感激。如果你觉得我的问题很愚蠢,我很抱歉,但我只是这件事的初学者。