主题模型

主题模型

rude 暂无评论
搜索引擎技术

好吧,先说一句,这篇文章是转的,转自百度搜索研发部的博客。转的原因很简单,近期越来越发现了在网页上布置内容以及在做关键词排名时考虑相关关键词的重要性。当然,这个相关,不只是说对应的长尾词,还包含有关联性的词。

再废话一句,百度发表这篇文章的时间在2011年11月23日,两年时间,从理论到实践到成熟?

主题模型是什么?

主题模型,顾名思义,就是对文字中隐含主题的一种建模方法。

在这里,我们先定义一下主题究竟是什么。主题就是一个概念、一个方面。它表现为一系列相关的词语。比如一个文章如果涉及到“百度”这个主题,那么“中文搜索”、“李彦宏”等词语就会以较高的频率出现,而如果涉及到“IBM”这个主题,那么“笔记本”等就会出现的很频繁。如果用数学来描述一下的话,主题就是词汇表上词语的条件概率分布 。与主题关系越密切的词语,它的条件概率越大,反之则越小。

有了主题的概念,我们不禁要问,究竟如何得到这些主题呢?对文章中的主题又是如何进行分析呢?这正是主题模型要解决的问题。下面我简要介绍一下主题模型是怎样工作的。

主题模型的工作原理

首先,我们用生成模型的视角来看文档和主题这两件事。所谓生成模型,就是说,我们认为一篇文章的每个词都是通过“以一定概率选择了某个主题,并从这个主题中以一定概率选择某个词语”这样一个过程得到的。那么,如果我们要生成一篇文档,它里面的每个词语出现的概率为:

词语与主题

上面这个式子,可以矩阵乘法来表示,如下图所示:

 

矩阵乘法

左边的C矩阵表示每篇文章中每次词语出现的概率;中间的Φ矩阵表示的是每个主题中每个词语出现的概率P(主题|文档),也就是每个“桶表示的是每篇文档中各个主题出现的概率P(主题|文档) ,可以理解为一段话中每个主题所占的比例。

假如我们有很多的文档,比如大量的网页,我们先对所有文档进行分词,得到一个词汇列表。这样每篇文档就可以表示为一个词语的集合。对于每个词语,我们可以用它在文档中出现的次数除以文档中词语的数目作为它在文档中出现的概率P(主题|文档) 。这样,对任意一篇文档,左边的C矩阵是已知的,右边的两个矩阵未知。而主题模型就是用大量已知的“词语-文档”C矩阵 ,通过一系列的训练,推理出右边的“词语-主题”矩阵Φ 和“主题文档”矩阵Θ 。

如何使用主题模型?

有了主题模型,我们该怎么使用它呢?它有什么优点呢?我总结了以下几点:

1) 它可以衡量文档之间的语义相似性。对于一篇文档,我们求出来的主题分布可以看作是对它的一个抽象表示。对于概率分布,我们可以通过一些距离公式(比如KL距离)来计算出两篇文档的语义距离,从而得到它们之间的相似度。

2)它可以解决多义词的问题。通过我们求出来的“词语-主题”概率分布,我们就可以知道“苹果”都属于哪些主题,就可以通过主题的匹配来计算它与其他文字之间的相似度。

3) 它可以排除文档中噪音的影响。一般来说,文档中的噪音往往处于次要主题中,我们可以把它们忽略掉,只保持文档中最主要的主题。

4) 它是无监督的,完全自动化的。我们只需要提供训练文档,它就可以自动训练出各种概率,无需任何人工标注过程。

5) 它是跟语言无关的。任何语言只要能够对它进行分词,就可以进行训练,得到它的主题分布。
文军二维码

发表评论

今日说说

    问:做什么事情会让你成就感爆棚?

    答:做让你感觉心理畏惧的事情,做完之后你会发现,去TMD,不过如此。

站内搜索