搜索引擎中同义词的挖掘及使用

  用户在使用搜索引擎过程中,由于表述不清晰或者查询词与索引库描述不一致,为了能召回更多更优质的结果展示给用户。这时就需要对用户查询进行分析,包括词权、同义词、纠错等技术,对原查询进行处理。通常搜索引擎中对同义词的处理,线下挖掘同义词词典,线上加载词典,但由于检索系统应用同义词时词典存在部分质量不好、或者本来质量好但是应用同义词更上下文有很强的关联性,并不一定适用,因此同义词主要包括两大方面,同义词的挖掘和同义词的使用。

一、同义词挖掘方法

1、结构化数据

  获取同义词词林直接生成字典,抓取百度词典、金山词霸等的词条中的数据,提取原词和同义词。从百度百科、搜狗百科等网站抓取词条,在词条中,有“又称”、“别名”等特征词,利用这些特征词,构成模版提取词的其他描述,一般从百科中挖掘出的词条通常质量比较高。

2、anchor数据、session日志

  anchor数据是锚文本,利用指向同一链接的不同anchor数据抽取同义词,如“http://www.apple.com.cn/”的anchor有“苹果中国”、“Apple 中国”,可以抽出“苹果”与“Apple”是同义词。session日志是同一用户在一段较短时间内搜索的查询日志,利用session信息可以抽取用户改写的同义词,如用户在搜索中第一次提交查询“VMware汉化版下载”,没有找到想要的结果,然后对查询进行修改“VMware中文版下载”,并得到满意结果,通过分析日志,可以抽取“汉化”与“中文”为同义词。

3、点击日志

  在搜索引擎中,用户点击反馈是提升搜索效果最有效的方法,点击日志是用户在使用搜索引擎时产生带有标注的数据。点击日志包括query、title、点击次数,通过统计query中某个词在点击的title没有出现,但有其他替换词出现,并且这个替换词在query点击其他的title中也有出现,并统计包含替换词的点击率等特征,可以判断原词与替换词是否是同义词。利用点击日志判断某两个词是否是同义词:一、在多个点击的title中出现,二、在多个上下文片段下出现,三、点击含有同义词的title点击率比较高。如用户搜索“一岁半宝宝感冒吃什么药”,点击title“1岁半小孩感冒发烧吃什么药”中“宝宝”与“小孩”是同义词。

4、统计机器翻译对齐

  利用点击日志,构建平行语料,如相似的query集、query-title等,相似query集是指点击到同一title的不同query,同时过滤掉一些明显不相关的query,在相似的query集中取query1与query2相差只有一两个词不一样(防止平行语料差异过大,影响翻译对齐的效果),构建成平行语料,通过统计机器翻译的对齐算法,学习词与词之间的对齐关系,利用对齐词,抽取对齐概率高、上下文内容丰富的词语对,作为同义词。除了挖掘同义词外,统计机器翻译还可以直接生成改写句子,利用词对齐信息,抽取短语翻译概率表。

二、同义词应用

   通过上述方法线下挖掘同义词,生成同义词词典,并且根据同义词相关程度,分成不同的级别,如按照完全等价(北京大学、北大)、语义等价(简介、介绍)、语义相近(中国人、中国)、语义相关(须知、流程)分成4个级别,线上加载同义词词典,并将其应用于搜索引擎的召回、相关性计算中。但是同样一个同义词在不同的上下文表现完全不同,如“做 午饭” vs “烧 午饭”  ,“做”和“烧”是同义词,如果上下文为“仰卧起坐 一天 做 多少 可以 减肥”  ,“做”和“烧”完全不能替换,不同的上下文同义词并不通用,因此线上对同义词的使用需要过滤或调整级别。

