庖丁解牛分词器增加对日文,韩文分词的支持
项目中发现采用庖丁解牛分词器对含有日文的文字都被过滤掉,所以发了一封邮件给qieqie前辈。
qieqie前辈的回复:
在paoding中,中文、日文、韩文成为CJK,使用的是CJKKnife来切词;
/**
* 分解以CJK字符开始的,后可带阿拉伯数字、英文字母、横线、下划线的字符组成的
*/
public int assignable(Beef beef, int offset, int index) {
char ch = beef.charAt(index);
if (CharSet.isCjkUnifiedIdeographs(ch))
return ASSIGNED;
if (index > offset) {
if (CharSet.isArabianNumber(ch) || CharSet.isLantingLetter
|| ch == '-' || ch == '_') {
return POINT;
}
}
return LIMIT;
}
在用CJKKnife刀时执行该if (CharSet.isCjkUnifiedIdeographs(ch))语句进入到
CharSet类中的
public static boolean isCjkUnifiedIdeographs(char ch) {
return ch >= 0x4E00 && ch < 0xA000;
}
因为0x4E00 -0xA000只属于CJK中日韩统一汉字范围,如:3040-309F:日文平假名 (Hiragana) 30A0-30FF:日文片假名 (Katakana) 不在此范围内所以返回的值为false,此时程序中index和offset的值是相等的所以直接
return ch >= 0x4E00 && ch < 0xA000;
}来满足我的项目需求。
public static boolean isCJKCharacter(char input){ | |||
29 | - | return Character.UnicodeBlock.of(input) | |
30 | - | == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS; | |
31 | - | } | |
29 | + | Character.UnicodeBlock ub = Character.UnicodeBlock.of(input); | |
30 | + | if (ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS | |
31 | + | || ub == Character.UnicodeBlock.CJK_COMPATIBILITY_IDEOGRAPHS | |
32 | + | || ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A | |
33 | + | || ub == Character.UnicodeBlock.CJK_SYMBOLS_AND_PUNCTUATION | |
34 | + | || ub == Character.UnicodeBlock.GENERAL_PUNCTUATION | |
35 | + | || ub == Character.UnicodeBlock.HALFWIDTH_AND_FULLWIDTH_FORMS | |
36 | + | //韩文字符集 | |
37 | + | || ub == Character.UnicodeBlock.HANGUL_SYLLABLES | |
38 | + | || ub == Character.UnicodeBlock.HANGUL_JAMO | |
39 | + | || ub == Character.UnicodeBlock.HANGUL_COMPATIBILITY_JAMO | |
40 | + | //日文字符集 | |
41 | + | || ub == Character.UnicodeBlock.HIRAGANA //平假名 | |
42 | + | || ub == Character.UnicodeBlock.KATAKANA //片假名 | |
43 | + | || ub == Character.UnicodeBlock.KATAKANA_PHONETIC_EXTENSIONS | |
44 | + | ) { | |
45 | + | return true; | |
46 | + | }else{ | |
47 | + | return false; | |
48 | + | } | |
49 | + | } |
其中IKAnayzer中的Character.UnicodeBlock与Unicode编码对应如下:
|| ub == Character.UnicodeBlock.CJK_COMPATIBILITY_IDEOGRAPHS // 【3300-33FF】 CJK Compatibility 中日韩兼容字符 x
|| ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A // 【3400-4DBF】 CJK Unified Ideographs Extension A 中日韩统一表意文字扩充A
|| ub == Character.UnicodeBlock.CJK_SYMBOLS_AND_PUNCTUATION // 【3000-303F】 CJK 符号和标点 x
|| ub == Character.UnicodeBlock.GENERAL_PUNCTUATION // 【2000-206F】 General Punctuation 一般标点符号 x
|| ub == Character.UnicodeBlock.HALFWIDTH_AND_FULLWIDTH_FORMS // 【FF00-FFEF】 Halfwidth and Fullwidth Forms 半角及全角字符 x
//韩文字符集
|| ub == Character.UnicodeBlock.HANGUL_SYLLABLES // 【AC00-D7AF】 Hangul Syllables 谚文音节
|| ub == Character.UnicodeBlock.HANGUL_JAMO // 【1100-11FF】 Hangul Jamo 谚文字母
|| ub == Character.UnicodeBlock.HANGUL_COMPATIBILITY_JAMO // 【3130-318F】 Hangul Compatibility Jamo 谚文兼容字母
//日文字符集
|| ub == Character.UnicodeBlock.HIRAGANA //平假名 // 【3040-309F】Hiragana 平假名
|| ub == Character.UnicodeBlock.KATAKANA //片假名 // 【30A0-30FF】Katakana 片假名
|| ub == Character.UnicodeBlock.KATAKANA_PHONETIC_EXTENSIONS // 【31F0-31FF】Katakana Phonetic Extensions 片假名音标扩充
//韩文字符集
|| ub == Character.UnicodeBlock.HANGUL_SYLLABLES // 【AC00-D7AF】 Hangul Syllables 朝鲜文音节
|| ub == Character.UnicodeBlock.HANGUL_JAMO // 【1100-11FF】 Hangul Jamo 朝鲜文
|| ub == Character.UnicodeBlock.HANGUL_COMPATIBILITY_JAMO // 【3130-318F】 Hangul Compatibility Jamo 朝鲜文兼容字母
//日文字符集
|| ub == Character.UnicodeBlock.HIRAGANA //平假名 // 【3040-309F】Hiragana 平假名
|| ub == Character.UnicodeBlock.KATAKANA //片假名 // 【30A0-30FF】Katakana 片假名
|| ub == Character.UnicodeBlock.KATAKANA_PHONETIC_EXTENSIONS // 【31F0-31FF】Katakana Phonetic Extensions 片假名音标扩充
*
* @param ch
* @return
* 修改原因:增加对日文,韩文分词的支持
* 修改人:stt shenting_ting@163.com
* 修改日期:2010-05-19
*/
public static boolean isCjkUnifiedIdeographs(char ch) {
//return ch >= 0x4E00 && ch < 0xA000;
return (ch >= 0x4E00 && ch < 0xA000) //中日韩统一表意文字
||(ch >= 0x3400 && ch < 0x4DBF) //中日韩统一表意文字扩充A
//日文字符集
||(ch >= 0x3040 && ch < 0x309F) //日文平假名
||(ch >= 0x30A0 && ch < 0x30FF) //日文片假名
||(ch >= 0x31F0 && ch < 0x31FF) //片假名音标扩充
//韩文字符集
||(ch >= 0xAC00 && ch < 0xD7AF) //朝鲜文音节
||(ch >= 0x1100 && ch < 0x11FF) //朝鲜文
||(ch >= 0x3130 && ch < 0x318F); //朝鲜文兼容字母
}
Unicode编码的字符查询:http://www.nengcha.com/code/unicode/class/
Character.UnicodeBlock类:http://www.jingningedu.com/manage/java_api/java/lang/Character.UnicodeBlock.html
庖丁解牛分词器增加对日文,韩文分词的支持相关推荐
- ElasticSearch:为中文分词器增加对英文的支持(让中文分词器可以处理中英文混合文档)(转)
本文地址,需转载请注明出处: http://blog.csdn.net/hereiskxm/article/details/47441911 当我们使用中文分词器的时候,其实也希望它能够支持对于英文的 ...
- ElasticSearch:为中文分词器增加对英文的支持(让中文分词器可以处理中英文混合文档)
本文地址,需转载请注明出处: http://blog.csdn.net/hereiskxm/article/details/47441911 当我们使用中文分词器的时候,其实也希望它能够支持对于英文的 ...
- python判断字符串是否含有非中文字符的日文/韩文字符
需求描述 爬取推特内容,需要留下只有中文/英文的内容,日文/韩文不要. 实现思路 用正则表达式. 本来想能不能单独匹配中文或者英文,但是好多符号不想弄了- 就直接搜了匹配日文/韩文的正则表达式. 备注 ...
- 0.54与0.55版本react-native的TextInput在iOS上无法输入中文日文韩文的bug
更新最新版本的react-native,发现最近两版本的TextInput终于出现对ios的不友好.在官网查了下发现 0.54与0.55版本react-native的TextInput在iOS上无法输 ...
- 【Lucene】分词器详解,常用的分词器,IKANalyzer
[Lucene]分词器详解,常用的分词器,IKANalyzer 1. 分词器详解 1.1 分词器的作用 1.2 分词器API 1.2.1 示例 1.2.2 Analyzer 1.2.3 createC ...
- 微软最新Windows 10官方正式版ISO镜像v1809原版下载大全(中文/英文/日文/韩文)...
微软在北京时间2018年10月3日(美国时间2018/10/2)向全球推送了Windows 10十月更新2018 v1809(Build 17663.1)版,蚩尤向本站提供了微软的所有MSDN版本,大 ...
- [导入]Replace函数vbTextCompare不支持日文韩文
如果对有日文或韩文的字符串 Replace 时使用 vbTextCompare 参数就会出错. 文章来源:http://Jorkin.Reallydo.Com/default.asp?id=488 转 ...
- 匹配中文汉字日文韩文等多国语言的正则表达式(转)
转自:http://www.javadn.com/read.php?tid-692.html 2E80-33FFh:中日韩符号区.收容康熙字典部首.中日韩辅助部首.注音符号.日本假名.韩文音符,中日韩 ...
- C#判断中文 日文 韩文
中文:/[\u4e00-\u9fa5]/ 日文:/[\u0800-\u4e00]/ 韩文:/[\uac00-\ud7ff]/ C# 正则表达式应用实例 如果要匹配 所有东亚语言 @"[\u ...
最新文章
- MAT之SA:利用SA算法解决TSP(数据是14个虚拟城市的横纵坐标)问题
- 用mapXtreme Java开发web gis应用 (上)
- 英特尔物联网产业的布局中,优势和劣势都在哪?
- 【CSU - 1980 】不堪重负的树(树上区间dp)
- C++ IO 流简介
- linux 路由跟踪命令_云计算网络知识学习-linux网络基础
- python——operator详解
- springboot集成ueditor百度富文本编辑器及上传图片到oss服务器
- 自带RGB灯效,配备显卡专属风道,风行者DF700 Flux上手
- 365天英语口语学习_11,收拾餐桌碗碟
- C++ PDF文档相关操作
- [北航软工教学] 教学计划大纲
- Matlab quiver函数用法 - 画矢量箭头图
- brpc源码解析(二)—— brpc收到请求的处理过程
- Android微信支付订单支付失败的问题
- python开心消消乐辅助_用Python写个开心消消乐小游戏
- 基于AI智能视频分析技术的电力行业视频监控联网解决方案
- STM32F103入门 | 3.MDK5.27 安装教程
- Kaggle泰坦尼克号之灾
- 学习 | 针对学生及刚从业建筑人员对常用三款建筑建模软件的用户体验调研和竞品分析
热门文章
- 高并发下的分布式缓存浅析
- 尚硅谷4.0数仓项目整体设计要点记录
- 22-10-14 西安 spring循环依赖、对象内存布局、synchronized锁升级
- Angular login页面的简单模板及过程
- MySQL数据库---设置全文索引 查询中文汉字
- Python Cookbook3 (7)函数
- java连锁o2o_全渠道java b2b b2c o2o平台
- border-collapse:collapse 的使用
- DPCM压缩系统的实现与分析
- paper—HAWK: Rapid Android Malware Detection Through Heterogeneous Graph Attention Networks