query归一 & 同义词挖掘

  • 定义
    Query归一和query纠错在概念上容易混淆,相较于query纠错是对存在错误的query进行纠正,query归一则主要起到对同近义表达的query进行语义归一的作用。一些用户的query组织相对来说比较冷门,和item侧(检索语料)资源的语义相同但文字表达相差较大,直接用于召回的话相关性可能会打折扣,这时如果能将这些query归一到相对热门同义或存在对应资源的query会更容易召回相关结果。
    腾讯台球 腾讯桌球
    华仔啥时候出生的?
    刘德华出生年月
    刘德华什么时候出生的
    刘德华出生日期

  • 未命中词的匹配方式

    • 归一化命中

    • 同义词命中

    • 建模词与词之间“爱”的关系

建模词与词之间『爱』的关系的一个有价值的工作是Gao Jianfeng在微软做的一个基于统计机器翻译(SMT)的一个模型,它通过SMT来计算词语之间『爱』的关系。

看一下表中的例子:

  • 如果用户Query中有vista,那么如果一个Document中,出现了Windows, download,甚至是free,都会让系统认为这个Document更相关。
  • 如果用户Query中有titanic,那么如果一个Document中,出现了ship, pictures,甚至是rose,都会让系统认为这个Document更相关。

但是,这样的建模方式有一个根本性的限制,就是相关词列表不能太大,否则模型大小会爆炸,无法实用。

  • 建模短语和词之间的“爱/恨”关系

在这三种建模方式更前进一步,我们希望能够建模词与词之间,短语与词之间『爱/恨』关系。比如Query中出现短语[C D E],那么Document中出现X的时候,系统能够认为这个Document更不相关。

  • 同义词对的数据来源

    • 中文同义词词典构建,哈工大同义词林
    • 英文同义词词典,翻译为中文后对齐
    • 预训练词向量wikipedia训练的word2vec或者腾讯AILab开源的800W Word Embedding
  • 同义语句的数据来源
    类似于关系抽取中的距离监督思路,我们可以对句子中希望提取同义词的词语(此处可以认为是实体)进行同义关系标注。标注方式可以直接使用同义词词典进行标注,也可以利用实体链接和知识图谱的同义词进行标注。

    • 挖掘同义语句

      • Neural Relation Extraction with Selective Attention over Instances
        我们直接利用关系抽取的模型去处理这样的数据,在该数据中,关系只有两种:同义和 NA 。而关系抽取任务中常见的 Baseline 是 PCNN,PCNN 及其上面的拓展都可以直接用于该数据集。

太老了,没看

  • 句法分析工具,抽取出每个句子的 Pattern,将 Pattern 分类后当做针对 Pattern 的二分类任务

  • 挖掘同义词

    • 现有知识库

      • 英文WordNet,知网HowNet,哈工大词林
      • 开源中文知识图谱(OpenKG, OwnThink等)
      • 爬虫抓取百度维基百科
    • 语义对齐替换
      可以在构造平行语料基础上通过语义对齐的方式来挖掘同义词,如利用前面介绍的二部图迭代、深度语义匹配、Seq2Seq翻译生成等query扩展方法从搜索点击弱监督行为中先挖掘出语义表达相近的query-query、item-item或query-item短语对,然后再将语义相近的query/item短语对进行语义对齐,对齐的话可以采用一些规则的方法,也可以采用传统的统计翻译模型如IBM-M2进行对齐,语义对齐后从中抽取出处于相同或相近上下文中的两个词语作为同义词对候选,然后结合一些统计特征、词语embedding相似度以及人工筛选等方式进行过滤筛选。

      • 回译
    • 上下文相关性

对于搜索场景来说,可以通过挖掘丰富的行为数据来构造平行语料,如利用搜索session行为相关语料训练无监督的word2vec、wordrank等词向量模型来衡量词语间的相似度,不过这些模型更多是学习词语间在相同上下文的共现相似,得到的相似度高的词语对不一定是同义词,有可能是同位词、上下位词甚至是反义词,此时需要通过引入监督信号或外部知识来优化词向量,如有方法提出通过构建multi-task任务在预测目标词的同时预测目标词在句子中表示的实体类型以加入实体的语义信息来提升词向量之间的语义相似性。
利用上下文相关性挖掘同义词也比较好理解,如果两个词的上下文越相似的话,那么这两个词是同义词的概率就越大。使用词向量挖掘同义词是比较常见的做法,比如使用word2vector训练得到词向量,然后再计算余弦相似度,取最相似的top k个词,就得到了同义词。有篇paper发明了弱监督的同义词挖掘模型DPE,也取得了不错的效果。

