Ansj分词

1.参考文档

使用手册

github

git文档地址(最新)

项目的文档地址(有点旧)

2.介绍

是一个ictclas的java实现.基本上重写了所有的数据结构和算法.词典是用的开源版的ictclas所提供的.并且进行了部分的人工优化

内存中中文分词每秒钟大约100万字(速度上已经超越ictclas)

文件读取分词每秒钟大约30万字

准确率能达到96%以上

目前实现了.中文分词. 中文姓名识别 . 用户自定义词典

可以应用到自然语言处理等方面,适用于对分词效果要求高的各种项目.

3.demo

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

4.自定义用户词典

分词

1、在项目目录/src/main/resources下创建文件夹library,并在该文件夹下添加userLibrary.dic文件:
userLibrary.dic文件中,自定义字典格式为:

这是  r  1000
一个 r  1000
西红柿女郎 r  1000

其中 r表示当前词语的词性,1000为词频,可自行设置。

注意:
1)、词典各字段之间使用tab(\t)分割,如“这是  r  1000”三个字段之间的间隔是一个tab分隔符。
2)、词性需小写(如n)。

2、在项目目录/src/main/resources下创建文件library.properties,并设置内容

userLibrary=/library/userLibrary.dic
isRealName=true

3、在运行文件中修改方法:

orest = Library.makeForest(AnsjUtils.class.getResourceAsStream("/library/userLibrary.dic"));
Result result = NlpAnalysis.parse(str, forest);

endind…
在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值