当用户输入连续的没有空格分隔的全拼时怎么分词?本分词基于汉语拼音的规则进行简单的分词。有以下缺点:

1.xi‘an(西安)这种会不分词,xi’nan(西南)会分成(xin an)新安。没有考虑词频语义。

2.如果其中有非拼音的字母,例如womendekpi,因为kpi无法拆分,则整个分词会失败。

//声母表static String[] smb = new String[]{"b", "p", "m", "f", "d", "t", "l", "n", "g", "h", "k", "j", "q", "x", "z", "c", "s", "r", "y", "w", "zh", "ch", "sh"};//韵母表static String[] ymbmax = new String[]{"iang", "iong", "uang","ang", "ong", "eng", "ing", "iao", "ian", "uai", "uan","an", "ao", "ai", "ou", "en", "er", "ei","ia", "iu", "ie", "in", "un", "ua", "uo", "ue", "ui","a", "o", "e", "i", "u", "v"};//独立成字韵母表static String[] ymbmin = new String[]{"ang", "ong", "eng", "ai", "an", "ao", "ou", "en", "er", "o", "a", "e"};//将汉语拼音连写s分割成String数组public static String[] cut(String s) {List<String> list = cut(s, 0);if (list == null || list.isEmpty()) return new String[]{s};int size = list.size();if (list.get(size - 1).length() == 0) {list.remove(size - 1);}return list.toArray(new String[0]);}private static List<String> cut(String s, int index) {List<Integer> list = findWord(s, index);if (list == null || list.size() == 0) return null;for (int x : list) {if (x == 0) {return Collections.singletonList("");}List<String> left = cut(s, index + x);if (left != null && left.size() > 0) {List<String> ans = new ArrayList<>();ans.add(s.substring(index, index + x));ans.addAll(left);return ans;}}return null;}//找声母private static int findSm(String s, int index) {int n = s.length();for (String asm : smb) {if (s.startsWith(asm, index)) {int nextidx = index + asm.length();if (nextidx < n) {String next = s.charAt(nextidx) + "";boolean smAgain = false;for (String asm2 : smb) {if (next.equals(asm2)) {smAgain = true;break;}}if (!smAgain) {return asm.length();}}}}return 0;}//找独立成字的韵母private static List<Integer> findDlym(String s, int index) {List<Integer> list = new ArrayList<>();for (String ym : ymbmin) {if (s.startsWith(ym, index)) {list.add(ym.length());}}return list;}//找韵母private static List<Integer> findYm(String s, int index) {List<Integer> list = new ArrayList<>();for (String ym : ymbmax) {if (s.startsWith(ym, index)) {list.add(ym.length());}}return list;}//找单字private static List<Integer> findWord(String s, int index) {if (index >= s.length()) return Collections.singletonList(0);int len = findSm(s, index);List<Integer> r = len == 0 ? findDlym(s, index) : findYm(s, index + len);for (int i = 0, size = r.size(); i < size; i++) {r.set(i, r.get(i) + len);}return r;}

