- 浏览: 203157 次
- 性别:
- 来自: 北京
最新评论
-
毛毛虫小白:
您好,这里说的基于角色标注就是用到了字体位频率表里,在“名字内 ...
介绍一种基于角色标注+字词体位法的人名识别方式-Ansj中文分词 -
assasszt:
请问 能不能加入写入文件功能,不然的话 是每次 执行 都是一个 ...
Java版本的BloomFilter (布隆过滤器) -
lhj_6270:
楼主不错。果然不是一般人。再接再厉弄个软件出来。
Java版本的BloomFilter (布隆过滤器) -
ansjsun:
fncj 写道你好,我们最近要搞一个人名识别功能,发现有两个问 ...
介绍一种基于角色标注+字词体位法的人名识别方式-Ansj中文分词 -
fncj:
你好,我们最近要搞一个人名识别功能,发现有两个问题:1、里有不 ...
介绍一种基于角色标注+字词体位法的人名识别方式-Ansj中文分词
经过了n长时间.有时候想放弃有时候.想继续断断续续的.终于写完了CQ分词的基本原型.目前实现了正向最大匹配.和正向最好匹配.全文全匹配取词等功能.希望大家能支持我.我一定会写出更好的分词的.
分词的速度.大家自己试去吧.我这里是300w字/s.估计我电脑好点吧嘿嘿
传统的分词方式有:
整词二分法
结构:首字散列表、词索引表、词典正文
优点:数据结构简单、占用空间小。
缺点:全词匹配,效率相对来说不高。
Tire索引树法
结构:首字散列表、Trie索引树结点
优点:分词中,不需预知待查询词的长度,沿树链逐字匹配。
缺点:构造和维护比较复杂,单词树枝多,浪费了一定的空间。
逐字二分法
结构:同整词二分法
优点:查询采用逐字匹配,提高了一定的匹配效率。
缺点:由于词典结构未改变,效率的提高有限。
然后我们先了解一下双数组tire树.以下是双数组tire树的简介.
基于双数组Trie的词典查询算法
双数组构造完成之后,查询实质上就是将待查词的各字分别转换为相应的序列码,然后作几次加法,即可查到相应的词语。查询效率是极高的
好了不说了这些都是抄来的.
如果有兴趣的朋友可以和我联系相互学习.
下面我来介绍下CQ分词的大体实现.至于词典的实现比较复杂在这里不多说了.如有需要我会放出源码的
目前实现的接口有两个
这个接口负责从文章中取词.
比如”中华人民共和国万岁”
在allWords()方法取得的结果应该是.全文全匹配
在maxFrontWords()方法取得的结果应该是.正向最大匹配
在minFrontWords()方法取得的结果应该是.正向最小匹配
还有一个简单的文本分割.现在比较乱.我尽快生成api就好多了
对字符串进行简单的标记, 复杂的根据词性的可以自己扩展.
注意:
严重感谢..cq生日快乐
现在已经和lucence整合了。并且能分出。英文。数字。。正在做。。用户自定义词典。。和分量词。。
等这些完了出个版本。字典也放出来。。然后做姓名和。机构名称的识别。。新词的发现(算法已经写了有思路了呵呵)
报告完毕
尽快啦呵呵。。。
如果是给搜索引擎和关键字标记来用的话..我觉得..多和快事重要的..不过还是谢谢你的意见..最近公司有些变动..没心情弄这个了..等好点了我会努力让他健全的...等我的第二版吧..不会让大家失望的
生成效率也是有问题的...没人关注..放源码的心都没了..
我尽快..整合到lucence中..在对分词和自定义词典做一些优化后方出代码谢谢你的关注
30w左右大的数组..3个.两个int一个byte...大约5m左右吧...
生成效率也是有问题的...没人关注..放源码的心都没了..
我尽快..整合到lucence中..在对分词和自定义词典做一些优化后方出代码谢谢你的关注
charHash.dic是生成不是问题..直接就是字符编码的hash...排序了下..只是为了缩小字典的大小而已..
至于.array.dic生成比较麻烦..我看到都没人关注..下一步放源码的心都没有了哎..我打算进一步和另一个分词做总合..用户就能简单的自定义词典了...速度上难免会有下降...和更精确地分词..谢谢楼上的关注
研究下先!
研究吧..嘿嘿
研究下先!
分词的速度.大家自己试去吧.我这里是300w字/s.估计我电脑好点吧嘿嘿
传统的分词方式有:
整词二分法
结构:首字散列表、词索引表、词典正文
优点:数据结构简单、占用空间小。
缺点:全词匹配,效率相对来说不高。
Tire索引树法
结构:首字散列表、Trie索引树结点
优点:分词中,不需预知待查询词的长度,沿树链逐字匹配。
缺点:构造和维护比较复杂,单词树枝多,浪费了一定的空间。
逐字二分法
结构:同整词二分法
优点:查询采用逐字匹配,提高了一定的匹配效率。
缺点:由于词典结构未改变,效率的提高有限。
然后我们先了解一下双数组tire树.以下是双数组tire树的简介.
本质是一个确定的有限状态自动机(DFA),每个节点代表自动机的一个状态,根据变量的不同,进行状态转移,当到达结束状态或者无法转移的时候,完成查询。 Trie树的空间复杂度为O(n) 缺点:数据结构复杂,查询效率较低 为了让Trie实用的实现算法在空间占用较少的同时保证查询的效率,Aoe,J提出了用2个线性数组来进行Trie树的表示,即双数组Trie(Double-Array Trie) 两个数组:base[]、check[] base:数组中的每一个元素相当于trie树的一个节点。 check:相当于当前状态的前一状态。 对于从状态s到状态t的一个转移,必须满足: check[base[s]+c]=s base[s]+c=t 其中c是输入变量。 基本思想: 对6763个常用汉字根据其内码相应的赋予从1-6763的序列码,放入base[1]-base[6763]。若首字序列码是i的词语有n个,设所有第二个字的序列码依次为a1,a2,a3,an,则这n个第二字在base数组中的位置依次为 base[i]+a1,base[i]+a2,…base[i]+an。依次类推第三字、第四字……第k字的位置。 如果base[i]和check[i]同为0,表示该位置为空; 如果base[i]为负值,表示该状态为一个词语。 数组构造 对于每一个汉字,要确定其base[]值,使得对于所有以该汉字开头的词语都能在数组中放下。即要找到一个k=base[i],使得base[k+a1],check[k+a1],base[k+a2],check[k+a2],…base[k+an],check[k+an]均为0,a1,a2…an是以i开头的词的第二字序列码。
基于双数组Trie的词典查询算法
查询 t := base[s] + c; if check[t] = s then next state := t else fail endif
双数组构造完成之后,查询实质上就是将待查词的各字分别转换为相应的序列码,然后作几次加法,即可查到相应的词语。查询效率是极高的
好了不说了这些都是抄来的.
如果有兴趣的朋友可以和我联系相互学习.
下面我来介绍下CQ分词的大体实现.至于词典的实现比较复杂在这里不多说了.如有需要我会放出源码的
目前实现的接口有两个
package love.cq.splitWord; public interface GetWords { /** * 正向最大取词 * @param str 传入的需要取词的句子 * @return */ public String maxFrontWords() ; /** * 正向最小匹配取词 * @param str 传入的需要取词的句子 * @return 返还取得的一个词 */ public String minFrontWords() ; /** * 全文全词全匹配 * @param str 传入的需要分词的句子 * @return 返还分完词后的句子 */ public String allWords() ; }
这个接口负责从文章中取词.
比如”中华人民共和国万岁”
在allWords()方法取得的结果应该是.全文全匹配
中华 中华人民 中华人民共和国 华人 人民 人民共和国 共和 共和国 万岁
在maxFrontWords()方法取得的结果应该是.正向最大匹配
中华人民共和国 万岁
在minFrontWords()方法取得的结果应该是.正向最小匹配
中华 人民 共和 万岁
还有一个简单的文本分割.现在比较乱.我尽快生成api就好多了
package love.cq.splitWord; public interface SplitWord { /** * 正向最大标记 * @param str 传入的需要分词的句子 * @return */ public String tagMaxFront(String str) ; /** * 正向最小匹配标记 * @param str 传入的需要分词的句子 * @return 返还分完词后的句子 */ public String tagMinFront(String str) ; }
对字符串进行简单的标记, 复杂的根据词性的可以自己扩展.
注意:
其中package love.cq.demo;包中存放了我做的两个简单的demo 大家有什么建议和意见就联系我吧.. 在这里先放出代码鼓励鼓励呵呵.. 联系方式 msn:ansj-sun@163.com Qq:5144694 还有特别鸣谢我的女朋友芹菜.没有她的帮助我肯定写不了这么快.. 各位这个是要给我女朋友看的.朋友们拍砖时手下留情啊.在这里拜谢了!
评论
15 楼
fyland
2010-05-31
如果是用C写的就好了
14 楼
ThinkingInAll
2009-08-06
加油
如果能加上词性标注就更好了
希望能增加准确率和召回率以及性能
如果能加上词性标注就更好了
希望能增加准确率和召回率以及性能
13 楼
ansjsun
2009-08-01
viMory 写道
努力,爱的力量真大啊,呵呵,
严重感谢..cq生日快乐
现在已经和lucence整合了。并且能分出。英文。数字。。正在做。。用户自定义词典。。和分量词。。
等这些完了出个版本。字典也放出来。。然后做姓名和。机构名称的识别。。新词的发现(算法已经写了有思路了呵呵)
报告完毕
尽快啦呵呵。。。
12 楼
viMory
2009-08-01
努力,爱的力量真大啊,呵呵,
11 楼
ansjsun
2009-07-26
visualcatsharp 写道
精确度和召回率太差了。
n百w/s的分词速度不能作为卖点,在我们这些应用中,n10w/s已经完全满足需要了。
n百w/s的分词速度不能作为卖点,在我们这些应用中,n10w/s已经完全满足需要了。
如果是给搜索引擎和关键字标记来用的话..我觉得..多和快事重要的..不过还是谢谢你的意见..最近公司有些变动..没心情弄这个了..等好点了我会努力让他健全的...等我的第二版吧..不会让大家失望的
10 楼
visualcatsharp
2009-07-23
精确度和召回率太差了。
n百w/s的分词速度不能作为卖点,在我们这些应用中,n10w/s已经完全满足需要了。
n百w/s的分词速度不能作为卖点,在我们这些应用中,n10w/s已经完全满足需要了。
9 楼
ansjsun
2009-07-22
ansjsun 写道
HuangSui.cn 写道
请问下LZ,怎么添加新词,用户自定义词典
还有就是array.dic的生成的效率问题,可不可以放出源码
还有就是array.dic的生成的效率问题,可不可以放出源码
生成效率也是有问题的...没人关注..放源码的心都没了..
我尽快..整合到lucence中..在对分词和自定义词典做一些优化后方出代码谢谢你的关注
30w左右大的数组..3个.两个int一个byte...大约5m左右吧...
8 楼
ansjsun
2009-07-22
HuangSui.cn 写道
请问下LZ,怎么添加新词,用户自定义词典
还有就是array.dic的生成的效率问题,可不可以放出源码
还有就是array.dic的生成的效率问题,可不可以放出源码
生成效率也是有问题的...没人关注..放源码的心都没了..
我尽快..整合到lucence中..在对分词和自定义词典做一些优化后方出代码谢谢你的关注
7 楼
jenlp520
2009-07-15
2W个关键词的tree占用多大内存?
6 楼
HuangSui.cn
2009-07-13
请问下LZ,怎么添加新词,用户自定义词典
还有就是array.dic的生成的效率问题,可不可以放出源码
还有就是array.dic的生成的效率问题,可不可以放出源码
5 楼
ansjsun
2009-07-05
fxsjy 写道
在你的代码中好像没有看到library/charHash.dic是怎么生成的,有了构造程序,用户才能自行添加新词。
PS:
如果你把CQ分词作成一个google code或sf.net上的正规开源项目,相信会引起更多人的注意。
PS:
如果你把CQ分词作成一个google code或sf.net上的正规开源项目,相信会引起更多人的注意。
charHash.dic是生成不是问题..直接就是字符编码的hash...排序了下..只是为了缩小字典的大小而已..
至于.array.dic生成比较麻烦..我看到都没人关注..下一步放源码的心都没有了哎..我打算进一步和另一个分词做总合..用户就能简单的自定义词典了...速度上难免会有下降...和更精确地分词..谢谢楼上的关注
4 楼
fxsjy
2009-07-02
在你的代码中好像没有看到library/charHash.dic是怎么生成的,有了构造程序,用户才能自行添加新词。
PS:
如果你把CQ分词作成一个google code或sf.net上的正规开源项目,相信会引起更多人的注意。
PS:
如果你把CQ分词作成一个google code或sf.net上的正规开源项目,相信会引起更多人的注意。
3 楼
ansjsun
2009-07-01
在做全文全匹配测试的时候结果如下..大家看速度吧...哈哈
中华人名共和国万岁数
10w 32ms
100w 265ms
1000w 2672ms
你好我叫孙建凑够十个
1000w 1203ms
中华人名共和国万岁数
10w 32ms
100w 265ms
1000w 2672ms
你好我叫孙建凑够十个
1000w 1203ms
2 楼
ansjsun
2009-07-01
wwwwzk 写道
研究下先!
研究吧..嘿嘿
1 楼
wwwwzk
2009-07-01
研究下先!
发表评论
-
算法实现系列第六章.桶排序
2013-01-10 15:18 1393package algorithm; /** * 桶 ... -
算法实现系列第五章.viterbi算法
2013-01-10 14:57 2080package algorithm; public cl ... -
算法实现系列第四章.启发式搜索_A*搜索
2013-01-09 14:31 2395..很郁闷启发式搜索和A*搜索.自己对照文档写了下..发现和之 ... -
算法实现系列第三章.快速排序
2013-01-08 16:05 1379先剽窃jdk的... package algorith ... -
算法实现系列第二章.堆排序
2013-01-08 15:56 1377说白了就是二叉树排序..java中hashset中非基本数据类 ... -
算法实现系列第一章.冒泡排序
2013-01-08 15:47 1343package algorithm; public ... -
两个大数字相乘
2013-01-10 14:54 1712没什么只是.一个demo package net ... -
介绍一种基于角色标注+字词体位法的人名识别方式-Ansj中文分词
2012-09-14 13:35 7213大家好.最近在做分词.在分词中遇到了各种各样的问题 ... -
介绍一种基于角色标注+字词体位法的人名识别方式-Ansj中文分词
2012-09-14 13:04 13大家好.最近在做分词.在分词中遇到了各种各样的问题 ... -
Combining Probabilities-结合概率
2012-04-19 14:23 0这就是联合概率的计算公式 介绍..原文 htt ... -
贝叶斯学习笔记
2012-04-19 11:21 1617一.什么是贝叶斯 ... -
元宵爬虫-YuanXiaoSpider
2012-02-06 12:25 4569翻译了下..没有元宵的淫文啊....所以用PinYing吧.. ... -
一个排好序的数组,找出两数之和为m的所有组合
2012-02-02 16:34 5063public static void main(String[ ... -
<<这就是搜索引擎>>学习笔记-算法之索引压缩
2012-01-19 16:20 2323前一段时间.在微博上中奖了. 一个叫张俊林的帅锅.送了俺一本书 ... -
文本相似度计算-Levenshtein
2012-01-13 11:26 2028参见网址http://www.merriamp ... -
[转载]大数据量,海量数据 处理方法总结(转载)
2012-01-06 11:52 1658原文地址:大数据量, ... -
一个不会重复的HelloWord 随机大小写....
2011-12-01 16:53 1220一个不会重复的HelloWord 随机大小写.... 代码没有 ... -
简单版数独计算器-升级版
2011-11-03 12:28 1684只能算初级的..高级的就溢出了 就算内存无穷大.可能性超过 ... -
java算法专题-归并排序
2011-11-02 21:32 1426归并的思想就是分治.时间复杂度..忘记了 大概实现了下..还 ... -
一个关键字标红的通用类
2011-09-15 20:32 3419import java.lang.reflect.Array; ...
相关推荐
《CQ V2.0 分词 Bates:基于双数组Tire树》 在自然语言处理领域,分词是文本分析的基础步骤,它将连续的文本序列分割成具有语义意义的词汇单元。CQ V2.0是一款采用了创新性的分词技术——基于双数组Trie树的分词...
标题中的"bat.rar_JUMP_JUMP DIFFUSION_bat_bates_diffusion"表明这是一个关于"Bat"模型,具体来说是与"Jump Jump Diffusion"和"Bates Diffusion"相关的资料。"bat"在这里可能指的是金融领域中的一种风险模拟模型,...
标题中的"BATES-71b喷管模型文件.zip"表明这是一个关于特定型号的喷管——BATES-71b的设计模型文件集合。这个压缩包包含了用于CAD(计算机辅助设计)软件的各种格式的数据文件,用于创建、编辑和共享工程设计。 ...
【基于新距离测度的IGOWLA算子区间组合预测模型】 在预测分析领域,尤其是在处理含有不确定因素的数据时,单个预测模型的准确性往往受到限制。为了克服这种局限性,研究人员开发了区间组合预测模型,它结合了多个...
《BATES广告公司的培训》是针对广告行业从业者或者对广告设计有兴趣的学习者的一份珍贵资料。这份名为"BATES广告公司的培训.ppt"的压缩文件,很可能是BATES广告公司内部的培训材料,包含了丰富的广告策划、设计、...
鉴于星载合成孔径雷达(SAR)系统受法拉第旋转效应引入的极化矢量偏移影响,研究基于极化SAR传输模型给出常用星载SAR法拉第旋转效应校正算法,还原目标真实散射特性以用于地面精确信息反演.实验给出了四种常用校正算法...
Nonlinear Regression Analysis and Its Applications.pdf Bates D.M., Watts D.G.
Public Key Infrastructure by Jerad Bates 2007
Proofs_as_Programs_Bates_and_Constable.pdfProofs_as_Programs_Bates_and_Constable.pdfProofs_as_Programs_Bates_and_Constable.pdfProofs_as_Programs_Bates_and_Constable.pdfProofs_as_Programs_Bates_and_...
bates小天鹅品牌定位手册PPT学习教案.pptx
时间序列模型基于历史数据的顺序关系进行预测,适合处理随时间变化的趋势和周期性。而回归分析模型则通过分析变量间的依赖关系来进行预测。两者结合构建的组合模型,能够同时考虑时间因素和影响结构变形的多种因素,...
matlab中存档算法代码FRC_分辨率 在光学纳米技术中测量图像分辨率 FRCresolution软件发行 该软件作为RJP Nieuewenhuizen,KA Lidke,M.Bates,D.Leyton Puig,D.Grunwald,S.Stallinga,B.Rieger,Nature Methods,...
Total 8 rar files. Need to download all. covered: The Java programming language for people with no Java experience, and even people with no programming experience at all. Key concepts read like a list...
Total 8 rar files. Need to download all. covered: The Java programming language for people with no Java experience, and even people with no programming experience at all. Key concepts read like a list...
5. **(分类算法)逻辑斯特回归V1.3更新.pdf**:逻辑斯特回归是二分类问题的标准模型,适用于CTR预估,此文件可能是关于该算法的详细教程或实现更新。 6. **推荐系统项目实例.pdf**:另一个推荐系统项目的详细描述...
《Java 2 Sun Certified Programmer & Developer》是由Kathy Sierra和Bert Bates共同编著的一本经典教材,专门针对Java 2平台的编程和开发者认证考试。这本书深入浅出地介绍了Java编程语言的核心概念和技术,是Java...
Total 8 rar files. Need to download all. covered: The Java programming language for people with no Java experience, and even people with no programming experience at all. Key concepts read like a list...
Total 8 rar files. Need to download all. covered: The Java programming language for people with no Java experience, and even people with no programming experience at all. Key concepts read like a list...