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

使用 庖丁分词(2.0.4-alpha)

阅读更多

开始使用

庖丁中文分词需要一套词典,这些词典需要统一存储在某个目录下,这个目录称为词典安装目录。词典安装目录可以是文件系统的任何目录,它不依赖于应用程序的运行目录。将词典拷贝到词典安装目录的过程称为安装词典。增加、删除、修改词典目录下的词典的过程称为自定制词典。

linux下,我们可以考虑将词典安装在一个专门存储数据的分区下某目录,以笔者为例,笔者将/data作为系统的一个独立分区,笔者便是将词典保存在/data/paoding/dic下。

windows下,我们可以考虑将词典安装在非系统盘的另外分区下的某个目录,以笔者为例,笔者可能将词典保存在E:/data/paoding/dic下。

使用者安装辞典后,应该设置系统环境变量PAODING_DIC_HOME指向词典安装目录。

linux下,通过修改/etc/profile,在文件末尾加上以下2行,然后保存该文件并退出即可。

PAODING_DIC_HOME=/data/paoding/dic

export PAODING_DIC_HOME

windows下,通过“我的电脑”属性之“高级”选项卡,然后在进入“环境变量”编辑区,新建环境变量,设置“变量名”为PAODING_DIC_HOME;“变量值”为E:/data/paoding/dic

3步,把paoding-analysis.jar拷贝到应用运行时的类路径(classpath)下。使用集成开发环境(IDE)开发应用的使用者,需要把paoding-analysis.jar拷贝到工程中,然后使用IDE向导引入该Jar包,以便开发应用时IDE能够认识它。

至此,便可以在应用代码中使用庖丁提供的中文分析器了。

提醒:以下示例代码中的IDNEX_PATH表示索引库地址,读者运行以下代码前,应该赋与一个不重要的地址,比如/data/paoding/test_index E:/paoding_test_index,以免一时疏忽将重要数据丢失。

示例代码:建立索引库,并依此查询

String IDNEX_PATH = "E:/paoding_test_index";

//获取Paoding中文分词器

Analyzer analyzer = new PaodingAnalyzer();

//建立索引

IndexWriter writer = new IndexWriter(IDNEX_PATH, analyzer, true);

Document doc = new Document();

Field field = new Field("content", "你好,世界!", Field.Store.YES,

    Field.Index.TOKENIZED, Field.TermVector.WITH_POSITIONS_OFFSETS);

doc.add(field);

writer.addDocument(doc);

writer.close();

System.out.println("Indexed success!");

 

//检索

IndexReader reader = IndexReader.open(IDNEX_PATH);

QueryParser parser = new QueryParser("content", analyzer);

Query query = parser.parse("你好");

Searcher searcher = new IndexSearcher(reader);

Hits hits = searcher.search(query);

if (hits.length() == 0) {

    System.out.println("hits.length=0");

}

Document doc2 = hits.doc(0);

//高亮处理

String text = doc2.get("content");

TermPositionVector tpv = (TermPositionVector) reader.getTermFreqVector(

                0, "content");

TokenStream ts = TokenSources.getTokenStream(tpv);

Formatter formatter = new Formatter() {

    public String highlightTerm(String srcText, TokenGroup g) {

        if (g.getTotalScore() <= 0) {

            return srcText;

        }

        return "<b>" + srcText + "</b>";

    }

};

Highlighter highlighter = new Highlighter(formatter, new QueryScorer(

        query));

String result = highlighter.getBestFragments(ts, text, 5, "…");

System.out.println("result:\n\t" + result);

reader.close();

分享到:
评论
15 楼 fantaxy025025 2011-01-18  
这个版主也不回答问题。。。呜呜
14 楼 aw0910 2010-07-23  
java.lang.OutOfMemoryError: Java heap space...出现这样错误
13 楼 strayly 2008-11-05  
用了一下你的分词,感觉效果很步错,有个问题,
我自己建了个词典 里面有“浙商银行”
可是在编译的时候 把它编译成了 “浙商”和“银行”两个词
这样搜索出来的结果,很多分开“浙商银行”的跑到前面去了
请问为什么会这样,我确实想把“浙商银行”作为一个词,该怎么处理?
12 楼 tianhaoleng 2008-08-09  
能不能不配置环境变量,直接在工程里的相关配置文件里进行配置啊?
11 楼 keller 2008-06-11  
支持,测试过庖丁分词比IKAnalyzer感觉要好些
10 楼 xinyu391 2008-04-14  
连编码转换都不知道,这么好的ide都让你弄成什么了
引用

phoenix2008 2007-12-13
下了你的源代码,我的IDE是netbeans
在src里面java文件中的中文都是乱码


唉,连谁开发的都不知。
引用
OneEyeWolf  2007-11-13
hi, paoding,
我非常喜欢你开发的分词组件,但是我遇到一个问题,
9 楼 rain_man 2008-04-07  
[flash=200,200][/flash]
8 楼 hi_lilylee 2008-02-25  
你好!Qieqie
按照你上面的要求我试过了,java类能正常运行,但是与页面连接就出错!
java.lang.NoSuchMethodError: java.io.File.setWritable(Z)Z
我实在是不明白啊 !!!!!!!
7 楼 cesia1984 2008-01-17  
请问为什么在load的时候有时会有以下异常

