搜索背后的奥秘——浅谈语义主题计算

简介: <p><strong>摘要:</strong></p> <p>两篇文档是否相关往往不只决定于字面上的词语重复,还取决于文字背后的语义关联。对语义关联的挖掘,可以让我们的搜索更加智能化。本文着重介绍了一个语义挖掘的利器:主题模型。主题模型是对文字隐含主题进行建模的方法。它克服了传统信息检索中文档相似度计算方法的缺点,并且能够在海量互联网数据中自动寻找出文字间的语义主题。近些年来各大互联网公

摘要:

两篇文档是否相关往往不只决定于字面上的词语重复,还取决于文字背后的语义关联。对语义关联的挖掘,可以让我们的搜索更加智能化。本文着重介绍了一个语义挖掘的利器:主题模型。主题模型是对文字隐含主题进行建模的方法。它克服了传统信息检索中文档相似度计算方法的缺点,并且能够在海量互联网数据中自动寻找出文字间的语义主题。近些年来各大互联网公司都开始了这方面的探索和尝试。就让我们看一下究竟吧。

关键词:主题模型

技术领域:搜索技术、自然语言处理

假设有两个句子,我们想知道它们之间是否相关联:

第一个是:“乔布斯离我们而去了。”

第二个是:“苹果价格会不会降?”

如果由人来判断,我们一看就知道,这两个句子之间虽然没有任何公共词语,但仍然是很相关的。这是因为,虽然第二句中的“苹果”可能是指吃的苹果,但是由于第一句里面有了“乔布斯”,我们会很自然的把“苹果”理解为苹果公司的产品。事实上,这种文字语句之间的相关性、相似性问题,在搜索引擎算法中经常遇到。例如,一个用户输入了一个query,我们要从海量的网页库中找出和它最相关的结果。这里就涉及到如何衡量query和网页之间相似度的问题。对于这类问题,人是可以通过上下文语境来判断的。但是,机器可以么?

在传统信息检索领域里,实际上已经有了很多衡量文档相似性的方法,比如经典的VSM模型。然而这些方法往往基于一个基本假设:文档之间重复的词语越多越可能相似。这一点在实际中并不尽然。很多时候相关程度取决于背后的语义联系,而非表面的词语重复。

那么,这种语义关系应该怎样度量呢?事实上在自然语言处理领域里已经有了很多从词、词组、句子、篇章角度进行衡量的方法。本文要介绍的是其中一个语义挖掘的利器:主题模型

主题模型是什么?

主题模型,顾名思义,就是对文字中隐含主题的一种建模方法。还是上面的例子,“苹果”这个词的背后既包含是苹果公司这样一个主题,也包括了水果的主题。当我们和第一句进行比较时,苹果公司这个主题就和“乔布斯”所代表的主题匹配上了,因而我们认为它们是相关的。

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

例如:

通俗来说,一个主题就好像一个“桶”,它装了若干出现概率较高的词语。这些词语和这个主题有很强的相关性,或者说,正是这些词语共同定义了这个主题。对于一段话来说,有些词语可以出自这个“桶”,有些可能来自那个“桶”,一段文本往往是若干个主题的杂合体。我们举个简单的例子,见下图。

以上是从互联网新闻中摘抄下来的一段话。我们划分了4个桶(主题),百度(红色),微软(紫色)、谷歌(蓝色)和市场(绿色)。段落中所包含的每个主题的词语用颜色标识出来了。从颜色分布上我们就可以看出,文字的大意是在讲百度和市场发展。在这里面,谷歌、微软这两个主题也出现了,但不是主要语义。值得注意的是,像“搜索引擎”这样的词语,在百度、微软、谷歌这三个主题上都是很可能出现的,可以认为一个词语放进了多个“桶”。当它在文字中出现的时候,这三个主题均有一定程度的体现。

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

主题模型的工作原理

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

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

左边的矩阵表示每篇文章中每次词语出现的概率;中间的Φ矩阵表示的是每个主题中每个词语出现的概率 ,也就是每个“桶

表示的是每篇文档中各个主题出现的概率 ,可以理解为一段话中每个主题所占的比例。

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

主题模型训练推理的方法主要有两种,一个是pLSA(Probabilistic Latent Semantic Analysis),另一个是LDA(Latent Dirichlet Allocation)。pLSA主要使用的是EM(期望最大化)算法;LDA采用的是Gibbs sampling方法。由于它们都较为复杂且篇幅有限,这里就只简要地介绍一下pLSA的思想,其他具体方法和公式,读者可以查阅相关资料。

pLSA采用的方法叫做EM(期望最大化)算法,它包含两个不断迭代的过程:E(期望)过程和M(最大化)过程。用一个形象的例子来说吧:比如说食堂的大师傅炒了一盘菜,要等分成两份给两个人吃,显然没有必要拿天平去一点点去精确称量,最简单的办法是先随意的把菜分到两个碗中,然后观察是否一样多,把比较多的那一份取出一点放到另一个碗中,这个过程一直重复下去,直到大家看不出两个碗里的菜有什么差别为止。

对于主题模型训练来说,“计算每个主题里的词语分布”和“计算训练文档中的主题分布”就好比是在往两个人碗里分饭。在E过程中,我们通过贝叶斯公式可以由“词语-主题”矩阵计算出“主题-文档”矩阵。在M过程中,我们再用“主题-文档”矩阵重新计算“词语-主题”矩阵。这个过程一直这样迭代下去。EM算法的神奇之处就在于它可以保证这个迭代过程是收敛的。也就是说,我们在反复迭代之后,就一定可以得到趋向于真实值的 Φ和 Θ。

