Open zhuruizhuruiqiang opened 6 years ago
try:
coefs = np.asarray(values[1:], dtype='float32') # 取向量
except ValueError:
# 如果真的这个词出现在了训练数据里,这么做就会有潜在的bug。那coefs的值就是上一轮的值。
print values[0], values[1:]
将其修改为: try:
if len(values)<embeddings_size:
coefs = np.asarray(values[1:], dtype='float32') # 取向量
elif len(values)==embeddings_size:
coefs = np.asarray(values, dtype='float32') # 取向量
else:
coefs = np.asarray(values[len(values)-embeddings_size:], dtype='float32') # 取向量
except ValueError:
# 如果真的这个词出现在了训练数据里,这么做就会有潜在的bug。那coefs的值就是上一轮的值。
#print(values[0], values[1:])
#print("try",index,len(values))
print(index,"error",len(values),values[0])
之后代码可以调通
@zhuruizhuruiqiang 其实这个问题是因为有一个词是空格,所以在截取之后会导致空格的那一行的第一个坐标被认为是词,所以长度会比正常的短一位
@zhuruizhuruiqiang 请教下,HashTable has different value for same key.的错误如何解决?删除重复词语吗?
输入wiki.zh.vec作为与训练的词向量,我发现这个里面词向量的长度有300,301,这样在load_word2vec_embedding中就会进入到 except ValueError:
如果真的这个词出现在了训练数据里,这么做就会有潜在的bug。那coefs的值就是上一轮的值。
那么在train或者predict的时候,就会提示一个key含有多个不一样的值这样的问题,导致训练不能进行 HashTable has different value for same key 请问这个该怎么解决呢?