使用NLPIR汉语分词系统进行分词

article/2025/10/15 19:34:32

今天尝试了用张华平博士打造的汉语分词系统进行分词测试,遇到了一些问题,最终还是分词成功,首先感谢NLPIR提供的源码及资料,现将使用过程中遇到的问题及解决方法分享出来,仅供参考。

NLPIR提供了多种开发接口,包括c,c#,java,python等,可用于windows和linux平台。本次使用的语言为Java,平台为windows10

一、下载源码及资料

可以去官网下载最新的源码及开发文档,下载地址为http://ictclas.nlpir.org/downloads,下载后解压文件

二、解压后,文件夹中含有sample目录,里面包含了c,c#,hadoop,java,python测试用例,选用java测试用例,也可新建工程。

三、完成分词要包含Data文件夹,jna.jar,NLPIR.dll等文件,为了开发方便,将解压文件夹根目录下的Data文件夹拷贝到java工程的根目录。解压文件夹根目录下的lib目录,根据系统环境选择引用库文件,本次选择为win64,将win64文件夹里的NLPIR文件拷贝到java工程文件夹下。另外还需要引用jar包,jar包已经包含在java测试用例中了。

四、eclipse打开java工程,如果提示jar包错误,则重新引用jar包即可。

五、更改代码中的路径。

在给的测试用例中,接口代码中,CLibrary Instance = (CLibrary) Native.loadLibrary(libpath, CLibrary.class);,libpath即为动态链接库的路径,步骤三中已经放在工程的根目录下,此时,libpath值应为 “NLPIR”,即dll文件的名字,注意,不用添加".dll"。如果NLPIR.dll文件放在了sample文件夹下,则libpath值应为 “sample/NLPIR”。在初始化代码中,int init_flag = CLibrary.Instance.NLPIR_Init(datapath, charset_type, "0") ; datapath即为Data文件夹的路径,此时,根据步骤三存放的位置,值应为“./”或“”。

六、可能出现证书过期的情况,可以去https://github.com/NLPIR-team/NLPIR/tree/master/License下载最新的证书,下载后,解压并复制替换Data中的文件即可

七、源码及测试结果

源码:

package code;
import com.sun.jna.Library;
import com.sun.jna.Native;
public class NlpirTest {
private static String libpath = "NLPIR";
private static String rootpath = "";
public interface CLibrary extends Library {
CLibrary Instance = (CLibrary) Native.loadLibrary(libpath, CLibrary.class);
public int NLPIR_Init(String sDataPath, int encoding, String sLicenceCode);
public String NLPIR_ParagraphProcess(String sSrc, int bPOSTagged);
public int NLPIR_ImportUserDict(String path);
public String NLPIR_GetKeyWords(String sLine, int nMaxKeyLimit, boolean bWeightOut);
public String NLPIR_GetFileKeyWords(String sLine, int nMaxKeyLimit, boolean bWeightOut);
public int NLPIR_AddUserWord(String sWord);
public int NLPIR_DelUsrWord(String sWord);
public String NLPIR_GetLastErrorMsg();
public void NLPIR_Exit();
}
public static void main(String[] args) throws Exception {
int charset_type = 1;
int init_flag = CLibrary.Instance.NLPIR_Init(rootpath, charset_type, "0");
String nativeBytes = null;
if (0 == init_flag) {
nativeBytes = CLibrary.Instance.NLPIR_GetLastErrorMsg();
System.err.println("init failed, reason is " + nativeBytes);
return;
}
String sInput = "山东科技大学";
try {
//分词结果
nativeBytes = CLibrary.Instance.NLPIR_ParagraphProcess(sInput, 1);
System.out.println("分词结果为: " + nativeBytes);
//添加词典以后
int nItems = CLibrary.Instance.NLPIR_ImportUserDict("mykey.txt");
System.out.println(nItems);
nativeBytes = CLibrary.Instance.NLPIR_ParagraphProcess(sInput, 1);
System.out.println("增加用户词典后分词结果为: " + nativeBytes);
//关键词提取结果
String nativeByte = CLibrary.Instance.NLPIR_GetKeyWords(sInput, 10, false);
System.out.println("关键词提取结果是:" + nativeByte);
CLibrary.Instance.NLPIR_Exit();
} catch (Exception ex) {
ex.printStackTrace();
}
}
}

结果测试:


我的项目可在:git@code.csdn.net:wanna_wsl/nlpirtest.git下载,仅供参考


http://chatgpt.dhexx.cn/article/cVhNJxaD.shtml

相关文章

php中文分词nlp,几种常见的PHP中文分词系统

因为要做毕业设计,可能需要相关知识,所以在此总结一下常见的中文分词系统。 1)HTTPCWS – 基于HTTP协议的开源中文分词系统 张宴的作品,基于ICTCLAS 3.0 共享版,分词精度98.45%。可以采用HTTP方式调用借口。 2)SCWS – 简易中文分…

基于Java实现的中文分词系统

资源下载地址:https://download.csdn.net/download/sheziqiong/85941192 资源下载地址:https://download.csdn.net/download/sheziqiong/85941192 目录 1.问题描述 2.相关工作 3.系统框架和算法设计 3.1系统整体框架 3.2基于HMM模型分词算法设计 3…

基于Python的汉语分词系统

资源下载地址:https://download.csdn.net/download/sheziqiong/86776599 资源下载地址:https://download.csdn.net/download/sheziqiong/86776599 汉语分词系统 目录 汉语分词系统 1 摘要 1 1 绪论 1 2 相关信息 1 2.1 实验目标 1 2.2 编程语言与环境 2 …

ICTCLAS分词系统研究(一)

