`
Qieqie
  • 浏览: 341528 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

庖丁分词(2.0.4-alpha)的分词策略

阅读更多
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);

    }

 

}
 
分享到:
评论
6 楼 bluelai 2009-03-02  
支持切切,加油
5 楼 FGhost 2008-09-09  
庖丁还是很不错的!
支持一下
4 楼 unkin 2007-10-25  
如果查询的时候只使用最大匹配法,建索引的时候按默认方式建,有什么办法吗?有些时候搜索结果出来的排序是最小切分出来的排最前面,最大最贴近的反而排后面去了.
3 楼 lehmann_ding 2007-10-24  
这两天一直在看全文检索和分词的觉得paoding不错。
我在做一个网站,我打算用你的paoding,非常感谢你的共享。
以后可能还有问题要请教呢。
2 楼 transist 2007-10-22  
希望能够成为中国开放源码最好的中文分词,支持作者的探索
1 楼 shguan 2007-09-26  
支持一下作者的辛勤劳动

相关推荐

    paoding-analysis-2.0.4-alpha2.zip_java 分词_paoding

    **Java分词技术详解——以Paoding Analysis 2.0.4 Alpha2为例** 在中文信息处理领域,分词是至关重要的一步,它涉及到搜索引擎、文本挖掘、机器翻译等多个应用场景。Java作为广泛应用的编程语言,提供了多种优秀的...

    NetRobot网络机器人

    本程序使用了Lucene 2.2.0作为全文索引引擎,使用庖丁分词(2.0.4-alpha)中文分词等一些开源包,本程序只实现了最基本的搜索引擎系统,现阶段只作为测试一下系统的性能,更多的功能有待添加。 对本程序有兴趣的...

    庖丁解牛 中文分词工具

    "庖丁解牛"中文分词工具是由一名热爱开源的开发者精心打造的,其目的是为了优化和简化中文文本的处理流程,它支持版本号为2.0.4-alpha2,专为满足中文信息处理需求而设计。这款分词工具的核心技术将中文文本中的连续...

    Lucene 庖丁解牛分词法2.4版本jar包

    在Lucene中,"庖丁解牛分词法"通过集成第三方分词库实现,如"paoding-analysis-2.0.4-alpha2",这是一个专门为Lucene定制的中文分词组件。这个版本的分词器具有以下特点: 1. **高效性能**:优化了算法,使其在处理...

    lucene中文分词器(paoding解牛)

    Paoding分词器是一款专为Lucene设计的高性能、高精度的中文分词组件,它在2.0.4-alpha2这个版本中,不仅提供了基础的分词功能,还引入了多种优化策略,使得在复杂语境下的分词效果更为精准。Paoding这个名字来源于...

    paoding 分词

    可以从官方网站或者第三方资源站点下载paoding分词的最新版本,例如`paoding-analysis-2.0.4-alpha2.zip`和`Paoding分词.zip`。 3. **解压与配置** 解压缩下载的文件,将解压后的目录添加到你的项目类路径...

Global site tag (gtag.js) - Google Analytics