该帖已经被评为精华帖
|
|
---|---|
作者 | 正文 |
发表时间:2007-01-29
linliangyi2007 写道 今天终于细细的看了Qieqie兄的Blog啦,呵呵,人气不错呀!
这里顺便回答一下billgmh 关于词典搜索的问题 [我也正在就中文分词方向进行研究,也是使用首字hash+折半查找的方法构造词典的,是我尝试过分词效率最高的一种词典实现方式,但是最近我收集到一份论文《基于双数组Trie树的词典查询算法》,发现效率可能比基于双数组Trie树的词典查询算法还要高(利用有穷自动机的原理与Trie树的易扩展性),不知楼主有没有尝试过这种方法呢?] 从理论上说hash算法的O(1)复杂性确实是最低的,效率也是最高的。billgmh采用了双hash构造词典,为什么是两个呢?能不能说的细一些。 我本人采用了全Hash树模型建立过同样的词典,效率的确跟Qieqie兄阐述的那样非常的高,新版IKAnalyzer的解析速度将近18w汉字/秒(P4 1.6G单核 512M WinXp Sun JDK6.0环境),这里还要感谢Qieqie兄在很多性能优化方面提出的宝贵建议。 还有billgmh提到了“有穷自动机的原理”这令我非常感兴趣,我先前做过的IKAnalyzer这是利用该理论来进行中文分词的,billgmh可以在google上搜索下载试用一下分词效果(1.4版的效率很不高哦,呵呵)。希望billgmh能对这个方面进行更多阐述,大家来讨论一下! 双Hash构造词典的第一层hash的key是词汇的长度,第二层hash的key是词汇的首字。而我在回文中提到的有穷自动机的原理是应用在词典的查找:1、对所有汉字进行顺序编码(例如:1-N) 2、当查询字符串是否构成词汇时,先讲字符串分成单汉字的数组,然后将数组内相应的汉字转为第一步制定好的编码 3、以字符串各单字对应的编码作为状态转移量,当所有单字对应的编码输入完毕后将得到一个状态,假如此状态为终结点则该字符串为一个词汇,否则不能成词。相应的原理可以看我下图…… |
|
返回顶楼 | |
发表时间:2007-01-30
billgmh同学,你第一次进行以长度作第一个hash,然后做首次字hash,最后再做二分查找,这个策略中的第一次hash是多余的。从人角度看起来,第一次hash是缩小了检索范围,但从机器的角度,首字hash就可以了,不必先长度长度hash(做了提高不了效率,也几乎不会损耗效率)
|
|
返回顶楼 | |
发表时间:2007-01-30
发错了,请删除
|
|
返回顶楼 | |
发表时间:2007-02-02
我们正苦苦寻觅一个分词的同时可分词性的中文分词工具, 但发现大多数都是不开源的,找到的一个确实商业化产品.
|
|
返回顶楼 | |
发表时间:2007-02-02
butterfly 写道 我们正苦苦寻觅一个分词的同时可分词性的中文分词工具, 但发现大多数都是不开源的,找到的一个确实商业化产品.
加粗句子是啥意思? 可分词性具体令人激动的用法或带来的利益 可描述描述呀。。。 --------------- 节前忙之中。。。。。。过后,此包将真正建立在开源环境。。。。 (感谢cao某人的同意) |
|
返回顶楼 | |
发表时间:2007-02-02
呵呵,我写错了,找到的是一个商业化的产品。
其实我们正在做一个数据挖掘的项目(兴趣那种,没基金的),就是对一些网上评论进行文本挖掘,所以需要中文分词的这样一个分词接口,而之所以要分词性是挖掘阶段的准备,因为我们想应用频繁集的方法,同时查找一个词的同义词或者反义词这种。 |
|
返回顶楼 | |
发表时间:2007-02-02
楼主有哪些开源具有分词性的中文分词的编程接口可介绍一下啊?
|
|
返回顶楼 | |
发表时间:2007-02-02
butterfly 写道 楼主有哪些开源具有分词性的中文分词的编程接口可介绍一下啊?
很困难啊 butterfly 写道 。。。之所以要分词性是挖掘阶段的准备,因为我们想应用频繁集的方法,同时查找一个词的同义词或者反义词这种。 同义词或反义词之类的互相映射是分词之后,不属于分词的范畴了,得去买这种字典了 算法还达不到给出同义或反义的这种智能的程度 |
|
返回顶楼 | |
发表时间:2007-02-02
Qieqie 写道 butterfly 写道 楼主有哪些开源具有分词性的中文分词的编程接口可介绍一下啊?
很困难啊 嗯,那看来只能自己写了。可不可以在已经将句子分成一个一个的词后,再给每个词标注词性呢?还是将判别词性的部分跟分词组合在一起完成较好? Qieqie 写道 butterfly 写道 。。。之所以要分词性是挖掘阶段的准备,因为我们想应用频繁集的方法,同时查找一个词的同义词或者反义词这种。 同义词或反义词之类的互相映射是分词之后,不属于分词的范畴了,得去买这种字典了 算法还达不到给出同义或反义的这种智能的程度 呵呵,我还以为现在已经有可以以程序接口的形式查找一个词的同义词或者反义词的“中文电子词典”了呢。 |
|
返回顶楼 | |
发表时间:2007-02-03
butterfly 写道 楼主有哪些开源具有分词性的中文分词的编程接口可介绍一下啊?
中科院的分词系统就是具有分词性的中文分词接口哦,有一个dotNet下的C++版本 |
|
返回顶楼 | |