我的问题是关于cossim的使用。
我有一个很大的功能片段:
for elem in lList:
temp = []
try:
x = dict(np.ndenumerate(np.asarray(model[elem])))
except:
if x not in embedDict.keys():
x = np.random.uniform(low=0.0, high=1.0, size=300)
embedDict[elem] = x
else:
x = dict(np.ndenumerate(np.asarray(embedDict[elem])))
for w in ListWords:
try:
y = dict(np.ndenumerate(np.asarray(model[w])))
except:
if y not in embedDict.keys():
y = np.random.uniform(low=0.0, high=1.0, size=300)
embedDict[w] = y
else:
y = dict(np.ndenumerate(np.asarray(embedDict[w])))
temp.append(gensim.matutils.cossim(x,y))
我收到以下异常:
File "./match.py", line 129, in getEmbedding
test.append(gensim.matutils.cossim(x,y))
File "./Python_directory/ENV2.7_new/lib/python2.7/site-packages/gensim/matutils.py", line 746, in cossim
vec1, vec2 = dict(vec1), dict(vec2)
TypeError: cannot convert dictionary update sequence element #0 to a sequence
您能帮我解释一下此异常的含义吗?
答案 0 :(得分:1)
gensim.matutils.cossim的参数应为list of (int, float)
类型,但您使用的是字典。
在cossim
函数中,以下cossim implementation发生了异常:
vec1, vec2 = dict(vec1), dict(vec2)
使用正确的类型,dict(vec)
可以工作:
dict([(1, 2.), (3, 4.), (5, 6.)])
但是,如果您没有提供正确的类型,则会引发异常,例如:
dict([1, 2, 3])