经过不懈的努力.耗费了毕生经历.终于把分词写完了.
事后觉得太过复杂的东西真的不是好玩的..可控性太差了.
推翻恢复.重写.优化经历了一晚上.终于得道了一个还算满意的答案.
呵呵废话不多说了..老规矩.我先介绍下这一版分词.
自己想了好多.参考了好多.主要参考了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.未来.谁能知道呢.
写在结尾.我不怎么擅长表达.但是希望有时间有兴趣的朋友可以尝试下.给我多提一些一件.理论上我会虚心改进.呵呵.大家有什么好的意见和建议也可以提出来.只是希望这个分词能发展好一些.其他木有了..支持国产开源