基于上下文相关性的同义词挖掘方法的优点是能够在语料中挖掘大量的同义词,缺点是训练时间长,而且挖掘的同义词很多都不是真正意义上的同义词需要人工筛选。这种方法对于词频较高的词效果较好。

  • pattern
    例如又称,又叫作等,通过语义embedding学习到语料中的这种模式

  • 文本相似度(编辑距离)
    对于这一对同义词“阿里巴巴网络技术有限公司”和“阿里巴巴网络公司”直接去计算上下文相似度可能不太有效,那一种直观的方法是直接计算这两个词的文本相似度,比如使用编辑距离(Levenshtein distance)或者 LCS(longest common subsequence),如果两个词的文本相似度大于阈值的话我们就认为他们是同义词的关系。在这里推荐一个计算文本相似度的Java开源项目,基本上文本相似度算法应有尽有。

基于文本相似度同义词挖掘方法的优点是计算简单,不同于word2vector,这种方法不需要使用很大的语料,只要这个词出现过一次就可以发现同义词关系。这种方法的缺点是有时候不太靠谱,会挖掘出很多错误的同义词,尤其是当两个词比较短的情况下,比如“周杰伦”和“周杰”,就可能会被认为是同义词。所以这种方法适用于一些较长的文本,特别是专业词汇,术语。

  • 语义贡献网络的节点相似
    语义共现网络本质是根据上下文构建的图,图中的节点是词,边是这个词的上下文相关词。对于语义共现网络的两个节点,如果这两个节点的共同邻居节点越多,说明这两个词的上下文越相似,是同义词的概率越大。例如,对于《三体》小说中的两个词“海王星”和“天王星”,在《三体》语义共现网络中,“海王星”和“天王星”的邻居节点相似度很高,则说明两个词是同义词的可能性很高。如下图所示:

  • online与offline
    线上对query进行归一时,则和离线同义词挖掘的过程相反,对query进行分词后读取线上存储的同义词表做同义词候选替换,对替换网格进行对齐生成候选query,最后通过结合语言模型概率及在当前上下文的替换概率或者构造特征训练GBDT等模型的方式对候选query进行排序得到最终的归一query


  • 解决思路
    直接利用预训练的词向量计算词语间的相似度(如余弦相似度)。
    将该问题转化为二分类问题,输入为两个词的词向量,输出为是否是同义词 {0, 1}
    上述思路效果一般,主要因为这样预训练的词向量不能准确捕捉同义关系,事实上诸如 Word2vec 这样类型的词向量捕捉到的是同位关系(包括同义、同类等)。这就导致利用词向量相似来判断的结果只能保证较高的召回率,很难保证精确率。而用简单的分类思路去做,也会因为数据量的不足导致分类效果不够好。

    • 在词表相对封闭集的情况下(训练集和测试集的词表接近)

主要用于跨语言动词词表对齐,基本思路是微调预训练的词向量,进而拉近同义词对的距离,拉远临近非同义词对的距离,同时加上正则项保证调整的幅度

Cross-Lingual Induction and Transfer of Verb Classes Based on Word Vector Space Specialisation

html

paper

Using pseudo-senses for improving the extraction of synonyms from word embeddings

这篇工作损失函数和上篇工作相同,但是直接提出这个损失函数的设计不仅能用于跨语言词表对齐,还能在不使用外部知识的前提下,引入词向量中的同义关系。

但是,当在开放域中抽取同义词时,如果仅有少量的同义词对数据,还是基本不可能达到较好的效果的。

