ZH奶酪:Java调用NLPIR汉语分词系统

NLPIR工具

  支持自定义词表;

  可以离线使用;

下载地址:http://ictclas.nlpir.org/newsdownloads?DocId=389

在线演示:http://ictclas.nlpir.org/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目录下的使用手册。

时间: 2024-11-11 12:29:45

ZH奶酪:Java调用NLPIR汉语分词系统的相关文章

[分词]NLPIR/ICTCLAS2014分词系统的C++ API 在Windows下初次使用

软件包准备 NLPIR/ICTCLAS2014分词系统下载包 Dev-C++ 操作系统Windows 解压分词系统下载包后看到 在这里Windows下所需要的是Data.include中的NLPIR.h.lib中win32的NLPIR.libNLPIR.dll,文件使用方法待会儿再说. 在 Dev C++中新建项目 将上述的Data.NLPIR.h.NLPIR.lib.NLPIR.dll拷贝到项目NLPIR工作目录下,如图 右键NLPIR->项目属性 在“参数”界面,点击“加入库或者对象”,将N

【原创】中文分词系统 ICTCLASS2015 的JAVA封装和多线程执行(附代码)

本文针对的问题是 ICTCLASS2015 的多线程分词,为了实现多线程做了简单的JAVA封装.如果有需要可以自行进一步封装其它接口. 首先ICTCLASS2015的传送门(http://ictclas.nlpir.org/),其对中文分词做的比较透彻,而且有一定的可调式性.但是应用到实际开发中的话,多线程操作是必须的,因此有了本文的初衷. 可能有的小伙伴不太清楚ICTCLASS是干嘛的,下面是一段介绍:NLPIR汉语分词系统(又名ICTCLAS2015),主要功能包括中文分词:词性标注:命名实

java实现NLPIR(ICTCLAS)分词

1.NLPIR简介 NLPIR汉语分词系统(又名ICTCLAS2013),主要功能包括中文分词:词性标注:命名实体识别:用户词典功能:支持GBK编码.UTF8编码.BIG5编码.新增微博分词.新词发现与关键词提取:张华平博士先后倾力打造十余年,内核升级10次. 下载地址:http://ictclas.nlpir.org/downloads 2.目录介绍 ReadMe:介绍 Data:  系统核心词库 doc:  文档,用法介绍 include:系统头文件 sample:NLPIR示例程序 lib

几款开源的中文分词系统

中文分词是做好中文内容检索.文本分析的基础,主要应用于搜索引擎与数据挖掘领域.中文是以词为基本语素单位,而词与词之间并不像英语一样有空格来分隔,因而中文分词的难点在于如何准确而又快速地进行分词 以下介绍4款开源中文分词系统. 1.ICTCLAS – 全球最受欢迎的汉语分词系统 中文词法分析是中文信息处理的基础与关键.中国科学院计算技术研究所在多年研究工作积累的基础上,研制出了汉语词法分析系统ICTCLAS(Institute of Computing Technology, Chinese Le

JAVA调用C++ dll文件之JNI接口研究——分布函数计算

分别对VS平台运行GNU库和JAVA调用VS2010 x64位系统做过一定研究,接下来将试图生成一个调用概率统计函数的dll,将其嵌入JAVA程序中运行. 当准备生成带有正态分布函数的dll文件时,出现如下错误: 1>     正在创建库 d:\documents\visual studio 2010\Projects\GetNrompdf\x64\Debug\GetNrompdf.lib 和对象 d:\documents\visual studio 2010\Projects\GetNromp

中科院分词系统(NLPIR)JAVA简易教程(2014-11-12)

这篇文档内容主要从官方文档中获取而来,对API进行了翻译,并依据个人使用经验进行了一些补充,鉴于能力有限.水平较低,文档中肯定存在有很多不足之处,还请见谅. 如果要用JAVA来使用NLPIR,需要通过JNA来调用NLPIR的函数来实现.下面通过具体的例子来进行说明: 首先在JAVA项目中新建一个接口,继承JNA的Library接口,在接口中定义对NLPIR一系列函数的实现(具体API可参见include文件夹中的头文件NLPIR.h). import com.sun.jna.Library; p

Eclipse下C++调用NLPIR分词系统

最近在研究文本挖掘,对于中文文本,首先要进行分词,那么就用到了NLPIR分词系统.总结了一下网上的资料:下面介绍一下如何用C++调用NLPIR分词系统: step 1:下载最新版的NLPIR分词系统:http://ictclas.nlpir.org/.解压后如下图: step 2:打开IDE(我用的是eclipse)新建一个c++工程NLPIR,然后从上面解压出来的文件中找到Data.NLPIR.h.NLPIR.lib.NLPIR.dll,拷贝到刚才新建的工程下面: step 3:添加库文件,右

NLPIR(北理工张华平版中文分词系统)的SDK(C++)调用方法

一.本文内容简介 二.具体内容 1. 中文分词的基本概念 2.关于NLPIR(北理工张华平版中文分词系统)的基本情况 3.具体SDK模块(C++)的组装方式 ①准备内容: ②开始组装 三.注意事项 一.本文内容简介 关于中文分词的基本概念 关于NLPIR(北理工张华平版中文分词系统)的基本情况 具体SDK模块(C++版)的组装方法 二.具体内容 1. 中文分词的基本概念 中文分词是自然语言处理的一个分支,自然语言即人们在日常生活中使用的语言,包含书面语,口语,例如报纸上的一篇通讯,博客里面的一篇

1---------java调用NLPIR(ICTCLAS2016)实现分词功能

备注:win7 64位系统,netbeans编程 NLPIR分词系统,前身是2000年发布的ICTCLAS,2009年更为现名.张华平博士打造. 实现步骤: 1.在Netbeans中,文件→新建项目→java→java应用程序:项目名称:CWordSeg:    2.将NLPIR文件下…\sample\JnaTest_NLPIR\src\code中NlpirTest.java里的代码拷贝到CWordSeg.java里面: 初步修改代码为下图所示: (1)将package包声明修改为cwordse