【Java】利用Ansj中文分词工具对段落进行切词

对于切词确实是一个复杂的功能,足以写上好几篇论文,但是如果仅仅想对一个句子、一个段落、一篇文章进行切词,可以利用中国自然语言开源组织中各位大牛写好的工具。已经打包成jar包,可以直接调用了,无须自己再考虑复杂的算法。

当然这种切词是对于自然语言的,对于一些有规律的字符串,请自行利用indexOf、substring、split的各类Java自带函数,没有使用额外java包的必要。

首先假如有如下的一个节选自梁启超《最苦与最乐》段落:

人生若能永远像两三岁小孩,本来没有责任,那就本来没有苦。到了长成,责任自然压在你的肩头上,如何能躲?不过有大小的分别罢了。尽得大的责任,就得大快乐;尽得小的责任,就得小快乐。你若是要躲,倒是自投苦海,永远不能解除了。

要对其进行词语的分割成以下形式:

划分成中文,并且标识各个词语的词性,做法如下:

1、先到http://maven.ansj.org/org/ansj/ansj_seg/下载最新版ansj_seg.jar,建议使用2.0x以上的版本,再到http://maven.ansj.org/org/nlpcn/nlp-lang/下载其辅助包nlp-lang.jar,如果是使用1.0x版本的ansj_seg.jar,则到http://maven.ansj.org/org/ansj/tree_split/下载1.0x的辅助包tree_split.jar。下载之后,在Eclipse新建java工程文件夹下,新建一个lib文件夹,并且把ansj_seg-2.0.8.jar与nlp-lang-1.0.jar扔过去,在Eclipse刷新,右击相应工程,选择属性,Java
Build Path把两个jar添加到工程当中。

2、之后,到https://github.com/NLPchina/ansj_seg下载其切词字典,

下载之后解压,将其library文件夹扔到你Java工程的根目录,再把library.properties扔到Java工程的bin目录。

3、之后,新建一个WordSegment.java写入如下代码,编译运行,则得到结果:

import java.util.List;

import org.ansj.domain.Term;
import org.ansj.splitWord.analysis.ToAnalysis;

public class WordSegmentTest {
	public static void main(String[] args) {
		String str = "人生若能永远像两三岁小孩,本来没有责任,那就本来没有苦。到了长成,责任自然压在你的肩头上,如何能躲?不过有大小的分别罢了。尽得大的责任,就得大快乐;尽得小的责任,就得小快乐。你若是要躲,倒是自投苦海,永远不能解除了。";
		List<Term> term = ToAnalysis.parse(str);
		for (int i = 0; i < term.size(); i++) {
			String words = term.get(i).getName();// 获取单词
			String nominal = term.get(i).getNatureStr();// 获取词性
			System.out.print(words + "\t" + nominal + "\n");
		}
	}
}

其中str是要被切割的中文自然语言段落,切割后的结果是一个存放Term对象的List,对这个List进行遍历,可以利用getName()获取切割的单词,利用getNatureStr()获取到词性。其中词性表如下:点击打开链接

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-11-06 02:59:53

【Java】利用Ansj中文分词工具对段落进行切词的相关文章

java读取中文分词工具(2)

import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.StringTokenizer; /* * 文件格式:已分词的中文文本,每个词语空格分割,每行一个段落. * 这个类适

java读取中文分词工具(三)

import java.io.EOFException; import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; import java.io.RandomAccessFile; import java.util.ArrayList; /* * 文件格式:已分词的文本,词语之间用空格,换行等空白符分割. * 到了文件末尾就结束 * 适合读取一行很大的文本,因为这里的缓冲不是一行,

java读取中文分词工具(四)

import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStreamReader; import java.io.RandomAccessFile; import java.io.Serializable; import java.util.ArrayList; import java.ut

中文分词工具简介与安装教程(jieba、nlpir、hanlp、pkuseg、foolnltk、snownlp、thulac)

2.1 jieba 2.1.1 jieba简介 Jieba中文含义结巴,jieba库是目前做的最好的python分词组件.首先它的安装十分便捷,只需要使用pip安装:其次,它不需要另外下载其它的数据包,在这一点上它比其余五款分词工具都要便捷.另外,jieba库支持的文本编码方式为utf-8. Jieba库包含许多功能,如分词.词性标注.自定义词典.关键词提取.基于jieba的关键词提取有两种常用算法,一是TF-IDF算法:二是TextRank算法.基于jieba库的分词,包含三种分词模式: 精准

基于开源中文分词工具pkuseg-python,我用张小龙的3万字演讲做了测试

做过搜索的同学都知道,分词的好坏直接决定了搜索的质量,在英文中分词比中文要简单,因为英文是一个个单词通过空格来划分每个词的,而中文都一个个句子,单独一个汉字没有任何意义,必须联系前后文字才能正确表达它的意思. 因此,中文分词技术一直是nlp领域中的一大挑战.Python 中有个比较著名的分词库是结巴分词,从易用性来说对用户是非常友好的,但是准确度不怎么好.这几天发现另外一个库,pkuseg-python,看起来应该是北大的某个学生团队弄出来的,因为这方面没看到过多的介绍,pkuseg-pytho

NLP(十三)中文分词工具的使用尝试

??本文将对三种中文分词工具进行使用尝试,这三种工具分别为哈工大的LTP,结巴分词以及北大的pkuseg. ??首先我们先准备好环境,即需要安装三个模块:pyltp, jieba, pkuseg以及LTP的分词模型文件cws.model.在用户字典中添加以下5个词语: 经 少安 贺凤英 F-35战斗机 埃达尔·阿勒坎 ??测试的Python代码如下: # -*- coding: utf-8 -*- import os import jieba import pkuseg from pyltp i

中文分词工具——jieba

汉字是智慧和想象力的宝库. --索尼公司创始人井深大 简介 在英语中,单词就是"词"的表达,一个句子是由空格来分隔的,而在汉语中,词以字为基本单位,但是一篇文章的表达是以词来划分的,汉语句子对词构成边界方面很难界定.例如:南京市长江大桥,可以分词为:"南京市/长江/大桥"和"南京市长/江大桥",这个是人为判断的,机器很难界定.在此介绍中文分词工具jieba,其特点为: 社区活跃.目前github上有19670的star数目 功能丰富,支持关键词提

ansj中文分词说明

Ansj分词 这是一个基于n-Gram+条件随机场模型的中文分词的java实现. 分词速度达到每秒钟大约200万字左右(mac air下测试),准确率能达到96%以上 目前实现了.中文分词. 中文姓名识别 . 用户自定义词典 可以应用到自然语言处理等方面,适用于对分词效果要求高的各种项目. 源码:https://github.com/NLPchina/ansj_seg 四种分词模式 基本分词是什么 基本就是保证了最基本的分词.词语颗粒度最非常小的.所涉及到的词大约是10万左右. 基本分词速度非常

2 中文分词工具 jieba 和 HanLP

前言 中文分词有很多种,常见的比如有中科院计算所 NLPIR.哈工大 LTP.清华大学 THULAC .斯坦福分词器.Hanlp 分词器.jieba 分词.IKAnalyzer 等.这里针对 jieba 和 HanLP 分别介绍不同场景下的中文分词应用. jieba 分词 jieba 安装 (1)Python 2.x 下 jieba 的三种安装方式,如下: 全自动安装:执行命令 easy_install jieba 或者 pip install jieba / pip3 install jieb