上云无忧 > 文档中心 > 百度智能云Elasticsearch - IK中文分词插件与动态更新词典
Elasticsearch
百度智能云Elasticsearch - IK中文分词插件与动态更新词典

文档简介:
IK中文分词插件(英文名为analysis-ik)是百度智能云Elasticsearch默认安装的中文分词插件。 本文介绍了IK 中文分词插件的使用方法和动态更新IK词典的方法。
*此产品及展示信息均由百度智能云官方提供。免费试用 咨询热线:400-826-7010,为您提供专业的售前咨询,让您快速了解云产品,助您轻松上云! 微信咨询
  免费试用、价格特惠

IK中文分词插件(英文名为analysis-ik)是百度智能云Elasticsearch默认安装的中文分词插件。

本文介绍了IK 中文分词插件的使用方法动态更新IK词典的方法。

使用方法

分词粒度

analysis-ik主要提供两种粒度的Analyzer:

  1. ik_max_word:会将文本做最细粒度的拆分;尽可能多的拆分出词语
  2. ik_smart:会做最粗粒度的拆分;已被分出的词语将不会再次被其它词语占有

同名提供两种Tokenizer:

  1. ik_max_word
  2. ik_smart

切词效果

ik_max_word的切词效果如下:

POST /_analyze
{
  "analyzer": "ik_max_word",
  "text":     "百度校园夏令营"
}
{
   "tokens": [
      {
         "token": "百度",
         "start_offset": 0,
         "end_offset": 2,
         "type": "CN_WORD",
         "position": 0
      },
      {
         "token": "百",
         "start_offset": 0,
         "end_offset": 1,
         "type": "TYPE_CNUM",
         "position": 1
      },
      {
         "token": "度",
         "start_offset": 1,
         "end_offset": 2,
         "type": "COUNT",
         "position": 2
      },
      {
         "token": "校园",
         "start_offset": 2,
         "end_offset": 4,
         "type": "CN_WORD",
         "position": 3
      },
      {
         "token": "夏令营",
         "start_offset": 4,
         "end_offset": 7,
         "type": "CN_WORD",
         "position": 4
      },
      {
         "token": "夏令",
         "start_offset": 4,
         "end_offset": 6,
         "type": "CN_WORD",
         "position": 5
      },
      {
         "token": "夏",
         "start_offset": 4,
         "end_offset": 5,
         "type": "CN_WORD",
         "position": 6
      },
      {
         "token": "令",
         "start_offset": 5,
         "end_offset": 6,
         "type": "CN_CHAR",
         "position": 7
      },
      {
         "token": "营",
         "start_offset": 6,
         "end_offset": 7,
         "type": "CN_CHAR",
         "position": 8
      }
   ]
}

ik_smart的切词效果如下:

POST /_analyze
{
  "analyzer": "ik_smart",
  "text":     "百度校园夏令营"
}
{
   "tokens": [
      {
         "token": "百度",
         "start_offset": 0,
         "end_offset": 2,
         "type": "CN_WORD",
         "position": 0
      },
      {
         "token": "校园",
         "start_offset": 2,
         "end_offset": 4,
         "type": "CN_WORD",
         "position": 1
      },
      {
         "token": "夏令营",
         "start_offset": 4,
         "end_offset": 7,
         "type": "CN_WORD",
         "position": 2
      }
   ]
}

动态更新词典

配置词典

当IK自身带的词库不满足需求时,用户可以自定义词典。步骤如下:

  1. 把编辑好的词典放到一个http服务器上,可以选择以下两种方案。
  • 用户可以把词典文件上传到BOS,并获取链接地址。需要注意的是,务必保证Elasticsearch所在地区与BOS Bucket的地区相同,否则无法访问词典。

1.建议将词典文件的访问权限设置为公共读,确保链接地址永久有效,且不会发生变化。