简单的基于规则的汉语拼音分词相关推荐

  1. 基于规则的中文分词 - NLP中文篇

    之前在其他博客文章有提到如何对英文进行分词,也说后续会增加解释我们中文是如何分词的,我们都知道英文或者其他国家或者地区一些语言文字是词与词之间有空格(分隔符),这样子分词处理起来其实是要相对容易很多, ...

  2. 简单好用的中文分词工具之HanLP的安装与使用

    0.HanLP的安装 pyhanlp是HanLP的Python的接口,支持自动下载与升级HanLP,兼容pthon2.python3.由于HanLP主项目采用Java开发,所以安装之前,windows ...

  3. 第02课:简单好用的中文分词利器 jieba 和 HanLP

    前言 从本文开始,我们就要真正进入实战部分.首先,我们按照中文自然语言处理流程的第一步获取语料,然后重点进行中文分词的学习.中文分词有很多种,常见的比如有中科院计算所 NLPIR.哈工大 LTP.清华 ...

  4. NLP|中文分词技术及应用

    摘要:中文分词是中文信息处理的重要基础,本文详细阐述了目前主要的几种中文分词算法的技术原理 .中文分词目前的瓶颈和评价准则,以及中文分词的具体应用. 中文分词指将一个汉字序列切分成一个个单独的词.现有 ...

  5. 自然语言处理 第三期 【任务3 - 特征提取】时长:2天

    摘要:中文分词是中文信息处理的重要基础,本文详细阐述了目前主要的几种中文分词算法的技术原理 .中文分词目前的瓶颈和评价准则,以及中文分词的具体应用. 中文分词指将一个汉字序列切分成一个个单独的词.现有 ...

  6. 简单有效的多标准中文分词详解

    简单有效的多标准中文分词详解 本文介绍一种简洁优雅的多标准中文分词方案,可联合多个不同标准的语料库训练单个模型,同时输出多标准的分词结果.通过不同语料库之间的迁移学习提升模型的性能,在10个语料库上的 ...

  7. Lucene5学习之自定义同义词分词器简单示例

    同义词功能在全文搜索时的意义,大家应该都懂的.今天中文我就试着写了一个同义词分词的示例demo,其实主要代码还是参考Lucene in Action 这本英文版书籍的随书代码,只不过Lucenen i ...

  8. 中文分词技术之基于规则分词

    中文分词技术之基于规则分词 基于规则分词的基本思想 正向最大匹配法 逆向最大匹配法 双向最大匹配法 总结 词是中文语言理解中最小的能独立运用的语言单位.中文的词与词之间没有明显分隔标志,因此在分词技术 ...

  9. Jieba分词Python简单实现

    为什么80%的码农都做不了架构师?>>>    上一章分享了IK Analyzer中文分词及词频统计基于Hadoop的MapReducer框架Java实现.这次将与大家分享Jieba ...

最新文章

  1. Linu基础:磁盘存储和文件管理
  2. 路由器中的管理间距和量度参数
  3. jq跨域代理_jQuery中的跨域问题
  4. Java map遍历
  5. 业务逻辑实现方式的讨论:存储过程 good or bad?
  6. Ubuntu查看crontab运行日志
  7. Pycharm 主题设置和修改
  8. ArcPy常用基础功能
  9. 低密度奇偶校验码(LDPC)GMSK调制解调器 毕业设计
  10. 纬地道路纵断面设计教程_道路BIM模型快速生成
  11. Rxjava + retrofit + dagger2 + mvp搭建Android框架
  12. Flutter Connection to **** was not upgraded to websocket
  13. uni真机showToast不显示
  14. 计算机二级考试题库vb知识点,国家计算机二级考试题库 VB上机试题第13套
  15. mawen启动项目css样式失效问题解决方法 EL表达式无效
  16. 正在与python恋爱
  17. YOLOv5官方教程
  18. VK2C22A/B 高抗干扰超声波医用段码LCD液晶屏驱动(IC)芯片(可定制DICE/COG)
  19. bin文件和hex文件互转
  20. Win32编程问题一,“WinMain”: 无法重载函数

热门文章

  1. android+广播接收者category,广播接收者
  2. STorM32 BGC 三轴云台学习(一) 通信协议分析
  3. 高通MTK麒麟 手机平台USB3.0方案对比
  4. Lineage OS15.1 for sagit 编译
  5. 帆软连接好数据库,字段带有中文的显示乱码解决方案
  6. 又猎一“狐”:一名外逃越南嫌疑人落网啦
  7. 天耀18期 – 05.面向对象-封装【作业】.
  8. 只有那些不断充实自己的人,才有机会在往后的日子里持续地被雇用
  9. MacOS 单机搭建 Pulsar 集群
  10. 爱宝A-1180热转印条码打印机 打印乱码,对不齐的问题