本文地址,需转载请注明出处:

http://blog.csdn.net/hereiskxm/article/details/47441911
当我们使用中文分词器的时候,其实也希望它能够支持对于英文的分词。试想,任何一个存储文字的字段都有可能是中英文夹杂的。
我们的项目中使用IKAnalyzer作为中文分词器,它在处理文档过程中遇到英文时,利用空格和标点将英文单词取出来,同时也会对其转全小写处理。其实这和真正的英文分词已经很接近了,只有一墙之隔:词干提取。一个真正的英文分词器除了分割提取单词和全小写处理以外,还会把单词回溯成词根。
比如说有一个句子:
I like cats!
它的正确分词为:
[i, like, cat]
词根化是一个英文分词器需要具备的功能。IKAnalyzer正是缺少了这点,它对例句的处理结果会是:[i, like, cats],这显然不是我们想要的:我们希望用 “cat” 和“cats” 都能搜索出这个句子,而不是非得用“cats” 才能搜到。

分析一下analyzer的内部逻辑:
Analyzer 的内部就是一条流水线 Step 1 字符过滤(Character filter) Step 2 分词 (Tokenization) Step 3 Token 过滤(Token filtering) ElasticSearch:为中文分词器增加对英文的支持(让中文分词器可以处理中英文混合文档)
Elasticsearch 已经默认构造了 8个 Analyzer。若无法满足我们的需求,可以通过「Setting API」构造 Analyzer。
通过构造analyzer,我们可以对IK中文分词器做一些修改,让它实现回溯词根。

{"settings": {"analysis": {"analyzer": {"optimizeIK": {"type": "custom","tokenizer": "ik","filter": ["stemmer"]}}}}
}

我们新建了一个分析器,它使用ik作为分词器,使用stemmer作为过滤器。stemmer是elasticsearch自带的一个提取词干的算法,类似的还有snowball,都支持多种语言,有兴趣可以作比较。它将在ik对文档完成分词之后,将其中的英文单词做提取词干处理。
测试一下:

  -POST   {index_name}/_analyze?pretty&analyzer=optimizeIK

“I like cats”
返回结果:
{ “tokens”: [ { “token”: “i”, “start_offset”: 1, “end_offset”: 2, “type”: “ENGLISH”, “position”: 1 }, { “token”: “like”, “start_offset”: 3, “end_offset”: 7, “type”: “ENGLISH”, “position”: 2 }, { “token”: “cat”, “start_offset”: 8, “end_offset”: 12, “type”: “ENGLISH”, “position”: 3 } ] }

至此,optimizeIK分析器同时拥有了中文+外文分词的功能。
如果你想把这个分析器设成该index的默认分析器,给它的命名叫default即可。

