如何解决句子嵌入KMeans
K-MEANS聚类黑白二维数字阵列
一段时间以来,我一直在寻找解决方案,我可以感觉到可能有些愚蠢的东西可能会丢失,所以请继续。 在使用Keras顺序层训练嵌入层之后,我获得了句子嵌入。
虚拟示例
假设我们有如下所示的嵌入内容:
Sentence 1 : np.array ([[6,2],[3,1],[7,4],[8,[5,[9,3],1]])
Sentence 2 : np.array ([[2,5],7],[6,[1,[2,1]])
基本上,在一个包含多个句子的文件中,我希望此类句子嵌入被聚类,以便将相似的句子聚类在一起。
我知道这是我们用来对一维数组进行聚类的方法
from sklearn.cluster import KMeans
import numpy as np
X = np.array([[1,[-1,-1],-1]])
kmeans = KMeans(n_clusters=3,random_state=0).fit(X)
我尝试过:
x = np.array([ [[6,[11,1]],[[6,1]] ])
kmeans = KMeans(n_clusters=k,random_state=0).fit(x)
抛出 ValueError:找到的数组为暗3。估计器预期为
是否有可能在这种数据上进行k均值聚类?或者我应该遵循其他方法吗?
一个解决方案,我唯一想到的是在聚类之前对句子嵌入进行平均并使用np.squeeze将每个句子的维数压缩到一维阵列,但这将意味着丢失单词中所有的位置信息一个句子。
“我是狗”与“我是狗” 是错误的
解决方法
正如QUANG HOANG在评论中正确建议的那样,其想法是只是展平密集的句子嵌入矩阵。
根据需要,这还将保留有关单词的位置信息!
sent1 = np.ndarray.flatten(np.array([[1,3],[7,5],[8,1]]))
sent2 = np.ndarray.flatten(np.array([[3,2],[4,[2,2]]))
sent3 = np.ndarray.flatten(np.array([[1,1],7],[3,5]]))
sent4 = np.ndarray.flatten(np.array([[1,6],5]]))
X = np.array((s1,s2,s3,s4))
print (X)
输出:
array([[1,3,7,5,8,2,4,[1,1,6,5]])
,
x = np.array([ [[6,4],[5,[11,1]],[[6,1]] ])
关于这一点,我只是猜测问题是scikit-learn期望2d NumPy数组用于拟合函数的训练数据集,但是您传入的数据集是3d数组,因此您需要重塑排成二维。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。