我正在使用doc2vec聚集一组教育文档。
作为一个人,我认为这些类别如:
等
我想知道是否有办法将doc2vec聚类“引导”到一组人类可解释的聚类中。
我一直在尝试的一个策略是过滤掉所有“无意义”的单词,并且仅对看似有意义的单词训练doc2vec。但当然,这似乎可能会破坏训练。
我刚刚想到的东西可能有用:
训练整个文件(不要过滤单词)以创建doc2vec空间
在每个文件中过滤无意义的单词('帮助','学生'等是在这个空间中含义很少的单词)
将文档过滤到doc2vec空间
然后使用k-means等进行处理
我将不胜感激任何建设性的建议或后续步骤。
最好的
答案 0 :(得分:0)
你的计划没事;你应该尝试评估结果。群集可能不会紧密映射到您的预先设定的分组,但通过查看每个群集的示例文档,您可能能够形成自己对群集"是什么的粗略概念。用人为的描述性术语。
首先不要尝试过多的猜测预处理(比如消除单词)。在您使用最简单的方法后,尝试这些变化作为基线 - 这样您就可以评估(即使只是通过特别的眼球)他们是否按预期帮助。 (例如,如果像“学生”这样的单词在所有文档中真正出现,那么它在Doc2Vec
最终文档坐标中的任何一种方式都会受到很大影响...所以你不要&# 39;必须自己判断这个判断,它会自动被削弱。)
我假设通过Doc2Vec你的意思是“段落向量”'算法,由Python Doc2Vec
中的gensim
类实现。一些PV-Doc2Vec模式,包括默认PV-DM(dm=1
)以及更简单的PV-DBOW(如果您还启用并发字训练(dm=0, dbow_words=1
)),将字矢量训练到同一空间作为doc-vectors。因此,最接近群集中的doc向量的单词向量或群集的质心可能对群集的可解释描述有用。
(在单词 - 向量空间中,还有一些研究试图通过以某种方式约束训练来使单词向量的各个维度更易于解释,例如要求向量仅为非备用负面维度。例如参见this NNSE work和其他类似的论文。据推测,这可能也适用于doc-vectors,但我不知道任何论文或图书馆都可以做到这一点。)
您还可以应用其他主题建模算法,如LDA,计算离散的主题'这通常是可以解释的,并报告每个文档中最强的主题。 (您可以对完整的文档主题权重进行聚类,或者只是天真地将每个文档分配为其最强主题,作为一种简单的聚类。)