public class AnalyzerTest extends TestCase {
protected PaodingAnalyzer analyzer = new PaodingAnalyzer();
protected StringBuilder sb = new StringBuilder();
protected String dissect(String input) {
try {
TokenStream ts = analyzer.tokenStream("", new StringReader(input));
Token token;
sb.setLength(0);
while ((token = ts.next()) != null) {
sb.append(token.termText()).append('/');
}
if (sb.length() > 0) {
sb.setLength(sb.length() - 1);
}
return sb.toString();
} catch (Exception e) {
e.printStackTrace();
return "error";
}
}
// --------------------------------------------------------------
// 仅包含词语的句子分词策略
// --------------------------------------------------------------
/**
* 句子全由词典词语组成,但词语之间没有包含、交叉关系
*/
public void test100() {
String result = dissect("台北中文国际");
assertEquals("台北/中文/国际", result);
}
/**
* 句子全由词典词语组成,但词语之间有包含关系
*/
public void test101() {
String result = dissect("北京首都机场");
assertEquals("北京/首都/首都机场/机场", result);
}
/**
* 句子全由词典词语组成,但词语之间有交叉关系
*/
public void test102() {
String result = dissect("东西已经拍卖了");
assertEquals("东西/已经/拍卖/卖了", result);
}
/**
* 句子全由词典词语组成,但词语之间有包含、交叉等复杂关系
*/
public void test103() {
String result = dissect("羽毛球拍");
assertEquals("羽毛/羽毛球/羽毛球拍/球拍", result);
}
// --------------------------------------------------------------
// noise词汇和单字的分词策略
// --------------------------------------------------------------
/**
* 词语之间有一个noise字(的)
*/
public void test200() {
String result = dissect("足球的魅力");
assertEquals("足球/魅力", result);
}
/**
* 词语之间有一个noise词语(因之)
*/
public void test201() {
String result = dissect("主人因之生气");
assertEquals("主人/生气", result);
}
/**
* 词语前后分别有单字和双字的noise词语(与,有关)
*/
public void test202() {
String result = dissect("与谋杀有关");
assertEquals("谋杀", result);
}
/**
* 前有noise词语(哪怕),后面跟随了连续的noise单字(了,你)
*/
public void test203() {
String result = dissect("哪怕朋友背叛了你");
assertEquals("朋友/背叛", result);
}
/**
* 前后连续的noise词汇(虽然,某些),词语中有noise单字(很)
*/
public void test204() {
String result = dissect("虽然某些动物很凶恶");
assertEquals("动物/凶恶", result);
}
// --------------------------------------------------------------
// 词典没有收录的字符串的分词策略
// --------------------------------------------------------------
/**
* 仅1个字的非词汇串(东,西,南,北)
*/
public void test300() {
String result = dissect("东&&西&&南&&北");
assertEquals("东/西/南/北", result);
}
/**
* 仅两个字的非词汇串(古哥,谷歌,收狗,搜狗)
*/
public void test302() {
String result = dissect("古哥&&谷歌&&收狗&&搜狗");
assertEquals("古哥/谷歌/收狗/搜狗", result);
}
/**
* 多个字的非词汇串
*/
public void test303() {
String result = dissect("这是鸟语:玉鱼遇欲雨");
assertEquals("这是/鸟语/玉鱼/鱼遇/遇欲/欲雨", result);
}
/**
* 两个词语之间有一个非词汇的字(真)
*/
public void test304() {
String result = dissect("朋友真背叛了你了!");
assertEquals("朋友/真/背叛", result);
}
/**
* 两个词语之间有一个非词汇的字符串(盒蟹)
*/
public void test305() {
String result = dissect("建设盒蟹社会");
assertEquals("建设/盒蟹/社会", result);
}
/**
* 两个词语之间有多个非词汇的字符串(盒少蟹)
*/
public void test306() {
String result = dissect("建设盒少蟹社会");
assertEquals("建设/盒少/少蟹/社会", result);
}
// --------------------------------------------------------------
// 不包含小数点的汉字数字
// --------------------------------------------------------------
/**
* 单个汉字数字
*/
public void test400() {
String result = dissect("二");
assertEquals("2", result);
}
/**
* 两个汉字数字
*/
public void test61() {
String result = dissect("五六");
assertEquals("56", result);
}
/**
* 多个汉字数字
*/
public void test62() {
String result = dissect("三四五六");
assertEquals("3456", result);
}
/**
* 十三
*/
public void test63() {
String result = dissect("十三");
assertEquals("13", result);
}
/**
* 二千
*/
public void test65() {
String result = dissect("二千");
assertEquals("2000", result);
}
/**
* 两千
*/
public void test651() {
String result = dissect("两千");
assertEquals("2000", result);
}
/**
* 2千
*/
public void test652() {
String result = dissect("2千");
assertEquals("2000", result);
}
/**
*
*/
public void test653() {
String result = dissect("3千万");
assertEquals("30000000", result);
}
/**
*
*/
public void test654() {
String result = dissect("3千万个案例");
assertEquals("30000000/30000000个/案例", result);
}
/**
*
*/
public void test64() {
String result = dissect("千万");
assertEquals("千万", result);
}
public void test66() {
String result = dissect("两两");
assertEquals("两两", result);
}
public void test67() {
String result = dissect("二二");
assertEquals("22", result);
}
public void test68() {
String result = dissect("2.2两");
assertEquals("2.2/2.2两", result);
}
public void test69() {
String result = dissect("二两");
assertEquals("2/2两", result);
}
public void test7() {
String result = dissect("哪怕二");
assertEquals("2", result);
}
}
分享到:
相关推荐
1. **分词器(Tokenizer)**:Paoding Analysis提供了多种分词策略,如精确模式、全模式、关键词模式等,以应对不同场景的需求。精确模式力求每个词语都准确无误,全模式则尽可能多地切分出所有可能的词语,而关键词...
标题中的“庖丁分词jar包和dic目录”指的是一个用于中文分词处理的软件工具,其中包含了必要的jar包和字典文件。庖丁分词是基于Java开发的一个高效、可扩展的中文分词库,它借鉴了Lucene的分词技术,并在此基础上...
本程序使用了Lucene 2.2.0作为全文索引引擎,使用庖丁分词(2.0.4-alpha)中文分词等一些开源包,本程序只实现了最基本的搜索引擎系统,现阶段只作为测试一下系统的性能,更多的功能有待添加。 对本程序有兴趣的...
2. **初始化**:在Java代码中,需要创建庖丁分词的实例,这通常涉及到加载词典和设置分词策略。 3. **分词处理**:调用分词API,将待处理的中文文本传入,得到分词结果。庖丁分词提供了多种分词模式,如精确模式、...
"庖丁解牛"是一款专为中文处理设计的分词工具,其版本2.0.4-alpha2提供了更稳定和高效的分词体验。这个工具的核心功能是将中文文本拆分成有意义的词语,这对于中文信息处理、自然语言理解和搜索引擎优化等场景至关...
庖丁分词.jar 庖丁分词.jar 庖丁分词.jar 庖丁分词.jar
《Lucene中文分词——庖丁解牛》 在自然语言处理领域,中文分词是基础且关键的一环。在Java开发中,Apache Lucene是一个强大的全文搜索引擎库,但默认并不支持中文,这就需要借助第三方分词工具。本文将深入探讨...
"paoding-analysis-2.0.4-beta"是庖丁分词的一个特定版本,其中"2.0.4"代表该版本的主次版本号,"beta"则表示这是一个测试版,可能包含未解决的问题或功能不完善的地方,开发者通常会发布正式版之前先推出测试版,...
然而,由于中文的复杂性,简单的英文分词策略无法满足需求,于是有了针对中文的分词方法——"庖丁解牛分词法"。该方法是专门为了解决Lucene在处理中文文本时的分词难题而设计的。在本文中,我们将深入探讨这一分词法...
庖丁解马--木马查杀深度剖析,学习此教程后大部分木马可以手动查杀
庖丁分词是一款在中文自然语言处理领域广泛应用的分词工具,它以其高效、准确的特点深受研究人员和开发者的喜爱。这个测试数据集是为评估和优化庖丁分词的性能而设计的,对于理解分词技术、进行算法比较以及提升模型...
通过阅读源代码,你可以了解其内部工作原理,如分词算法、字典构建、动态策略等,这对于理解中文分词技术,以及自定义和优化分词规则非常有帮助。 5. **学习与应用**: 对于开发者来说,学习庖丁分词的源代码可以...
庖丁分词 使用 paoding-analysis-2.0.4-beta.zip 版时异常 Exception in thread "main" java.lang.AbstractMethodError: org.apache.lucene.analysis.TokenStream.incrementToken()Z 换用svn里源码版正常 ...
1. **引入依赖**:在项目中引入Paoding分词器的库文件,例如`paoding-analysis-2.0.4-alpha2`。 2. **创建分词器**:通过Paoding提供的API创建分词器实例,设置相关参数。 3. **读取文本**:读取待分词的中文文本...
刨丁解羊中文分词器,主要用于对网络蜘蛛或网络爬虫抓取的网页进行分词,支持繁体中文分词、简体中文分词、英文分词,是制作通用搜索引擎和垂直搜索引擎的核心组件。该软件在普通PC机器上测试显示:TXT格式正文分词...
### 庖丁解牛-CI解剖:进程环境深度解析 #### 一、CI概念及其重要性 在软件工程和系统设计领域,“庖丁解牛”比喻深入剖析复杂系统的能力。本文将以此为引子,深入探讨“CI解剖”,这里的CI特指“Cell Individual...
《C#庖丁解牛——ASP.NET开发》是一本深入探讨C#编程语言与ASP.NET 3.5框架结合使用的专业书籍。通过“庖丁解牛”的比喻,作者旨在引导读者像古代名厨庖丁一样,精准而熟练地掌握ASP.NET 3.5中的控件和组件开发技术...
可以从官方网站或者第三方资源站点下载paoding分词的最新版本,例如`paoding-analysis-2.0.4-alpha2.zip`和`Paoding分词.zip`。 3. **解压与配置** 解压缩下载的文件,将解压后的目录添加到你的项目类路径...
"庖丁解牛分词" 是一款针对中文文本处理的分词工具,主要适用于Java环境。这个工具包的名称形象地借用中国古代故事“庖丁解牛”,寓意对文本的精细处理,如同庖丁对牛肉的熟练分解。在Java开发中,分词是自然语言...
庖丁中文分词需要一套词典,这些词典需要统一存储在某个目录下,这个目录称为词典安装目录。词典安装目录可以是文件系统的任何目录,它不依赖于应用程序的运行目录。将词典拷贝到词典安装目录的过程称为安装词典。...