<!--省略一部分-->
std net.paoding.analysis.knife.PaodingMaker 186422  INFO [Thread-6] (PaodingMake
r.java:427) - add knike: net.paoding.analysis.knife.NumberKnife
std net.paoding.analysis.knife.FileDictionaries 186422  INFO [Thread-6] (FileDic
tionaries.java:417) - loading dictionaries from E:\james\Workspace\pet\dic
std net.paoding.analysis.knife.FileDictionaries 186422  INFO [Thread-6] (FileDic
tionaries.java:417) - loading dictionaries from E:\james\Workspace\pet\dic
std net.paoding.analysis.knife.FileDictionaries 186422  INFO [Thread-6] (FileDic
tionaries.java:417) - loading dictionaries from E:\james\Workspace\pet\dic
std net.paoding.analysis.knife.FileDictionaries 186859  INFO [Thread-6] (FileDic
tionaries.java:425) - loaded success!
std net.paoding.analysis.knife.FileDictionaries 186859  INFO [Thread-6] (FileDic
tionaries.java:425) - loaded success!
std net.paoding.analysis.knife.FileDictionaries 186859  INFO [Thread-6] (FileDic
tionaries.java:425) - loaded success!
Exception in thread "Thread-6" java.lang.OutOfMemoryError: Java heap space
        at net.paoding.analysis.dictionary.HashBinaryDictionary.addSubDictionary
(HashBinaryDictionary.java:130)
        at net.paoding.analysis.dictionary.HashBinaryDictionary.createSubDiction
aries(HashBinaryDictionary.java:106)
        at net.paoding.analysis.dictionary.HashBinaryDictionary.<init>(HashBinar
yDictionary.java:84)
        at net.paoding.analysis.dictionary.HashBinaryDictionary.createSubDiction
ary(HashBinaryDictionary.java:141)
        at net.paoding.analysis.dictionary.HashBinaryDictionary.addSubDictionary
(HashBinaryDictionary.java:129)
        at net.paoding.analysis.dictionary.HashBinaryDictionary.createSubDiction
aries(HashBinaryDictionary.java:106)
        at net.paoding.analysis.dictionary.HashBinaryDictionary.<init>(HashBinar
yDictionary.java:84)
        at net.paoding.analysis.dictionary.HashBinaryDictionary.<init>(HashBinar
yDictionary.java:72)
        at net.paoding.analysis.knife.FileDictionaries.getVocabularyDictionary(F
ileDictionaries.java:197)
        at net.paoding.analysis.knife.CJKKnife.setDictionaries(CJKKnife.java:48)

        at net.paoding.analysis.knife.PaodingMaker.setDictionaries(PaodingMaker.
java:481)
        at net.paoding.analysis.knife.PaodingMaker.access$300(PaodingMaker.java:
50)
        at net.paoding.analysis.knife.PaodingMaker$1.run(PaodingMaker.java:376)
        at net.paoding.analysis.knife.PaodingMaker$1$1.on(PaodingMaker.java:392)

        at net.paoding.analysis.dictionary.support.detection.Detector.forceDetec
ting(Detector.java:114)
        at net.paoding.analysis.dictionary.support.detection.Detector.run(Detect
or.java:105)
        at java.lang.Thread.run(Thread.java:619)
6 楼 diybl 2008-01-01  
 8) 
5 楼 phoenix2008 2007-12-13  
下了你的源代码,我的IDE是netbeans
在src里面java文件中的中文都是乱码
4 楼 OneEyeWolf 2007-11-13  
hi, paoding,
   我非常喜欢你开发的分词组件,但是我遇到一个问题,当我想搜索一个医疗词汇时,我在x_unit.dic中增加了一个名词术语“核磁”,重新编译词典文件后, 在文章中却搜索不到这个词,虽然文章中有很这样的词汇,我后来尝试将“核磁”添加到t_base.dic当中,结果就可以命中到这个关键字了。
     难道关健词的添加与dic的名称有关系吗?
