我正在使用 K 均值对单个文档进行聚类,我现在正在准备要聚类的数据并在其向量表示中表示 N 个句子。
但是,如果我理解正确的话,KMeans 算法设置为根据到 k 个中心点的欧式距离创建 k 个聚类。无论句子顺序如何。
我的问题是我想保持句子的顺序并在聚类任务中考虑它们。
假设 S = {1...n}
一组表示句子的 n 个向量,S_1 = sentence 1 ,S_2 = sentence 2 .. etc
。
我希望集群将是 K_1 = S[1..i]、K_2 = S[i..j] 等。
我想也许可以将其转换为一维并将每个句子的索引与转换后的值相加。但不确定是否有帮助。也许还有更聪明的方法。
最佳答案
一种快速而肮脏的方法是将每个词汇项附加到它所在的句子编号。首先 sentence segment ,那么,对于这个文件:
This document's really great. It's got all kinds of words in it. All the words are here.
你会得到这样的东西:
{"0_this": 1, "0_document": 1, "0_be": 1, "0_really": 1,...}
无论您使用什么 k-means,都应该很容易接受。
不过,我会警告不要在一般情况下这样做。您引入了大量数据稀疏性,您的结果将受到 the curse of dimensionality 的更大伤害.仅当您正在查看的类型 (1) 在词汇选择上非常可预测且 (2) 在结构上非常可预测时,您才应该这样做。我想不出一个很好的语言理由来说明句子应该在文本之间精确对齐。
关于algorithm - K 均值和文档聚类中的正确顺序输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28105039/