java分词工具-ANSJ与IKAnalyzer比较分析

最近做情感分析,想研究下具体哪个java分词工具好,于是测试了ANSJ和IKAnalyzer的比较:

都是用了默认值,没有进行添加词库和停用词。

ANSJ的代码:scala调用。

/**
* 中文分词
* example :
println("segment分词测试")
val stopWords = Config.STOP_WORDS.split("\\|",-1).toArray
val str = """据新华社电 中共中央总书记、国家主席、中央军委主席习近pin12日上午在第十八届中央纪委第六次全会上发表重要讲话。
他强调,坚决遏制腐败现象滋生蔓延势头。惩治腐败这一手必须紧抓不放、利剑高悬,坚持无禁区、全覆盖、零容忍。"""
var MySegment = new SegmentUtil(stopWords)
val ret = MySegment.segment(str)
println(ret)
println("segment分词测试----end")
* Segment(" ", null ,":", null )
* @param stopWords 停用词列表
* @param separator 分词结果的分隔符
* @param natureSeparator 词性分割符
* @param stopNatures 词性列表
*/
class ANSJ(
stopWords: Array[String] = null,
separator: String = " ",
natureSeparator: String = ":",
stopNatures: Array[String] = null) extends Serializable{

//初始化停用词、停用词性等操作
if (stopWords != null) {
val sws = new java.util.ArrayList[String]
for (item <- stopWords) sws.add(item)
FilterModifWord.insertStopWords(sws)
}
if (stopNatures != null) {
for (line <- stopNatures)
FilterModifWord.insertStopNatures(line)
}

/**
* @param input 待分词的句子
*/
def segment(input: String): Seq[String] = {
val term = NlpAnalysis.parse(input)
val filter = FilterModifWord.modifResult(term)
val word = if (stopNatures != null) {
for (i <- Range(0, filter.size()))
yield filter.get(i).getName + natureSeparator + filter.get(i).getNatureStr
} else for (i <- Range(0, filter.size())) yield filter.get(i).getName
// word.mkString(separator)
word
}

}

IKAnalyzer代码

public class IKAnalyzerUtil {
private Analyzer analyzer = null;
private String split = " ";

public IKAnalyzerUtil(String split ) {
this.split = split;
analyzer = new IKAnalyzer(true);
}

public IKAnalyzerUtil() {
analyzer = new IKAnalyzer(true);
}

public String segment(String input) {
StringReader words = new StringReader(input);
TokenStream ts = analyzer.tokenStream("", words);
CharTermAttribute term = ts.getAttribute(CharTermAttribute.class);

StringBuffer sf = new StringBuffer();
try {
while (ts.incrementToken()) {
sf.append(term.toString() + split);
// System.out.print(term.toString() + "|");
}
} catch (IOException e) {
e.printStackTrace();
} finally {
return sf.toString();
}

}
}

分词效果比较

原句:大陈岛位于浙江中部台州湾东南海域。1956年,浙江省467名青年志愿者奔赴大陈岛参与垦荒建设。2006年8月29日,时任浙江省委书记的习近pin到大陈岛视察,看望岛上的老垦荒队员。2010年4月27日,时任中共中央政治局常委、国家副主席的习近pin给大陈岛老垦荒队员回信。近日,台州市椒江区12名小学生以“大陈岛垦荒队员后代”的名义给习近pin写信,表达了传承大陈岛垦荒精神,做爱学习、爱劳动、爱祖国好少年的决心。
    ansj:大 陈岛 位于 浙江 中部 台州湾 东南 海域 。 1956年 , 浙江省 467名 青年 志愿者 奔赴 大 陈岛 参与 垦荒 建设 。 2006年 8月 29日 , 时任 浙江省委 书记 的 习近pin 到 大 陈岛 视察 , 看望 岛上 的 老 垦荒 队员 。 2010年 4月 27日 , 时任 中共中央 政治局 常委 、 国家 副 主席 的 习近pin 给 大 陈岛 老 垦荒 队员 回信 。 近日 , 台州市椒江区 12名 小学生 以 “ 大 陈岛 垦荒 队员 后代 ” 的 名义 给 习近pin 写信 , 表达 了 传承 大 陈岛 垦荒 精神 , 做爱 学习 、 爱 劳动 、 爱 祖国 好 少年 的 决心 。
