我在列表中追加所有对的相似性分数。
data = []
for i1, i2 in list:
data.append([i1, i2, cosine_similarity([X[df.index.get_loc(i1)]],[X[df.index.get_loc(i2)]]).ravel()[0]])
但是,我需要它只附加非零的分数。
我输入了一个if语句,但它产生了一个错误,因为它不是int类型。
for i1, i2 in list:
if [cosine_similarity([X[df.index.get_loc(i1)]], [X[df.index.get_loc(i2)]])] > 0:
data.append([i1, i2, cosine_similarity([X[df.index.get_loc(i1)]], [X[df.index.get_loc(i2)]]).ravel()[0]])
任何方式只能在迭代过程中只附加非零?
答案 0 :(得分:0)
条件迭代的一般模式是(a for a in b if a)
。为了便于阅读,将计算结果转换为辅助函数,这应该可行:
def calc_sim(X, df, i1, i2):
return cosine_similarity([X[df.index.get_loc(i1)]],
[X[df.index.get_loc(i2)]])
data = [(i1, i2, sim)
for (i1, i2, sim) in ((i1, i2, calc_sim(X, df, i1, i2))
if sim > 0]