Java调用NLPIR汉语分词系统

简介:

自然语言处理与信息检索共享平台:(nlpir相关的一些软件、文档、论文、语料库等资源)http://www.nlpir.org/

上边这个地址写的信息比较详细丰富,但是万事开头难,很多同学不知道怎么具体应该调用?下边我就把几个步骤简单介绍一下:

Step1、下载

我下载的文件:20141230101836_ICTCLAS2015.zip

Step2、解压

解压后的目录:D:\20141230101836_ICTCLAS2015

Step3、运行调用例子

NLPIR调用的例子在sample目录下,以Java调用的例子(JnaTest_NLPIR)为例:

(1)在Eclipse中导入JnaTest_NLPIR项目;

(2)打开src/code/NlpirTest.java文件,修改第16行第44行的代码(就是dll的目录,例子中写的是错的);

()我下载的这个版本,在win7 64位机器上,win64目录下的dll无法调用,但是win32目录下的dll可以使用;

复制代码
 1 package code;
 2 
 3 import java.io.UnsupportedEncodingException;
 4 
 5 import utils.SystemParas;
 6 
 7 import com.sun.jna.Library;
 8 import com.sun.jna.Native;
 9 
10 public class NlpirTest {
11 
12     // 定义接口CLibrary,继承自com.sun.jna.Library
13     public interface CLibrary extends Library {
14         // 定义并初始化接口的静态变量
15         CLibrary Instance = (CLibrary) Native.loadLibrary(
16                 "D:\\20141230101836_ICTCLAS2015\\ICTCLAS2015\\lib\\win32\\NLPIR", CLibrary.class);
17         
18         public int NLPIR_Init(String sDataPath, int encoding,
19                 String sLicenceCode);
20                 
21         public String NLPIR_ParagraphProcess(String sSrc, int bPOSTagged);
22 
23         public String NLPIR_GetKeyWords(String sLine, int nMaxKeyLimit,
24                 boolean bWeightOut);
25         public String NLPIR_GetFileKeyWords(String sLine, int nMaxKeyLimit,
26                 boolean bWeightOut);
27         public int NLPIR_AddUserWord(String sWord);//add by qp 2008.11.10
28         public int NLPIR_DelUsrWord(String sWord);//add by qp 2008.11.10
29         public String NLPIR_GetLastErrorMsg();
30         public void NLPIR_Exit();
31     }
32 
33     public static String transString(String aidString, String ori_encoding,
34             String new_encoding) {
35         try {
36             return new String(aidString.getBytes(ori_encoding), new_encoding);
37         } catch (UnsupportedEncodingException e) {
38             e.printStackTrace();
39         }
40         return null;
41     }
42 
43     public static void main(String[] args) throws Exception {
44         String argu = "D:\\20141230101836_ICTCLAS2015\\ICTCLAS2015";
45         // String system_charset = "GBK";//GBK----0
46         String system_charset = "UTF-8";
47         int charset_type = 1;
48         
49         int init_flag = CLibrary.Instance.NLPIR_Init(argu, charset_type, "0");
50         String nativeBytes = null;
51 
52         if (0 == init_flag) {
53             nativeBytes = CLibrary.Instance.NLPIR_GetLastErrorMsg();
54             System.err.println("初始化失败!fail reason is "+nativeBytes);
55             return;
56         }
57 
58         String sInput = "据悉,质检总局已将最新有关情况再次通报美方,要求美方加强对输华玉米的产地来源、运输及仓储等环节的管控措施,有效避免输华玉米被未经我国农业部安全评估并批准的转基因品系污染。";
59 
60         //String nativeBytes = null;
61         try {
62             nativeBytes = CLibrary.Instance.NLPIR_ParagraphProcess(sInput, 1);
63 
64             System.out.println("分词结果为: " + nativeBytes);
65             
66             CLibrary.Instance.NLPIR_AddUserWord("要求美方加强对输 n");
67             CLibrary.Instance.NLPIR_AddUserWord("华玉米的产地来源 n");
68             nativeBytes = CLibrary.Instance.NLPIR_ParagraphProcess(sInput, 1);
69             System.out.println("增加用户词典后分词结果为: " + nativeBytes);
70             
71             CLibrary.Instance.NLPIR_DelUsrWord("要求美方加强对输");
72             nativeBytes = CLibrary.Instance.NLPIR_ParagraphProcess(sInput, 1);
73             System.out.println("删除用户词典后分词结果为: " + nativeBytes);
74             
75             
76             int nCountKey = 0;
77             String nativeByte = CLibrary.Instance.NLPIR_GetKeyWords(sInput, 10,false);
78 
79             System.out.print("关键词提取结果是:" + nativeByte);
80 
81             nativeByte = CLibrary.Instance.NLPIR_GetFileKeyWords("D:\\NLPIR\\feedback\\huawei\\5341\\5341\\产经广场\\2012\\5\\16766.txt", 10,false);
82 
83             System.out.print("关键词提取结果是:" + nativeByte);
84 
85             
86 
87             CLibrary.Instance.NLPIR_Exit();
88 
89         } catch (Exception ex) {
90             // TODO Auto-generated catch block
91             ex.printStackTrace();
92         }
93 
94     }
95 }
复制代码

Step4、其他功能和接口,可以查看doc目录下的使用手册。

 


