微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

句子嵌入KMeans

如何解决句子嵌入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 举报,一经查实,本站将立刻删除。