自然语言处理之分词器ansj和hanlp介绍

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));
    }

猜你喜欢

转载自zhao-rock.iteye.com/blog/2297428