背景

在信息搜索中,我们做的第一步就是检索。对于文本检索中,第一步就是数据库中的内容与检索的内容进行匹配,符合匹配要求的话就根据相关业务处理。

在NLP中,我们可以认为是要让机器去理解检索内容,然后从现有数据库中返回对应内容。从这看文本匹配就是NLU(Nature Language Understand ,自然语言理解)中的核心内容了。

再延展一下,搜索这项功能在我们生活中也是太多太多。大众一点就是搜索引擎,商品搜索等,在问题系统中可以匹配相似的问题,然后返回对应答案等。

文本匹配包括监督学习方法以及非监督学习方法。或者分为传统方法和深度学习方法。传统的非监督学习方法有:Jaccard,Levenshtein(编辑距离),Simhash,BM25,VSM(向量空间)等,最具代表的算法当属BM25。其在著名的搜索解决方案Elastic中就有相关的使用。

BM25

BM25 在 20 世纪 70 年代到 80 年代被提出,到目前为止已经过去二三十年了,但是这个算法依然在很多信息检索的任务中表现优异,是很多工程师首选的算法之一。有时候全称是 Okapi BM25,这里的“BM”是“最佳匹配”(Best Match)的简称。

现代 BM25 算法是用来计算某一个目标文档(Document)相对于一个查询关键字(Query)的“相关性”(Relevance)的流程。通常情况下,BM25 是“非监督学习”排序算法中的一个典型代表。

下面部分内容参考文本相似度-bm25算法原理及实现。

假如我们有一系列的文档nlp 文本智能校对 nlp文本匹配_搜索,现在要搜索nlp 文本智能校对 nlp文本匹配_文本相似度_02。BM25的思想是,对nlp 文本智能校对 nlp文本匹配_文本相似度_02进行语素解析,生成语素nlp 文本智能校对 nlp文本匹配_nlp 文本智能校对_04;然后对于每个搜索文档nlp 文本智能校对 nlp文本匹配_文本匹配_05计算每个语素nlp 文本智能校对 nlp文本匹配_nlp 文本智能校对_06与文档nlp 文本智能校对 nlp文本匹配_nlp 文本智能校对_07的相关性,最后将所有的语素nlp 文本智能校对 nlp文本匹配_nlp 文本智能校对_06nlp 文本智能校对 nlp文本匹配_nlp 文本智能校对_07进行加权求和,从而对搜索nlp 文本智能校对 nlp文本匹配_文本相似度_02nlp 文本智能校对 nlp文本匹配_nlp 文本智能校对_07之间的相似性得分。将BM25算法总结成以下公式:
nlp 文本智能校对 nlp文本匹配_搜索_12
在中文中,我们通常将每一个词语当做nlp 文本智能校对 nlp文本匹配_nlp 文本智能校对_06nlp 文本智能校对 nlp文本匹配_文本匹配_14表示语素nlp 文本智能校对 nlp文本匹配_nlp 文本智能校对_06的权重,nlp 文本智能校对 nlp文本匹配_搜索_16表示语素nlp 文本智能校对 nlp文本匹配_nlp 文本智能校对_06与文档nlp 文本智能校对 nlp文本匹配_文本匹配_05的相关性得分关系。

判断一个词语与一个文档的相关性权重,较常用的就是TF-IDF算法中的IDF,该算法使用的公式如下:
nlp 文本智能校对 nlp文本匹配_nlp_19
其中:

  • N 表示待检索文档的数目
  • nlp 文本智能校对 nlp文本匹配_文本匹配_20表示包含nlp 文本智能校对 nlp文本匹配_搜索_21的文档数

IDF的物理意义就是:对应给定的文档集合,包含nlp 文本智能校对 nlp文本匹配_nlp 文本智能校对_06的文档多了,那么nlp 文本智能校对 nlp文本匹配_nlp 文本智能校对_06的权重就应该低一点。

对于语素nlp 文本智能校对 nlp文本匹配_nlp 文本智能校对_06与文档nlp 文本智能校对 nlp文本匹配_nlp 文本智能校对_07的相关性得分nlp 文本智能校对 nlp文本匹配_文本匹配_26,其在BM25算法中的公式如下:
nlp 文本智能校对 nlp文本匹配_nlp_27
nlp 文本智能校对 nlp文本匹配_nlp_28
这里引入多个变量,其中:

  • nlp 文本智能校对 nlp文本匹配_nlp 文本智能校对_29nlp 文本智能校对 nlp文本匹配_搜索_30nlp 文本智能校对 nlp文本匹配_文本相似度_31为调节因子,根据经验通常为nlp 文本智能校对 nlp文本匹配_文本相似度_32
  • nlp 文本智能校对 nlp文本匹配_文本相似度_33表示nlp 文本智能校对 nlp文本匹配_搜索_21nlp 文本智能校对 nlp文本匹配_nlp 文本智能校对_35中出现的频率(次数)
  • nlp 文本智能校对 nlp文本匹配_nlp 文本智能校对_36表示nlp 文本智能校对 nlp文本匹配_搜索_21nlp 文本智能校对 nlp文本匹配_nlp 文本智能校对_38中出现的频率(次数)
  • nlp 文本智能校对 nlp文本匹配_搜索_39表示文档nlp 文本智能校对 nlp文本匹配_nlp 文本智能校对_35长度
  • nlp 文本智能校对 nlp文本匹配_文本匹配_41表示所有文档的平均长度

从公式可以看出nlp 文本智能校对 nlp文本匹配_nlp 文本智能校对_42的物理意义:调整文档长度对相关性的影响。nlp 文本智能校对 nlp文本匹配_nlp 文本智能校对_42越大,则nlp 文本智能校对 nlp文本匹配_nlp_44就越小,相关性得分就越大,反之越小。文档长度越长,nlp 文本智能校对 nlp文本匹配_nlp_44也会变大,相关性得分就会越小,其在相关性得分作用可以这样理解:当文档较长时,那么包含nlp 文本智能校对 nlp文本匹配_nlp 文本智能校对_06的概率就变大,那么长文档与nlp 文本智能校对 nlp文本匹配_nlp 文本智能校对_47的相关性应该比段文档与nlp 文本智能校对 nlp文本匹配_nlp 文本智能校对_06的相关性要弱。

通常,nlp 文本智能校对 nlp文本匹配_nlp 文本智能校对_06nlp 文本智能校对 nlp文本匹配_文本相似度_02中出现的一次,则也可将公式化简成以下形式:
nlp 文本智能校对 nlp文本匹配_搜索_51

综上来说,BM25算法的相关性得分公式可有如下形式:
nlp 文本智能校对 nlp文本匹配_nlp_52

那么,当通过使用不同的语素分析方法,语素权重判定方法以及语素与文档的相关性判定方法,可以衍生很多不同的搜索相关性计算方法,灵活性也比较大。