elasticsearch-analysis-hanlp中文分词器的一点心得

栏目: IT技术 · 发布时间: 5年前

内容简介:在搜索项目中,对于中文语境必须选择一个中文分词器,目前选择的是hanlp,选择它来源于官方介绍:HanLP希望兼顾学术界的精准与工业界的效率,在两者之间取一个平衡,真正将自然语言处理普及到生产环境中去。1:英语因为有空格分隔,而中文如果不分词,基本上每个单词都会被拆分,这是分词的难点。

在搜索项目中,对于中文语境必须选择一个中文分词器,目前选择的是hanlp,选择它来源于官方介绍:

HanLP希望兼顾学术界的精准与工业界的效率,在两者之间取一个平衡,真正将自然语言处理普及到生产环境中去。

1:英语因为有空格分隔,而中文如果不分词,基本上每个单词都会被拆分,这是分词的难点。

我们不是搞学术研究的(也不会),所以拿来应用是最重要的,但能多了解一点原理,对于应用会有帮助。

2:可以通过手动和远程更新自定义词典,但对于我们手动更新就足够了,但如果参数配置不符合规则,不会成功加载词典,而且也不报错,折腾了好一会,所以要好好看文档。

如果不想折腾,核心词典就足够使用了,自定义词典是比较大的。

另外如果配置参数有误,会自动杀死elasticsearch,今天就遇到了。

安装新的插件,需要重新启动elasticsearch,为避免影响线上,专门起了个节点,而且后续有硬盘了,需要单独存储。

3:注意,自定义词典添加新词(比如西五街),以前索引的文档需要 重新 构建索引(分词),所以没有太大的需求,轻易不要添加自定义词。

4:自定义分词配置

如果没有特殊需求,轻易不要动,但如果了解,能更好的使用。

1)是否识别中国人名

enable_name_recognize 默认开启,如果不开启,”张朝阳是sohu公司总裁”就分不出“张朝阳”这个词了。而**这样的核心词,默认就会分词。

2) 是否加载用户自定义词典

enable_custom_dictionary默认开启,比如OrganizationName.txt中包含“BBC报道小组”,则能分词出来;否则会分词出(bbc,报道,小组)

3)日本名识别

enable_japanese_name_recognize 默认是关闭的,不代表日本人名分词

PUT testy
{
  "settings": {
    "analysis": {
      "analyzer": {
        "my_hanlp_analyzer": {
          "tokenizer": "my_hanlp"
        }
      },
      "tokenizer": {
        "my_hanlp": {
          "type": "hanlp",

          "enable_custom_config": true,
          "enable_name_recognize":true,
          "enable_organization_recognize":true,
          "enable_japanese_name_recognize":true
        }
      }
    }
  }
}

GET _analyze
{
  "text": "波多野结衣 BBC报道小组",
  "analyzer": "my_hanlp_analyzer"
}

4)地名识别,机构名识别

  • enable_place_recognize,place目录

  • enable_organization_recognize,organization目录

默认都是关闭的,因为大部分词在核心词、自定义词典中都有,同时里面的词很多也不是机构名和地名。

5) 是否识别数字和量词

enable_number_quantifier_recognize默认应该是开启的,但不知道如何测试

6)繁体识别

enable_traditional_chinese_mode默认是关闭的,建议开启。

POST testy/_analyze
{
  "text": "中華人民共和國",
  "analyzer": "my_hanlp_analyzer"
}

5:分词

同义词、词根、拼写错误,多语言,拼音这些都是分词要解决的,而算分不是分词解决的。

自己也感受了下,分词结合算分不是那么好理解的,可能需要不断的调试和感知。


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Unity 3D脚本编程

Unity 3D脚本编程

陈嘉栋 / 电子工业出版社 / 2016-9-1 / 79

《Unity 3D脚本编程——使用C#语言开发跨平台游戏》以Unity 3D 的跨平台基础Mono,以及其游戏脚本语言C#为基础进行讲解。全面系统地剖析了Unity 3D 的跨平台原理以及游戏脚本开发的特点。 第1 章主要介绍了Unity 3D 引擎的历史以及编辑器的基本知识;第2 章主要介绍了Mono,以及Unity3D 利用Mono 实现跨平台的原理,并且分析了C#语言为什么更适合Uni......一起来看看 《Unity 3D脚本编程》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

URL 编码/解码
URL 编码/解码

URL 编码/解码