- 引入反义词对加入训练,扩大反义词的距离,减小同义词的距离,来弥补模型在预测同义词的时候对反义词不能很好地区分

  • skip-gram修改为multi-mask两项任务,一项用于预测目标词所在句子中的各个实体类型,另一项用于词本身的预测,如此加入了实体的语义信息Hierarchical Multi-Task Word Embedding Learning.md
    为同义词挖掘这个任务获得更好的预训练词向量。熟悉Skip-gram等词向量训练方法的同学应该都知道,这种方式的本事其实是利用一个有限长度的滑动窗口去获得某个词的表示,这是一个反向映射的过程,而这个过程本身与语义无关。当数据量足够大的时候,我们可能恰巧得到了一个词的同义词,但是更多的时候,我们只能说两个词在语义上比较“相关”,比如“感冒”和“发烧”在医疗领域高频共现,简单的词向量求相似其实难以发现它们的区别。本文就是在Skip-gram的基础上加以改进,以试图加入更多语义相关的信息:
    html

  • 进一步挖掘数据本身
    拓展了字级别、词级别,以及医疗实体在电子病历中的共现特征来增强词向量的预训练过程。同样,作者也会在最后使用一个排序模块来增强整个系统的健壮性。主要特点是:没有原始语料,只有term和term在一定窗口内共现的词频统计图。SurfCon: Synonym Discovery on Privacy-Aware Clinical Data.md

    github
    html

  • 增强对知识图谱中已有同义词数据集的利用—entity synonym set,作者意在利用库中众多的同义词簇的整体分布,来评估实体词是否属于某一同义词簇Mining Entity Synonyms with Efficient Neural Set Generation.md

通过现有的同义词对和词表,构建正负样本训练一个分类器,来判别词表中的词是否能加入某一条同义词
github
html

  • DPE模型Automatic Synonym Discovery with Knowledge Bases.md
    首先,句子模式方法非常耗时,因为要为每一对词语遍历所有共同出现的句子,为了加速这个过程,DPE先用上下文分布的方式对所有备选同义词排序,得到前几名概率较高的备选词,然后用两种方法对备选词再排序,最后得到topk认为组成同义词对。
    github C++代码,无python,基于wiki-freebase

  • DNN
    百度如何通过DNN模型来建模短语与词之间的『爱/恨』关系

该DNN模型初版结构如上图所示,输入是Query中的Term和Document的Title中的Term,最终输出是对这个Query和Title对的语义相关性预测值。其中 S*|V|的Looking up Table是word embedding层。

该DNN模型的训练是通过同一个Query下有点击和无点击的title构成Pair来进行Pairwise loss的训练的。这样构建训练样本的好处(比如相对DSSM来说),它能够在原有百度很好的页面相关性的基础上进一步捕获微妙的语义差别,让模型来专注于语义的差别。

如果Query和Document1都完全相同是『三岁小孩感冒怎么办』的时候,DNN的预测分数是-15;如果我们在Document1后面加『宝宝树』,预测得分立刻大幅提高了(升到-13),虽然『宝宝树』这个词没有出现在Query中,但是DNN模型认为这个词和query其他部分是有语义相关关系的,所以给出了正向的贡献(『爱』)。如果我们在Document1后面加了『搜房网』,预测得分立刻下降了(降到-15.8),因为DNN模型认为这个『搜房网』的出现和query其他部分语义更不相关,所以给出了负向的贡献(『恨』)。这个例子中,其实D2、D3和D1的区别都是增加了一个和Query没关系的Term,在传统的Information Retrieval中是一定会给D2,D3一样的相关性得分,而区别不出两者的差异。
后面两个例子类似,DNN能够区分『宝宝』和『小宝宝』类似,而和『狗宝宝』语义不相关。『励志格言』与『格言』类似,而『幼儿教师』和『幼儿』语义不相关。

