elasticsearch ik分词--实现专有名词分词 同义词解析

背景说明

公司有涉及汽车相关业务,需要基于输入的车型信息,去匹配系统已有的车型数据。
如输入“昂克赛拉 2016款 1.5L 自动”,
系统已有数据:“马自达3 昂克赛拉 2016款 两厢 1.5L AT 运动型”、“马自达3 昂克赛拉 2016款 两厢 2.0L AT 运动型”、“马自达3 昂克赛拉 2016款 两厢 2.0L AT 旗舰型”、“马自达3 昂克赛拉 2016款 两厢 1.5L MT 运动型”…
按匹配度展示给用户

实现

由于内容中包含中文、英文、数字,采用中文分词器(ik)来进行分词处理

优化前效果(使用ik-smart分词)

示例一:
在这里插入图片描述
问题:专有名词“昂克赛拉”被解析为四个词,不识别这个专有词

示例二:
在这里插入图片描述
问题:专有名词AT,没有解析处理。 被当做停用词处理掉了

示例三:
在这里插入图片描述
问题:汽车名词中,“手动”和“MT”表达的是同一个含义。本示例中的“手动”和示例二 MT这个词,没有解析为相同的词,降低了匹配度。

优化后效果

使用自定义的analyzer (ik_car_analyzer)
在这里插入图片描述
此时,可以看到,“昂克赛拉”被解析为一个词,AT没有被当做停用词且其同义词被解析出来了

调整点

  • 更新词库,添加汽车专用名词、品牌等信息。
    修改ik分词器下的词库文件,添加所有的汽车品牌、系列名称 (./plugins/ik/config/main.dic)
  • 构建同义词。如AT=自动,MT=手动。参考资料如下:
    • https://blog.csdn.net/yusewuhen/article/details/50685685
    • https://blog.csdn.net/tianzhaixing2013/article/details/51506496
  • 修正停用词。如AT,被忽略了
    修改ik分词器插件下的停止词文件 (./plugins/ik/config/stopword.dic)
{
  "settings": {
    "analysis": {
      "analyzer": {
        "ik_car_analyzer": {
          "type":      "custom",
          "tokenizer": "ik_smart",
          "char_filter": [],
          "filter": [
            "lowercase",
            "ik_car_filter"      // 自定义过滤器
          ]
        }
      },
		"filter": {
		  "ik_car_filter": {
			"type": "synonym",   // 定义同义词
			"synonyms_path": "../plugins/ik/config/synonym.dic"
		  }
		}
    }
  }
}
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值