Lucene扩展停用词字典与自定义词库

一、扩展停用词字典

IK Analyzer默认的停用词词典为IKAnalyzer2012_u6/stopword.dic,这个停用词词典并不完整,只有30多个英文停用词。可以扩展停用词字典,新增ext_stopword.dic,文件和IKAnalyzer.cfg.xml在同一目录,编辑IKAnalyzer.cfg.xml把新增的停用词字典写入配置文件,多个停用词字典用逗号隔开,如下所示。

<entry  key="ext_stopwords">stopword.dic;ext_stopword.dic</entry>

二、扩展自定义词库

IK Analyzer也支持自定义词典,在IKAnalyzer.cfg.xml同一目录新建ext.dic,把新的词语按行写入文件,编辑IKAnalyzer.cfg.xml把新增的停用词字典写入配置文件,多个字典用空格隔开,如下所示:

    <entry key="ext_dict">ext.dic;</entry>
比如,对于网络流行语“厉害了我的哥”,默认的词库中没有这个词,在自定义字典中写入以后才能分成一个词。

三、测试自定义词典效果

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 tup.lucene.ik.IKAnalyzer6x;
public class ExtDicTest {
    private static String str = "厉害了我的哥!中国环保部门发布了治理北京雾霾的的方法!";
    public static void main(String[] args) throws IOException {
        Analyzer analyzer = new IKAnalyzer6x(true);
        StringReader reader = new StringReader(str);
        TokenStream toStream = analyzer.tokenStream(str, reader);
        toStream.reset();
        CharTermAttribute   teAttribute= toStream.getAttribute(CharTermAttribut     e.class);
        System.out.println("分词结果:");
        while (toStream.incrementToken()) {
            System.out.print(teAttribute.toString() + "|");
        }
        System.out.println("\n");
        analyzer.close();
    }
}

运行结果:

加载扩展词典:ext.dic
加载扩展停止词典:stopword.dic
分词结果:
厉|害了|的哥|中国|环保部门|发布|治理|北京|雾|霾|方法|

在ext.dic中添加自定义词项:

中国环保部门
北京雾霾
厉害了我的哥

再次运行,结果如下:

加载扩展词典:ext.dic
加载扩展停止词典:stopword.dic
分词结果:
厉害了我的哥|中国环保部门|发布|治理|北京雾霾|方法|
时间: 2024-10-10 06:32:15

Lucene扩展停用词字典与自定义词库的相关文章

elasticsearch ik分词插件的扩展字典和扩展停止词字典用法

本文引自 https://blog.csdn.net/caideb/article/details/81632154 cnblog的排版好看很多,所以在这里建一篇分享博客. ----------------------------------------------------------------------------------------------- 扩展字典中的词会被筛选出来,扩展停止词中的词会被过滤掉 1.没有加入扩展字典 停止词字典用法 1) ik分词器 [[email pro

IK分词器使用自定义词库

1.拷贝IKAnalyzer.cfg.xml到WEB-INF/classes下,IKAnalyzer.cfg.xml内容如下:<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">  <properties>      <comment>IK

coreseek 自定义词库(四)数据过滤

条件过滤在列表中是常用的功能,使用mysql数据库和sphinx进行搜索需要安装sphinx引擎 mysql命令行中, show engine sphinx states; 可以查看是否有  sphinxex引擎,如果没有则需要安装,否则无法使用这样的语句: select * from documents where group_id = 2 and query='@title 测试;mode=extended'; 安装sphinx引擎大家可以参考: http://blog.zhuyin.org

30.IK分词器配置文件讲解以及自定义词库

主要知识点: 知道IK默认的配置文件信息 自定义词库 一.ik配置文件 ik配置文件地址:es/plugins/ik/config目录 IKAnalyzer.cfg.xml:用来配置自定义词库 main.dic:ik原生内置的中文词库,总共有27万多条,只要是这些单词,都会被分在一起 quantifier.dic:放了一些单位相关的词 suffix.dic:放了一些后缀 surname.dic:中国的姓氏 stopword.dic:英文停用词 ik原生最重要的两个配置文件 main.dic:包含

coreseek 自定义词库(三)排序 setsortmode

对于mysql获取数据,可以根据不同的条件来进行排序,同样使用coreseek也有同样的排序功能. PHP的API中只有 SetSortMode(模式,条件) 方法,他也支持多个字段一次排序. 根据上一篇的数据: require('sphinxapi.php'); $sc = new SphinxClient(); $sc->SetSortMode(SPH_SORT_ATTR_DESC, 'group_id'); $sc->SetSortMode(SPH_SORT_ATTR_ASC, 'sco

coreseek/sphinx自定义词库

1.在一些专业领域中,全文搜索需要定义专业的名词,这里以化学为例来说明自定义词库 国内只有搜狗提供公开词库 网址是:http://pinyin.sogou.com/dict/ 有些可以直接下载TXT的,有些则需要自己处理成txt文件,如果能下载txt的则只需要更改一下就可以,如果不能下载,则用其他软件或者自己手写一个,我用的是深蓝提供的词库转换工具 假设以上步骤已经完成,txt文件已经生成,则只需要下面的步骤就可以生成词库 mmseg词库的格式是 中文词 \t 1 x:1 由于生成的txt文件的

JSP自定义标签库

今天闲来无事,于是想起自己之前一直使用的标签,无论是jstl,struts标签还是springmvc标签,使用起来都觉得很方便,于是自己想尝试定义自己的标签. 下面把今天自己的成果给大家分享下.要自定义标签并使用标签,需要以下几步: 1.定义自己的标签解析类,一般都是继承TagSupport类(servlet-api.jar),Override该类的doStartTag()或者doEndTag()方法: 2.定义.tld文件: 3.在web.xml中声明要使用的标签(也可以不声明): 4.在js

JavaWeb-12 (自定义标签库开发&amp;JSTL标签库)

JavaWeb-12:自定义标签库开发&JSTL标签库 自定义标签库开发 一.自定义标签简介 自定义标签主要用于移除Jsp页面中的java代码. 使用自定义标签移除jsp页面中的java代码,只需要完成以下两个步骤: 1.编写一个实现Tag接口的Java类(标签处理器类). 2.编写标签库描述符(tld)文件,在tld文件中把标 实验:项目架构如下: a.tld <?xml version="1.0" encoding="utf-8" ?> &l

Cygwin编译自定义OpenCV库报错:opencv_contrib: LOCAL_SRC_FILES points to a missing file

今天受命帮师弟调个OpenCV4Android 识别银行卡的程序,版本为OpenCV4Android2.4.9,使用方式为前文介绍的第一种方式,即通过jni调用opencv.如杂家前文所述,配套的NDK应使用较高版本的android-ndk-r9d.它的安装很简单,解压缩后设置环境变量到Path就ok:D:\ProgramFile\android-ndk-r9d; 但遗憾的是,同样的程序同样的配置在一台PC上通过Cygwin编译一切ok.但在新的一台电脑上却出现如下错误: Android NDK