1.ansj
ansj是ictclas(中科院分词)的java实现.基本上重写了所有的数据结构和算法.词典是用的开源版的ictclas所提供的.并且进行了部分的人工优化
内存中中文分词每秒钟大约100万字(速度上已经超越ictclas)
文件读取分词每秒钟大约30万字
准确率能达到96%以上
目前实现了: 1.中文分词 2.中文姓名识别 3.用户自定义词典
可以应用到自然语言处理等方面,适用于对分词效果要求高的各种项目.
源码下载:
https://github.com/ansjsun/ansj_seg/
文档说明:
http://ansjsun.github.io/ansj_seg/
在线演示:
http://demo.ansj.org/page/index.html
入门sample
public static void main(String[] agrs){
String text = "我要碎觉超级困";
//未定义词典分词
System.out.println(ToAnalysis.parse(text));
//自定义词典 参数依次为:自定义词,词性,词频(值越大,重要度越高)
UserDefineLibrary.insertWord("碎觉", "n", 1000);
//定义词典后,分词
System.out.println(ToAnalysis.parse(text));
}
2.hanlp
hanlp由一系列模型与算法组成的Java工具包,目标是促进自然语言处理在生产环境中的应用。
HanLP具备功能完善、性能高效、架构清晰、语料时新、可自定义的特点。
和ansj相比,hanlp在功能上的扩展主要体现在以下几个方面:
•关键词提取
•自动摘要
•短语提取
•拼音转换
•简繁转换
•文本推荐
项目主页:
https://github.com/hankcs/HanLP
下载地址:
https://github.com/hankcs/HanLP/releases
词语推荐部分的sample,支持三种推荐模式:语义推荐 字符推荐 拼音推荐
public static void main(String[] agrs){
Suggester suggester = new Suggester();
String[] titleArray =
(
"威廉王子发表演说 呼吁保护野生动物\n" +
"《时代》年度人物最终入围名单出炉 普京马云入选\n" +
"“黑格比”横扫菲:菲吸取“海燕”经验及早疏散\n" +
"日本保密法将正式生效 日媒指其损害国民知情权\n" +
"英报告说空气污染带来“公共健康危机”"
).split("\\n");
for (String title : titleArray)
suggester.addSentence(title);
//根据语义的推荐 通过IdVectorScorer(单词语义向量打分器)实现
System.out.println(suggester.suggest("发言", 1));
//根据字符的推荐 通过EditDistanceScorer(编辑距离打分器 )实现
System.out.println(suggester.suggest("危机公共", 1));
//根据拼音的推荐 通过PinyinScorer(拼音打分器)实现
System.out.println(suggester.suggest("mayun", 1));
}