query归一 同义词挖掘相关推荐

  1. elasticSearch 在query时候同义词配置以及使用

    一.同义词简介 在我们的很多情况下,我们希望在搜索时,有时能够使用一个词的同义词来进行搜索,这样我们能搜索出来更多相关的内容.我们可以通过 text analysis 来帮助我们形成同义词.文本分析通 ...

  2. Query的时效性挖掘

    Query时效性挖掘 时效性Query          时效性Query是指的是Query具有时间分布特征,与时间具有周期行或者其他规律行的关系.比如:Query:高考题目,不同年份的用户在输入这个 ...

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

    用户在使用搜索引擎过程中,由于表述不清晰或者查询词与索引库描述不一致,为了能召回更多更优质的结果展示给用户.这时就需要对用户查询进行分析,包括词权.同义词.纠错等技术,对原查询进行处理.通常搜索引擎中 ...

  4. 搜索中的 Query 理解及应用

    文章作者:Joelchen 腾讯 研究员 编辑整理:Hoh 内容来源:腾讯技术工程 出品平台:DataFunTalk 注:转载请联系原作者. 导读:Query 理解 ( QU,Query Unders ...

  5. 搜索-Query Understanding (QU)

    往简单来讲,用户输入了搜索词,系统通过搜索词找到与搜索词相关的商品集合,系统通过用户及商品的情况进行排序,最终展现给用户. 0.找不到 但是在构建搜索系统的初期总是无法精准地帮助用户找到想要的商品主要 ...

  6. 计算广告(4)----query意图识别

    目录: 一.简介: 1.用户意图识别概念 2.用户意图识别难点 3.用户意图识别分类 4.意图识别方法: (1)基于规则 (2)基于穷举 (3)基于分类模型 二.意图识别具体做法: 1.数据集 2.数 ...

  7. 电商搜索全链路(PART II)Query理解

    作者 | kaiyuan 整理 | NewBeeNLP 大家好,我是kaiyuan.电商搜索全链路系列文章们躺在我的草稿箱里已经N久了,上一篇整理还是在上次,错过的小伙伴点击传送门:电商搜索全链路(P ...

  8. 知乎搜索框背后的Query理解和语义召回技术

    一只小狐狸带你解锁 炼丹术&NLP 秘籍 前言 随着用户规模和产品的发展, 知乎搜索面临着越来越大的 query 长尾化挑战,query 理解是提升搜索召回质量的关键.本次分享将介绍知乎搜索在 ...

  9. 搜索-Query理解(全)

    Query 模块: 纠错 分词 紧密度 同义词 词权重 实体词识别 意图识别 长尾 query 的多样性对于搜索系统来说是一个很大的挑战,原因有: ❶ 存在输入错误.例如上图中的错误 query &q ...

  10. 腾讯信息流热点挖掘技术实践

    分享嘉宾:罗锦文 腾讯 研究员 编辑整理:Jane Zhang 出品平台:DataFunTalk 导读:当前各大资讯社交类APP都在显著的版面展示或者推荐热点相关内容,信息流应用能否快速发现热点.引导 ...

最新文章

  1. 可怕!Facebook竟能识别出性工作者!你怎么看?
  2. Microsoft 的 OpenSource Licence
  3. C#中Socket多线程编程实例
  4. hdu1054 简单最小顶点覆盖
  5. 欧加自贸协定“难产” 物联网安全受关注
  6. 2019年第十届蓝桥杯 - 省赛 - C/C++大学C组 - F. 旋转
  7. Python之isinstance
  8. nvm 下载node 下载不下来_挑战不可能最新版手游下载_挑战不可能最新版安卓版下载...
  9. Win11右键菜单切回经典模式
  10. 用C/C++编程技术教你制作彩票随机程序
  11. c语言编程思想pdf,C 编程思想(PDF)
  12. 微信小程序设置为体验版需要打开调试模式
  13. JS显示和隐藏div
  14. “机智歌王”--沙鸥,大陆的的张帝
  15. Excel表格垂直居中后还是不在单元格中间(探究原因贴)
  16. 手把手教你搭建LAMP环境,运行第一个属于你的个人网站
  17. Python----第十次作业
  18. 新手玩转unwallet攻略
  19. 公共WIFI短信认证功能的实现原理
  20. 关于Unity绑定手机

热门文章

  1. SpringBoot整合集成p6spy
  2. js生成java uuid_javascript 生成UUID
  3. VBA之正则表达式(30)-- 提取机构代码
  4. ImportError: Missing required dependencies [‘pytz‘]
  5. 【C++】关于strlen函数使用的坑(与socket sendto函数配合使用)
  6. OpenSSL解析X509证书
  7. 51单片机指令汇集,分类,以及典型指令案例分析
  8. (详解)----冒泡排序---(图解)
  9. 用musescore做吉他弹唱谱
  10. matlab中采样点是什么意思,各种采样含义