本文作者:姜庭欣 合享汇智信息科技集团有限公司 CTO

一、 为什么需要智能语义搜索

在数以亿计的数据中,找到自己想要的数据并不是一件很容易的事,尤其当用户不能很清楚的表达自己的需求时,任务会变得更加困难。在原始的文字搜索中,用户输入“电脑”一词,系统直接通过文字匹配的方式,找到含有“电脑”这个词的数据即可。但用户真实需求可能是想找“电脑”这个领域的数据,至于是否包含这个词并不重要。这就需要所谓的“智能语义搜索”,他需要要突破文字匹配的限制,达到语义匹配的效果。

二、 智能语义搜索的实现原理

在实际应用中,对数据(可以是文本、图片、视频等形式,本文以文本举例)的计算种类繁多,经典且直观的数据表示方式是向量形式,即将数据用向量表示,作为后续处理的输入。

a) 两种常见的向量表示方式

最直观的向量表示方式是词向量,即将文本表示成由词组成的向量。例如“人工智能技术”,根据中文分词结果,将这段文本表示成向量

V = {人工,智能,技术}。

此种方法优势和不足都很明显。优势是简单、直观、易用,只要将文章进行分词,即可得到向量。词向量是无处不在的,它是内容表示的基础数学模型,可以说是整个处理流程的第一步。

词向量的应用场景如下:当我们希望从海量文章中搜索想要的信息时,首先可以用将每篇文章都表示成词向量,建立词-文档矩阵,如图1所示。


图1 词向量的应用场景

每一列是一篇文档,每一行是一个词。词汇1被文档1和文档4包含,就构成了倒排索引。当搜索词汇1时,可以直接获得文档1和文档4作为搜索结果。原始的文字匹配搜索就是基于词向量的倒排形式实现的。

词向量的不足之处是缺少信息的深加工,在处理复杂逻辑时,如果把词向量作为输入参数传入下游模块,则对下游模块的处理能力和效果提出了更高要求,因为其信息含量太少。其次,在处理海量信息时,每一个词向量都会很长,处理的信息量大,性能本身是一个挑战。

incoPat全球科技分析运营平台全面整理并汉化112个国家、组织和地区自1782年以来的1.2亿项专利技术,完成全球专利数据48小时更新,并将每项技术细化成240个字段,再加上pdf、图片等数据,各种数据汇总起来已经超过PB量级。合享将如此海量的数据做加工处理,并提供给用户做各种检索分析服务,其基础数学模型也是词向量模型。在检索的性能、处理的数据量级、基础运算符的准确度上,相对竞品都具备明显的优势。

另一种向量形式以topic model为代表,以奇异值分解(Singular Value Decomposition,SVD)举例,主要思想如下:

假设文章集合S中包含m篇文章,n个词,表示成矩阵A,m行n列,每一行代表一篇文章,每一列代表一个词。如果第i篇文章包含第j个词,则A[i][j]=1,否则A[i][j]=0。

SVD分解,就是要把A分解成3个矩阵的乘机,首先取一个远小于m和n的数r,对A的奇异值数组进行降序排列,取前r个值来近似描述矩阵,得到分解式:

虽然不是完全的精确解,但可以取得一个足够好的结果来满足实际场景要求。SVD分解的数学过程不是本文重点,不再赘述。

矩阵U,m行r列,我们可以认为每一行代表一篇文章。矩阵V,r行n列,我们可以认为每一列代表一个词。这样就实现了一个转换:每篇文章从词向量转换成由r个浮点数组成的向量,每个词从字符串转换成由r个浮点数组成的向量。r的取值范围根据实际场景,可以从几十到几千甚至更大,取值越小,矩阵分解速度越快,但得到的向量的维数越小,取值越大,矩阵分解速度越慢,向量维数越大。

SVD在实际应用中使用广泛,最直接的应用就是计算任意两篇文章的相似度,任意两个词之间的相似度。

文章i与文章j的相似度等于向量U[i]与向量U[j]的夹角余弦值。

词i与词j的相似度等于向量V[i]与向量V[j]的夹角余弦值。

SVD的应用非常广泛,也取得了非常不错的效果,例如有很多商业公司的所谓智能语义检索系统,就是基于这种模型实现的。用户输入的信息被转成一个r维向量,在与系统中的每一个文章向量计算相似度,得到相似度最高的前n篇文章,作为检索结果。

将上一个场景中的词向量方法,换成SVD方法如下:



这样就将每篇文章表示成一个向量,每一个词表示成一个向量。

虽然SVD的效果在交互层面经常给人以惊喜,但主要问题之一是不可解释,它将每篇文章表示成一个数学向量,里边都是0.1、0.2、-0.5之类的数字,虽然从数学过程上可以认为这些数字都有意义,向量的夹角也可以定义成向量的相似度,但在实际应用场景中,无法说出这些数字到底代表什么,这堆数字跟这篇文章到底有什么关系,按此计算的相似度有多大可信性。

除了SVD,主要的topic model模型还有PLSI、LDA、word2vec等,以及它们的各种变体。随着深度学习的兴起,rnn、lstm等神经网络模型也是可以用于语义搜索的。虽然各方法逻辑与计算过程不同,但其结果都是将一篇文章或词表示成数学向量,再将文本之间的计算转换成向量之间的计算,得到看似智能的效果。

三、 Topic model的效果及瓶颈

在实际应用场景中,用户有时需要精确的匹配,有时需要扩展的匹配。词向量模型可以实现词到词的精确匹配,即“电脑”和“电脑”匹配,“电脑”和“硬盘”是无法匹配的。

Topic model利用数学向量,可以实现扩展的匹配,即计算“电脑”和“硬盘”的相似度。因为每一个词都有一个向量,向量之间能做各种计算,比如夹角余弦、欧式距离等等。但这样也带来准确度的下降。此方法本质是在精确匹配的基础上向外扩展,希望找到更多的结果,且这些结果又不偏离当前主题。但此方法的主要问题是扩展到什么程度自己并不能控制,往往需要对结果做很多人工的修正。如何平衡两者之间的关系,是这条技术路线的主要问题。

在提到智能检索、语义检索时,经常给人以某些神秘感,但在明白了原理之后,其实它并不神秘,凡是基于这条技术路线实现的语义智能检索系统基本理念差别不大,但各公司都会根据自己的业务特点做各自的优化。总体来讲,各有所长,各有千秋。

incoPat在上线之初就具备了语义检索的能力,并不断的发展完善,但incoPat并不满足于现状,正致力于更具前瞻性的意向性研究,且已经取得了突破性的进展。


图2 incoPat语义检索系统