欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Totoro中文分词第二版上线啦 Lucene

程序员文章站 2022-06-05 16:13:31
...
经过不懈的努力.耗费了毕生经历.终于把分词写完了.

事后觉得太过复杂的东西真的不是好玩的..可控性太差了.

推翻恢复.重写.优化经历了一晚上.终于得道了一个还算满意的答案.

呵呵废话不多说了..老规矩.我先介绍下这一版分词.

自己想了好多.参考了好多.主要参考了ictclas.在这里特别感谢 @小李飞刀 对我的无私帮助.

首先你必须明白
1.他是用java写的.
2.他可以整合到lucene
3.他是完全开源的.包括字典创建程序和字典.
4.他还在成长.
5.他还不是完美的

他实现了什么
1.分词(废话)
2.词性标注
3.做了数字和英文的简单分词
4.停用词词典的自定义

1.分词的数据结构.依旧是我最喜欢和最悲催的
  1,1双数组tire树.
       这种结构的最大有点就是快.速度接近极限.但是最大的缺点.也是不可忽视的.词典构造复杂.不容易动态增加删除词语.当然可以用用户自定义词典用来解决这些问题.
  1.2tire树结构.(不解释)
  1.3 图论中的最短路径(不解释)


2.分词的算法
   2.1 经典贝叶斯(里面的公式是参考ictclas的.包括所有的概率统计,ict是开源的应该能直接抄吧呵呵.如果谁有大规模标记好的预料如果愿意可以分享.我有想法做一个自己的统计)
   2.2 Viterbi 算法.求最优路径的一个不错算法.一般和Dijkstra 一起是用
   3.2 其他无

3.设计模式
   3.1 去死.(怎么舒服.怎么好读怎么写)

4.准确率
   4.1 呵呵.废话不多说了我把我收集的所有的歧义句
