如何解决Word2Vec 维度导致 KMeans 出现问题
我有一个包含 1000 个字符串的列表 sentences
,我想使用 KMeans 对其进行聚类。像这样:
sentences = [
['I','received','an','email']
['How','do','I','know','it','is','real?'],['Ladies','and','Gentlemen']
]
我正在使用 word2vec 删除停用词并预处理输入。
我像这样运行 word2vec:m = Word2Vec(sentences,size=50,window=6,min_count=1,sg=1)
之后,我定义了一个向量化器,它对 word2vec 生成的所有词浮点向量求平均值。
def vectorizer(sentence,m):
vec = []
numw = 0
for w in sentence:
try:
if numw == 0:
vec = m[w]
else:
vec = np.add(vec,m[w])
numw+=1
except:
pass
return np.asarray(vec) / numw
最后,我通过这个向量化器传递整个输入:
def vectorize(sentences,m):
l = []
for i in sentences:
l.append(vectorizer(i,m))
return np.array(l)
然后我像这样调用 vectorizer 方法:X = vectorize(sentences,m)
当我执行 X.shape
时,输出是:[1000,50]。由于 word2vec 中传递的大小是 50。我有 1000 条记录。
但是,当我将 word2vec 的大小更改为 100 时,X.shape
只是 [1000,]。
知道为什么会发生这种情况以及如何解决吗?
它导致我在使用 KMeans 时出现问题,因为当我通过它时出现此错误:
ValueError: setting an array element with a sequence.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。