- 浏览: 248718 次
- 性别:
- 来自: 深圳
-
文章分类
最新评论
-
sweed0:
为何每一段代码都重复一次呢?
spring注解实例二 -
Gary_Huangpf:
- - 插件报错啊
Ext前台分页 -
ddvk2007:
版主 我想請問你所說的mapreduce是hadoop的還是g ...
MapReduce中的Shuffle和Sort分析 -
人可木:
好问章,楼主写的相当详细。。。多谢。。。
findbugs插件的安装与应用 -
hautbbs:
按照博主的方法启动调试出现jvm terminated.Ex ...
10分钟学会使用MyEclipse断点调试js
目前lucene自身提供的StandardAnalyzer已经具备中文分词的功能,但是不一定能够满足大多数应用的需要。
另外网友谈的比较多的中文分词器还有:
CJKAnalyzer
ChineseAnalyzer
IK_CAnalyzer(MIK_CAnalyzer)
还有一些热心网友自己写的比较不错的分词器在此就不说了,有兴趣的可以自己研究研究。
以上三个中文分词器并不是lucene2.2.jar里提供的。
CJKAnalyzer和ChineseAnalyzer分别是lucene-2.2.0目录下contrib目录下analyzers的lucene-analyzers-2.2.0.jar提供的。分别位于cn和cjk目录。
IK_CAnalyzer(MIK_CAnalyzer)是基于分词词典,目前最新的1.4版本是基于lucene2.0开发的。以上分词器各有优劣,比较如下:
import java.io.Reader;
import java.io.StringReader;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.StopFilter;
import org.apache.lucene.analysis.Token;
import org.apache.lucene.analysis.TokenFilter;
import org.apache.lucene.analysis.TokenStream;
import org.apache.lucene.analysis.cjk.CJKAnalyzer;
import org.apache.lucene.analysis.cn.ChineseAnalyzer;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.mira.lucene.analysis.IK_CAnalyzer;
import org.mira.lucene.analysis.MIK_CAnalyzer;
public class All_Test {
private static String string = "中华人民共和国在1949年建立,从此开始了新中国的伟大篇章。 ";
public static void Standard_Analyzer(String str) throws Exception{
Analyzer analyzer = new StandardAnalyzer();
Reader render = new StringReader(str);
StopFilter stopFilter = (StopFilter) analyzer.tokenStream( " ", render );
System.out.println( "=====StandardAnalyzer==== ");
System.out.println( "分析方法:默认没有词只有字(一元分词) ");
Token token;
while ((token = stopFilter.next()) != null) {
System.out.println(token.termText());
}
}
public static void CJK_Analyzer(String str) throws Exception{
Analyzer analyzer = new CJKAnalyzer();
Reader render = new StringReader(str);
StopFilter stopFilter = (StopFilter) analyzer.tokenStream( " ", render);
System.out.println( "=====CJKAnalyzer==== ");
System.out.println( "分析方法:交叉双字分割(二元分词) ");
Token token;
while ((token = stopFilter.next()) != null) {
System.out.println(token.termText());
}
}
public static void Chiniese_Analyzer(String str) throws Exception{
Analyzer analyzer = new ChineseAnalyzer();
Reader render = new StringReader(str);
TokenFilter tokenFilter = (TokenFilter) analyzer.tokenStream( " ", render);
System.out.println( "=====chinese analyzer==== ");
System.out.println( "分析方法:基本等同StandardAnalyzer(一元分词) ");
Token token;
while ((token = tokenFilter.next()) != null) {
System.out.println(token.termText());
}
}
public static void ik_CAnalyzer(String str) throws Exception{
// Analyzer analyzer = new MIK_CAnalyzer();
Analyzer analyzer = new IK_CAnalyzer();
Reader reader = new StringReader(str);
TokenStream tokenStream = (TokenStream)analyzer.tokenStream( " ", reader);
System.out.println( "=====IK_CAnalyzer==== ");
System.out.println( "分析方法:字典分词,正反双向搜索 ");
Token token;
while ((token = tokenStream.next()) != null) {
System.out.println(tokenStream.termText());
}
}
public static void main(String[] args) throws Exception{
String str = string;
System.out.println( "我们测试的字符串是: "+str);
Standard_Analyzer(str);
CJK_Analyzer(str);
Chiniese_Analyzer(str);
ik_CAnalyzer(str);
}
}
分词结果如下:
我们测试的字符串是:中华人民共和国在1949年建立,从此开始了新中国的伟大篇章。
=====StandardAnalyzer====
分析方法:默认没有词只有字(一元分词)
中
华
人
民
共
和
国
在
1949
年
建
立
从
此
开
始
了
新
中
国
的
伟
大
篇
章
=====CJKAnalyzer====
分析方法:交叉双字分割(二元分词)
中华
华人
人民
民共
共和
和国
国在
1949
年建
建立
从此
此开
开始
始了
了新
新中
中国
国的
的伟
伟大
大篇
篇章
=====chinese analyzer====
分析方法:基本等同StandardAnalyzer(一元分词)
中
华
人
民
共
和
国
在
年
建
立
从
此
开
始
了
新
中
国
的
伟
大
篇
章
=====IK_CAnalyzer====
分析方法:字典分词,正反双向搜索
中华人民共和国
中华人民
中华
华人
人民共和国
人民
人
共和国
共和
1949年
建立
从此
开始
新中国
中国
伟大
大篇
篇章
如果 ik_CAnalyzer(String str) 里采用
Analyzer analyzer = new MIK_CAnalyzer();
那么该方法的分词结果是:
中华人民共和国
1949年
建立
从此
开始
新中国
伟大
大篇
篇章
可以看到各种分词结果各不相同,根据应用的需要可以选择合适的分词器。
关于IKAnalyzer的介绍可以参考:
http://blog.csdn.net/dbigbear/archive/2007/01/24/1492380.aspx
http://topic.csdn.net/u/20070714/13/84db902a-9128-4b1b-8dd8-a631f15db931.html
//测试"庖丁解牛"中文分词器的分词效果
public class PaodingAnalyzer {
public static void main(String[] args) throws Exception {
Analyzer analyzer = new PaodingAnalyzer();
String indexStr = "我的QQ号码是38334641";
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 号码 38334641
如果把indexStr换成是"中华人民共和国万岁" ,那么分词结果为:
中华 华人 人民 共和 共和国 万岁
发表评论
-
solr服务器复制、服务器分发(shard)、Multicore(分片)配置,SolrJ的使用
2012-07-16 15:23 7315Solr服务器复制的配置 1,首先测试在本机上开启三个t ... -
Solr Replication(复制)是怎样工作的
2012-07-16 15:18 1179luence有一个 ... -
Solr Multicore 结合 Solr Distributed Searching 切分大索引来搜索
2012-07-13 17:58 944原文出处:http://blog.chenl ... -
solr学习资料收集
2012-07-13 17:57 1048学习新东西前,我一般都会先找些文章来看,整个原理呀 ... -
Searching过程详解
2012-07-11 11:41 10821.拦截请求,解析请求并构建相应的handler。 发送 ... -
solr的配置参数理解
2012-07-11 11:35 1064l dataDir参数 用于替换默认的索引数据目录(. ... -
DataImportHandler从数据库导入大量数据而内存溢出的问题
2012-07-11 11:33 1603Solr有个很方便的 ... -
Solr 3.5 + Tomcat7 + mmseg4j + 搜狗词库 -配置并运行
2012-07-11 11:22 1480这是我看到过的写的较好的一篇入门文章,个人觉得相对有些文章 ... -
solrj之二次开发
2012-07-11 11:19 1619Solrj已经是很强大的solr客户端了。它本身就包装了htt ... -
SOLR搭建企业搜索平台
2012-05-24 18:34 1815一、SOLR搭建企业搜索平台--MultiCore Solr ... -
solr理论
2012-05-24 17:11 10851、 solr基础 因为 Solr 包装并扩展了 Luc ... -
solr中Schema.xml和solrconfig.xml分析
2012-05-24 17:09 1701一、字段配置(schema) schema.xml位于s ... -
solr部署
2012-05-21 18:45 10111,从官方网站下载solr:apache-solr-3 ... -
lucene检索运算符
2012-05-05 13:05 1150lucene检索运算符: 1. “:” 指定字段查指定值 ... -
当前几个主要的Lucene中文分词器的比较
2012-01-05 15:36 14971. 基本介绍: paoding :Lucene ... -
全文检索lucene的使用和优化
2012-01-05 15:35 16651 lucene简介 1.1 什么是lucene L ... -
lucene 索引 原理
2011-12-06 09:33 816Lucene是一个高性能的java ... -
lucene中QueryParser操作符的疑惑
2011-11-25 16:15 893在测试Lucene搜索时,对于 AND 与 + 的区别研 ... -
lucene学习资料收集
2011-11-25 16:09 817由于公司用到lucene,现对看到过的帮助较大的luce ... -
利用 Heritrix 构建特定站点爬虫
2011-11-25 15:41 866本文由浅入深,详细介绍了 Heritrix 在 Ecl ...
相关推荐
根据给定的信息,我们将重点讨论几种常用的方法:**签名值比对**、**局部敏感哈希**特别是**MinHash**算法,以及**分词与分句**技术。 #### 签名值比对 签名值比对是一种常用的技术手段,用于判断两个或多个文档...
2. **分词**:使用分词库(如jieba分词)将文章内容分解成单个汉字或词语。 3. **关键词匹配**:遍历分词结果,通过哈希表或Trie树进行关键词匹配。 4. **结果处理**:如果发现违禁词,记录对应的文章ID,并写入到...
中文分词更具挑战性,因为中文没有明显的空格分隔。常见的分词方法包括基于词典的分词、基于统计的分词和基于深度学习的分词。词典分词依赖于预定义的词汇表,而统计分词则依据词语在语料库中的共现频率。近年来,...
上述几种论文检测工具各具特色,不仅为学生提供了便利的论文自查手段,也为教师和学术机构提供了可靠的评估依据。其中,PaperPass和维普通达因其专业的技术背景和广泛的用户基础,在国内享有较高的声誉。拷克网和...
"大学生毕业论文检测系统"是一种专门用于帮助学生检查其毕业论文原创性的工具。该系统的主要目的是防止抄袭,确保学术诚信。在学术界,抄袭是严重违反学术道德的行为,因此,大学通常要求毕业生在提交论文前进行检测...
敏感词汇检测是该项目的核心部分,尽管代码片段中并未给出具体的实现细节,但可以设想几种可能的方法: 1. **关键词匹配**:将预定义的敏感词汇列表与文本内容进行比对。 2. **正则表达式**:使用正则表达式来匹配...
在IT领域,单词拼写检查的程序是一种非常实用的工具,尤其对于文本处理、文档编辑以及语言学习等应用场景。这个程序的主要目标是帮助用户确保他们的文字输入无误,避免拼写错误,提升文本质量。在现代计算机应用中,...
2. **文本预处理**:这包括去除标点符号、数字和特殊字符,以及进行分词,将长句子拆分为更小的单元以便比对。 3. **创建索引**:将预处理后的文本建立索引,以便快速查找和比较。 4. **查重算法**:宏可能使用TF-...
文章中提到的系统构建了一个包含某高校几年内所有相关学术论文的数据库,以此为基础进行查重。 在系统设计上,首先进行了需求分析,这包括明确查重的目标、确定系统应具备的功能以及用户群体的需求。系统采用敏捷...
正则表达式是一种强大的模式匹配工具,可以用来匹配、查找、替换复杂的文本模式。而文本处理算法,如KMP或Boyer-Moore算法,用于高效地查找文本中的特定字符串,显著提高了查询速度。 在myEclipse环境中开发这样的...
NLP包括诸多技术,比如文本抽取、比对、审核、纠错、写作等,这些都是文档智能审阅系统的核心功能。系统使用自定义的机器学习模型来自动抽取文档中的关键信息,简化文档处理过程。这种技术已经广泛应用于人力资源、...
在实际应用中,这可能涉及到诸如文本抄袭检测、文档比对或信息提取等场景。在学术研究、新闻报道和内容审核等领域,这样的工具具有很高的实用价值。 “0.1.10”是版本号,表示这是该库的第10次小版本更新。通常,...
敏感词过滤的实现通常有几种方法: 1. **精确匹配**:这是最基础的方式,直接查找字符串是否完全匹配敏感词。但这种方式无法处理谐音或变形的情况。 2. **正向最大匹配**:从左到右查找最长的敏感词,避免误判。 ...
在IT行业中,拼写检查器是一种非常实用的工具,尤其对于文本编辑、写作软件和在线平台来说至关重要。本文将深入探讨“spellchecker”这一特定的拼写检查器,它主要用于检查文本文件中的拼写错误,并提供相应的纠正...
该工具主要通过比对输入文档与大量网络资源或特定数据库中的内容,找出相似度较高的片段,从而判断是否存在抄袭行为。其主要特点包括: 1. **广泛的数据源**:PlagiarismChecker可以接入各种在线资源,如学术论文库...