百度NLP中文分词词典动态更新(公测中)
所有文档

          Elasticsearch BES

          百度NLP中文分词词典动态更新(公测中)


          百度智能云Elasticsearch的NLP中文分词插件支持用户添加自定义词典干预NLP模型,从而进行分词词典动态热更新。

          用户可以根据需求,通过上传词典文件输入文本两种方式添加自定义词典。

          注意:NLP中文分词词典动态更新目前支持功能发布后新创建的7.4.2版本的实例(即2021年01月20日后创建的7.4.2版本的实例),不支持的集群请提交工单,BES团队会协助升级集群,升级方式参见ES版本升级

          使用方式

          1. 登录百度智能云Elasticsearch控制台,并点击集群名称,进入集群详情界面。
          2. 在左侧导航栏,单击插件配置

          image.png

          1. 点击“配置NLP词典”,在弹出的页面添加自定义词典。用户可以通过上传词典文件输入文本两种方式添加自定义词典。注意:词典文件最大可以
          • 通过上传文件的方式:

          image.png

          • 通过直接输入文本的方式:

          image.png

          1. 上传成功后,即完成词典更新,可以使用以下语句测试自定义词典的效果。
          POST /_analyze
          {
             "analyzer": "bd-nlp-basic",
             "text": "测试语句"
          }

          自定义词典

          词典格式说明

          1. 干预规则按行分割(\n)。
          2. 上传词典文件时,可以选择使用空格或使用TAB(\t)来进行干预规则内的词典分词;直接输入文本的方式则只能使用空格作为分隔符。
          3. 干预规则内可以使用[ ]basic模型和phrase模型同时干预。

          干预规则说明

          用户可以按照以下格式对自定义词典进行配置:

          中华    人民    共和国
          中华    [人民   共和国]
          中华
          人民
          共和国

          例如:未进行干预前,bd-nlp-basic(basic模型)和bd-nlp-phrase(phrase模型)对中华人民共和国分词的结果是:

          中华人民共和国

          干预 basic 模型分词

          干预词典:

          上下文关系的干预规则:

          中华  人民  共和国

          不带上下文关系的干预规则:

          中华
          人民
          共和国

          干预后两种力度的切词结果一样:

          {
              "tokens":[
                  {
                      "token":"中华",
                      "position":0
                  },
                  {
                      "token":"人民",
                      "position":1
                  },
                  {
                      "token":"共和国",
                      "position":2
                  }
              ]
          }

          注意:

          • 上下文关系 表示是不是切出这个词是由这个词的前后词来决定,例如用户如果将干预规则配置为:
          中华  人民  共和国

          则只会对中华人民共和国进行按照该规则进行分词,而不会对中华人民人民共和国进行分词;而如果将干预规则配置为:

          中华
          人民
          共和国

          则可以对中华人民人民共和国进行分词。

          • 干预基础粒度分词,会有一定概率影响phrase粒度分词结果,因为phrase模型是对basic结果进行智能组合,会有无法重组回原粒度切词结果的情况出现

          同时干预 basic 模型和 phrase 模型

          干预词典规则:

          中华	[人民	共和国]

          bd-nlp-basic分词结果:

          {
              "tokens":[
                  {
                      "token":"中华",
                      "position":0
                  },
                  {
                      "token":"人民",
                      "position":1
                  },
                  {
                      "token":"共和国",
                      "position":2
                  }
              ]
          }

          bd-nlp-phrase分词结果:

          {
              "tokens":[
                  {
                      "token":"中华",
                      "position":0
                  },
                  {
                      "token":"人民共和国",
                      "position":1
                  }
              ]
          }

          phrase模型会对[]内的词(basic可以分词)重组成一个词。

          利用上下文语义进行干预 basic 和 phrase 模型

          1. []内的词是对phrase模型进行干预,phrase模型会对[]内的词(basic模型可以切出来)智能组合
          2. 没有[]只会根据上下文语义对basic模型进行干预

          干预词典规则:

          云原生	[数仓	创始]

          原始文本内容:

          云原生数仓创始和数仓创始

          规则生效前:

          basic模型分词结果:

          [云原生, 数, 仓,  创始, 和, 数, 仓, 创始]

          phrase模型分词结果:

          [云原生, 数, 仓,  创始, 和, 数, 仓, 创始]

          规则生效后:

          {
              "tokens":[
                  {
                      "token":"云原生",
                      "position":0
                  },
                  {
                      "token":"数仓",
                      "position":1
                  },
                  {
                      "token":"创始",
                      "position":2
                  },
                  {
                      "token":"和",
                      "position":3
                  },
                  {
                      "token":"数",
                      "position":4
                  },
                  {
                      "token":"仓",
                      "position":5
                  },
                  {
                      "token":"创始",
                      "position":6
                  }
              ]
          }

          分词结果为:

          [云原生, 数仓,  创始, 和, 数, 仓, 创始]

          可以看到文本中第二个的数仓创始,由于不满足上下文关系(该词前面的词不是云原生),所以不会切出数仓

          nlp-bd-phrase分词结果:

          {
              "tokens":[
                  {
                      "token":"云原生",
                      "position":0
                  },
                  {
                      "token":"数仓创始",
                      "position":1
                  },
                  {
                      "token":"和",
                      "position":2
                  },
                  {
                      "token":"数",
                      "position":3
                  },
                  {
                      "token":"仓",
                      "position":4
                  },
                  {
                      "token":"创始",
                      "position":5
                  }
              ]
          }

          切词结果:

          [云原生, 数仓创始, 和, 数, 仓, 创始]

          可以看到数仓创始phrase模型智能组合为数仓创始

          说明: 云原生可以放在干预词典规则的前面和后面, 具体可以根据业务的上下文语义需求。

          注意

          • 不是所有的干预规则都会成功,会有一个模型匹配的概率问题。
          • 上传的文件用UTF-8编码,扩展名为txt
          • 上传的词典文件最大为10M
          上一篇
          百度NLP中文分词插件
          下一篇
          向量检索插件