主题建模 (2)
主题建模 (2)
Abhinav Jhanwar,人工智能团队
在一个 上一篇文章 我们回顾了主题建模的示例和应用。这次我们将回顾流行的主题建模方法。
主题建模方法
1.潜在语义分析(LSA)
它基于所谓的分布假设,该假设指出,可以通过查看单词出现的上下文来掌握单词的语义。换句话说,在这个假设下,如果两个单词的语义倾向于发生在类似的情况下。
也就是说,LSA 计算单词在文档和整个语料库中出现的频率,并假设相似的文档包含某些单词的大致相同的词频分布。在这种情况下,句法信息(例如词序)和语义信息(例如给定词的多重含义)被忽略,每个文档被视为一个词袋。
计算词频的标准方法是所谓的 tf-idf。该方法计算频率时不仅考虑了给定文档中单词的频率,还考虑了所有文档语料库中单词的频率。在完整语料库中频率较高的单词将比频率较低的单词更适合文档表示,无论它们在单个文档中出现多少次。因此,tf-idf 表示比只考虑文档级别的词频的表示要好得多。
一旦计算了 tf-idf 频率,我们就可以创建一个 Document-term 矩阵,它显示给定文档中每个术语的 tf-idf 值。该矩阵将为语料库中的每个文档提供行,并为所考虑的每个术语提供列。
通过使用奇异值分解 (SVD),可以将该文档项矩阵分解为 3 个矩阵的乘积 (USV)。 U 矩阵称为 Document-topic 矩阵,V 矩阵称为 Term-topic 矩阵:
线性代数保证 S 矩阵是对角的,LSA 将考虑每个奇异值,即矩阵 S 的主对角线中的每个数字,作为在文档中找到的潜在主题。
现在,如果我们将最大的 t 个奇异值与 U 的前 t 列和 V 的前 t 行保持在一起,我们可以获得在原始 Document-term 矩阵中找到的 t 个更频繁的主题。我们称之为截断 SVD,因为它不会保留原始矩阵的所有奇异值,并且为了将其用于 LSA,我们必须将 t 的值设置为超参数。
通过分别查看构成 U 和 V 矩阵的向量,可以通过不同的技术评估每个文档的主题分配质量和分配给每个主题的术语的质量。
2. 潜在狄利克雷分配(LDA)
潜在狄利克雷分配 (LDA) 和 LSA 基于相同的基本假设:分布假设(即相似主题使用相似词)和统计混合假设(即文档讨论多个主题)决定。 LDA 的目的是将我们语料库中的每个文档映射到一组主题,这些主题涵盖了文档中的大量单词。
为了将文档映射到主题列表,LDA 所做的是将主题分配给单词排列,例如 n-gram,例如与体育相关的主题的最佳球员。这源于这样的假设,即文档是用文字排列编写的,并且这些排列决定了主题。再
换句话说,LDA 假设主题和文档如下所示:
而且,当 LDA 为新文档建模时,它的工作方式如下:
LSA 和 LDA 的主要区别在于 LDA 假设文档中的主题分布和主题中的单词分布是狄利克雷分布。 LSA 不假设任何分布,因此会导致主题和文档的向量表示更加不透明。
有两个控制文档和主题相似度的超参数,分别称为 alpha 和 beta。较低的 alpha 值将为每个文档分配较少的主题,而较高的 alpha 值将产生相反的效果。较低的 beta 值将使用较少的词来模拟主题,而较高的值将使用更多的词,从而使主题之间更加相似。
实现 LDA 时必须设置第三个超参数,即算法将检测到的主题数,因为 LDA 无法自行决定主题数。
该算法的输出是一个向量,其中包含正在建模的文档的每个主题的覆盖范围。它看起来像这样 [0.2, 0.5, etc.],其中第一个值显示第一个主题的覆盖范围,依此类推。如果进行适当比较,这些向量可以让您深入了解语料库的主题特征。
3. 使用 BERT 进行主题建模
Transformers 的双向编码器表示是 Google 开发的一种用于自然语言处理预训练的技术。使用 BERT 进行主题建模所涉及的步骤如下所述。
一个。嵌入
我们要做的第一步是将文档转换为数字数据。我们为此使用 BERT,因为它根据单词的上下文提取不同的嵌入。不仅如此,还有很多 预训练模型 可随时使用。
湾。聚类
我们希望确保具有相似主题的文档聚集在一起,以便我们可以在这些集群中找到主题。 HDBSCAN 是一种基于密度的聚类算法,它与 UMAP 配合得非常好,因为 UMAP 即使在低维空间中也能保持大量的局部结构。此外,HDBSCAN 不会将数据点强制到集群,因为它认为它们是异常值。
笔记 :如果您使用可以处理高维的聚类算法(如基于余弦的 k 均值),则可以跳过降维步骤。
C。主题创作
为了从集群文档中获取主题,我们可以使用基于类的 TF-IDF 变体 (c-TF-IDF),这将允许提取使每组文档与其他文档相比独一无二的原因。
应用基于类的 TF-IDF:
基于类的 TF-IDF,通过在一个类中加入文档,其中为每个类 i 提取每个单词 t 的频率,然后除以单词总数 w。这个动作可以看作是对类中的常用词进行正则化的一种形式。接下来,未连接的文档总数 m 除以所有类别 n 中单词 t 的总频率。
现在,我们为集群中的每个单词都有一个单独的重要性值,可用于创建主题。如果我们在每个集群中取前 10 个最重要的词,那么我们将得到一个集群的良好表示,从而得到一个主题。
笔记 :类是无监督的集群
在一个 上一篇文章 在这篇文章中,我们回顾了符号、用例、应用和流行的方法。我们将在下一篇文章中回顾流行的库用于主题建模的用法。
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明