【NLP】三分钟带你看懂如何做网页搜索

01

搜索基本过程

对于网页搜索,传统的过程可以理解为:用户提交POST,搜索引擎返回RESPONSE。最开始的搜索过程,用户基本上是提供关键词,然后搜索引擎进行字符串匹配,给出一些含有这些关键词的候选集网页candidates,然后采用rank模型进行排序,将得分最高的网页靠前显示给用户(当然,某些给了钱做广告的网页就是例外了)。

然而,现在的用户搜索越来越口语化和知识化,搜索引擎慢慢也向QA(问答系统)进行转变,不再仅仅是字符串匹配的过程了。例如用户搜索“刘德华”的妻子这个问题,搜索引擎如何给出答案呢?(这个问题参加过百度校招的童鞋肯定很熟悉,基本上都会问一下的,有很多中方法例如倒排等)。所以单纯地做关键词匹配,基本难以给出实际的答案。这里需要建立知识图谱进行解决。

不过,对于搜索而言,搜索引擎给出答案的过程,基本包括检索、匹配、排序三个过程。在检索过程,如果是中文文本,需要完成包括中文分词等工作,分词完成之后进行实体(具体的人、物、地点等)检测,如果包含具体的实体,可以利用知识图谱给出答案;如果不包含实体就要对检索得到的候选集进行匹配(match),这里的匹配就是文本相似度的计算,也就是本文的重点介绍部分。匹配后得到分数,然后进行排序即可返回给用户了。

02

常见搜索方法

上一部分简单介绍了搜索的基本过程,这里主要讲讲搜索的具体方法。主要介绍字符串匹配、知识库、文本相似度三种方法。

  1. BM25算法 BM25算法简单来讲,就是一种关键词词频统计的方法,如果文本中出现用户POST内关键词频率越高,那该文本就越容易被显示。具体过程简单描述一下:(参见:http://www.cnblogs.com/jilichuan/archive/2012/08/22/2650721.html) 相当于计算用户POST和Document之间的Score。 Score(P,D) = SUM(IDF(Ki)*f(P,D)) 对于字符串匹配的方法,还有很多不需要分词的过程,例如Trie树+AC自动机的方法,有兴趣的童鞋可以去研究研究。
  2. 知识库方法 知识库的方法非常简单,就是通过知识图谱给出答案。但难得是如何做命名实体识别,以及如何前期构建大规模的知识库。
  3. 文本相似度方法 文本相似度很好理解,就是把用户POST用一个向量表达,把网页文本也用一个向量表示,然后计算着两个向量之间的距离,距离越近表示二者越相似。下一部分将具体介绍文本相似度的计算方法。

03

文本相似度方法

文本相似度的计算方法有很多中,例如传统的TFIDF方法,还有预训练的word2vec方法,还有就是目前学术界流行的深度学习的方法,具体过程如下图所示,思想就是把用户POST用一个向量表示,把文本用向量表示。

一般来说使用BiRNN(双向RNN)分别得到用户POST的表达和文本的表达,然后计算两个向量的余弦距离,再排序给出最接近POST的文本候选集。

04

其他方法

除了上述描述的句子相似度方法外,还有一些传统的机器学习方法,例如主题模型LDA,将文本映射到不同的主题空间,给出相同主题的文本返回给用户。具体可以参见百度开源的Familia工业级文本相似度计算工具。

原文发布于微信公众号 - CodeInHand(CodeInHand)

原文发表时间:2018-01-08

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏MixLab科技+设计实验室

TensorFlow.js、迁移学习与AI产品创新之道

TensorFlow 的 JS 版本终于出啦,deeplearn.js 正式收编至 TensorFlow 项目,并改名为 TensorFlow.js :

93510
来自专栏机器之心

TensorFlow发布重要更新AutoGraph,自动将Python转化为TF计算图

作者:Alex Wiltschko、Dan Moldovan、Wolff Dobson

1774
来自专栏专知

【AlphaGo Zero 核心技术-深度强化学习教程代码实战04】Agent类和SARSA算法实现

【导读】Google DeepMind在Nature上发表最新论文,介绍了迄今最强最新的版本AlphaGo Zero,不使用人类先验知识,使用纯强化学习,将价值...

3144
来自专栏新智元

【李飞飞团队最新研究】神经任务编程NTP,具有强大泛化能力的机器人学习框架

【新智元导读】斯坦福大学计算机视觉实验室李飞飞团队的最新研究提出一个新的机器人学习框架:神经任务编程(NTP),在机械臂的物品堆叠、分拣和桌面清理三类任务中,证...

3878
来自专栏PPV课数据科学社区

从Caffe2到TensorFlow,十种框架构建相同神经网络效率对比

近日,Ilia Karmanov 在 Medium 发表了一篇题为《Neural Net in 10 Frameworks (Lessons Learned)》...

3838
来自专栏大闲人柴毛毛

10分钟搞懂蚁群算法

蚂蚁几乎没有视力,但他们却能够在黑暗的世界中找到食物,而且能够找到一条从洞穴到食物的最短路径。它们是如何做到的呢? 蚂蚁寻找食物的过程 单只蚂蚁的行为及其简单...

3.4K14
来自专栏AI科技评论

ICML论文 | Facebook分享机器学习研究开源平台代码

正在美国纽约举行的国际机器大会(ICML)上,我们很难忽略 Facebook 研究科学家们的身影——他们呈现三篇论文、主导四场研讨会、并主讲两场教程。其中包括 ...

39211
来自专栏量子位

看文本知语义:谷歌推一步到位自然语言理解框架SLING | 论文+代码

夏乙 编译自 Google Research Blog 量子位 出品 | 公众号 QbitAI 大多数自然语言理解(NLU)系统分析语言的过程是一条由分析步骤组...

4409
来自专栏数据派THU

独家 | 教你用Q学习算法训练神经网络玩游戏(附源码)

原文标题:Teaching a NeuralNetwork to play a game using Q-learning 作者:Soren D 翻译:杨金鸿 ...

4848
来自专栏人工智能头条

通过Amazon Machine Learning建立一个数值回归模型

1805

扫码关注云+社区

领取腾讯云代金券