IKAnalyzer使用停用词词典进行分词

IKAnalyzer使用停用词词典进行分词

大家好,又见面了,我是全栈君。

@Test
// 測试分词的效果,以及停用词典是否起作用
public void test() throws IOException {
	String text = "老爹我们都爱您。";
	Configuration configuration = DefaultConfig.getInstance();
	configuration.setUseSmart(true);
	IKSegmenter ik = new IKSegmenter(new StringReader(text), configuration);
	Lexeme lexeme = null;
	while ((lexeme = ik.next()) != null) {
		System.out.println(lexeme.getLexemeText());
	}
}

第二个样例

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.StringReader;

import javax.imageio.stream.FileImageInputStream;

import org.apache.lucene.analysis.TokenStream;
import org.apache.lucene.analysis.tokenattributes.CharTermAttribute;
import org.wltea.analyzer.core.IKSegmenter;
import org.wltea.analyzer.core.Lexeme;
import org.wltea.analyzer.lucene.IKAnalyzer;



public class TestStopWords {
	public static void main(String[] args) throws IOException {
		String keyWords = "2012年那个欧洲杯四强赛";
		InputStreamReader isr = new InputStreamReader(new FileInputStream(new File("data/stopword.txt")));
		IKSegmenter ikSegmenter = new IKSegmenter(isr, true);
		Lexeme lexeme = null;
		while((lexeme=ikSegmenter.next())!= null){
			System.out.println(lexeme.getLexemeText());
		}
	}
}	

程序的执行结果是:

载入扩展停止词典:stopword.dic
载入扩展停止词典:chinese_stopwords.dic
老爹
都爱

IKAnalyzer.cfg.xml的配置例如以下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
	<comment>IK Analyzer 扩展配置</comment>
	<!--用户能够在这里配置自己的扩展字典 <entry key="ext_dict">ext.dic;</entry>假设有多个扩展词典。那么以分号分隔就可以,如以下的两个扩展停止词字典 -->
	<!--用户能够在这里配置自己的扩展停止词字典 -->
	<entry key="ext_stopwords">stopword.dic;chinese_stopwords.dic</entry>
</properties>


注意点:

1、停用词词典必须是UTF-8编码。

2、这里非常多跟我一样的新手没办法成功的原因就是被无bom的UTF-8格式给折磨的,IK作者自己也这样说了。

3、假设你不知道啥叫无BOM,也不确定自己的文件是不是UTF-8无bom,那么请在第一行使用回车换行,从第二行開始加入停止词。

4、该配置文件以及停用词词典均存放在src文件夹以下就可以。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/115867.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • Maximal Information Coefficient (MIC)最大互信息系数详解与实现「建议收藏」

    Maximal Information Coefficient (MIC)最大互信息系数详解与实现「建议收藏」MICMIC即:MaximalInformationCoefficient最大互信息系数。使用MIC来衡量两个基因之间的关联程度,线性或非线性关系,相较于MutualInformation(MI)互信息而言有更高的准确度。MIC是一种优秀的数据关联性的计算方式。本篇文章将会详细介绍MIC的算法原理,优缺点以及Python的具体实现方式,并给出一个可视化方案。互信息?互信息(Mut…

  • 分享二个.net开源的论坛

    分享二个.net开源的论坛http://www.jinhusns.com/Products/Downloadhttp://www.jinhusns.com/Document/FrameworkDocument/

  • mqtt安卓客户端_网络抓包工具哪个好

    mqtt安卓客户端_网络抓包工具哪个好MQTT客户端工具介绍概览在学习和使用MQTT的过程中,一个得心应手的客户端工具可以极大的方便使用者进行MQTT特性的探索和功能组件的调试。来自世界各地的开发者们围绕不同操作系统、运行平台,开发出了许多针对MQTT协议的客户端测试工具。这些客户端工具种类繁多,功能侧重点不尽相同,质量层次不齐,因此,对于初学者乃至MQTT专家来说,如何选择一个适用的MQTT客户端工具是一个难题。本篇文章将尽可能的搜集整理,对市面上各类MQTT客户端工具做一个全面的测评以供读者参考。MQTT

    2022年10月28日
  • TCP的拥塞控制_假设tcp拥塞控制算法中

    TCP的拥塞控制_假设tcp拥塞控制算法中在某段时间,若对网络中某一资源的需求超过了该资源所能提供的可用部分,网络性能就要变坏,这种情况就叫做网络拥塞。在计算机网络中数位链路容量(即带宽)、交换结点中的缓存和处理机等,都是网络的资源。若出现拥塞而不进行控制,整个网络的吞吐量将随输入负荷的增大而下降。当输入的负载到达一定程度吞吐量不会增加,即一部分网络资源会丢失掉,网络的吞吐量维持在其所能控制的最大值,转发节点的缓存不够大这造成分…

  • mysql数据类型tinyint_innodb buffer pool size

    mysql数据类型tinyint_innodb buffer pool size分享下mysql中TINYINT的取值范围,很基础的一些内容。在MySQL的数据类型中,Tinyint的取值范围是:带符号的范围是-128到127。无符号的范围是0到255(见官方《MySQL5.1参考手册》http://dev.mysql.com/doc/refman/5.1/zh/column-types.html#numeric-types)。Tinyint占用1字节的存储空间,即8位(b…

  • 使用yum卸载、安装jdk

    使用yum卸载、安装jdk由于EPICS工作环境下安装CSS,但CSS不支持开源jdk,所以首先需要卸载openjdk,然后再安装jdk-8u144-linux-x64.tar.gz(CSS只支持8及以上版本)。一、卸载,需卸载干净,不然会出各种覆盖问题,很麻烦!安装好的CentOS会自带OpenJdk,用命令java-version,会有下面的信息:javaversion"1.6.0"OpenJDK Run…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号