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

为全文检索方案更新词库

阅读更多

在全文检索应用中,为了提高检索的准确性,我们时常需要定期去更新分词库,以

保证各种网络用语、火文(如“屌丝”、“高帅富”,“美富白”),能正确的被识别。

目前对中文分词比较好的插件主要有ik-analyzer、mmseg、庖丁等。ik是目前使用比较广泛,而且作者刚对其进行了更新,目前已经能支持简单的分词歧义排除算法,详细情况请参见ik的开发网站。本文将以ik来测试新添加的分词。

下面我们开始更新词库:

1.从http://pinyin.sogou.com/dict/下载选择scel格式的细胞词库

2.下载深蓝词库转换工具,将scel词库转化为无拼音纯汉字格式的txt文件

3.用ultraedit将txt文件保存为无bom utf-8格式的文本

这样我们已经将词库准备完毕了,接下来我们用ik来测试新词库的准确性。

 

首先在ik网站上下载IKAnalyzer2012_u6.zip文件,需要说明的是u6是支持lucene3.6的,IKAnalyzer 2012FF_hf1.zip 是支持lucene4的。

1.创建一个app java工程。

 

2.创建一个java类ParticipleTest,并加入IKAnalyzer2012_u6.jar、lucene-core-3.6.2.jar两个jar包。 

 

 

import java.io.IOException;
import java.io.StringReader;

import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.TokenStream;
import org.apache.lucene.analysis.tokenattributes.CharTermAttribute;
import org.wltea.analyzer.lucene.IKAnalyzer;


public class ParticipleTest {

	/**
	 * @param args
	 * @throws IOException
	 */
	public static void main(String[] args) throws IOException {
		// TODO Auto-generated method stub
		String keyWord = "11月3日,《人民日报》十八大特刊刊发《激发中国前行的最大力量》一文,文中写道:“市场经济的冲击余波未了,全球化、民主化、信息化的浪潮又不期叠加。分配焦虑、环境恐慌,拼爹时代、屌丝心态,极端事件、" +
				"群体抗议,百姓、社会、市场、政府的关系进入‘敏感期’。”";
		 IKAnalyzer analyzer = new IKAnalyzer();
         //使用智能分词
         analyzer.setUseSmart(true);

         //打印分词结果
         printAnalysisResult(analyzer,keyWord);
	}
	/**
     * 打印出给定分词器的分词结果
     * @param analyzer 分词器
     * @param keyWord 关键词
     * @throws Exception
     */
    private static void printAnalysisResult(Analyzer analyzer, String keyWord) {
        System.out.println("当前使用的分词器:" + analyzer.getClass().getSimpleName());
        TokenStream tokenStream = analyzer.tokenStream("content", new StringReader(keyWord));
        tokenStream.addAttribute(CharTermAttribute.class);
        StringBuffer buffer=new StringBuffer();
        try {
			while (tokenStream.incrementToken()) {
				CharTermAttribute charTermAttribute = tokenStream.getAttribute(CharTermAttribute.class);
				buffer.append(charTermAttribute.toString()).append("|");
			}
			System.out.println(buffer.toString());
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
    }
}

  

 

 

3.将IKAnalyzer.cfg.xml、chinese_stopword.dic、stopword.dic、myext.dic放到src目录中。

 

4.修改IKAnalyzer.cfg.xml文件:

 

<properties>
 <comment>IK Analyzer 扩展配置</comment>
 <!--用户可以在这里配置自己的扩展字典-->
 <entry key="ext_dict">myext.dic;</entry>

 <!--用户可以在这里配置自己的扩展停止词字典-->
 <entry key="ext_stopwords">stopword.dic;chinese_stopword.dic</entry>

</properties>

 

4.在myext.dic中添加“屌丝”,如下
屌丝
拼爹

 

5.运行结果比对

 

未更新词库的情况下:

 11月|3日|人民日报|十|八大|特刊|刊发|激发|中国|前行|最大|力量|一文|文中|写道|市场经济|冲击|余波|未了|全球化|民主化|信息化|浪潮|又|不期|叠加|分配|焦虑|环境|恐慌|拼|爹|时代|屌|丝|心态|极端|事件|群体|抗议|百姓|社会|市场|政府|关系|进入|敏感期|

 

更新完词库后:

11月|3日|人民日报|十八大|特刊|刊发|激发|中国|前行|最大|力量|一文|文中|写道|市场经济|冲击|余波|未了|全球化|民主化|信息化|浪潮|又|不期|叠加|分配|焦虑|环境|恐慌|拼爹|时代|屌丝|心态|极端|事件|群体|抗议|百姓|社会|市场|政府|关系|进入|敏感期|

 

 这说明我们更新的词库已经起作用了。

 

另外需要说明的是,

 //使用智能分词
         analyzer.setUseSmart(true);

如果值为false的情况下是最细粒分词

 

运行结果如下:

11|月|3|日|人民日报|人民日|人民|日报|十八大|十八|八大|特刊|刊发|激发|中国|前行|最大|大力|力量|一文|一|文|文中|写道|市场经济|市场|经济|冲击|余波|未了|全球化|全球|化|民主化|民主|化|信息化|信息|化|浪潮|又不|不期|叠加|分配|焦虑|环境|恐慌|拼爹|时代|屌丝|心态|极端|事件|群体|抗议|百姓|百|姓|社会|市场|政府|关系|进入|敏感期|敏感|期|

 

开发人员可以根据自己项目的情况酌情处理。

 

分享到:
评论

相关推荐

    基于ik动态词库分词实现--无需重启服务

    总之,IK Analyzer的动态词库更新功能为开发者提供了灵活且高效的分词解决方案,特别是在处理大量实时数据时,能够避免频繁的服务重启,提升系统的稳定性和用户体验。结合Lucene或Solr等搜索引擎,可以构建强大的...