ElasticSearch:为中文分词器增加对英文的支持(让中文分词器可以处理中英文混合文档)(转)相关推荐

  1. elasticsearch 处理中英文混合文档

    我们在学习es过程中,难免会遇到一些们在学习es过程中,难免会遇到一些中国英文混合文档 这时我们如果使用ik ,虽然可以把英文分词,但是处理不了停用词(and ,is这种的),还有无法提取主干信息 比 ...

  2. ElasticSearch:为中文分词器增加对英文的支持(让中文分词器可以处理中英文混合文档)

    本文地址,需转载请注明出处: http://blog.csdn.net/hereiskxm/article/details/47441911 当我们使用中文分词器的时候,其实也希望它能够支持对于英文的 ...

  3. java中判断字符串实际长度(中文2个字符,英文1个字符)的方法,包含中英文符号

    java中判断字符串实际长度(中文2个字符,英文1个字符)的方法,包含中英文符号 介绍 数据库中很多字段都会限制长度,为了方便用户使用,在前端界面给出限制长度的提示,看网上很多写的获取字符串长度都没有 ...

  4. python结巴分词 词频统计_一个txt文档,已经用结巴分词分完词,怎么用python工具对这个分完词的文档进行计算统计词频,求脚本,非...

    匿名用户 1级 2016-11-03 回答 #!/usr/bin/env python3 #-*- coding:utf-8 -*- import os,random #假设要读取文件名为aa,位于当 ...

  5. phpexcel 导出循环增加列数_基于.NetCore3.1搭建项目系列 —— 使用Swagger导出文档 (补充篇)...

    前言 在上一篇导出文档番外篇中,我们已经熟悉了怎样根据json数据导出word的文档,生成接口文档,而在这一篇,将对上一篇进行完善补充,增加多种导出方式,实现更加完善的导出功能. 回顾 1. 获取Sw ...

  6. devc中文注释显示问号_Python零基础入门-(如何让人读懂你的代码)文档注释

    目标 注释的作用 单行注释(行注释) 多行注释(块注释) 01. 注释的作用 使用用自己熟悉的语言,在程序中对某些代码进行标注说明,增强程序的可读性 02. 单行注释(行注释) 以 # 开头,# 右边 ...

  7. vscode中文设置后重启还是英文解决(设置中文)Vetur插件

    第一步:快捷键ctrl+shift+p 选择Configure Display Language 第二步:修改"locale"属性 重启还是英文是因为你没有安装中文插件 安装后再重 ...

  8. Elasticsearch - 文档分析,IK分词器;文档冲突(十二)

    阅读本文前可先参考 Elasticsearch - Elasticsearch详解:安装部署(一)_MinggeQingchun的博客-CSDN博客 https://blog.csdn.net/Min ...

  9. 案例:用python将中文翻译的和英文原文合成新的word文档

    案例:用python中文翻译的和英文原文合成新的word文档 一 问题的形成 需求的描述:一个英语翻译专业的研究生同学有一个期末作业.老师给了一个英文的文档,需要同学们翻译成中文.老师给的文档是格式如 ...

最新文章

  1. Social learning With Bayesian Agent and Random Decision Making
  2. 密码检验规则(字母数字和特殊字符组成的混合体)
  3. 圆锥破碎机常见故障_圆锥破碎机飞车危害大! 7种原因早知道早预防
  4. LambdaNetworks解读
  5. Linux基础查漏补缺
  6. 如何有效的使用对话框之二
  7. Django通过一个下拉框确定另外一个下拉框的值,并关联起来
  8. 有没有更好的方法在JavaScript中执行可选的函数参数? [重复]
  9. 导致Tomcat启动过程缓慢的原因及解决方法
  10. Careercup - Facebook面试题 - 4907555595747328
  11. 过期不候--具备生命周期的数据的技术实现方案
  12. php遍历桌面上的记事本,电脑桌面显示记事本便签内容要怎么设置一直锁定在桌面?...
  13. Mysql 纵表转换为横表
  14. android系统apk文件,如何安装apk文件 安卓手机apk文件安装方法
  15. AHU 2022 CTF新生赛web_writeup
  16. 解决打开word很慢
  17. 模具设计经典案例:汽车门板下本体模具的设计
  18. 65W氮化镓Switch底座扩展坞方案
  19. Racket编程指南——21 运行和创建可执行文件
  20. python风变编程能找工作_没有永远的工作,只有永远的“就业力”,风变编程Python走起...

热门文章

  1. 2016MDCC移动开发者大会总结
  2. 揭秘java虚拟机 kindle_Kindle有一个java虚拟机
  3. LeetCode不浪费原料的汉堡制作方案
  4. 用DevExpress.Xpo 直接维护后台的 数据表,在这四列中录入的数据,即时插入或更新到关联的数据表中
  5. [Android]从canDrawOverlays权限获取错误说起
  6. iPhone又爆Wi-Fi漏洞 中招Wi-Fi就废了
  7. 渗透测试--medium_socnet
  8. 国药集团获得美国默沙东公司新冠口服药“莫诺拉韦”经销权和独家进口权 | 美通社头条...
  9. Rinne Loves Study
  10. c语言用字符方式拚一个时钟,2012年3月份全国计算机等级考试二级c语言题库(机试) (1)...