我有一组非常大的高维但稀疏的二进制向量。每个向量代表一个“one-hot-style”的 n-gram 单词序列,其中出现在 n-gram 中的单词的每个索引都设置为 1,所有其他的都设置为 0。例如
[0,0,0,0,0,1,0,0,0,0,1,0,0,0,...]
5-gram 的有效表示:
[5,10,235,1253,5521]
我想做的是从大型文本语料库中生成这样的 n-gram 表示。因此,这可能很容易导致数十万的词汇量(取决于潜在的预处理步骤,包括停用词删除、词干提取等),甚至更多不同的 n-gram ( m)。这可以表示为 size 的矩阵m x vocab_size。
随后,我想通过将相似的 n-gram 聚集在一起同时保留包含的单词来减少行数。例如:
[5,7,10,12,15],[5,8,10,15,18] -> [5,7,8,10,12,15,18]
我的幼稚方法是应用一些传统的聚类算法,以便将初始 n-gram 集中的每个条目分配给特定的集群,然后对分配给集群的所有 n-gram 执行联合。
第一个问题:什么是聚类稀疏二进制表示的合理算法?第二个问题:如何使用非常大的数据集来完成?