短句的主题建模

数据挖掘 机器学习 nlp 聚类 文本挖掘 低密度脂蛋白
2021-09-17 05:10:27

我有一个已经分成簇的图。图中的每个节点都有一个标签(通常是函数的名称,如org.java.somepackage.validateLogin)。我想要做的是给每个集群一个有代表性的标签

为简单起见,假设我能够清理数据(即,将 'validateLogin' 中断为 'validate' 和 'login')

我对主题建模集群标记的主题做了一些研究,并遇到了一些算法,例如:LDA,NMF和TF-IDF(本身并不是一个算法)

基本上,许多算法都是面向文档的,它们是针对单词的,而不是面向短文本/标签的。

值得一提的是:

  • 我们可以利用不同的集群可能有不同的标签这一事实,因此集群的适当标签可能是整个词袋中的唯一词(我猜这可以用 TF-IDF 完成)

  • 标签可以是一个词,但也可以暗示层次结构(即packageA.packageB.packageC.funcName

如果您能给我您对这个问题的见解以及适合这里的方法,我会很高兴。

2个回答

一种可能的方法可能是使用每个集群中最可预测和预测的词作为其名称。以下是受COBWEB 算法使用的Fisher类别实用程序的启发。

一个属性在集群中是高度可预测的Cl如果该集群中的大多数元素具有相同的值a对于它,因此是一个由属性表示的词Ai具有可预测性P(Ai=a|Cl)

属性对集群具有高度预测性Cl如果知道它的价值a意味着您可以非常确定地说它属于哪个集群,表示为P(Cl|Ai=a)

假设现在您将每个标签org.java.somepackage.validateLogin作为一个句子处理:“org java somepackage validate Login”,并将one-hot 编码应用于数据集中的所有句子。单词的出现现在由其对应属性的值 1 表示。

用一个词来表示每个集群的任务现在可以表述为为每个集群寻找Cl属性所代表的词Ai等于 1 并且具有最高的可预测性和预测性,由该单词在句子中的总概率加权。

P(Ai=1|Cl)×P(Cl|Ai=1)×P(Ai=1)

可以通过计算每个簇中的单词的出现次数和每个单词的簇来计算。

您的研究已经产生了 LDA、NMF 等结果。但是由于您希望将注意力集中在短文本上并生成短标签,我建议您检查这个名为:Bi Term Topic Model for Short Texts 的算法。

这是作者的论文:http ://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.402.4032&rep=rep1&type=pdf

这里又是作者的代码:https ://github.com/xiaohuiyan/BTM

我亲自使用过它,并且可以非常保证它的性能。