1、基于语言模型优化同义词使用

  语言模型是用来计算一个句子的概率的模型,利用语言模型,可以确定哪个词序列的可能性更大,或者给定若干个词,可以预测下一个最可能出现的词语。利用搜索日志,训练语言模型(https://kheafield.com/code/kenlm/),基于训练好的模型可以用来判断一句话的概率。判断一个词在上下文中,是否其同义词可用,首先利用语言模型算出原句子的概率,然后用同义词替换掉原词,生成新的句子,再利用语言模型判断新句子的概率,如果新句子成一句话的概率高于或者约等于原句子的概率,则可以断定同义词在上下文中有效,甚至提高同义词的级别,如果新句子概率远小于原句子概率,则在上下文中不能构建为同义词,应当对其进行降低同义词级别甚至过滤掉。

2、基于机器学习优化同义词使用

  利用机器学习优化同义词,不仅提升系统的相应时间,还提高了搜索系统的召回的准确度和相关性特征的表征能力。机器学习解决同义词使用需要有三个问题:一、训练数据的构建,二、特征抽取,三、模型选取。训练数据利用点击日志构建相似的query集(点击到同一title的不同query),如果原词出现在query中,同义词出现在多个以上的相似query中并且相似query不包含原词,则构成正例数据,如果原词出现在query中,同义词在所有的相似的query中都没有出现,则构成负例数据,同时为了提高训练数据的质量,过滤掉原词与同义词差别仅为停用词,还有一些原词和同义词的前缀相同的数据也过滤。特征提取包括:一、利用相似的query集,统计原词和同义词出现的概率、包含上下文片段的原词和同义词共现概率(包括四元、三元、二元),统计数据离线做成字典供线上使用,二、原词与同义词级别,查询长度,原词词数、同义词词数以及原词和同义词等特征。同义词使用可以看成分类问题,通常选取决策树、GBDT、随机森林等算法,如果看成回归问题,可以利用LR模型进行预测。通过机器学习模型可以判断在原词的上下文中,候选同义词是满足以及判断同义词级别。

三、总结与展望

  总结一下,同义词包括两大方面,同义词的挖掘和同义词的使用。同义词的挖掘,包括同义词词林,结构化数据(词典、百科等)、anchor数据、点击日志等,除此之外还可以利用点击日志构建平行语料,悬链机器翻译模型,生成同义词。同义词的使用,主要因为同义词跟上下文有很强的关联性,同一同义词在不同的上下文表现完全不同,需要根据上下文调整同义词使用级别甚至过滤同义词。除了上述所描述的传统方法外,同义词还可以利用深度学习模型,生成新的同义词和优化同义词的使用。

原文地址:https://www.cnblogs.com/sxron/p/9785618.html

时间: 2024-11-13 10:57:24

搜索引擎中同义词的挖掘及使用的相关文章

搜索引擎中查询纠错总结

搜索引擎是目前人们获取信息最重要的方式之一,其最基本最核心的功能是信息检索,找到含有关键字的网页或文档,然后按照一定排序将结果给出,在此基础之上,能够提供更多更复杂的功能来提升用户体验.对于一个成熟的搜索系统,用户看似简单的搜索过程,需要在系统中经过多个环节,多个模块协同工作,才能提供一个让人满意的搜索结果.在搜索引擎输入的查询中,有相当一部分是带输入错误的查询.而提交有错误的查询给搜索引擎,通常得不到好的搜索结果,返回结果数很少并且和用户的期待相差很远,会严重影响了用户的使用体验.因此查询纠错

转载自lanceyan: 一致性hash和solr千万级数据分布式搜索引擎中的应用

一致性hash和solr千万级数据分布式搜索引擎中的应用 互联网创业中大部分人都是草根创业,这个时候没有强劲的服务器,也没有钱去买很昂贵的海量数据库.在这样严峻的条件下,一批又一批的创业者从创业中获得成功,这个和当前的开源技术.海量数据架构有着必不可分的关系.比如我们使用mysql.nginx等开源软件,通过架构和低成本服务器也可以搭建千万级用户访问量的系统.新浪微博.淘宝网.腾讯等大型互联网公司都使用了很多开源免费系统搭建了他们的平台.所以,用什么没关系,只要能够在合理的情况下采用合理的解决方

百度搜索引擎中的快照及快照更新机制

百度搜索引擎中的快照及快照更新机制 1.什么是百度快照? 如果无法打开某个搜索结果,或者打开速度特别慢,该怎么办?“百度快照”能帮您解决问题.每个被收录的网页,在百度上都存有一个纯文本的备份,称为“百度快照”.百度速度较快,您可以通过“快照”快速浏览页面内容. 不过,百度只保留文本内容,所以,那些图片.音乐等非文本信息,快照页面还是直接从原网页调用.如果您无法连接原网页,那么快照上的图片等非文本内容,会无法显示.所以,针对一些关闭掉或者无法访问的网站,如果想看到部分内容是可以通过百度快照实现的哦

SQL SERVER 2005中同义词实例

From : http://www.cnblogs.com/jackyrong/archive/2006/11/15/561287.html 在SQL SERVER 2005中,终于出现了同义词了,大大方便了使用.下面举个小例子说明 同义词是用来实现下列用途的数据库对象: 为本地或远程服务器上的另一个数据库对象(称为“基对象”)提供备选名称. 提供一个提取层,该层防止客户端应用程序的基对象的名称或位置被更改. 例如,名为 Server1 的服务器上有 Adventure Works 的 Empl

垂直搜索引擎中的分词系统

分词系统的框架与实现介绍---本文适合对搜索引擎有良好概念的读者(原创) 关键字:搜索引擎,分词,Lucene 国内垂直领域的电商或者信息分享类应用都处于高速发展期,其对内容快速搜索的需求越来越强烈,对于能适应自己业务应用的搜索引擎解决方案也越来越重视.同时,通用的可选开源搜索引擎框架或解决方案也越来越多,如著名的Lucene,Solr,ElasticSearch等.打造一套完美适应自身业务需求的搜索引擎是个具有挑战性的任务,而且无论选择Lucene,Solr这些搜索引擎框架.方案还是自己另写一

搜索引擎中输入检索词到返回十条结果,发生了哪些事情

移动互联网时代搜索引擎依然是重要流量来源以及流量分发渠道,虽然比PC互联网时代权重有所降低. 各大电商淘宝.京东80-90%交易额也是由用户app内搜索.网站内搜索产生,个性化推荐系统本身也和搜索 引擎无论技术还是产品方方面面都与搜索引擎有着关联,我们每天也都和搜索引擎打着交道,搜索知识. 搜索问题.搜索新闻.了解世界,搜索引擎价值巨大,作为一个技术人应该了解他并不断深入了解他. 百度第三代搜索引擎架构 当我们使用搜索引擎检索信息时,输入想要查找检索词,点击回车,搜索引擎在1s左右时间返回十篇

浅谈数据挖掘中的关联规则挖掘

数据挖掘是指以某种方式分析数据源,从中发现一些潜在的有用的信息,所以数据挖掘又称作知识发现,而关联规则挖掘则是数据挖掘中的一个很重要的 课题,顾名思义,它是从数据背后发现事物之间可能存在的关联或者联系.举个最简单的例子,比如通过调查商场里顾客买的东西发现,30%的顾客会同时购买床 单和枕套,而购买床单的人中有80%购买了枕套,这里面就隐藏了一条关联:床单—>枕套,也就是说很大一部分顾客会同时购买床单和枕套,那么对于商 场来说,可以把床单和枕套放在同一个购物区,那样就方便顾客进行购物了.下面来讨论

搜索引擎中的资源积累主要分哪些?

SEO经验做不同的行业,做很多的站,多观察流量变化,检索词,收录比例,收录时间,排名情况,点击率,竞争对手数据.你会总结出一套对网站SEO的认识.可以解决如下问题,这个行业一共有多少SEO流量,我能拿多少,我应该做哪些内容,页面应该如何设计,链接应当怎么部署,这些内容从哪来,这些内容有什么价值,需要多少时间才能做上去等等.这类数据以及从数据中提取的经验是非常核心的东西,毕竟搜索引擎的算法不公开,并且经常在变化.2. 各类朋友俗话说一个人的力量是有限的,团队的力量是无穷的.单纯看技术,有些人会写前

php中的性能挖掘

搞php以后,感觉总是很别扭,因为我觉得php会很慢,因为array普遍,在Key的循环查找不是很浪费性能么!因为我以前搞.net和java,他们是用的大多是寻址和索引方式,而php中太多是使用Key名称去调用值.这不是太浪费性能吗!实际上php上array确实有点浪费性能,不想我想象中的哪样不堪,在阅读PHP源码时发现,php在配对时使用了HashCode进行配对,存储时也存放了HashCode,在查找值时通过Hashcode进行配对,这大大减轻了配对成本.而在phper的角度来看,这点性能对