self.sim_svd = [] print("Calculating the sim_svd...") tbar = tqdm(total=len(self.word_vector)) for word in self.word_vector: if word[0] in self.vocab and word[1] in self.vocab: idx0 = self.vocab.index(word[0]) idx1 = self.vocab.index(word[1]) vector0 = self.result[idx0] vector1 = self.result[idx1] norm0 = np.linalg.norm(vector0) norm1 = np.linalg.norm(vector1) frac0 = np.dot(vector0, vector1) frac1 = norm0 * norm1 if frac1 != 0: sim = np.around(frac0 / frac1, 1) else: sim = 0 self.sim_svd.append(sim) else: self.sim_svd.append(0) tbar.update(1) tbar.close() # print(self.sim_svd) f = open('sim_svd', 'wb') pickle.dump(self.sim_svd, f) f.close()
时间: 2024-02-10 16:35:10 浏览: 47
svd.rar_SVD matlab_SVD.rar_svd分解_svd分解 matlab_svd分解步骤
这段代码的作用是计算一个词汇表中每对词语的余弦相似度,并将结果保存到一个名为sim_svd的二进制文件中。具体来说,代码首先创建一个名为sim_svd的空列表,然后使用一个循环遍历词向量中的每个词语。对于每个词语,代码检查它是否存在于词汇表中。如果两个词语都在词汇表中,代码会计算它们的余弦相似度,然后将结果添加到sim_svd列表中。如果两个词语中有任意一个不在词汇表中,代码会将0添加到sim_svd列表中。最后,代码将sim_svd列表保存到一个名为sim_svd的二进制文件中,以备将来使用。
阅读全文