我正在尝试制作一个文档聚类项目(用 Java)。最多可以有 100 万个文档,我想制作无监督集群。为此,我正在尝试使用高斯混合模型实现 EM 算法。
但是,我不确定如何制作文档 vector 。
我在想这样的事情,首先我会为文档中的每个单词计算 TF/IDF(在删除停用词和词干提取之后)。
然后我将对每个 vector 进行归一化。在这个阶段,问题出现了,我该如何用一个点来表示一个 vector 呢?是否可以?
我从这个 ( https://www.youtube.com/watch?v=iQoXFmbXRJA ) 视频中了解了 EM 算法,其中一维点用于 GMM 并用于 EM。
谁能解释一下如何将 vector 转换为一维点以实现 GMM 的 EM?
如果我的方法是错误的,你能用简单的语言解释一下整个过程是如何完成的吗?对不起,我的问题很长。感谢您的帮助!
最佳答案
如果您要对那么多文档进行聚类,您也可以考虑使用 K-Medoids,它使用随机化(基本上)创建初始质心。至于将 vector 表示为一个点,根据我的经验,这真的很粗略。我过去所做的是将术语 vector 存储在 SortedMap 中,根据需要删除不相关的术语,将 vector 标准化为稀疏表示,然后您可以使用余弦相似度或欧几里德距离(倒置)之类的东西来衡量相似度。我使用过 JavaML、Weka,并推出了我自己的无监督集群。 JavaML 中的 KMedoids 非常好,您必须将 vector 减少为 double[] 数据结构(当然是规范化的)并使用它们的数据集对象。
关于java - Document or Text Clustering using EM algorithm for GMM, 怎么办?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24278630/