Gensim - 主题建模
本章讨论与 Gensim 相关的主题建模。
要注释我们的数据并理解句子结构,最好的方法之一是使用计算语言算法。毫无疑问,借助这些计算语言算法,我们可以了解有关数据的一些更详细的信息,但是,
我们能知道在我们的语料库中哪种词比其他词出现的频率更高吗?
我们可以对数据进行分组吗?
我们可以在数据中找到潜在主题吗?
借助主题建模,我们可以实现所有这些目标。那么让我们深入探讨主题模型的概念。
什么是主题模型?
主题模型可以定义为包含有关文本中主题信息的概率模型。但这里出现了两个重要问题,如下所示 −
首先,主题到底是什么?
顾名思义,主题是文本中所代表的基本思想或主题。举个例子,包含报纸文章的语料库将包含与金融、天气、政治、体育、各州新闻等相关的主题。
其次,主题模型在文本处理中的重要性是什么?
众所周知,为了识别文本中的相似性,我们可以使用单词进行信息检索和搜索技术。但是,借助主题模型,我们现在可以使用主题而不是单词来搜索和排列文本文件。
从这个意义上说,我们可以说主题是单词的概率分布。这就是为什么通过使用主题模型,我们可以将文档描述为主题的概率分布。
主题模型的目标
如上所述,主题建模的重点是基本思想和主题。其主要目标如下 −
主题模型可用于文本摘要。
它们可用于组织文档。例如,我们可以使用主题建模将新闻文章分组为有组织的/相互关联的部分,例如组织与相关的所有新闻文章。
它们可以改善搜索结果。如何?对于搜索查询,我们可以使用主题模型来显示包含不同关键字但内容相同的文档。
推荐的概念对于营销非常有用。它被各种在线购物网站、新闻网站等使用。主题模型有助于提出关于购买什么、下一步阅读什么等的建议。它们通过在列表中查找具有共同主题的材料来实现这一点。
Gensim 中的主题建模算法
毫无疑问,Gensim 是最流行的主题建模工具包。它的免费可用性和 Python 使其更受欢迎。在本节中,我们将讨论一些最流行的主题建模算法。在这里,我们将重点关注"是什么"而不是"如何",因为 Gensim 为我们很好地抽象了它们。
潜在狄利克雷分配 (LDA)
潜在狄利克雷分配 (LDA) 是目前用于主题建模的最常见和最流行的技术。它是 Facebook 研究人员在 2013 年发表的研究论文中使用的方法。它最初由 David Blei、Andrew Ng 和 Michael Jordan 于 2003 年提出。他们在论文中提出了 LDA,论文标题很简单,就是潜在狄利克雷分配。
LDA 的特点
让我们通过它的特点 − 来更多地了解这种奇妙的技术
概率主题建模技术
LDA 是一种概率主题建模技术。正如我们上面所讨论的,在主题建模中,我们假设在任何一组相互关联的文档(可能是学术论文、报纸文章、Facebook 帖子、推文、电子邮件等)中,每个文档都包含一些主题组合。
概率主题建模的主要目标是发现相互关联的文档集合的隐藏主题结构。主题结构通常包括以下三项内容 −
主题
文档中主题的统计分布
文档中构成主题的单词
以无监督的方式工作
LDA 以无监督的方式工作。这是因为,LDA 使用条件概率来发现隐藏的主题结构。它假设主题在整个相关文档集合中分布不均匀。
在 Gensim 中非常容易创建它
在 Gensim 中,创建 LDA 模型非常容易。我们只需要指定语料库、字典映射和我们想要在模型中使用的主题数量。
Model=models.LdaModel(corpus, id2word=dictionary, num_topics=100)
可能面临计算上难以解决的问题
计算每个可能的主题结构的概率是 LDA 面临的计算挑战。这很有挑战性,因为它需要计算每个观察到的单词在每个可能的主题结构下的概率。如果我们有大量的主题和单词,LDA 可能面临计算上难以解决的问题。
潜在语义索引 (LSI)
在 Gensim 中使用潜在狄利克雷分配 (LDA)首次实现的主题建模算法是潜在语义索引 (LSI)。它也被称为潜在语义分析 (LSA)。
它于 1988 年由 Scott Deerwester、Susan Dumais、George Furnas、Richard Harshman、Thomas Landaur、Karen Lochbaum 和 Lynn Streeter 获得专利。在本节中,我们将设置我们的 LSI 模型。它可以以与设置 LDA 模型相同的方式完成。我们需要从 gensim.models 导入 LSI 模型。
LSI 的作用
实际上,LSI 是一种 NLP 技术,尤其是在分布式语义方面。它分析一组文档与这些文档包含的术语之间的关系。如果我们谈论它的工作原理,那么它会从一大段文本中构建一个包含每个文档的字数的矩阵。
构建后,为了减少行数,LSI 模型使用一种称为奇异值分解 (SVD) 的数学技术。除了减少行数外,它还保留了列之间的相似性结构。在矩阵中,行代表唯一的单词,列代表每个文档。它基于分布假设工作,即假设含义相近的单词会出现在同一类文本中。
Model=models.LsiModel(corpus, id2word=dictionary, num_topics=100)
分层狄利克雷过程 (HDP)
LDA 和 LSI 等主题模型有助于总结和组织无法手动分析的大量文本档案。除了 LDA 和 LSI,Gensim 中另一个强大的主题模型是 HDP(分层狄利克雷过程)。它基本上是一个用于对分组数据进行无监督分析的混合成员模型。与 LDA(其有限对应物)不同,HDP 从数据中推断出主题数量。
Model=models.HdpModel(corpus, id2word=dictionary