java 庖丁解牛中文分词_庖丁解牛"中文分词包-程序员宅基地

技术标签: 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换成是"中华人民共和国万岁" ,那么分词结果为:

中华  华人  人民  共和  共和国  万岁

pixy.gif?x-id=0153c589-f846-8175-bfea-49ec5bd01e58

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_39703926/article/details/114135360

智能推荐

软连接ln_软连接 没有l-程序员宅基地

文章浏览阅读139次。软连接ln[root@even tmp]# ln --helpUsage: ln [OPTION]... [-T] TARGET LINK_NAME (1st form)or: ln [OPTION]... TARGET (2nd form)or: ln [OPTION]... TARGET... DIRECTORY (3rd form)or: ln [OPTION]... -t DIRECTORY TARGET... (4th form)In the 1st form, create a li_软连接 没有l

LeetCode 2--两数相加 ( Add Two Numbers ) ( C语言版 )_struct listnode* addtwonumbers(struct listnode* l1-程序员宅基地

文章浏览阅读2.3k次,点赞2次,收藏4次。题目描述 : 代码如下 ( 附有解析 ) : /** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */struct ListNode* addTwoNumbers(struct ListNode* l..._struct listnode* addtwonumbers(struct listnode* l1, struct listnode* l2) { }

ssm644基于Vue的健身房会员管理系统+vue-程序员宅基地

文章浏览阅读802次,点赞22次,收藏20次。本课题所开发的应用程序在数据操作方面是不可预知的,是经常变动的,没有办法直接把数据写在文档里,这样不仅仅不安全,也不能实现应用程序的功能。参考自己的学习进度和操作习惯来讲,Oracle数据库是适合的,但是所需要的的安装软件很大,并且有好多不需要的功能都是开启的状态,十分消耗电脑资源,所以没有选择Oracle数据库,而SQL Server数据库虽然学过,但是安装的时候因为电脑上可能有其他的软件存在,经常性的出问题,而安装问题不好解决就需要重新安装操作系统,这样对已经存在的软件来讲又是一种时间上的浪费。

[算法练习及思路-程序员面试金典(Java解法)]No9.字符串轮转-程序员宅基地

文章浏览阅读114次。题号:no9题目名:字符串轮转原题URL:https://leetcode-cn.com/problems/string-rotation-lcci/题目描述字符串轮转。给定两个字符串s1和s2,请编写代码检查s2是否为s1旋转而成(比如,waterbottle是erbottlewat旋转后的字符串)。示例示例 1: 输入:s1 = "waterbottle", s2 = "erbottlewat" 输出:True示例 2: 输入:s1 = "aa", s2 = "aba" 输出:F

LaTex中“图片引用失败_latex模板引入图片失败-程序员宅基地

文章浏览阅读2.1k次。在LaTex中引用图片失败,出现(??)查了一些博客,发现是加图片标签时出的问题:一般来说图片会命名:\caption{图片名}.要想引用成功, 必须要把标签加在图片命名之后:例如:\begin{figure}[H]\centering\includegraphics[width=0.8\textwidth]{kkk.png}\caption{kkk}\label{kk}\end{figure}这样在后文使用(\ref{kk})才能成功引用,用IEEE的模板的时候期刊不用fi_latex模板引入图片失败

推荐系统遇上深度学习(一零四)-[阿里]CTR预估中细粒度特征学习的多交互注意力网络...-程序员宅基地

文章浏览阅读1.1k次。今天给大家介绍的是阿里在WSDM21上发表的一篇文章,题目为《Multi-Interactive A ention Network for Fine-grained Feature Le..._transformer ctr

随便推点

人生若只如初见-纳兰性德_《云荒 只如初见》纳兰词-程序员宅基地

文章浏览阅读2.6k次。木兰词 作者: 纳兰性德 拟古决绝词谏友。人生若只如初见,何事秋风悲画扇。等闲变却故人心,却道故人心易变。 骊山语罢清宵半,泪雨霖铃终不怨。何如薄幸锦衣郎,比翼连枝当日愿。【赏析】 无疑,该阙词章与白氏《长恨歌》皆涉及唐玄宗和杨玉环那段毁誉参半的爱情故事。 站在政治的角度,李隆基荒淫废国。 从感情的意义上来看,虽然唐玄宗迫于三军众怒,无奈将杨贵妃赐死马嵬坡,从此生死诀别、阴_《云荒 只如初见》纳兰词

micro2440与PC同步问题(个人情况,仅供参考)_micro2440同步-程序员宅基地

文章浏览阅读881次。我用的是micro2440的3.5寸开发板,不知道实验室哪一年采购的,因为要用到wince,所以拿来准备学习一下。前期安装软件暂且不提,按照手册来应该没什么问题,可到了用activesync与PC同步的时候悲剧就发生了,烧写完wince系统,连上PC机无任何反应,而且本来很流畅的wince系统,只要一用USB跟PC连接就变得奇卡无比。在网上搜了大篇的资料也没找到解决的办法,迫不得已,只_micro2440同步

java实现国密算法SM3摘要加密_sm3utils jar包下载-程序员宅基地

文章浏览阅读847次。java实现SM3摘要加密_sm3utils jar包下载

面试问题某个项目中遇到过什么问题_面试中,面试官文你在项目中遇到过哪些问题-程序员宅基地

文章浏览阅读4.8w次,点赞4次,收藏21次。这是面试官很喜欢问的一个问题,你是会刁难你的一个地方。如果你在项目中是核心解决了一些技术难题,那这个问题对你来说应该是很好回答的。你可以说出这个项目遇到的技术问题,以及你是怎么解决的。这种问题往往可以从并发,稳定性,容错,性能等方面入手。如果你没有参与这种问题的解决,平时也要多关注其他人是怎么解决的,不要局限在自己的空间里。还有就是你可以给出一个场景,自己设计一种可行的解决方案,予以阐述。总之你要_面试中,面试官文你在项目中遇到过哪些问题

jar包冲突问题_jar:file:/d:/program%20files/apache-maven-3.5.4/re-程序员宅基地

文章浏览阅读472次。slf4j的jar包冲突。SLF4J: Class path contains multiple SLF4J bindings.SLF4J: Found binding in [jar:file:/D:/apache-maven-3.5.3/repository/ch/qos/logback/logback-classic/1.1.11/logback-classic-1.1.11.jar!/..._jar:file:/d:/program%20files/apache-maven-3.5.4/repository/io/springfox/spri

Mybatis自动去重,以及id vs result_mybatis去重-程序员宅基地

文章浏览阅读3.6k次。今天大部分时间一直被一个问题困扰:当程序执行某Mapper.java的一个list函数,明明底层的SQL语句和ELK中的日志都显示返回了376条记录(如图1,图2),最后程序却只返回了209条。图1: 日志显示此list函数返回了376条记录图2: 日志有376条相关的ResultSet记录我一度以为这跟今天尝试使用的MyBatis分页插件PageHelper(使用了MySql的limit)有关,后面发现不是。即使不使用PageHelper,问题依旧。而且我发现一点:实际返回的209条记录里,似乎_mybatis去重

推荐文章

热门文章

相关标签