java 庖丁解牛中文分词_庖丁解牛中文分词包
http://code.google.com/p/paoding/
Paoding Analysis摘要
Paoding's Knives 中文分词具有极 高效率 和 高扩展性 。引入隐喻,采用完全的面向对象设计,构思先进。
高效率:在PIII 1G内存个人机器上,1秒 可准确分词 100万 汉字。
采用基于 不限制个数 的词典文件对文章进行有效切分,使能够将对词汇分类定义。
能够对未知的词汇进行合理解析
欢迎
用心的贡献,极其能鼓励人
----------------------!
2010-01-20 庖丁 Lucene 3.0 升级说明
(代码已提交svn,下载包稍后稍推迟下)
这次升级的主要目的是支持Lucene 3.0,具体改动如下:
(2)使用Java 5.0编译,不再支持Java 1.4,以后的新功能将会在Java 5上开发。
(3)PaodingAnalyzer的调用接口没有改动,但在使用上需要适应Lucene 3.0的API,分词示例如下://生成analyzer实例 Analyzer analyzer = new PaodingAnalyzer(properties); //取得Token流 TokenStream stream = analyzer.tokenStream("", reader); //重置到流的开始位置 stream.reset(); //添加工具类 TermAttribute termAtt = (TermAttribute) stream.addAttribute(TermAttribute.class); OffsetAttribute offAtt = (OffsetAttribute) stream.addAttribute(OffsetAttribute.class); //循环打印所有分词及其位置 while (stream.incrementToken()) { System.out.println(termAtt.term() + " " + offAtt.startOffset() + " " + offAtt.endOffset());}具体使用方法可以参见net.paoding.analysis.analyzer.estimate以及net.paoding.analysis.examples包下面的示例代码。
注意:这里配置环境变量要重新启动系统后生效
我现在测试用的Lucene版本是lucene-2.4.0,它已经能够支持中文分词,但它是采用一元分词(逐字拆分)的方法,即把每一个汉字 当作是一个词,这样会使建立的索引非常庞大,会影响查询效率.所以大多运用lucene的朋友,都会考虑使用其它的中文分词包,这里我就介绍最为常用的" 庖丁解牛"分词包,当然它也是一个值得推荐的中文分词包.
本文主要讲解Lucene如何整合"庖丁解牛"分词包,在整合前,还是先通过一个实例演示一下Lucene自带的中文分词器的分词效果.
package gzu.lyq.luceneAnalyzer;
import java.io.StringReader;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.Token;
import org.apache.lucene.analysis.TokenStream;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
//测试Lucene自带的中文分词器
public class LuceneAnalyzer {
public static void main(String[] args) throws Exception {
//StandardAnalyzer: 一元分词
Analyzer analyzer = new StandardAnalyzer();
String indexStr = "我的QQ号码是58472399";
StringReader reader = new StringReader(indexStr);
TokenStream ts = analyzer.tokenStream(indexStr, reader);
Token t = ts.next();
while (t != null) {
System.out.print(t.termText()+" ");
t = ts.next();
}
}
}
分词结果:我 的 qq 号 码 是 58472399
通过上面的例子就会发现,Lucene自带分词器是将中文逐字拆分的,这是最为原始的分词方法,现在大都不采用.
下面进入主题,来讲解Lucene和"庖丁解牛"中文分词包的整合.
"庖丁解牛"的下载地址是[url]http://code.google.com/p/paoding/downloads/list[/url],下载好后解压,我解压在E:\paoding2_0_4,进入该目录,首 先将paoding-analysis.jar拷贝到项目的WEB-INF/lib目录;接着需要设置环境变量PAODING_DIC_HOME,变量 名:PAODING_DIC_HOME 变量值:E:\paoding2_0_4\dic 第三步将E:\paoding2_0_4\src目录下的paoding-dic-home.properties属性文件拷贝到项目的src目录下,添 加一行paoding.dic.home=E:/paoding2_0_4/dic 好了,到这里,已经完成了Lucene和"庖丁解牛"的整合,下面写个例子来测试一下.
package gzu.lyq.luceneAnalyzer;
import java.io.StringReader;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.Token;
import org.apache.lucene.analysis.TokenStream;
import net.paoding.analysis.analyzer.PaodingAnalyzer;
//测试"庖丁解牛"中文分词器的分词效果
public class PaodingAnalyzer {
public static void main(String[] args) throws Exception {
Analyzer analyzer = new PaodingAnalyzer();
String indexStr = "我的QQ号码是58472399";
StringReader reader = new StringReader(indexStr);
TokenStream ts = analyzer.tokenStream(indexStr, reader);
Token t = ts.next();
while (t != null) {
System.out.print(t.termText()+" ");
t = ts.next();
}
}
}
分词结果:我的 qq 号码 58472399
如果把indexStr换成是"中华人民共和国万岁" ,那么分词结果为:
中华 华人 人民 共和 共和国 万岁
java 庖丁解牛中文分词_庖丁解牛中文分词包相关推荐
- JAVA使用es不分词_谈谈 Elasticsearch 分词和自定义分词
初次接触 Elasticsearch 的同学经常会遇到分词相关的难题,比如如下这些场景: 1.为什么命名有包含搜索关键词的文档,但结果里面就没有相关文档呢? 2.我存进去的文档到底被分成哪些词(ter ...
- 与自定义词典 分词_如何掌握分词技术,你需要学会这些
导语 本周对自然语言处理的分词技术进行了学习.本文针对分词技术的进行了全视角的概览,目标是掌握什么是分词技术.为什么需要分词技术和如何使用分词技术.后续将分不同篇幅对其中内容进行深挖和讲解. 文章结构 ...
- java ikanalyzer分词_利用ikanalyzer分词
最近想研究一下word2vec,第一步是要搞个训练预料.看了看网上有人是用sogou labs提供的新闻语料进行研究的.但是我觉得可能单纯用新闻语料可能还不够吧. 所以就开始在网上找一些别的语料,后来 ...
- pythonjieba分词_$好玩的分词——python jieba分词模块的基本用法
jieba(结巴)是一个强大的分词库,完美支持中文分词,本文对其基本用法做一个简要总结. 安装jieba pip install jieba 简单用法 结巴分词分为三种模式:精确模式(默认).全模式和 ...
- python中字符串中文乱码_[python] 中文乱码问题
乱码产生的原因 乱码产生的根本原因是字节流转换字符前后不一致导致.只要掌握了这个核心,就能解决乱码问题.python2中使用了一些"trick"(没有区分字符和字节流),所以理解起 ...
- 怎么中文读_这些中文名字如果用日语念出来会怎样?!
日本和我们中国一样,奇葩的名儿也挺多,也有很多本身意境非常好的名字,只不过有的时候,有的中文名字用日语念出来,听的总觉得有点奇怪,让人吐槽不已. 如果你拥有以下名字,请注意了,不要让日本人念出来-- ...
- 中文格式_常见中文编码格式
中文编码主要有以下四种: GB2312简体中文编码,一个汉字占用2个字节,在大陆是主要的编码方式.当文章/网页中包含繁体中文.日文.韩文等时,这些内容可能无法被正确编码. BIG5繁体中文编码,主要在 ...
- hive桌游中文规则_桌面游戏-中文规则-Burn Rate 烧钱
烧钱是一款大家来扮演网络泡沫时代网站公司老板来勉强支撑自己公司的游戏.游戏过程中你所拥有的公司员工会不断消耗你的资金,另外竞争对手还会打击你,让你更快的消耗资金直到倒闭.随着游戏进行,不断有公司资金耗 ...
- java war启动慢_解决springboot war包在tomcat部署时启动慢的问题
web.jpg 最近测试服务器tomcat发布一次很慢,为了解决这个问题,特地看了tomcat的log文件,启动日志在tomcat/logs/catalina.out文件中. 1.INFO:org.a ...
最新文章
- php facade模,PHP 设计模式之外观模式 Facade
- docker 三种挂载文件路径方式
- android界面之美---自定义网络请求进度加载对话框
- bilateral filter双边滤波器的通俗理解
- Redis持久化方式的选择
- JavaParser中AST节点的观察者
- Typecho博客支持Emoji表情功能设置
- 用java script随机数_js中Math.random()生成指定范围数值的随机数【转】
- 三星宣布7nm LPP芯片量产!性能高20%,功耗降50%,面积降40%
- ps基础入门3-文字样式
- python 爬虫遇到br网页压缩
- 想成为CSS大师,你倒是学啊 -30个资源大推荐
- 禅道二次开发(一):开发环境配置
- 中国水疗产品行业市场供需与战略研究报告
- adb命令重置_ADB命令手册大全
- [附源码]Python计算机毕业设计SSM快递代收系统(程序+LW)
- ubuntu开机画面的修改
- Git 派生属于自己的分支
- msp430g2553串口接受数据_详细解读:MSP430G2553单片机串口通信
- pstools使用教程