全部产品
Search
文档中心

智能开放搜索 OpenSearch:同义词干预词典

更新时间:Dec 06, 2023

业务场景不一样,某些词的同义词也会有所差异,会存在系统内置词典缺少同义词或者提供了错误的同义词。因此,提供了干预功能,供用户自定义同义词。

通过创建同义词干预词典,并在查询分析中同义词配置相应的干预词典,就可以干预同义词功能。

使用介绍

目前支持对系统内置的同义词词典进行人工干预(同义词干预词典主要是在”查询分析——同义词”中的系统内置词典功能基础上再进行追加),用户实现干预操作的过程通常有以下四步:

  1. 创建同义词干预词典。用户通过搜索算法中心-->召回配置--->词典管理,进入查询分析干预词典页后,单击页面右上角的“创建”。选择了词典类型后,为词典命名,干预词典创建完成,词典会出现在页面的词典列表中。

  2. 新增和管理干预词典内的干预词条。词典创建完成后,在列表中单击词典名称或单击词典对应的“词条管理”,即可进入到干预词典的详情页。用户可在详情页内进行干预词条的新增和管理。

用户可对Query进行两种类型的干预:

  • 添加同义词:对一个Query添加同义词,系统在查询Query时会同时返回包含Query的或添加的同义词的搜索结果。

  • 屏蔽同义词:对一个Query屏蔽已有的同义词,系统在查询Query时不再会同时返回包含屏蔽的已有的同义词的搜索结果。

    1. 使用干预词典。创建并填充完成同义词干预词典后,可在任意应用的查询规则内选择使用。

    2. 干预词典效果测试和上线。查询分析规则使用了干预词典后,在应用到线上前建议先进行搜索效果测试,评估效果是否符合干预预期。

干预词条生效规则

  • 查询词中的一个或连续多个(最多5个)不包含停用词的语义term和干预词条中的query相同,则会干预生效;

  • 同义词干预生效示例:query为:迪奥aj联名低帮鞋子,配置的干预词条为:迪奥->dioraj->air jordan联名->合作,最终三个同义词干预均会生效。可以命中:dior aj 联名低帮鞋子、dior air jordan 联名低帮鞋子、dior aj 合作低帮鞋子、dior air jordan 合作低帮鞋子等8个query的结果。

  • 查询词中匹配权重靠前的干预词条优先生效;例如:配置的干预词条为:咽喉炎 -> 咽炎,扁挑体炎,上火,喉咙痛,喉咙红肿低烧 -> 发烧、发热,体温高药 -> 中药,西药,中成药。query为:咽喉炎低烧吃什么药好得快,假如咽喉炎和药的权重是7,低烧的权重是4;那么最后保留下来的同义词是咽喉炎 -> 咽炎,扁挑体炎,上火,喉咙痛,喉咙红肿 药 -> 中药,西药,中成药

  • 查询词中匹配权重相同时,位置靠前的干预词条优先生效;例如:干预词条苹果手机->iphone, 手机充电器->移动电源,query: 苹果手机充电器,最终生效的同义词干预为苹果手机->iphone

  • 查询词中匹配位置相同时,干预词条的长度(语义term个数)优先,即优先使用语义term个数多的干预词条;例如:干预词条手机充电器-> 移动电源, 手机->移动电话 , query: 手机充电器哪个牌子好,最终生效的同义词干预为手机充电器 -> 移动电源

  • 用户干预的优先,即如果系统的同义词和用户干预的有冲突,保留用户干预的。冲突指用户干预的部分包含或者被包含在系统出的同义词的语义term范围(指位置)内。如下:

    • 用户干预的范围包含系统的范围。假设系统有同义词:包菜 -> 圆白菜,查询词:炒包菜 会被扩展为:炒 AND (包菜 OR 圆白菜);如果用户添加同义词:炒包菜 -> 炒甘蓝,那么就会被扩展为:炒包菜 OR 炒甘蓝。 即圆白菜这个系统的同义词被忽略;

    • 用户干预范围被包含于系统范围内。假设系统有同义词:苹果手机 -> iphone,那么查询词:苹果手机会给扩展为苹果手机 OR iphone;如果用户添加同义词:手机->移动电话, 那么会被扩展为苹果 AND (手机 OR 移动电话)。

注意

  • 同义词的个数由最终生成的query group数来限制(当前是36个)。

实战演练

业务场景:业务场景:某电商导购类业务在OpenSearch的应用实例中配置使用了查询分析规则,规则包含同义词功能,但是在线上发现了badcase,于是决定使用干预功能。

badcase:用户搜索Query“apple”发现相关商品没有返回,但实际数据库内有相关商品的数据,不过商品的描述都用了其同义词“苹果”。

问题诊断:系统同义词词典缺失“苹果”是”apple“的同义词识别。

解决方案:新建同义词干预词典,在词典中干预Query“apple”,为其添加同义词“苹果”,将该同义词干预词典应用在线上使用的查询分析规则中。

操作步骤

  1. 在控制台>搜索算法中心>召回配置>词典管理创建同义词词典:

image

填写“名称”,词典类型选择“同义词”2

2.在新建的同义词干预词典里新增干预词条,Query栏填写“apple”,添加同义词栏填写“苹果”:

3

3.在查询分析界面把刚刚创建的“同义词干预词典”先应用在一个未上线的查询分析规则中,以便进行搜索效果测试:

4

4.搜索测试是否符合预期效果。发现搜索结果召回了包含“苹果”或“apple”的结果,符合预期:

5

注意事项

  • 词典类型和名称在创建后均不可修改。

  • 新增干预词条时,填写的Query不应与干预列表内已干预过的Query重复。历史干预过的Query可在列表内直接对增加和屏蔽的同义词进行增、删、改。

  • 单个Query下添加或屏蔽多个同义词,每个词之间用;分隔。

  • 新增或修改干预词条后,生效状态如果持续是“正在生效”,可以单击刷新按钮获取生效状态的同步。

  • 同一干预词典可以被多个查询分析规则使用。

  • 由于目前的干预词典是基于系统内置词典的补丁式干预,所以词典使用时会默认勾选使用系统内置词典。

  • 被任一查询规则(不论是否上线)使用的干预词典不能被删除,想要删除需要首先解除使用。

功能限制

  • 同义词干预词典一共可以创建20个。

  • 每次新增同义词干预词条时,Query只支持填写一个,同一Query下添加和屏蔽的同义词总和应≤5条。

  • 每个同义词干预词典最多可创建1000个干预词条。

  • 同义词干预词条按照分词后的term进行匹配生效。例如,为Query“北京”添加了同义词“帝都”,那么查询“北京”会返回包含“北京”或“帝都”的结果,同时查询“北京欢迎你”,返回包含“北京欢迎你”或“帝都欢迎你”的结果。

  • 添加的干预内容均会进行大小写和全半角归一化处理,其中大写字母会归一化为小写,全角会归一化为半角。

  • 相关SDK参考:PushInterventionDictionaryEntries - 接收干预词条变更

  • 批量添加同义词干预词条时,json格式参考下例:

[{"cmd":"add","word":"hey","alias":["hei","hei2"],"antiAlias":["hi"]}]

若是老用户使用旧控制台,批量上传则参考下面的格式:

[{"cmd":"add","word":"hey","alias":["hei","hei2"],"anti_alias":["hi"]}]