2.若不设置为公共读,则需要按业务需求修改BOS链接的有效时间,如需永久有效,可将有效时间设为-1。注意,链接有效期过后或词典文件如果发生修改(删除后重新上传),链接地址会发生变化,此时需要重新在ES中配置链接地址。

  • 用户也可以自行部署http服务器,将词库放在服务器上。需要注意的是,务必保证Elasticsearch所在节点能够访问该http服务,否则无法下载安装。
  1. 在Elasticsearch里配置ik词库的http地址,比如自定义词库的配置文件是baidu.dict,停用词的配置文件是baidu_stop.dic时,向Elasticsearch发送的命令如下:
PUT /_cluster/settings
{
    "persistent": {
        "bpack.ik_analyzer.remote_ext_dict":"http://ip:port/baidu.dic",
        "bpack.ik_analyzer.remote_ext_stopwords":"http://ip:port/baidu_stop.dic"
    }
}
  • Elasticsearch会每隔60s检测一下setting中http url指向的词库文件是否发生变化,如果变化了,那么es就会自动下载这个文件,然后加载到ik中。

验证词库是否生效

当配置好后,用户可以通过POST /_analyze 来检测词库是否生效,比如:

  • 在没有配置词库之前,分词效果为:
POST /_analyze
{
  "analyzer" : "ik_smart",
  "text" : ["赵小明明真帅"]
}

Elasticsearch的返回结果是:

{
	   "tokens": [
	      {
	         "token": "赵",
	         "start_offset": 0,
	         "end_offset": 1,
	         "type": "CN_WORD",
	         "position": 0
	      },
	      {
	         "token": "小明",
	         "start_offset": 1,
	         "end_offset": 3,
	         "type": "CN_WORD",
	         "position": 1
	      },
	      {
	         "token": "明",
	         "start_offset": 3,
	         "end_offset": 4,
	         "type": "CN_WORD",
	         "position": 2
	      },
	      {
	         "token": "真帅",
	         "start_offset": 4,
	         "end_offset": 6,
	         "type": "CN_WORD",
	         "position": 3
	      }
	   ]
	}
  • 然后配置自定义词典,其中正常词库里只包含 "赵小明明", 停用词词库中包含 "真帅",配置完之后,再次调用 POST /_analyze,结果如下:
{
   "tokens": [
      {
         "token": "赵小明明",
         "start_offset": 0,
         "end_offset": 4,
         "type": "CN_WORD",
         "position": 0
      }
   ]
}

结果显示, “赵小明明” 被当做一个单独的词,而 "真帅" 由于是停用词所以没有被分词。

相似文档
  • analysis-pinyin拼音分词插件是百度智能云Elasticsearch默认安装的分词插件。 使用方法: 创建索引并使用自定义拼音分析器:
  • 简介: Elasticsearch的ingest attachment插件可以将常用格式的文件作为附件写入Index。ingest attachment插件通过使用Apache Tika来提取文件,支持的文件格式有TXT、DOC、PPT、XLS和PDF等。 注意:源字段必须是base64编码的二进制。
  • 背景: 词干提取是通过简化他们的词根形式来扩大搜索的范围,同义词通过相关的观念和概念来扩大搜索范围。 也许没有文档匹配查询 “英国女王“ ,但是包含 “英国君主” 的文档可能会被认为是很好的匹配。用户搜索 “美国” 并且期望找到包含 美利坚合众国 、 美国 、 美洲 、或者 USA 的文档。
  • 插件介绍: 简繁体转换插件可以帮助用户完成简体中文与繁体中文的转换。用户可以通过该插件的转换功能,使用中文繁体关键字搜索出包含对应中文简体的索引数据,同样也可以使用中文简体关键字搜索出包含对应中文繁体的索引数据。
  • 当用户需要使用自研插件或百度智能云Elasticsearch默认插件中不包含的开源插件时,可通过百度智能云Elasticsearch的自定义插件上传与安装功能,安装并使用插件。本文介绍具体的操作方法。
官方微信
联系客服
400-826-7010
7x24小时客服热线
分享
  • QQ好友
  • QQ空间
  • 微信
  • 微博
返回顶部