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文件夹以下就可以。

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 怎么添加窗口小工具_vc可视化编程

    怎么添加窗口小工具_vc可视化编程原文地址:http://www.cnblogs.com/carekee/articles/1751805.html(转载者注)推荐在MFC中加入BCG,而不是适用BCG建立工程,因为BCG对中文的支持不是很好,到时候会很麻烦。本文以MDI应用程序为例说明如何在已有的VC++工程中使用BCG界面库,我的开发环境为VS2003(在VC6.0下同样适用)。  1,将BCG/BCGCB

    2022年10月8日
    1
  • linux sigpipe信号,Linux下SIGPIPE信号及其处理「建议收藏」

    linux sigpipe信号,Linux下SIGPIPE信号及其处理「建议收藏」在Linux下写socket的程序的时候,如果尝试send到一个disconnectedsocket上,就会让底层抛出一个SIGPIPE信号。这个信号的缺省处理方法是退出进程,大多数时候这都不是我们期望的。因此我们需要重载这个信号的处理方法。调用以下代码,即可安全的屏蔽SIGPIPE:structsigactionsa;sa.sa_handler=SIG_IGN;sigaction(S…

    2022年5月29日
    44
  • 最强的疯狂java学习路线图,javaEE学习者必看「建议收藏」

    最强的疯狂java学习路线图,javaEE学习者必看「建议收藏」转载于:https://www.cnblogs.com/order/archive/2012/10/20/2732602.html

    2022年6月15日
    24
  • 数据库dml和ddl有什么区别(mysql是一种)

    DBMS中DDL和DML有哪些区别发布时间:2020-12-0312:07:24来源:亿速云阅读:119作者:小新这篇文章主要介绍DBMS中DDL和DML有哪些区别,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!什么是DDL?DDL代表数据定义语言,它定义了数据库结构或数据库模式,可以将数据库中定义的数据的其他属性定义为属性域;还提供了指定一些约束以保持数据一致性的工具。D…

    2022年4月17日
    125
  • fpga以太网通信例程_verilog参数传递

    fpga以太网通信例程_verilog参数传递1本实验将实现FPGA芯片和PC之间进行千兆以太网数据通信,通信协议采用Ethernet UDP通信协议。FPGA通过GMII总线和开发板上的GigabitPHY芯片通信,GigabitPHY芯片把数据通过网线发给PC。在上次的实验中,我们详细讲解了网络传输的过程中如何对数据进行传输,以及数据传输的格式,这次实验中,我们详细讲解如何使用Verilog语言

    2025年8月6日
    4
  • JVM参数汇总:JVM内存设置多大合适?Xmx和Xmn如何设置?[通俗易懂]

    JVM参数汇总链接:[#link](https://www.cnblogs.com/duanxz/p/3482366.html)一、java启动参数共分为三类:其一是标准参数(-),所有的JVM实现都必须实现这些参数的功能,而且向后兼容;其二是非标准参数(-X),默认jvm实现这些参数的功能,但是并不保证所有jvm实现都满足,且不保证向后兼容…

    2022年4月17日
    35

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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