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

13 篇文章 0 订阅

今天尝试了用张华平博士打造的汉语分词系统进行分词测试,遇到了一些问题,最终还是分词成功,首先感谢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下载,仅供参考

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值