ikanalyzer:大 陈 岛 位于 浙江 江中 中部 台州 湾 东南 南海 海域 1956 年 浙江省 467 名 青年 志愿者 奔赴 大 陈 岛 参与 垦荒 建设 2006 年 8 月 29 日 时任 浙江省委 省委书记 的 习近pin 到 大 陈 岛 视察 看望 岛上 的 老 垦荒 队员 2010 年 4 月 27 日 时任 中共中央政治局常委 国家副主席 的 习近pin 给 大 陈 岛 老 垦荒 队员 回信 近日 台州市 椒江区 12 名 小学生 以 大 陈 岛 垦荒 队员 后代 的 名义 给 习近pin 写信 表达 了 传承 大 陈 岛 垦荒 精神 做爱 爱学习 爱劳动 爱祖国 好少 少年 的 决心

原句:人民日报全媒体平台(中央厨房)布拉格3月29日电(记者杜尚泽、管克江)当地时间29日,国家主席习近pin在布拉格同捷克总统泽曼举行会谈。双方积极评价两国关系发展,就中捷关系、中欧关系、中国—中东欧国家合作及共同关心的国际和地区问题深入交换意见,达成广泛共识。两国元首一致同意,将中捷关系提升为战略伙伴关系,推动中捷关系再上新台阶。
ansj: 人民日报 全 媒体 平台 ( 中央 厨房 ) 布拉格 3月 29日 电 ( 记者 杜尚泽 、 管克江 ) 当地 时间 29日 , 国家 主席 习近pin 在 布拉格 同 捷克 总统 泽曼 举行 会谈 。 双方 积极 评价 两 国 关系 发展 , 就 中捷 关系 、 中 欧 关系 、 中国 — 中东欧 国家 合作 及 共同 关心 的 国际 和 地区 问题 深入 交换 意见 , 达成 广泛 共识 。 两 国 元首 一致 同意 , 将 中捷 关系 提升 为 战略 伙伴 关系 , 推动 中捷 关系 再 上 新 台阶 。
ikanalyzer:人民日报 全 媒体 平台 中央 厨房 布拉格 3 月 29 日 电 记者 杜 尚 泽 管 克 江 当地时间 29 日 国家主席 习近pin 在 布拉格 同 捷克 总统 泽 曼 举行会谈 双方 积极 评价 两国关系 发展 就中 中捷 关系 中欧 关系 中国 中东欧 东欧国家 合作 及 共同 关心 的 国际 和 地区 问题 深入 交换意见 达成 广泛 共识 两国 元首 一致同意 将 中捷 关系 提升 升为 战略伙伴 伙伴关系 推动 中捷 关系 再上 新台阶

原句:德勤分析师表示,农业的温和复苏和服务业的稳定表现是印度GDP向好的主要推动力。然而印度的工业活动有些放缓。印度评级和研究首席经济学家潘特也表示,印度经济持续改善,但向好幅度并不大,最近的工业生产数据凸显了印度经济可能并非如GDP数据那般强劲。今年前三个月,印度工业产出仅平均上涨0.6%。穆迪表示,由于出口拉动的希望不大,印度保持经济上行将需要投资的恢复。特别是鉴于外部需求可能继续疲软,保持增长势头需要其国内民间投资持续向好。
ansj2:德勤 分析师 表示 , 农业 的 温和 复苏 和 服务业 的 稳定 表现 是 印度 gdp 向好 的 主要 推动力 。 然而 印度 的 工业 活动 有些 放缓 。 印度 评级 和 研究 首席 经济学家 潘特 也 表示 , 印度 经济 持续 改善 , 但 向好 幅度 并 不 大 , 最近 的 工业 生产 数据 凸 显 了 印度 经济 可能 并非 如 gdp 数据 那般 强劲 。 今年 前 三个 月 , 印度 工业 产出 仅 平均 上涨 0.6% 。 穆迪 表示 , 由于 出口 拉动 的 希望 不 大 , 印度 保持 经济 上 行将 需要 投资 的 恢复 。 特别 是 鉴于 外部 需求 可能 继续 疲软 , 保持 增长 势头 需要 其 国内 民间 投资 持续 向好 。
ikanalyzer:德 勤 分析师 师表 表示 农业 的 温和 复苏 和服务 服务业 的 稳定 表现 现是 印度 gdp 向 好 的 主要 推动力 然而 印度 的 工业 活动 有些 放缓 印度 评级 和 研究 首席 经济学家 潘 特 也 表示 印度 经济 持续 改善 但 向 好 幅度 并不大 最近 的 工业生产 数据 凸显 了 印度 经济 可能 并非 非如 gdp 数据 那般 强劲 今年 年前 三个月 印度 工业 产出 仅 平均 上涨 0.6 穆迪 表示 由于 出口 拉动 的 希望 不大 印度 保持 经济上 上行 行将 需要 投资 的 恢复 特别是 鉴于 外部 需求 可能 继续 疲软 保持 增长势头 需要 其 国内 民间 投资 持续 向 好

