如何做字数统计-多语言

最近思考下对于单词分割的想法,思考得来可能不同的语言对于单词的分割是不同的,那我以空格等分割符作为基础,以不同语言的正则表达式去匹配,岂不是就可以获取到单个单词,妙啊妙啊,在网上冲浪的过程中也找到了和我思路一致的实现,参考下面的参考文档1,然而事实并没有我想象中的那么简单。

项目中发现了对于韩语字数的特殊统计规则,感觉惊奇,难道韩语的字分割规则不同吗?于是根据参考文章2学习了下,发现还真是不同的!原因就在于韩语本身是可以由一些基础的表音字符拼接组成,在unicode中就体现为多个unicode,虽然正常来说,韩语也是使用自己单独的unicode码点来表示字,但是一旦使用了表音字符来组合成字,那么使用单独的正则表达式分割来查找字就不足够了。并且这还只是韩语,不同的语音在分割单词这块儿规则肯定略有不同

这激起了我对单词分割的兴趣,遂了解了单词分割的规则,以下为简版规则,真正完备的规则参考下文中的文档3

分割单词的规则

  1. 文本不为空的情况下,开头和结尾是一个分割的标记
  2. cr/lf这样的换行符应该当成一个
  3. 换行符作为词的分割线
  4. 用zwj连接起来的emoji字符,形成的单独的emoji不应该被分开
  5. 忽略格式化字符
  6. 大部分正常的字符不应该分开
  7. 数字的序列不分开,或者数字临接字母的不分开,比如”3a”
  8. 片假名之间不分开
  9. 其他的情况都分开

以上为通用规则,不同的语言之间可能还会有自己的补充,比如上面说的韩语,以及日语片假名等等。

由此可见,人生苦短,使用icu库来帮我们处理这些细节吧😭

参考文档

  1. 如何设计多语言词分隔

https://medium.com/@byn9826/multi-languages-words-count-3498e5b0fdc3

  1. 韩语书写规则

http://gernot-katzers-spice-pages.com/var/korean_hangul_unicode.html

  1. 词的边界

https://www.unicode.org/reports/tr29/#Word_Boundaries

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容