`
yu120
  • 浏览: 81831 次
社区版块
存档分类
最新评论

IKAnalyzer中文进行分词

阅读更多
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.lucene.analysis.TokenStream;
import org.apache.lucene.index.Term;
import org.apache.lucene.queryparser.classic.QueryParser;
import org.apache.lucene.search.TermQuery;
import org.apache.lucene.search.highlight.*;
import org.wltea.analyzer.core.IKSegmenter;
import org.wltea.analyzer.core.Lexeme;
import org.wltea.analyzer.lucene.IKAnalyzer;
 
import java.io.IOException;
import java.io.StringReader;
import java.util.ArrayList;
import java.util.List;
 
/**
 * 搜索工具类
 * User: Winter Lau
 * Date: 13-1-10
 * Time: 上午11:54
 */
public class SearchHelper {
 
    private final static Log log = LogFactory.getLog(SearchHelper.class);
    private final static IKAnalyzer analyzer = new IKAnalyzer();
 
    private final static List<String> nowords = new ArrayList<String>(){{//可用可不用
        try{
            addAll(IOUtils.readLines(SearchHelper.class.getResourceAsStream("/stopword.dic")));
        }catch(IOException e){
            log.error("Unabled to read stopword file", e);
        }
    }};
 
    /**
     * 关键字切分
     * @param sentence 要分词的句子
     * @return 返回分词结果
     */
    public static List<String> splitKeywords(String sentence) {
 
        List<String> keys = new ArrayList<String>();
 
        if(StringUtils.isNotBlank(sentence))  {
            StringReader reader = new StringReader(sentence);
            IKSegmenter ikseg = new IKSegmenter(reader, true);
            try{
                do{
                    Lexeme me = ikseg.next();
                    if(me == null)
                        break;
                    String term = me.getLexemeText();
                    if(StringUtils.isNumeric(StringUtils.remove(term,'.')))
                        continue;
                    if(nowords.contains(term.toLowerCase()))
                        continue;
                    keys.add(term);
                }while(true);
            }catch(IOException e){
                log.error("Unable to split keywords", e);
            }
        }
 
        return keys;
    }
 
}

 

protected static void test_split(){
    String text = "开源中国 www.oschina.net 成立于2008年8月,是目前中国最大的开源技术社区。我们传播开源的理念,推广开源项目,为 IT 开发者提供了一个发现、使用、并交流开源技术的平台。";
    long ct = System.currentTimeMillis();
    for(String word : SearchHelper.splitKeywords(text)){
        System.out.println(word);
    }
    System.out.printf("TIME %d\n", (System.currentTimeMillis() - ct));
}

 

分享到:
评论

相关推荐

    使用IK Analyzer实现中文分词之Java实现

    从 2006年 12 月推出 1.0 版开始, IKAnalyzer 已经推出了 4 个大版本。最初,它是以开源项目Luence 为应用主体的,结合词典分词和文法分析算法的中文分词组件。 从 3.0 版本开始,IK 发展为面向 Java 的公用分词...

    IKAnalyzer中文分词计算句子相似度

    **IKAnalyzer中文分词** IKAnalyzer是一款开源的、基于Java实现的中文分词工具,它在中文信息处理领域有着广泛的应用。该工具最初由尹军平(IkGuo)开发,设计目标是提供一个轻量级、高效能的中文分词引擎,用于...

    IKAnalyzer中文分词器 java

    - **IKAnalyzer中文分词器V2012使用手册.pdf**:这是一份详细的操作指南,提供了如何使用IKAnalyzer的步骤、配置说明和常见问题解答,对于初学者来说非常有用。 - **IK Analyzer 2012FF_hf1_source.rar**:这是IK...

    IKAnalyzer中文分词.rar

    IKAnalyzer继承Lucene的Analyzer抽象类,使用IKAnalyzer和Lucene自带的分析器方法一样,将Analyzer测试代码改为IKAnalyzer测试中文分词效果。 如果使用中文分词器ik-analyzer,就需要在索引和搜索程序中使用一致的...

    基于IKAnalyzer.NET的分词工具(包含dll)

    综合以上信息,这个基于IKAnalyzer.NET的分词工具是一个适用于.NET环境的桌面应用,它利用IKAnalyzer进行中文分词,并可能借助PowerCollections进行数据处理,用户界面基于Windows Forms设计,便于用户交互。...

    ikanalyzer-solr8.4.0_solr8_solr_ikanalyzer_中文分词_

    ikanalyzer 对中文字符进行分词,确保了中文文本在索引和查询时的准确性和效率。 ikanalyzer-solr8.4.0 包含了与 Solr 8.4.0 版本兼容的 ikanalyzer 配置和类库。在使用这个包时,我们需要将其正确地集成到 Solr 的...

    IK Analyzer 中文分词器下载

    IK Analyzer 是一个开源的、基于Java实现的中文分词器,专为全文检索或信息提取等任务设计。它由尹力(Wu Li)在2006年发起,最初是为了改善Lucene的中文处理能力。自那时起,IK Analyzer已经发展成为一个广泛使用的...

    使用IK Analyzer实现中文分词之Java实现(包含所有工具包)

    1、lucene-core-3.6.0.jar 2、IKAnalyzer2012.jar(主jar包) 3、IKAnalyzer.cfg.xml(分词器扩展配置文件) 4、stopword.dic(停止词典) 5、IkSegmentation.java(样例类)

    IKAnalyzer 中文分词 完整java项目demo

    IKAnalyzer非常易用的java分词工具。可以自定义扩展词汇。 这个是一个完整的java项目demo。直接可以用,不用再去google下载了。添加了几个自定义词汇,测试好用。 运行ika.java里的main方法即可

    IKAnalyzer中文分词器

    IKAnalyzer是一款专为中文处理设计的开源分词器,它主要应用于搜索引擎、信息检索系统、文本挖掘等领域。这款工具能够高效地对中文文本进行分词,使得计算机可以更好地理解和处理中文信息。IKAnalyzer的名字来源于...

    Lucene的IK Analyzer 3.0 中文分词器 全解

    - 分词器能够准确识别并处理各种文本,例如在一段介绍IK Analyzer的文字中,它能够正确将“IKAnalyzer”拆分为“ik-analyzer”,同时处理日期、版本号等非标准格式的词汇。 - 在处理公司名称时,如“永和服装饰品...

    基于IKAnalyzer2012的分词小例子

    在本文中,我们将深入探讨如何使用IKAnalyzer2012进行中文分词处理,这是一个针对中文的开源分词工具,特别适用于中英文混合文本的分析。IKAnalyzer2012以其高效、灵活和易用性在Java开发领域广泛应用,尤其在搜索...

    IKAnalyzer 中文分词demo

    标题 "IKAnalyzer中文分词demo" 指的是一个基于IKAnalyzer的中文分词演示项目。IKAnalyzer是一款开源的、适用于Java平台的全文检索引擎工具,主要功能是对中文文本进行有效的分词处理,广泛应用于搜索引擎、信息检索...

    IKAnalyzer中文分词器V3.2使用

    **IKAnalyzer中文分词器V3.2使用详解** IKAnalyzer是一款开源的、适用于Java环境的中文分词器,主要用于解决在信息检索、文本挖掘等领域中遇到的中文处理问题。这款分词器的设计目标是提高分词的准确率,并且具有...

    solr6.x的IKAnalyzer配置智能分词

    IKAnalyzer是一款针对中文的开源分词器,它在处理中文词汇时表现优秀,尤其适用于搜索引擎和信息检索系统。在Solr中配置IKAnalyzer可以提升中文搜索的准确性和效率。以下是对"solr6.6的IKAnalyzer配置智能分词"的...

    IK Analyzer中文分词器

    **IK Analyzer中文分词器详解** IK Analyzer是一个在IT领域广泛应用的开源项目,它专注于Java平台上的中文分词处理。中文分词是自然语言处理(NLP)中的基础任务,对于信息检索、文本挖掘、机器翻译等领域至关重要...

    IKAnalyzer中文分词器v2012使用手册.pdf

    文档内容详细地介绍了IKAnalyzer中文分词器的每一个版本的特性和升级细节,对分词效果进行了示范,并提供了详尽的使用说明,对于希望在Java环境下进行中文文本分词的开发者来说,是一个不可或缺的参考资料。...

    IK Analyzer 3.2.8中文分词器

    1. 《IKAnalyzer中文分词器V3.X使用手册》 2. IKAnalyzer3.X.jar(主jar包) 3. IKAnalyzer.cfg.xml(分词器扩展配置文件) 4. ext_stopword.dic(扩展的stopword词典,3.2以上版本提供) 它的安装部署十分简单,...

    IKAnalyzer中文分词器V2012使用手册_20190806.pdf

    IKAnalyzer是一个开源的中文分词器,基于Java语言开发,它是一个轻量级的中文分词工具包。IKAnalyzer自2006年12月推出1.0版本以来,已经发展到了2012版本。这个分词器最初是基于开源项目Lucene的词典分词和文法分析...

Global site tag (gtag.js) - Google Analytics