借助潜在狄利克雷分配 (LDA) 或命名实体确定文档的新颖性/相似性

数据挖掘 机器学习 nlp 主题模型 低密度脂蛋白 命名实体识别
2022-03-06 12:51:56

给定一个包含大量(短)文档(约 100 万)的索引或数据库,我正在尝试对每个新传入的文档进行某种新颖性检测。

我知道我必须计算新文档与索引中每个文档的相似度。如果相似度低于某个阈值,则可以认为该文档是新颖的。一种常见的方法——我想做的——是使用向量空间模型并计算余弦相似度(例如,通过使用 Apache Lucene)。

但是这种方法有两个缺点:1)计算量大,2)没有分别包含文档和单词的语义。

为了克服这些缺点,我的想法是使用 LDA 主题分布或命名实体来增强 Lucene 索引和带有语义的查询(即文档集合和每个新文档)。

现在,我对具体的实现完全迷失了。我已经使用 Mallet 训练了一个 LDA 主题模型,并且我还能够在语料库上进行命名实体识别。但是我不知道如何使用这些主题和命名实体来实现新颖性检测。更具体地说,我不知道如何使用这些功能来创建索引和查询。

例如,将一个文档的所有命名实体作为单独的字段存储在索引中、添加某些权重(即提升它们)并使用 MultiFieldQuery 是否已经足够?我不认为这已经为相似性检测增加了某种语义。这同样适用于 LDA 主题:将每个术语的主题概率添加为有效负载并实现新的相似度分数是否足够?

如果您能提供一些关于如何在 Lucene 中合并 LDA 主题或命名实体以进行某种新颖性检测或语义相似性测量的提示甚至代码片段,我将非常高兴。

先感谢您。

1个回答

简短的回答:主题模型和 LDA 根本不适合新颖性检测。我对数据进行了一些实验,这些数据按时间顺序显示了一系列主题,并且在时间间隔的边界,一个主题在文档主题矩阵中的百分比非常高,即即将到来的新趋势(或超越旧趋势) LDA 看不到。

主题模型也并不真正适合“在线”处理——你只需阅读整个文档语料库就可以推断出主题。