本文转自ZH奶酪博客园博客,原文链接:http://www.cnblogs.com/CheeseZH/p/4585477.html,如需转载请自行联系原作者

相关文章
|
1月前
|
消息中间件 Java Kafka
Java 事件驱动架构设计实战与 Kafka 生态系统组件实操全流程指南
本指南详解Java事件驱动架构与Kafka生态实操,涵盖环境搭建、事件模型定义、生产者与消费者实现、事件测试及高级特性,助你快速构建高可扩展分布式系统。
111 7
|
2月前
|
存储 Java 数据库连接
java 初学者必看的系统知识结构图详解
本文详解Java知识结构图,涵盖Java语言基础、JVM原理、集合框架、并发编程、网络通信及主流框架(如Spring Boot、MyBatis),并结合学生信息管理系统实例,帮助初学者构建完整知识体系,提升实战开发能力。
68 0
|
1月前
|
安全 Oracle Java
JAVA高级开发必备·卓伊凡详细JDK、JRE、JVM与Java生态深度解析-形象比喻系统理解-优雅草卓伊凡
JAVA高级开发必备·卓伊凡详细JDK、JRE、JVM与Java生态深度解析-形象比喻系统理解-优雅草卓伊凡
115 0
JAVA高级开发必备·卓伊凡详细JDK、JRE、JVM与Java生态深度解析-形象比喻系统理解-优雅草卓伊凡
|
3月前
|
NoSQL Java Shell
2025服务端java搭建篇:蜻蜓I即时通讯系统私有化部署深度指南-优雅草卓伊凡|麻子|贝贝
2025服务端java搭建篇:蜻蜓I即时通讯系统私有化部署深度指南-优雅草卓伊凡|麻子|贝贝
117 8
2025服务端java搭建篇:蜻蜓I即时通讯系统私有化部署深度指南-优雅草卓伊凡|麻子|贝贝
|
4月前
|
JavaScript Java 关系型数据库
家政系统源码,java版本
这是一款基于SpringBoot后端框架、MySQL数据库及Uniapp移动端开发的家政预约上门服务系统。
138 6
家政系统源码,java版本
|
3月前
|
NoSQL Java Redis
推荐一款好用的开源免费Java CMS内容管理站群系统
Java开源内容管理系统(JProcms),基于SpringCloud、SpringBoot、MyBatisPlus、Vue3等技术构建,采用Apache-2.0协议,支持免费商用。系统具备自定义字段存储与可视化设计、API制作网站群页面等功能,强调简单灵活的设计理念,降低二次开发成本。支持多种数据库、消息队列和认证方式,提供SaaS多租户、动态权限菜单、工作流配置等强大功能,同时集成阿里云、腾讯云服务,适用于高效建站与内容管理。
582 4
|
2月前
|
存储 Java 关系型数据库
Java Swing 开发的五星级酒店客房预订与管理系统源码
本文介绍了基于Java Swing的酒店管理系统开发方案。系统采用Java Swing构建GUI界面,结合MySQL数据库,实现预订管理、前台服务、客房管理、客户关系维护等功能模块。文章详细展示了登录界面、开房操作等核心功能的代码实现,包括数据验证和业务逻辑处理。该系统具有跨平台性,能有效提升酒店运营效率,为开发者提供GUI设计和数据库开发的实践案例。技术方案涵盖IntelliJ IDEA开发环境、Jform Designer插件辅助设计等工具链,适合中小型酒店管理需求。
104 0
|
3月前
|
Java 调度 流计算
基于Java 17 + Spring Boot 3.2 + Flink 1.18的智慧实验室管理系统核心代码
这是一套基于Java 17、Spring Boot 3.2和Flink 1.18开发的智慧实验室管理系统核心代码。系统涵盖多协议设备接入(支持OPC UA、MQTT等12种工业协议)、实时异常检测(Flink流处理引擎实现设备状态监控)、强化学习调度(Q-Learning算法优化资源分配)、三维可视化(JavaFX与WebGL渲染实验室空间)、微服务架构(Spring Cloud构建分布式体系)及数据湖建设(Spark构建实验室数据仓库)。实际应用中,该系统显著提升了设备调度效率(响应时间从46分钟降至9秒)、设备利用率(从41%提升至89%),并大幅减少实验准备时间和维护成本。
223 0
|
3月前
|
监控 安全 Java
现代 Java 技术开发宠物管理系统实操案例解析
本文通过一个宠物管理系统项目,深入讲解Java中的封装、继承和多态特性。系统基于Java 8+开发,结合Stream API与Lambda表达式,展示现代Java技术的实际应用。封装部分使用Record类简化数据模型,继承设计通过抽象类与接口实现代码复用,多态则通过统一接口处理不同宠物行为。案例涵盖模板方法模式、策略模式等设计思想,并提供最佳实践建议,解决常见问题如继承滥用和类型转换异常。资源地址:[https://pan.quark.cn/s/14fcf913bae6](https://pan.quark.cn/s/14fcf913bae6)。
96 0
|
传感器 分布式计算 安全
Java 大视界 -- Java 大数据在智能安防入侵检测系统中的多源数据融合与分析技术(171)
本文围绕 Java 大数据在智能安防入侵检测系统中的应用展开,剖析系统现状与挑战,阐释多源数据融合及分析技术,结合案例与代码给出实操方案,提升入侵检测效能。

热门文章

最新文章