Elasticsearch
多语言及中文分词与检索
自然语言与查询Recall
- 当处理人类自 然语言时,有些情况,尽管搜索和原文不完全匹配,但是希望搜到- -些内容 
  - Quick brown fox和fast brown fox / Jumping fox和Jumped foxes
 
- 一些可采取的优化 
  - 归一化词元:清除变音符号,如role的时候也会匹配role
- 抽取词根:清除单复数和时态的差异
- 包含同义词
- 拼写错误:拼写错误,或者同音异形词
 
混合多语言的挑战
-  一些具体的多语言场景 - 不同的索引使用不同的语言/同一个索引中,不同的字段使用不同的语言/ -个
 文档的一个字段内混合不同的语言
 
- 不同的索引使用不同的语言/同一个索引中,不同的字段使用不同的语言/ -个
-  混合语言存在的一些挑战 - 词干提取: 以色列文档,包含了希伯来语,阿拉伯语,俄语和英文
- 不正确的文档频率-英文为主的文章中,德文算分高(稀有)
- 需要判断用户搜索时使用的语言,语言识别(Compact Language Detector) 
    - 例如,根据语言,查询不同的索引
 
 
分词的挑战
- 英文分词: You’re 分成一个还是多个? Half. -baked
- 中文分词 
  - 分词标准:哈工大标准中,姓和名分开。HanLP 是在一起的。具体情况需制定不
 同的标准
- 歧义(组合型歧义,交集型歧义,真歧义) 
    - 中华人民共和国/美国会通过对台售武法案/上海仁和服装厂
 
 
- 分词标准:哈工大标准中,姓和名分开。HanLP 是在一起的。具体情况需制定不
中文分词方法的演变一字典法
-  查字典一 最容易想到的分词方法(北京航空大学的梁南元教授提 出) - 一个句子从左到右扫描一-遍。遇到有的词就标示出来。找到复合词,就找最长的
- 不认识的字串就分割成单字词
 
-  最小词数的分词理论 -哈工大王晓龙博士把查字典的方法理论化 - 一句话应该分成数量最少的词串
- 遇到二义性的分割, 无能为力(例如:“ 发展中国家”/“上海大学城书店”)
- 用各种文化规则来解决二义性, 都并不成功
 
中文分词方法的演变一基于统计法的机器学习算法
-  统计语言模型- 1990年前后,清华大学电子工程系郭进博士 - 解决了二义性问题,将中文分词的错误率降低了一个数量级。概率问题,动态规划+利用维特比算
 法快速找到最佳分词
 
- 解决了二义性问题,将中文分词的错误率降低了一个数量级。概率问题,动态规划+利用维特比算
-  基于统计的机器学习算法 -  这类 目前常用的是算法是HMM、CRF、SVM、深度学习等算法。比如Hanlp分词工具是基于CRF 
 算法以CRF为例,基本思路是对汉字进行标注训练,不仅考虑了词语出现的频率,还考虑上下文,
 具备较好的学习能力,因此其对歧义词和未登录词的识别都具有良好的效果。
-  随着深度学习的兴起,也出现了基于神经网络的分词器,有人尝试使用双向L STM+CRF实现分词器, 
 其本质_上是序列标注,据报道其分词器字符准确率可高达97.5%
 
-  
中文分词器现状
-  中文分词器以统计语言 模型为基础,经过几十年的发展,今天基本已经可以看作是一个 
 已经解决的问题
-  不同分词器的好坏, 主要的差别在于数据的使用和工程使用的精度 
-  常见的分词器都是使用机器学习算法和词典相结合,-方面能够提高分词准确率,另- 
 方面能够改善领域适应性。
一些中文分词器
-  HanLP 一面向生产环境的自然语言处理工具包 - http://hanlp.com/
- https:/ /qithub.com/KennFalcon/ elasticsearch- -analysis- hanlp
 
-  IK 分词器 - https:/ /github.com/ medcl/elasticsearch- analysis-ik
 
HanL P Analysis
- HanL P 
  - ./elasticsearch-plugin install https:/ /github.com/KennFalcon/ elasticsearch-analysis-
 hanlp/ releases/download/v7.1.0/elasticsearch-analysis-hanlp-7.1.0.zip
 
- ./elasticsearch-plugin install https:/ /github.com/KennFalcon/ elasticsearch-analysis-

IK Analysis
-  HanL.P. - ./elasticsearch-plugin install https:/ /github.com/medcl/elasticsearch- -analysis-
 ik/releases/ download/v7.1.0/elasticsearch- analysis- -ik-7.1.0.zip
 
- ./elasticsearch-plugin install https:/ /github.com/medcl/elasticsearch- -analysis-
-  特性 - 支持字典热更新
 

Pinyin Analysis
- Pinyin 
  - ./elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-
 pinyin/ releases/ download/v7.1.0/ elasticsearch-analysis-pinyin-7.1.0.zip
 
- ./elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-

中文分词Demo
-  使用不同的分词器测试效果 
 索引时,尽量切分的短,查询的时候,尽量用长的词
-  拼音分词器. 
API
POST tmdb/_search
{
"_source": ["title","overview"],
 "query": {
   "match_all": {}
 }
}
POST tmdb/_search
{
  "_source": ["title","overview"],
  "query": {
    "multi_match": {
      "query": "basketball with cartoon aliens",
      "fields": ["title","overview"]
    }
  },
  "highlight" : {
        "fields" : {
            "overview" : { "pre_tags" : ["\\033[0;32;40m"], "post_tags" : ["\\033[0m"] },
            "title" : { "pre_tags" : ["\\033[0;32;40m"], "post_tags" : ["\\033[0m"] }
        }
    }
}
知识点回顾
- 多 语言搜索的挑战 
  - 分词 /语言检测/相关性算分
 
- Elasticsearch中,多语言搜索所使用的一些技巧 
  - 归一化词元 /单词词根抽取/同义词/拼写错误
 
- 中文分词的演进及一些 ES中文分词器&拼音分词器介绍










