用户在使用搜索引擎过程当中,因为表述不清晰或者查询词与索引库描述不一致,为了能召回更多更优质的结果展现给用户。这时就须要对用户查询进行分析,包括词权、同义词、纠错等技术,对原查询进行处理。一般搜索引擎中对同义词的处理,线下挖掘同义词词典,线上加载词典,但因为检索系统应用同义词时词典存在部分质量很差、或者原本质量好可是应用同义词更上下文有很强的关联性,并不必定适用,所以同义词主要包括两大方面,同义词的挖掘和同义词的使用。算法
获取同义词词林直接生成字典,抓取百度词典、金山词霸等的词条中的数据,提取原词和同义词。从百度百科、搜狗百科等网站抓取词条,在词条中,有“又称”、“别名”等特征词,利用这些特征词,构成模版提取词的其余描述,通常从百科中挖掘出的词条一般质量比较高。session
anchor数据是锚文本,利用指向同一连接的不一样anchor数据抽取同义词,如“http://www.apple.com.cn/”的anchor有“苹果中国”、“Apple 中国”,能够抽出“苹果”与“Apple”是同义词。session日志是同一用户在一段较短期内搜索的查询日志,利用session信息能够抽取用户改写的同义词,如用户在搜索中第一次提交查询“VMware汉化版下载”,没有找到想要的结果,而后对查询进行修改“VMware中文版下载”,并获得满意结果,经过分析日志,能够抽取“汉化”与“中文”为同义词。app
在搜索引擎中,用户点击反馈是提高搜索效果最有效的方法,点击日志是用户在使用搜索引擎时产生带有标注的数据。点击日志包括query、title、点击次数,经过统计query中某个词在点击的title没有出现,但有其余替换词出现,而且这个替换词在query点击其余的title中也有出现,并统计包含替换词的点击率等特征,能够判断原词与替换词是不是同义词。利用点击日志判断某两个词是不是同义词:1、在多个点击的title中出现,2、在多个上下文片断下出现,3、点击含有同义词的title点击率比较高。如用户搜索“一岁半宝宝感冒吃什么药”,点击title“1岁半小孩感冒发烧吃什么药”中“宝宝”与“小孩”是同义词。机器学习
利用点击日志,构建平行语料,如类似的query集、query-title等,类似query集是指点击到同一title的不一样query,同时过滤掉一些明显不相关的query,在类似的query集中取query1与query2相差只有一两个词不同(防止平行语料差别过大,影响翻译对齐的效果),构建成平行语料,经过统计机器翻译的对齐算法,学习词与词之间的对齐关系,利用对齐词,抽取对齐几率高、上下文内容丰富的词语对,做为同义词。除了挖掘同义词外,统计机器翻译还能够直接生成改写句子,利用词对齐信息,抽取短语翻译几率表。学习
经过上述方法线下挖掘同义词,生成同义词词典,而且根据同义词相关程度,分红不一样的级别,如按照彻底等价(北京大学、北大)、语义等价(简介、介绍)、语义相近(中国人、中国)、语义相关(须知、流程)分红4个级别,线上加载同义词词典,并将其应用于搜索引擎的召回、相关性计算中。可是一样一个同义词在不一样的上下文表现彻底不一样,如“作 午餐” vs “烧 午餐” ,“作”和“烧”是同义词,若是上下文为“仰卧起坐 一天 作 多少 能够 减肥” ,“作”和“烧”彻底不能替换,不一样的上下文同义词并不通用,所以线上对同义词的使用须要过滤或调整级别。优化
语言模型是用来计算一个句子的几率的模型,利用语言模型,能够肯定哪一个词序列的可能性更大,或者给定若干个词,能够预测下一个最可能出现的词语。利用搜索日志,训练语言模型(https://kheafield.com/code/kenlm/),基于训练好的模型能够用来判断一句话的几率。判断一个词在上下文中,是否其同义词可用,首先利用语言模型算出原句子的几率,而后用同义词替换掉原词,生成新的句子,再利用语言模型判断新句子的几率,若是新句子成一句话的几率高于或者约等于原句子的几率,则能够判定同义词在上下文中有效,甚至提升同义词的级别,若是新句子几率远小于原句子几率,则在上下文中不能构建为同义词,应当对其进行下降同义词级别甚至过滤掉。网站
利用机器学习优化同义词,不只提高系统的相应时间,还提升了搜索系统的召回的准确度和相关性特征的表征能力。机器学习解决同义词使用须要有三个问题:1、训练数据的构建,2、特征抽取,3、模型选取。训练数据利用点击日志构建类似的query集(点击到同一title的不一样query),若是原词出如今query中,同义词出如今多个以上的类似query中而且类似query不包含原词,则构成正例数据,若是原词出如今query中,同义词在全部的类似的query中都没有出现,则构成负例数据,同时为了提升训练数据的质量,过滤掉原词与同义词差异仅为停用词,还有一些原词和同义词的前缀相同的数据也过滤。特征提取包括:1、利用类似的query集,统计原词和同义词出现的几率、包含上下文片断的原词和同义词共现几率(包括四元、三元、二元),统计数据离线作成字典供线上使用,2、原词与同义词级别,查询长度,原词词数、同义词词数以及原词和同义词等特征。同义词使用能够当作分类问题,一般选取决策树、GBDT、随机森林等算法,若是当作回归问题,能够利用LR模型进行预测。经过机器学习模型能够判断在原词的上下文中,候选同义词是知足以及判断同义词级别。搜索引擎
总结一下,同义词包括两大方面,同义词的挖掘和同义词的使用。同义词的挖掘,包括同义词词林,结构化数据(词典、百科等)、anchor数据、点击日志等,除此以外还能够利用点击日志构建平行语料,悬链机器翻译模型,生成同义词。同义词的使用,主要由于同义词跟上下文有很强的关联性,同一同义词在不一样的上下文表现彻底不一样,须要根据上下文调整同义词使用级别甚至过滤同义词。除了上述所描述的传统方法外,同义词还能够利用深度学习模型,生成新的同义词和优化同义词的使用。spa