中文分词和去停用词

最近学习主题模型pLSA、LDA,就想拿来试试中文。首先就是找文本进行切词、去停用词等预处理,这里我找了开源工具IKAnalyzer2012,下载地址:

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月|李双江|一篇|旧|文|证实|李天一| 

时间: 2024-10-22 20:21:18

中文分词和去停用词的相关文章

IKAnalyzer进行中文分词和去停用词

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

(3.2)将分词和去停用词后的评论文本基于“环境、卫生、价格、服务”分类

酒店评论情感分析系统(三)—— 将分词和去停用词后的评论文本基于“环境.卫生.价格.服务”分类 思想: 将进行了中文分词和去停用词之后得到的词或短语按序存在一个数组(iniArray)中,从中找出所有和“环境.卫生.价格.服务”四个方面相关的词或短语,并记录下其位置信息(sortRefNum).然后按照位置信息,对每一个标记出的关键词,记录下从当前关键词起到下一个关键词止的信息,放入一个String型的数组中(midArray),最后将此数组中的关键词再分别基于“环境.卫生.价格.服务”四个方面

R系列:分词、去停用词、画词云(词云形状可自定义)

附注:不要问我为什么写这么快,是16年写的. R的优点:免费.界面友好(个人认为没有matlab友好,matlab在我心中就是统计软件中极简主义的代表).小(压缩包就几十M,MATLAB.R2009b的压缩包是1.46G).包多(是真的多,各路好友会经常上传新的包). R的麻烦之处:经常升级,是经常,非常经常,这就导致你在加载一个包之前需要考虑这个包要在R的哪个版本上才能使用,而往往做一件事情都要加载10个包左右,一般比较方便的做法就是先升级到最新版,因为只有小部分的包在新版本上不能用. 言归正

python 语料处理(从文件夹中读取文件夹中文件,分词,去停用词,去单个字)

# -*- coding:utf8 -*- import os import jieba def splitSentence(inputFile): fin = open(inputFile, 'r') #以读的方式打开文件 global fout #以写得方式打开文件 #print fin global stop for eachLine in fin: #print eachLine line = eachLine.strip()#.decode('utf-8', 'ignore') #去除

[学习记录]NLTK常见操作一(去网页标记,统计词频,去停用词)

NLTK是python环境中的一个非常流行的NLP库,这篇记录主要记录NLTK的一些常见操作 1.去除网页html标记 我们常常通过爬虫获取网页信息,然后需要去除网页的html标签.为此我们可以这么做: 2.统计词频 这里使用的tokens就是上面图中的tokens 3.去除停用词 停用词就是类似the,a,of这种语义无价值的词,取出后我们还可以把统计图画出来 4.绘制词云图 对于词云图的使用原理还不太清楚,只是找了一个可运行的公式 原文地址:https://www.cnblogs.com/t

ELK---- Elasticsearch 使用ik中文分词器增加拓展热词

进入到我们ik分词器安装目录下的config目录 cd /usr/local/myapp/elasticsearch-6.4.3/plugins/ik/configvi IKAnalyzer.cfg.xml  IKAnalyzer.cfg.xml 的内容如下: <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE properties SYSTEM "http://java.sun.com/dtd

去停用词

import pandas as pd stop_words = [] with open('data/stop_words.txt','r',encoding='utf-8') as f: lines = f.readlines() for i in lines: word = i.strip() stop_words.append(word) print(stop_words[:10]) def clean_stopwords(text,stop_words): data = [] for

(3.1)用ictclas4j进行中文分词,并去除停用词

酒店评论情感分析系统——用ictclas4j进行中文分词,并去除停用词 ictclas4j是中科院计算所开发的中文分词工具ICTCLAS的Java版本,因其分词准确率较高,而备受青睐. 1. 下载ictclas4j 后面的附件中,我有放上ictclas4j的源码包ictclas4j.zip 2. 在Eclipse中新建项目并进行相关配置 首先把 ictclas4j解压缩,然后把 Data文件夹整个拷贝到 Eclipse项目的文件夹下, 而 bin目录下的 org文件夹整个拷贝到你Eclipse项

Elasticsearch之停用词

前提 什么是倒排索引? Elasticsearch之分词器的作用 Elasticsearch之分词器的工作流程 Elasticsearch的停用词 1.有些词在文本中出现的频率非常高,但是对文本所携带的信息基本不产生影响. 2.英文 a.an.the.of 3.中文 的.了.着.是 .标点符号等 4.文本经过分词之后,停用词通常被过滤掉,不会被进行索引. 5.在检索的时候,用户的查询中如果含有停用词,检索系统也会将其过滤掉(因为用户输入的查询字符串也要进行分词处理). 6.排除停用词可以加快建立