    基于Java的全文检索引擎简介

    自那时起,Lucene得到了广泛的社区支持和开发,逐渐成长为一个成熟稳定的全文检索解决方案。 #### 二、全文检索实现机制 **Lucene与数据库索引的比较**: - **索引数据源**: 在Lucene中,索引数据源为`Document`,...

    solr企业级全文检索

    综上所述,Solr为企业级全文检索提供了强大的工具,其分布式特性、灵活的数据处理能力以及全面的功能使其成为处理大量数据的首选解决方案。企业可以根据自身需求定制索引策略,实现高效、精准的全文检索服务。同时,...

    Lucene介绍,全文检索

    它提供了一套强大的API,使得开发人员能够轻松地为他们的应用添加全文检索功能。 **历史与作者** Doug Cutting是一位经验丰富的全文检索专家,曾在Apple的Copland操作系统项目中参与V-Twin搜索引擎的开发,并在...

    paoding+lucene实现全文检索功能简单实例

    在IT领域,全文检索是一项重要的技术,用于在大量文本数据中快速找到与查询相关的文档或信息。本实例将介绍如何结合...在实践中,不断学习和优化这些工具,你将能够构建出更强大、更适应业务需求的全文检索解决方案。

    搜狗最新词库(已经去重)

    搜索引擎的分词技术通常采用基于词库的分词方法,即将输入的文本与词库中的词汇进行匹配,找到最佳的切分方案。搜狗最新词库作为标准,意味着它在词频统计、词性标注、短语识别等方面具有较高的准确性。这将直接影响...

    【推荐】最全聊天机器人词库整理.zip

    构建聊天机器人的词库需要不断迭代和更新,以适应用户需求的变化和新出现的热门话题。通过分析用户反馈、对话日志,以及从互联网上爬取的最新信息,词库可以持续得到扩充和完善。此外,还可以采用深度学习的方法,如...

    新华社多媒体数据库搜索引擎服务项目方案

    新华社多媒体数据库底层采用TRS 和Oracle 协同工作的解决方式,由TRS 完成千万级数据的索引检索服务,由Oracle 完成信息制作流程,检索方式分为...提供中英文全文检索功能,中文按词进行全文检索,具有智能词库机制。

    词库处理工具1.2.1.zip

    词库处理工具1.2.1.zip是一款专用于管理和操作词库的专业软件,适用于各种语言处理、文本分析、自然语言处理(NLP)以及信息检索等领域的专业人士。该工具的最新版本1.2.1提供了丰富的功能,旨在帮助用户更高效地...

    20万中文词库(不含释义)

    这样的词库在许多IT应用中都非常有用,尤其是那些涉及到自然语言处理(NLP)、中文信息检索、机器学习、深度学习以及中文文本分析的项目。 首先,我们要理解什么是词库。词库,也称为词汇表或词汇资源,是一系列...

    Lucene3.0.3+盘古分词(证实可用,可指定使用自己的词库文件).rar

    总之,Lucene 3.0.3与盘古分词的结合,为开发者提供了一种强大的中文检索解决方案。通过这个压缩包,我们可以轻松地将盘古分词整合进项目,同时灵活地定制词库,满足特定的业务需求。这种灵活性和高效性,使得Lucene...

    同义词,英汉词典,近20多个数据表词库,sqlserver_2005sqlserver词库

    "sqlserver_2005sqlserver词库"可能是一个专为SQL Server 2005设计的数据库,用于高效地存储和检索这些词汇数据。 在标签中,“sql词库”突出了这个压缩包与SQL(结构化查询语言)的关联,这意味着数据库设计和管理...

    Rel_V分词库

    8. **DictManage.exe**:字典管理程序,用户可以使用它来添加、删除或更新分词库中的词典,以适应不同的语料环境。 9. **Demo.KTDictSegAnalyzer.exe**和**Demo.exe**:这些是演示应用程序,让用户能够直观地了解...

    全文检索 lucene.net+盘古分词 的演示程序

    通过这个演示程序,开发者可以学习到如何在C#环境中结合`lucene.net`和盘古分词来搭建一个简单的全文检索系统,为自己的项目提供参考。 总之,全文检索是信息时代的重要技术,`lucene.net`和盘古分词的结合使用为...

    K风网页搜索系统(.NET) v2.2 源码

    主要面向大中型行业搜索引擎、地方搜索引擎、专类信息搜索引擎等应用领域设计的专业全文检索产品,为用户提供海量数据全文检索应用的理想解决方案。 V2.2版本主要改进:改进索引系统读写性能,提高约10倍的索引速度...

    jieba百度分词词库

    总结来说,jieba结合百度分词词库,为中文文本处理提供了一套强大且灵活的解决方案。在了解其工作原理和使用方法后,我们可以根据实际需求,利用这个工具解决各种中文文本处理问题,提升项目的效果和效率。

    Mdcit词库--蜘蛛网疾病百科mdx

    《Mdcit词库——蜘蛛网疾病百科》的出现,满足了这一需求,为用户提供了全面、系统的疾病知识检索平台。 该词库以“蜘蛛网”为形象比喻,不仅体现了其内容的广泛性,也揭示了医学知识点之间的错综复杂关系。从疾病...

    sphinx mmseg coreseek 搜狗 词库

    CoreSeek则是一个基于Sphinx的全文搜索解决方案,它为Sphinx添加了更多针对中文环境的特性。CoreSeek不仅包含了Sphinx的基本功能,还集成了MMSEG分词器,使得对中文文本的处理更加顺畅。此外,CoreSeek还提供了SQL...

Global site tag (gtag.js) - Google Analytics