IKAnalyzer进行中文分词和去停用词
最近学习主题模型pLSA、LDA,就想拿来试试中文。首先就是找文本进行切词、去停用词等预处理,这里我找了开源工具IKAnalyzer2012,下载地址:(:(注意:这里尽量下载最新版本,我这里用的IKAnalyzer2012.zip 这本版本后来测试时发现bug,这里建议IKAnalyzer2012_u6.zip))
https://code.google.com/p/ik-analyzer/
由于太多,而且名称我也搞不清楚,不知道下载哪个。后来我下载了IKAnalyzer2012.zip 压缩文件。

压缩后,按照说明说,需要配置

然而这里开始我连IKAnalyzer2012.jar安装部署否不清楚,后来慢慢摸索才弄清楚:
首先在Eclipse中建一个Java工程,我这里名称是“FC”,然后右键JRE System Library.jar ,点击Build Path-->Configure Build Path

添加上IKAnalyzer2012.jar,确定。
stopwords.dic 是停用词文件,可以自己建一个ext.dic 即自定义词典,以及分词扩张配置文件(主要用于调取stopwords.dic, ext.dic), 我们将其加入到FC--scr下
由于会经常配合lucene-core使用,这个jar包可以从这里下载:http://grepcode.com/snapshot/repo1.maven.org/maven2/org.apache.lucene/lucene-core/3.6.1
安装如上进行配置。
我这里的配置后的工程目录如下:

另外,双击scr下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">stopwords.dic;</entry> </properties>
这里给一个分词演示程序:IKAnalyzerTest.java
在C盘根目录下,见一个需要分词的txt文档(注意,这里需要用软件Notepad2 对该内容转成UTF-8编码格式,将内容复制到Notepad中,点击文件 --编码--UTF-8--保存成txt文件即可):
李天一,现名李冠丰。著名歌唱家李双江和知名歌唱家梦鸽之子。根据司法机关公布资料显示,李天一出生于1996年4月。曾就读北京海淀区中关村第三小学、人民大学附中、美国Shattuck-St. Mary's School(沙特克圣玛丽学院)冰球学校。2011年9月6日,因与人斗殴被拘留教养1年。2012年9月19日,李天一被解除教养。2013年2月22日,因涉嫌轮奸案被刑事拘留,后因可查资料显示未成年,移交少管所。3月7日,中央电视台新闻中心官方微博发布了一条消息,称李天一因涉嫌强奸罪,已被检察机关批捕。2013年9月,李双江一篇旧文证实李天一成年。
在ext.dic中设置个性词典为:李双江、李天一、梦鸽。 stopwords.dic中用的是中文的常用停用词,这里可以在百度文库中下载(注意,用notepad转成UTF-8后保存)。
import java.io.*; import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.StringReader;
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 Text1 {
public static void main(String[] args) throws IOException {
String filePath = "C:\\test.txt";
String news=new String();
BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream(filePath), "UTF8"));
String str;
while ((str = in.readLine()) != null) {
news+=str;
}
in.close(); System.out.println(news);
IKAnalyzer analyzer = new IKAnalyzer(true);
StringReader reader = new StringReader(news);
TokenStream ts = analyzer.tokenStream("", reader);
CharTermAttribute term = ts.getAttribute(CharTermAttribute.class);
while(ts.incrementToken()){
System.out.print(term.toString()+"|");
}
analyzer.close();
reader.close(); System.out.println();
StringReader re = new StringReader(news);
IKSegmenter ik = new IKSegmenter(re,true);
Lexeme lex = null; File f = new File("C://jieguo.txt");
f.delete();
String path="C://jieguo.txt"; //%%%%%% while((lex=ik.next())!=null){
System.out.print(lex.getLexemeText()+"|"); try {
FileWriter fw=new FileWriter(path,true);
PrintWriter pw=new PrintWriter(fw);
pw.print(lex.getLexemeText()+"|");
pw.close();
//bw.close();
fw.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace(); }
} }
}
分词后的文件,我这里仍然放在C盘根目录下,结果:
李天一|现名|李|冠|丰|著名|歌唱家|李双江|知名|歌唱家|梦鸽|之子|司法机关|公布|资料|显示|李天一|出生于|1996年|4月|曾|就读|北京|海淀区|中关村|第三|小学|人民大学|附中|美国|shattuck-st.|mary|s|school|沙特|克|圣玛丽|学院|冰球|学校|2011年|9月|6日|与人|斗殴|拘留|教养|1年|2012年|9月|19日|李天一|解除|教养|2013年|2月|22日|因涉嫌|轮奸案|刑事拘留|后|可查|资料|显示|未成年|移交|少管所|3月|7日|中央电视台|新闻中心|官方|微|博|发布|一条|消息|称|李天一|因涉嫌|强奸罪|已被|检察机关|批捕|2013年|9月|李双江|一篇|旧|文|证实|李天一|
IKAnalyzer进行中文分词和去停用词的更多相关文章
- python使用jieba实现中文文档分词和去停用词
分词工具的选择: 现在对于中文分词,分词工具有很多种,比如说:jieba分词.thulac.SnowNLP等.在这篇文档中,笔者使用的jieba分词,并且基于python3环境,选择jieba分词的理 ...
- 更新几篇之前写在公众号上的文章:线性可分时SVM理论推导;关联分析做捆绑销售和推荐;分词、去停用词和画词云
适合阅读人群:有一定的数学基础. 这几篇文章是16年写的,之前发布在个人公众号上,公众号现已弃用.回过头来再看这几篇文章,发现写的过于稚嫩,思考也不全面,这说明我又进步了,但还是作为学习笔记记在这里了 ...
- R系列:分词、去停用词、画词云(词云形状可自定义)
附注:不要问我为什么写这么快,是16年写的. R的优点:免费.界面友好(个人认为没有matlab友好,matlab在我心中就是统计软件中极简主义的代表).小(压缩包就几十M,MATLAB.R2009b ...
- python 语料处理(从文件夹中读取文件夹中文件,分词,去停用词,去单个字)
# -*- coding:utf8 -*- import os import jieba def splitSentence(inputFile): fin = open(inputFile, 'r' ...
- [超详细] Python3爬取豆瓣影评、去停用词、词云图、评论关键词绘图处理
爬取豆瓣电影<大侦探皮卡丘>的影评,并做词云图和关键词绘图第一步:找到评论的网页url.https://movie.douban.com/subject/26835471/comments ...
- python利用jieba进行中文分词去停用词
中文分词(Chinese Word Segmentation) 指的是将一个汉字序列切分成一个一个单独的词. 分词模块jieba,它是python比较好用的分词模块.待分词的字符串可以是 unicod ...
- python调用jieba(结巴)分词 加入自定义词典和去停用词功能
把语料从数据库提取出来以后就要进行分词啦,我是在linux环境下做的,先把jieba安装好,然后找到内容是build jieba PKG-INFO setup.py test的那个文件夹(我这边是ji ...
- python jieba分词(添加停用词,用户字典 取词频
中文分词一般使用jieba分词 1.安装 pip install jieba 2.大致了解jieba分词 包括jieba分词的3种模式 全模式 import jieba seg_list = jieb ...
- jieba文本分词,去除停用词,添加用户词
import jieba from collections import Counter from wordcloud import WordCloud import matplotlib.pyplo ...
随机推荐
- CUBRID学习笔记 1 简介 cubrid教程
CUBRID 是一个全面开源,且完全免费的关系数据库管理系统.CUBRID为高效执行Web应用进行了高度优化,特别是需要处理大数据量和高并发请求的复杂商务服务.通过提供独特的最优化特性,CUBRID可 ...
- NPOI大数据分批写入同个Excel
实现过程: 要导出来的数据库数据量很大,一次取出来压力有点大,故分批取出来,导入到同一个Excel. 因为Excel2003版最大行数是65536行,Excel2007开始的版本最大行数是104857 ...
- zoj 1010 (线段相交判断+多边形求面积)
链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=10 Area Time Limit: 2 Seconds Mem ...
- 百度翻译word-wrap,页面错乱原因查找过程(已修复)
今天群里有人发问, 进入百度翻译http://fanyi.baidu.com/#auto/zh/, 输入word-wrap,发现页面错乱. 寻找错乱原因. 上图 开始查找原因: 1.从请求入手 从ch ...
- FLASH CC 2015 CANVAS (五)loading的制作
注意 此贴 为个人边“开荒”边写,所以不保证就是最佳做法,也难免有错误! 正式教程会在后续开始更新 AS3的loading一般我们都写在时间轴第一帧,但是FLASH CC CANVAS的导出项目的lo ...
- JAVA中在Myeclipse里把表导入成相应的poco实体类
参考:地址: http://blog.csdn.net/jintaiyong/article/details/7383982
- ubuntu的dns设置
ubuntu的dns设置为: dns-nameservers 8.8.8.8 注意不要少s
- iOS - Swift Range 范围
前言 Range:结构体,这个结构体用来表示一个区间的范围. public struct Range<Element : ForwardIndexType> : Equatable, Co ...
- iOS - UIAlertView
前言 NS_CLASS_DEPRECATED_IOS(2_0, 9_0, "UIAlertView is deprecated. Use UIAlertController with a p ...
- IO端口和IO内存的区别及分别使用的函数接口
每个外设都是通过读写其寄存器来控制的.外设寄存器也称为I/O端口,通常包括:控制寄存器.状态寄存器和数据寄存器三大类.根据访问外设寄存器的不同方式,可以把CPU分成两大类.一类CPU(如M68K,Po ...