分词结果如下
词典加载完成用时:1044毫秒
加载关联词典完成用时:3545
[他/n 1, 说/vn 2, 的/ng 3, 确实/ad 4, 在理/a 5]
[长春/ns 1, 市长/n 2, 春节/t 3, 讲话/vn 4]
[结婚/vn 1, 的/ng 2, 和/cc 3, 尚未/d 4, 结婚/vn 5, 的/ng 6]
[结合/vn 1, 成/m 2, 分子/n 3, 时/nr1 4]
[旅游/vn 1, 和/cc 2, 服务/vn 3, 是/vshi 4, 最/ng 5, 好/ad 6, 的/d 7]
[邓/nr1 1, 颖/nr1 2, 超生/vn 3, 前/h 4, 最/ng 5, 喜欢/vn 6, 的/ng 7, 一个/mq 8, 东西/n 9]
[中国/nz 1, 航天/n 2, 官员/n 3, 应邀/vd 4, 到/vn 5, 美国/ns 6, 与/y 7, 太空/s 8, 总署/n 9, 官员/n 10, 开会/vn 11]
[上海/nz 1, 大学/n 2, 城/n 3, 书店/n 4]
[北京/n 1, 大/a 2, 学生/n 3, 前来/vd 4, 应聘/vn 5]
[中外/b 1, 科学/ad 3, 名著/n 3]
[为/y 1, 人民/n 2, 服务/vn 3]
[独立自主/vl 1, 和/cc 2, 平等互利/vl 3, 的/ng 4, 原则/n 5]
[为/y 1, 人民/n 2, 办/vn 3, 公益/n 4]
[这/rzv 1, 事/n 2, 的/ng 3, 确定/vn 4, 不/a 5, 下来/vf 6]
[费/vn 1, 孝/ng 2, 通向/p 3, 人大/n 4, 常委会/n 5, 提交/v 6, 书面/n 7, 报告/n 8]
[aaa/en 1, 分/vn 2, 事/n 3, 实/ng 4, 上/ng 5, 发货/vn 6, 丨/null 7, 和/cc 8, 无/c 9, 哦/o 10, 喝/vn 11, 完/vn 12, 酒/n 13]
[不好意思/ad 1, 清清爽爽/z 2]
[长春市/ns 1, 春节/t 2, 讲话/vn 3]
[*/nsf 1, 万岁/n 2, 万岁/n 3, 万/nr1 4, 万岁/n 5]
[检察院/n 1, 鲍/nr1 2, 绍/nr1 3, 检察长/n 4]
[长春市/ns 1, 长春/ns 2, 药店/n 3]
[乒乓球拍/n 1, 卖/vn 2, 完/vn 3, 了/vn 4]
[计算机/n 1, 网络/n 2, 管理员/n 3, 用/vn 4, 虚拟/vn 5, 机/ng 6, 实现/vn 7, 了/vn 8, 手机/n 9, 游戏/vn 10, 下载/v 11, 和/cc 12, 开源/vn 13, 项目/vn 14, 的/ng 15, 管理/vn 16, 金山/nz 17, 毒/n 18, 霸/ng 19]
[长春市/ns 1, 长春/ns 2, 药店/n 3]
[一/m 1, 年/qt 2, 有/vn 3, 三百六十五/m 4, 个/ng 9, 日出/vn 10,  /null 11, 我/rr 12, 送/vn 13, 你/rr 14, 三百六十五/m 15, 个/ng 20, 祝福/vn 21,  /null 22, 时钟/n 23, 每天/r 24, 转/vn 25, 了/vn 26, 一千四百四十/m 27, 圈/qv 33, 我/rr 34, 的/ng 35, 心/n 36, 每天/r 37, 都/ng 38, 藏/b 39, 着/uzhe 40,  /null 41, 一千四百四十/m 42, 多/m 48, 个/ng 49, 思念/vn 50,  /null 51, 每/d 52, 一/m 53, 天/qt 54, 都/ng 55, 要/vn 56, 祝/nr1 57, 你/rr 58, 快快乐乐/z 59,  /null 60,  /null 61, 每/d 62, 一/m 63, 分钟/qt 64, 都/ng 65, 盼望/vn 66, 你/rr 67, 平平安安/z 68,  /null 69, 吉祥/nz 70, 的/ng 71, 光/n 72, 永远/a 73, 环绕/vn 74, 着/uzhe 75, 你/rr 76,  /null 77, 像/nr1 78, 那/y 79, 旭日东升/vl 80, 灿烂/an 81, 无比/z 82,  /null 83]
[学校/n 1, 学费/n 2, 要/vn 3, 一/m 4, 次/qv 5, 性交/vn 6, 一千/m 7, 元/n 9]
[发展/vn 1, 中国/nz 2, 家庭/n 3, 养猪/vn 4, 事业/n 5]
[安徽省/ns 1, 是/vshi 2, 一个/mq 3, 发展/vn 5, 中/nr1 5, 的/ng 6, 省/vd 7]
[北京/n 1, 理/n 2, 工/ag 3, 大学/n 4, 办事处/n 5]
4633


可以看出借个还是凑合能交代的.起码比起大多数来较好.


5效率
   5.1现在该说效率了.不怎么想说这个,效率很直白的说我不满意.但是能交代.我分的两m的一本小说.大约8秒(加载词典过程3秒) 我用的是air..分秒钟分词20万字左右.


6.还差哪些
   1.人名识别(虽然在上一版本中做了人名识别).但是效果不是很满意.所以打算推到从左.作为一个以写代码为生的人.推到不是问题.重做不是关键.
   2.地名识别,机构名称识别
   3.用户自定义词典.其实上一版中也做了.继续推到重做.因为万恶的用户词典.毁坏了我分词的准确率.所以打算把过程.改一下.
   4.未来.谁能知道呢.



写在结尾.我不怎么擅长表达.但是希望有时间有兴趣的朋友可以尝试下.给我多提一些一件.理论上我会虚心改进.呵呵.大家有什么好的意见和建议也可以提出来.只是希望这个分词能发展好一些.其他木有了..支持国产开源



相关标签: Lucene