如何使用主题模型?

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

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

2)它可以解决多义词的问题。回想最开始的例子,“苹果”可能是水果,也可能指苹果公司。通过我们求出来的“词语-主题”概率分布,我们就可以知道“苹果”都属于哪些主题,就可以通过主题的匹配来计算它与其他文字之间的相似度。
3) 它可以排除文档中噪音的影响。一般来说,文档中的噪音往往处于次要主题中,我们可以把它们忽略掉,只保持文档中最主要的主题。
4) 它是无监督的,完全自动化的。我们只需要提供训练文档,它就可以自动训练出各种概率,无需任何人工标注过程。
5) 它是跟语言无关的。任何语言只要能够对它进行分词,就可以进行训练,得到它的主题分布。
综上所述,主题模型是一个能够挖掘语言背后隐含信息的利器。近些年来各大搜索引擎公司都已经开始重视这方面的研发工作。语义分析的技术正在逐步深入到搜索领域的各个产品中去。在不久的将来,我们的搜索将会变得更加智能,让我们拭目以待吧。


原文地址:http://stblog.baidu-tech.com/?p=1190


目录
相关文章
|
自然语言处理 算法 搜索推荐
解锁搜索新境界!让文本语义匹配助你轻松找到你需要的一切!(快速上手baseline)
解锁搜索新境界!让文本语义匹配助你轻松找到你需要的一切!(快速上手baseline)
解锁搜索新境界!让文本语义匹配助你轻松找到你需要的一切!(快速上手baseline)
|
1月前
|
自然语言处理 数据可视化 数据挖掘
闭源与开源嵌入模型比较以及提升语义搜索效果的技术探讨
本文探讨了自然语言处理中嵌入技术的应用,重点在于语义搜索及聚类方法。通过对比不同规模的开源与闭源模型,文章展示了如何利用聚类技术过滤无关结果,提高搜索精度。实验结果显示,较小模型如mxbai在某些任务上表现优异,提示我们在追求高性能的同时不应忽视计算效率与成本效益。最后,文章还介绍了重新排序技术,进一步优化检索结果的相关性。
83 6
闭源与开源嵌入模型比较以及提升语义搜索效果的技术探讨
|
21天前
|
机器学习/深度学习 自然语言处理 算法
超越传统搜索:探索基于GraphRAG的信息检索新范式
【10月更文挑战第10天】随着信息爆炸时代的到来,如何从海量的数据中快速准确地找到所需的信息成为了一个亟待解决的问题。传统的信息检索系统主要依赖于关键词匹配和文档排名算法来提供结果,但这种方法往往无法捕捉到数据间的复杂关系,也无法很好地理解用户的查询意图。近年来,一种新的信息检索方法——基于图的检索增强生成(Graph-based Retrieval-Augmented Generation, GraphRAG)应运而生,它通过结合知识图谱与机器学习技术,为信息检索带来了全新的视角。
46 1
|
3月前
|
数据采集 人工智能 自然语言处理
阿里云Elasticsearch AI语义搜索:解锁未来搜索新纪元,精准洞察数据背后的故事!
【8月更文挑战第2天】阿里云Elasticsearch AI场景语义搜索最佳实践
180 5
|
4月前
|
机器学习/深度学习 自然语言处理 并行计算
淘宝搜索中的深度语义模型:从理论到实践
淘宝搜索系统通过引入深度语义模型,极大地提升了搜索质量和用户体验。这些模型不仅能够准确理解用户的需求,还能够智能地匹配和推荐商品,为用户提供了一个更加便捷、个性化的购物环境。随着技术的不断发展和完善,淘宝搜索将会变得更加智能和高效。
|
6月前
|
人工智能 异构计算 Python
字节跳动最新研究AI项目:一张图片组合一组动作就可以生成毫无违和感的视频!
字节跳动最新研究AI项目:一张图片组合一组动作就可以生成毫无违和感的视频!
139 0
|
6月前
|
搜索推荐 API 开发工具
技术写作与内容研究:主题得分、关键词搜索量、社区和论坛策略
内容研究涉及对特定主题进行系统的调查,以收集可靠和相关的信息。这个过程对于技术作者来说至关重要,因为它有助于生成有价值的、准确的、信息丰富的和引人入胜的内容。它超越了基本的互联网搜索,包括阅读技术文档、采访专家、进行调查和分析数据。内容研究应以战略方式进行,考虑信息的用途、目标受众和要传达的关键信息。一个执行良好的内容研究过程可以帮助技术作者生成既清晰又简洁的高质量内容。
121 2
|
机器学习/深度学习 自然语言处理 并行计算
ChatGPT 背后包含了哪些技术?
ChatGPT 背后包含了哪些技术?
583 0
|
人工智能 BI
从喧闹与富有中搞懂搜索和拓扑
今天给大家分享一个非常有趣的面试题,通过这个问题你可能会对某些情况下,搜索和拓扑有一定的认识,一个问题,既可以用搜索来处理,用记忆化搜索优化,也可以用拓扑排序来解决。
152 0
从喧闹与富有中搞懂搜索和拓扑
|
存储 机器学习/深度学习 人工智能