自然语言处理中的unicode编码转换问题

https://blog.csdn.net/qq_22520587/article/details/62454354

半角(half-width/Hankaku) 与 全角(full-with/Zenkaku)

同一字符的两种unicode编码。主要是因为排版的需要,便于排版,美观等因素。

可以将某一个字符的两种unicode编码分为称为主要unicode编码和次要unicode编码。

比如说:

英文的大小写字母、数字、标点的主要unicode编码位于0x01-0x7F。由于这些字符都是半角的(half-width),所以其对应的全角的(full-width)形式的unicode编码就是次要unicode编码,位于0xFF00-OxFFEF

CJK的标点符号,日语的假名的主要unicode编码都是全角的(full-width),所以其对应的半角(half-width)形式就是次要unicode编码,也位于0xFF00-OxFFEF

次要unicode编码表的具体内容参见:http://www.unicode.org/charts/PDF/UFF00.pdf

在自然语言处理中,为机器处理方便,可以将所有字符都转换到主要unicode编码,也就是不使用0xFF00-OxFFEF区间的编码。

具体的将英文的大小写字母、数字、标点转换到ascii码表区间;CJK都转换到全角(full-width)形式。

注意CJK中有些标点符号跟英文的标点形式是相同,要将这些符号转换到ascii码表区间。

 

Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS : 4E00-9FBF:CJK 统一表意符号 
Character.UnicodeBlock.CJK_COMPATIBILITY_IDEOGRAPHS :F900-FAFF:CJK 兼容象形文字 Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A :3400-4DBF:CJK 统一表意符号扩展 A 
CJK的意思是“Chinese,Japanese,Korea”的简写 ,实际上就是指中日韩三国的象形文字的Unicode编码 
Character.UnicodeBlock.GENERAL_PUNCTUATION :2000-206F:常用标点 Character.UnicodeBlock.CJK_SYMBOLS_AND_PUNCTUATION :3000-303F:CJK 符号和标点 Character.UnicodeBlock.HALFWIDTH_AND_FULLWIDTH_FORMS :FF00-FFEF:半角及全角形式 

判断字符中是否包含中文字符时,可以用 
Character.UnicodeBlock ub = Character.UnicodeBlock.of(c);  
   if (ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS 
     || ub == Character.UnicodeBlock.CJK_COMPATIBILITY_IDEOGRAPHS 
     || ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A 
     || ub == Character.UnicodeBlock.GENERAL_PUNCTUATION 
     || ub == Character.UnicodeBlock.CJK_SYMBOLS_AND_PUNCTUATION 
     || ub == Character.UnicodeBlock.HALFWIDTH_AND_FULLWIDTH_FORMS){ 
    return true; 
   } 
   return false; 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值