中科院分词工具imdict chinese analyzer学习 java分词
下载链接http://ictclas.org/Down_OpenSrc.asp
简单介绍:
imdict-chinese-analyzer是 imdict智能词典的智能中文分词模块,作者高小平,算法基于隐马
尔科夫模型(Hidden Markov Model, HMM),是中国科学院计算技术研究所的ictclas中文分词程序
的重新实现(基于Java),可以直接为lucene搜索引擎提供中文分词支持。
应用:
下到的压缩包解压后就是一个java工程,eclipse直接导入即可,但由于其开发的环境是UTF8所以
要将eclipse的工作空间的编码也设置为utf8,test包里面的AnalyzerTest就是其用法,看了以后
就可以直接用了
功能:中文分词、停止词过滤
优点:开源,分词速度快,效率高
缺点:不支持自己添加词库,不支持词性标注(开发人员自己说是为了提高速度),data文件夹仅
自带了两个字典coredict核心字典、bigramdict词关系字典,这是两个最重要的词典,没有地名和
人名的词典,所以要识别人名地名比较麻烦,据说要用层次hmm,先粗分在细分。
深入学习:主类是net.imdict.analysis.chinese中的ChineseAnalyzer.java它继承了lucene的
Analyzer类,有两个构造方法:public ChineseAnalyzer()、public ChineseAnalyzer
(Set<String> stopWords)第二个构造方法支持停用词,最重要的是tokenStream函数,它用了
SentenceTokenizer和new WordTokenizer,前一个是将文章分成句子,后一个是将句子分成单词,
单词和句子都是用Lucene的Token(词)的类存储的,(Token是一个抽象类,TokenStream是Token
类的子类,但也是一个抽象类,Tokenizer和TokenFilter则是TokenStream的具体实现,他们实现
了TokenStream的next()方法,Tokenizer的next方法返回的是原始的、切分出来的词,而
TokenFilter方法返回的是一个经过过滤的词条,他们结合起来形成Lucene分析器的核心结构)如
Token token = new Token(),然后通过token.reinit(buffer.toString(), tokenStart,
tokenEnd, "sentence");中间两个参数是Token存储的字符串的起止位置,以0开始计数,引用
token中字符串的函数是token.term(),真正调用分词核心算法的WordSegmenter的
segmentSentence方法对句子进行分词,在WordTokenizer类中调用它得到分词结果。在往下层的代
码我就没看了。
两个改动:
(1)ChineseAnalyzer只能对文件进行分词,如何对一个字符串进行分词,改动如下
/* TokenStream ts = ca.tokenStream("sentence", new InputStreamRe
相关文档:
http://wsc830719.javaeye.com/blog/523873
http://topic.csdn.net/u/20100406/01/e8fa95e2-417d-4706-98a0-2288970697f2.html
http://javafoot.blog.hexun.com/3905915_d.html
http://wiki.apache.org/tapestry/HowToSetupEclipseWtp
在Eclipse下安装Tomcat插件
http://hi.baidu.com/tianlan133/blog/item/ad4c2699ea ......
数年前,当和一个软件团队一起用 Java 语言编写一个应用程序时,我体会到比一般程序员多知道一点关于 Java 对象序列化的知识所带来的好处。
关于本系列
您觉得自己懂 Java 编程?事实上,大多数程序员对于 Java 平台都是浅尝则止,只学习了足以完成手头上任务的知识而已。
大约一年前,一个负责管理应用程序所有用户设置 ......
在做pdf文档转成jpg的时候,发现了Jmagick的创建高质量的图片的一个java类库,自己以前使用另外的一个类库,感觉这个更好点,就试着用了下,感觉不错
1.使用的windows下的jmagick-win-6.3.9-Q16.zip 地址是:http://downloads.jmagick.org/6.3.9/
2.doc对应的api地址:http://downloads.jmagick.org/jmagick-doc/
3.安装Ima ......
JAVA核心技术观后感
这周大家都基本上买了一本《JAVA核心技术》来看,虽然我的书下周才能拿到,但是我还是翻了下别人的,大致了解了一下里面的内容。以下就是我粗糙的整理。
JAVA并不只是一种语言,而是一个完整的平台,有一个庞大的库,其中包含很多可以重用的代码和一个提供诸如安全性,跨操作系统的可移 ......
1, 保证线程安全的三种方法
:
a, 不要跨线程访问共享变量
b, 使共享变量是
final类型的
c, 将共享变量的操作加上同步
2, 一开始就将类设计成线程安全的
, 比在后期重新修复它
,更容易
.
3, 编写多线程程序
, 首先
保证它是正确的
, 其次再考虑性能
......