Java中文分词插件-Ansj中文分词

简介: 中文分词、java

简介

Ansj基于n-Gram+CRF+HMM的中文分词的java实现。 分词准确率能达到96%以上,可以应用到自然语言处理和对分词效果要求高的场景

支持:

  • 中文分词
  • 中文姓名识别
  • 用户自定义词典
  • 关键字提取
  • 自动摘要
  • 关键字标记

github地址:https://github.com/NLPchina/ansj_seg

文档地址:https://github.com/NLPchina/ansj_seg/wiki

使用说明

maven 引用

 

    <dependencies>
        <!-- https://mvnrepository.com/artifact/org.ansj/ansj_seg -->
        <dependency>
            <groupId>org.ansj</groupId>
            <artifactId>ansj_seg</artifactId>
            <version>5.1.6</version>
        </dependency>
        <dependency>
            <groupId>org.nlpcn</groupId>
            <artifactId>nlp-lang</artifactId>
            <version>1.7.9</version>
        </dependency>
        <dependency>
            <groupId>org.postgresql</groupId>
            <artifactId>postgresql</artifactId>
            <version>42.5.0</version>
        </dependency>
    </dependencies>

代码示例

设置文件字典

package com.example.ansjseg;
import org.ansj.domain.Result;
import org.ansj.domain.Term;
import org.ansj.library.DicLibrary;
import org.ansj.splitWord.analysis.*;
import org.ansj.util.MyStaticValue;
import org.nlpcn.commons.lang.tire.domain.Forest;
import org.nlpcn.commons.lang.tire.library.Library;
import java.io.InputStream;
import java.net.URL;
import java.util.List;
public class Test {
    public static void main(String[] args) {
        Forest forest = null;  
        try {
            URL resource = Test.class.getResource("/library/default.dic");
            System.err.println(resource.getPath());
            forest= Library.makeForest(Test.class.getResourceAsStream("/library/default.dic"));//加载字典文件
            String str = "献血者预约献血时间";
            Result result=DicAnalysis.parse(str,forest);//传入forest
            List<Term> termList=result.getTerms();
            for(Term term:termList){
                System.out.println(term.getName()+":"+term.getNatureStr());
            }
            System.err.println("-------------------");
             result=NlpAnalysis.parse(str,forest);//传入forest
          termList=result.getTerms();
            for(Term term:termList){
                System.out.println(term.getName()+":"+term.getNatureStr());
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

设置 jdbc 字典

package com.example.ansjseg;
import org.ansj.dic.PathToStream;
import org.ansj.domain.Result;
import org.ansj.domain.Term;
import org.ansj.library.DicLibrary;
import org.ansj.splitWord.analysis.*;
import org.ansj.util.MyStaticValue;
import org.nlpcn.commons.lang.tire.domain.Forest;
import org.nlpcn.commons.lang.tire.library.Library;
import java.io.InputStream;
import java.net.URL;
import java.util.List;
public class Test {
    public static void main(String[] args) {
        Forest forest = null;
        try {
            forest= Library.makeForest(PathToStream.stream("jdbc://jdbc:postgresql://127.0.0.1:5432/myapp|postgres|123456|select name as name,nature,freq from dic_table"));//加载字典文件
            String str = "献血者预约献血时间";
            Result result=DicAnalysis.parse(str,forest);//传入forest
            List<Term> termList=result.getTerms();
            for(Term term:termList){
                System.out.println(term.getName()+":"+term.getNatureStr());
            }
            System.err.println("-------------------");
             result=NlpAnalysis.parse(str,forest);//传入forest
          termList=result.getTerms();
            for(Term term:termList){
                System.out.println(term.getName()+":"+term.getNatureStr());
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

输出结果

13:49:13.709 [main] INFO org.ansj.util.MyStaticValue - init userLibrary to env value is : /library/default.dic
13:49:13.713 [main] INFO org.ansj.dic.impl.File2Stream - path to stream library/ambiguity.dic
13:49:13.714 [main] ERROR org.ansj.library.AmbiguityLibrary - Init ambiguity library error :org.ansj.exception.LibraryException:  path :library/ambiguity.dic file:D:\pro\screw-demo\library\ambiguity.dic not found or can not to read, path: library/ambiguity.dic
13:49:13.715 [main] DEBUG org.ansj.library.DicLibrary - begin init dic !
13:49:13.715 [main] INFO org.ansj.dic.impl.File2Stream - path to stream library/default.dic
13:49:13.722 [main] INFO org.ansj.library.DicLibrary - load dic use time:7 path is : library/default.dic
13:49:14.389 [main] INFO org.ansj.library.DATDictionary - init core library ok use time : 580
13:49:14.749 [main] INFO org.ansj.library.NgramLibrary - init ngram ok use time :357
献血者预约:0
献血:78
时间:n
13:49:14.755 [main] DEBUG org.ansj.library.CrfLibrary - begin init crf model!
-------------------
13:49:15.883 [main] INFO org.ansj.app.crf.Model - load crf model ok ! use time :1125
13:49:15.883 [main] INFO org.ansj.library.CrfLibrary - load crf use time:1128 path is : jar://crf.model
献血者:n
预约:v
献血:v
时间:n
Process finished with exit code 0


目录
相关文章
|
Java
轻松上手Java字节码编辑:IDEA插件VisualClassBytes全方位解析
本插件VisualClassBytes可修改class字节码,包括class信息、字段信息、内部类,常量池和方法等。
947 6
|
人工智能 JavaScript 关系型数据库
【02】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-ui设计图figmaUI设计准备-figma汉化插件-mysql数据库设计-优雅草卓伊凡商业项目实战
【02】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-ui设计图figmaUI设计准备-figma汉化插件-mysql数据库设计-优雅草卓伊凡商业项目实战
496 14
【02】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-ui设计图figmaUI设计准备-figma汉化插件-mysql数据库设计-优雅草卓伊凡商业项目实战
|
Arthas Java 测试技术
Java字节码文件、组成,jclasslib插件、阿里arthas工具,Java注解
Java字节码文件、组成、详解、分析;常用工具,jclasslib插件、阿里arthas工具;如何定位线上问题;Java注解
Java字节码文件、组成,jclasslib插件、阿里arthas工具,Java注解
|
安全 Oracle Java
edge浏览器加载java插件
edge浏览器加载java插件
1238 1
|
JSON Java Maven
几个适合Java开发者的免费IDEA插件
【7月更文挑战第15天】以下是适合Java开发者的免费IDEA插件: - **Test Data**: 生成用于单元测试的随机数据,支持多种格式如JSON、CSV等。 - **SonarLint**: 实时检测并修正代码质量问题,提供详细的风险分析。 - **Maven Helper**: 提供pom.xml文件的UI界面,便于管理Maven项目依赖。 - **RestFulTool**: 辅助RESTful服务开发与测试,尤其适合Spring MVC和Spring Boot项目。 - **EnvFile**: 在IDE内部设置运行配置的环境变量,支持YAML、JSON等格式。
570 2
|
Java API 项目管理
Java一分钟之-Gradle插件开发:自定义构建逻辑
【6月更文挑战第5天】Gradle插件开发详解:从入门到发布。文章介绍如何创建自定义插件,强调依赖管理、任务命名和配置阶段的理解。示例代码展示插件实现及避免常见问题的方法。最后,讨论插件的发布与共享,助你提升构建效率并贡献于开发者社区。动手实践,打造强大Gradle插件!
421 3
|
监控 Java
JAVA性能优化- IntelliJ插件:java内存分析工具(JProfiler)
JAVA性能优化- IntelliJ插件:java内存分析工具(JProfiler)
477 0
|
XML 监控 Dubbo
Dubbo03【管理控制台和监控中心搭建】,Java开发实用必备的几款插件
Dubbo03【管理控制台和监控中心搭建】,Java开发实用必备的几款插件
|
Cloud Native 关系型数据库 Java
云原生数据仓库使用问题之如何安装PL/Java插件
阿里云AnalyticDB提供了全面的数据导入、查询分析、数据管理、运维监控等功能,并通过扩展功能支持与AI平台集成、跨地域复制与联邦查询等高级应用场景,为企业构建实时、高效、可扩展的数据仓库解决方案。以下是对AnalyticDB产品使用合集的概述,包括数据导入、查询分析、数据管理、运维监控、扩展功能等方面。
|
SQL 缓存 Java
Java框架之MyBatis 07-动态SQL-缓存机制-逆向工程-分页插件
Java框架之MyBatis 07-动态SQL-缓存机制-逆向工程-分页插件