java - Document or Text Clustering using EM algorithm for GMM, 怎么办?

标签 java algorithm nlp cluster-analysis

我正在尝试制作一个文档聚类项目(用 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/

相关文章:

java - 如何在 Java 中漂亮地打印无效/不完整的 JSON

javascript - 通过几种不同的方式进行音译

C++:从星号不是乘法符号的字符串中删除所有星号

scala - 将 Word2VecModel 与 UserDefinedFunction 结合使用时出现 NullPointerException

algorithm - 具有最大权重的单词分区

java - 将字符串转换为整数不起作用,抛出 NumberFormatException

java - 有空主体和没有空主体的 For 循环花费相同的时间

java - 如何从 Java 代码中处理外部软件的 GUI

algorithm - 这些函数的大 O 复杂度是否正确?

nlp - 文本摘要: how to choose the right n-gram size