Lucene入门(3) | 利用 IK-analyzer 进行中文分词

利用 IK-analyzer 进行中文分词

分析器(Analyzer)的执行过程

如下图是语汇单元的生成过程:
在这里插入图片描述
从一个Reader字符流开始,创建一个基于Reader的Tokenizer分词器,经过三个TokenFilter生成语汇单元Token。

要看分析器的分析效果,只需要看Tokenstream中的内容就可以了。每个分析器都有一个方法tokenStream,返回一个tokenStream对象。

实操代码
一、不配置暂停词和字典

1、在pom.xml里添加中文分析器IK-analyzer的依赖

<!--中文分析器-->
	<dependency>
		<groupId>com.janeluo</groupId>
		<artifactId>ikanalyzer</artifactId>
		<version>2012_u6</version>
	</dependency>

2、新建一个class,名为tokenLucene.java

代码实现

package com.hadoop.Lucene;

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

import org.junit.Test;
import org.wltea.analyzer.core.IKSegmenter;
import org.wltea.analyzer.core.Lexeme;

public class tokenLucene {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
	}
	
	@Test
	public void tokenstream() throws IOException
	{
		//需要分词的文本
		String text = "黑化肥发灰,灰化肥发黑,黑化肥发黑不发灰,灰化肥发灰不发黑";
		//创建StringReader对象来读文本
		StringReader str = new StringReader(text);
		//创建IK-analyzer分析器
		IKSegmenter ik = new IKSegmenter(str, true);
		
		Lexeme lex = null;
		while((lex=ik.next())!=null)
		{
			//用|作为分隔符
			System.out.print(lex.getLexemeText()+"|");
		}
	}
}

3、实现结果
在这里插入图片描述

二、配置暂停词和字典

1、在src/main/java/的目录下配置以下三个文件

①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">test.dic;</entry>
	<!--用户可以在这里配置自己的扩展停止词字典 -->
	<entry key="ext_stopwords">teststop.dic;</entry>
</properties>

下面的两个文件的内容是根据各自的内容添加的:

②配置扩展字典test.dic

灰化肥

③配置扩展停止词字典teststop.dic

2、然后再运行tokenLucene,可以得出以下结果:
在这里插入图片描述
可以看出,相比上面没有配置的,灰化肥被单独作为一个词,单独的发也被去掉了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值