总结:

两种分词有一定的差异,IKAnalyzer的分词采用智能方式,却把多意句子,分成多个词。IKAnalyzer默认会把特殊符号,标点符号等剔除。总体分词效果,从上面例句看,还是ANSJ的效果好些。

时间: 2024-12-19 09:40:11

java分词工具-ANSJ与IKAnalyzer比较分析的相关文章

java学习之常用Java Profiling工具的分析与比较

在 Java 程序的开发过程中,不可避免地会遇到内存使用.性能瓶颈等问题.Java Profiler 工具能帮助开发人员快速.有效地定位这些问题,因此成为了 Java 开发过程中的一个重要工具.目前市场上的 Java Profiler 工具种类繁多,本文将对目前比较常见的几种工具进行简要介绍,并从功能.性能等角度作比较,从而帮助 Java 程序员选择合适的 Java Profiler 工具. 本文主要分为三个部分:第一部分简要介绍 Java Profiler 工具的原理:第二部分对目前常见的 J

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

针对工作中的需要对已有的Java序列化工具分析

针对java原生序列化,以及优化过的java序列化工具列举说明.自己定义的类名(IOSerializable).(Fast Serialization).(FastjsonSerializable) 1.java序列化简介 序列化就是指对象通过写出描述自己状态的数值来记录自己的过程,即将对象表示成一系列有序字节,Java提供了将对象写入流和从流中恢复对象的方法.对象能包含其它的对象,而其它的对象又可以包含另外的对象.JAVA序列化能够自动的处理嵌套的对象.对于一个对象的简单域,writeObje

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; /* * 文件格式:已分词的中文文本,每个词语空格分割,每行一个段落. * 这个类适

几种开源分词工具的比較

搜集了一些资料,与同学一起进行了简单的測试,总结例如以下. 分词工  具 特点 支持语言 原理 词典及扩展性 StandardAnalyzer 中文.英文(unicode) 中文:单字符切分 英文:依据空格切分 ChineseAnalyzer 中文,不支持中文和英文及数字混合的文本分词 按字分词,与StandardAnalyzer对中文的分词没有大的差别 CJKAnalyzer 中文,英文,不支持中文和英文及数字混合的文本分词 採用的双字切分,也就是对一段文字按每两个字来进行切分 IKAnaly

中文分词工具简介与安装教程(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库的分词,包含三种分词模式: 精准

每个Java程序员需要了解的8个Java开发工具

Java是计算机应用程序编程语言,被广泛用于创建Web应用.服务器处理.用户端的API开发乃至数据库等多个领域.下面列出了8个有助于你开发Java应用程序最好的Java工具. 1. SparkJava 这是一款体形轻巧,功能强大的Web应用框架.Spark拥有简单而直接的方法.您可以通过一些繁琐的XML配置来使用Spark框架编写应用程序.Spark能让你花费最少的精力来开发Java的Web应用程序. 官方网站:http://sparkjava.com/ 2. jClarity jClarity

Java三大主流开源工作流引擎技术分析

Java三大主流开源工作流引擎技术分析 首先,这个评论是我从网上,书中,搜索和整理出来的,也许有技术点上的错误点,也许理解没那么深入.但是我是秉着学习的态度加以评论,学习,希望对大家有用,进入正题! 三大主流工作流引擎:Shark,osworkflow,jbpm! Shark的靠山是Enhydra.Enhydra做过什么呢?多了!从j2ee应用服务器,到o/r mapping工具,到这个工作流引擎等等.为什么Shark的持久层采用DODS来实现?就是因为他们是一家人. Jbpm的靠山是jboss