3 楼 transist 2007-10-24  
在dic目录下建立自定义的词典文件test.dic,新增的词直接保存到test.dic,请问调用哪个API进行内存中词库的更新?
2 楼 Qieqie 2007-09-28  
BUGFIX:
KnifeNumber.java发现一个bug。
在某些特殊情况下,会出现129 outOfBoundException
已经修改提交到SVN
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)中文分词等一些开源包,本程序只实现了最基本的搜索引擎系统,现阶段只作为测试一下系统的性能,更多的功能有待添加。 对本程序有兴趣的...

    庖丁分词jar包和dic目录

    标题中的“庖丁分词jar包和dic目录”指的是一个用于中文分词处理的软件工具,其中包含了必要的jar包和字典文件。庖丁分词是基于Java开发的一个高效、可扩展的中文分词库,它借鉴了Lucene的分词技术,并在此基础上...

    庖丁分词jar包

    使用庖丁分词jar包的步骤大致包括以下几点: 1. **下载与引入**:首先,从官方网站或可靠的源获取paoding-analysis-2.0.0.jar包,并将其添加到项目的类路径(classpath)中,这可以通过IDE的依赖管理功能或者手动...

    庖丁解牛 中文分词工具

    "庖丁解牛"是一款专为中文处理设计的分词工具,其版本2.0.4-alpha2提供了更稳定和高效的分词体验。这个工具的核心功能是将中文文本拆分成有意义的词语,这对于中文信息处理、自然语言理解和搜索引擎优化等场景至关...

    庖丁分词.jar

    庖丁分词.jar 庖丁分词.jar 庖丁分词.jar 庖丁分词.jar

    lucene中文分词(庖丁解牛)庖丁分词

    5. 搜索优化:在搜索阶段,同样可以使用庖丁分词器对用户输入的查询进行预处理,提高搜索的精确度。 四、庖丁分词的高级特性 1. 自定义词典:除了预设的词典,还可以通过编程方式动态加载自定义词典,适应变化的...

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

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

    庖丁解马--木马查杀深度剖析

    庖丁解马--木马查杀深度剖析,学习此教程后大部分木马可以手动查杀

    庖丁分词归类

    "paoding-analysis-2.0.4-beta"是庖丁分词的一个特定版本,其中"2.0.4"代表该版本的主次版本号,"beta"则表示这是一个测试版,可能包含未解决的问题或功能不完善的地方,开发者通常会发布正式版之前先推出测试版,...

    庖丁分词测试数据集 工具

    2. **分词操作**:使用庖丁分词对文本进行分词处理。 3. **结果比对**:将分词结果与预设的正确答案进行对比。 4. **性能计算**:根据比对结果计算准确率、召回率和F1值。 5. **参数调优**:根据评估结果调整分词...

    Lucene使用

    庖丁分词 使用 paoding-analysis-2.0.4-beta.zip 版时异常 Exception in thread "main" java.lang.AbstractMethodError: org.apache.lucene.analysis.TokenStream.incrementToken()Z 换用svn里源码版正常 ...

    最新庖丁分词源代码(for lucene3.0)

    庖丁分词是一款知名的中文分词工具,专为Apache Lucene搜索引擎库设计和优化。Lucene是一个开源全文检索库,广泛应用于各种信息检索系统。在本压缩包中,你将找到针对Lucene 3.0版本优化的庖丁分词源代码。 1. **...

    C#庖丁解牛--asp.net开发

    《C#庖丁解牛——ASP.NET开发》是一本深入探讨C#编程语言与ASP.NET 3.5框架结合使用的专业书籍。通过“庖丁解牛”的比喻,作者旨在引导读者像古代名厨庖丁一样,精准而熟练地掌握ASP.NET 3.5中的控件和组件开发技术...

    庖丁解牛-CI解剖

    ### 庖丁解牛-CI解剖:进程环境深度解析 #### 一、CI概念及其重要性 在软件工程和系统设计领域,“庖丁解牛”比喻深入剖析复杂系统的能力。本文将以此为引子,深入探讨“CI解剖”,这里的CI特指“Cell Individual...

    lucene中文分词器(paoding解牛)

    1. **引入依赖**:在项目中引入Paoding分词器的库文件,例如`paoding-analysis-2.0.4-alpha2`。 2. **创建分词器**:通过Paoding提供的API创建分词器实例,设置相关参数。 3. **读取文本**:读取待分词的中文文本...

    庖丁解牛分词 java包

    在实际使用中,开发者可以通过调用庖丁解牛分词库提供的API,将待分词的文本输入,得到分词结果。同时,还可以根据需求自定义词典,优化分词效果。例如,对于特定领域或行业的文本,可以添加专业词汇到词典中,提高...

    庖丁分词工具

    庖丁中文分词需要一套词典,这些词典需要统一存储在某个目录下,这个目录称为词典安装目录。词典安装目录可以是文件系统的任何目录,它不依赖于应用程序的运行目录。将词典拷贝到词典安装目录的过程称为安装词典。...

    刨丁解羊中文分词器-主要用于对网络蜘蛛或网络爬虫抓取的网页进行分词

    刨丁解羊中文分词器,主要用于对网络蜘蛛或网络爬虫抓取的网页进行分词,支持繁体中文分词、简体中文分词、英文分词,是制作通用搜索引擎和垂直搜索引擎的核心组件。该软件在普通PC机器上测试显示:TXT格式正文分词...

    sorlr + tomcat+ 庖丁解牛中文分词 配置文档

    总结来说,这个配置文档应该包含了如何在Tomcat上部署Solr,以及如何配置Solr以使用庖丁解牛分词器进行中文处理的详细步骤。这对于需要处理大量中文数据的搜索应用开发者来说,是一份非常实用的参考资料。通过阅读...

Global site tag (gtag.js) - Google Analytics