ICTClAS分词系统是由中科院计算所的张华平、刘群所开发的一套获得广泛好评的分词系统,难能可贵的是该版的Free版开放了源代码,为我们很多初学者提供了宝贵的学习材料。 但有一点不完美的是,该源代码没有配套的文档,阅读起来可能有一定的障碍,尤其是对C/C++不熟的人来说.本…

自然语言处理——分词系统(正向最大匹配法)

算法分析 正向最大匹配法,对于输入的一段文本从左至右、以贪心的方式切分出当前位置上长度最大的词。正向最大匹配法是基于词典的分词方法,其分词原理是:单词的颗粒度越大,所能表示的含义越确切。该算法主要分两个步骤: 该算法主要分为两个步…

LTE学习-信道均衡(ZF)

前面学习了信道估计和插值,现在说说信道均衡,信道均衡的作用就是根据信道估计和插值的结果尽可能恢复发射数据。信道均衡技术主要有两种,迫零(ZF)均衡和最小均方误差(MMSE)均衡,实际上还有一个最大似然(ML)均衡,但计算…

解调去载波后均衡信道与实际信道的关系

关注公号【逆向通信猿】更精彩!!! 通常,信号经过调制后发送,会经过信道作用,示意图可以表示为 其中 x ( t ) x(t) x(t)为基带信号, e

WLAN信道利用率

WLAN空口/信道利用率监控大致如下 参数 说明 Ctl channel 主信道号 Channel Band 信道带宽 Ext Channel-11N产品支持 辅信道类型(Bellow/Above) Bellow:辅信道向下绑定 Above:辅信道向上绑定 CtlBusy(%) 主信道利用率 TxBusy(%) 发送帧利用率 RxBusy(%) 接收帧利用…

第7章:OFDM 信道估计与均衡(1)

第7章(1)内容如下: 一、OFDM相关书籍二、OFDM基本原理三、OFDM经过高斯白噪声信道的误码率分析三、总结 本人最近搞懂了OFDM的一些知识,便给本章取名为第7章——OFDM信道估计、均衡。本文所有代码下载地址是:123kevin4…

信道利用率

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接: https://blog.csdn.net/weixin_42682806/article/details/84592569 这又是计算机网络中的一个计算题所在,真题…

无线通信——基于MATLAB实现OFDM系统(信道估计与均衡)

基于MATLAB实现OFDM系统基带信号在频率选择性衰落信道条件下的发送与接收 题目及要求: 仿真系统构成:信号输入(为随机比特流)、OFDM调制、仿真信道传输、OFDM解调、信号输出(可能存在误码的比特率)&#…

信道模型

下面是4种信道模型: 什么是信道模型?信道模型是用数学表达式来描述信道特性的,H_rx_tx,例如h21表示1发2收,下图的n表示噪声加在每个接收天线上,在实际中,很多噪声进入一个接收天线中,例如n1是所…

第7章:OFDM 信道估计与均衡(4)

第7章(4)内容如下: 一、导频结构与图案二、基于导频的信道估计算法和插值方法 本文所有可运行代码下载地址是:123kevin456/OFDM- 一、导频结构与图案 前三讲介绍了OFDM经过AWGN信道和衰落信道的误码率情况,其中在第&…

信道均衡之线性均衡——迫零滤波器

在通讯系统中,信道是影响信号传输质量的最重要因素,而信道均衡目的是则为了消除信道的影响。 一个基带传输的通信系统的简单示意图如图1,数字信号m(n)经过单位冲激响应为ht(t)的发送滤波器后,变成模拟信号 s(t), 然后通过的单位冲…

4.4.5 信道均衡(二)

4.4.5 信道均衡(二) 基本上 《XILINX FPGA的OFDM通信系统基带设计》一书已经带有各部分的代码,我做的工作就是将代码整合到一起,并按照仿真修改,让其能正常工作。本文将对实现中的重点部分做解释,并指出…

基带信号传输之信道均衡

信道中的频域均衡器中,它是用可调滤波器的频域特性去补偿基带系统的频域特性,使系统总的传输函数满足无失真传输条件; 时域均衡器,使用均衡器产生的波形去补偿已经变形的波形,使总的输出波形满足无码间串扰的条件。 …

无线衰落信道、多径与OFDM、均衡技…

参见 张贤达 通信信号处理。OFDM移动通信技术原理与应用,移动通信原理 吴伟陵 目录 无线信道的传播特征 无线信道的大尺度衰落 阴影衰落 无线信道的多径衰落 多径时延与与叠加后的衰落 频率选择性衰落和非频率选择性衰落 符号间干扰ISI的避免 多径信号的时延扩展引…

【通信技术专题:信道均衡器】

| 通信技术 通信技术发展至今,每个人都离不开它的存在。通信系统的核心主要在于物理层,物理层的关键在基带。在通信系统中,逻辑开发工程师主要工作就在基带和射频部分,甚至射频都不在从事的任务内。今天给大家简单讲讲基带接收机…

[培训-无线通信基础-7]:信道均衡器(信道估计、信道均衡)

作者主页(文火冰糖的硅基工坊):https://blog.csdn.net/HiWangWenBing 本文网址:https://blog.csdn.net/HiWangWenBing/article/details/118832368 目录 引言: 第1章 均衡器概述 1.1 什么是均衡器 1.2 如何进行信道估计 第2章 线性均衡器…

4.4.5 信道均衡(一)

4.4.5 信道均衡(一) 一、为什么要信道均衡? 数字信号在实际信道上传输时,由于信道传输特性不理想以及信道噪声的影响,接收端接收到的信号不可避免地发生错误。为了恢复发送的数据信息,接收端需要估计出信道…