Ansj 分词使用

一、 Ansj

Ansj 是一个开源的 Java 中文分词工具,基于中科院的 ictclas 中文分词算法,比其他常用的开源分词工具(如mmseg4j)的分词准确率更高。

Ansj中文分词是一款纯Java的、主要应用于自然语言处理的、高精度的中文分词工具,目标是“准确、高效、自由地进行中文分词”,可用于人名识别、地名识别、组织机构名识别、多级词性标注、关键词提取、指纹提取等领域,支持行业词典、用户自定义词典。

Ansj 是一个基于n-Gram+CRF+HMM的中文分词的java实现。目前实现了中文分词.词性识别. 中文姓名识别 . 用户自定义词典,关键字提取,自动摘要,关键字标记等功能,可以应用到自然语言处理等方面,适用于对分词效果要求高的各种项目。

1. 文档、项目地址

项目的github地址:https://github.com/NLPchina/ansj_seg
项目的文档地址:http://nlpchina.github.io/ansj_seg/

2. 配置maven

在maven项目的pom中配置ansj的dependency:

<dependency>
    <groupId>org.ansj</groupId>
    <artifactId>ansj_seg</artifactId>
    <version>5.1.1</version>
</dependency>

3.使用实例

对于分词来说,最重要的任务无非就是拿到切分以后的结果(词)。直接看代码:

import org.ansj.domain.Result;
import org.ansj.domain.Term;
import org.ansj.splitWord.analysis.ToAnalysis;
import java.util.*;

public class AnsjTest {

    public static void test() {
        //只关注这些词性的词
        Set<String> expectedNature = new HashSet<String>() {{
            add("n");add("v");add("vd");add("vn");add("vf");
            add("vx");add("vi");add("vl");add("vg");
            add("nt");add("nz");add("nw");add("nl");
            add("ng");add("userDefine");add("wh");
        }};
        String str = "欢迎使用ansj_seg,(ansj中文分词)在这里如果你遇到什么问题都可以联系我.我一定尽我所能.帮助大家.ansj_seg更快,更准,更自由!" ;
        Result result = ToAnalysis.parse(str); //分词结果的一个封装,主要是一个List<Term>的terms
        System.out.println(result.getTerms());

        List<Term> terms = result.getTerms(); //拿到terms
        System.out.println(terms.size());

        for(int i=0; i<terms.size(); i++) {
            String word = terms.get(i).getName(); //拿到词
            String natureStr = terms.get(i).getNatureStr(); //拿到词性
            if(expectedNature.contains(natureStr)) {
                System.out.println(word + ":" + natureStr);
            }
        }
    }

    public static void main(String[] args) {
        test();
    }
}

本文参考并摘自:
https://blog.csdn.net/bitcarmanlee/article/details/53607776?utm_source=blogxgwz0
https://blog.csdn.net/blogdevteam/article/details/8148451

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Ansj中文分词是一个完全开源的、基于Google语义模型+条件随机场模型的中文分词的Java实现,具有使用简单、开箱即用等特点。 Ansj分词速度达到每秒钟大约100万字左右(Mac Air下测试),准确率能达到96%以上。 Ansj 1.41版本的新增功能 •增加了调用文档说明 •调整了关键词抽取 •增加了摘要计算 •关键词标红 •大幅度提高了命名实体识别 •对于词性标注提供了基于概率的快速标注方式.依旧保留给予隐马模型的词性标注. •修复了目前已知的所有bug •大量修正了之前默认用户自定义词典中词性错误 •提供了给予crf++ wapiti等条件随即场工具的调用接口.用户可以及自定义训练model •增加了目前对最新版的Lucene、Solr、Elasticsearch开源第三方搜索框架的分词插件 效果测试——新词发现 引用 1. 未登陆词识别 example:NER:我要碎觉吊丝要小心!城西嘉南公寓 result:命名/v 实体/n ner/en : 我/r 要/v 碎觉/nw 吊丝/n 要/v 小心/v !/w 城西嘉南公寓/nw 2. 中文人名识别 example:NER: 邓颖超生前和刘晓辉同学合影, 李民工作了一天 result:邓颖超/nr 生前/t 和/c 刘晓辉/nr 同学/n 合影/v , 李民/nr 工作/vn 了/ul 一天/m 3. 外国人名识别 example:NER:本赛季德甲球队霍芬海姆的两名年轻球员菲尔米诺和福兰德表现出色,但球队主帅吉斯多尔态度强硬。 result:本赛季/n 德甲/n 球队/n 霍芬海姆/nrf 的/uj 两名/m 年轻/a 球员/n 菲尔米诺/nrf 和/c 福兰德/nr 表现出色/n ,/w 但/c 球队/n 主帅/n 吉斯多尔/nrf 态度强硬/n 。/w

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值