摘要:为解决中文搜索的问题,最开始使用 版 SCWS ,但是处理人名和地名时,会出现截断人名地名出现错误。开始使用 NLPIR 分词,在分词准确性上效果要比 SCWS 好。本文介绍如何在 系统下 JAVA ,生成可以执行的 jar 文件。
NLPIR 的下载地址:
http://ictclas.nlpir.org/downloads
两个版本有一些不同,本文将分别讲解如何利用 Ecl 建立工程。
一、NLPIR 官方版本
下载后文件夹中 bin NLPIR_WinDemo.exe 是一个 NLPIR 的演示程序,可以尝试运行,了解 NLPIR 的功能。
工程sample 目录下,包含 C 、 C++ 、 、 JAVA 、 Python 等语言示例。
用 Eclipse 新建一个工程导入 JAVA 工程目录 JnaTest_NLPIR ,
( 1 ) Eclipse -> File->import
(2)选择 JnaTest_NLPIR 所在的路径,点击 Finish
(3)查看 Eclipse 工程
(4)NlpirTest.文件中包含 main 函数,下面的语句初始化 NLPIR 需要的库文件
CLibrery 类是包含在 NlpirTest.java 文件中,
CLibrary Instance = (CLibrary) Native.loadLibrary("H://workspace//ictclas//1//ICTCLAS2015//lib//win64//NLPIR", CLibrary.class);
函数 loadLibrary 需要传递库文件位置,源码提供了多种语言类库,我们的工程需要加载 win64 类库,该文件夹内容如下 ,
(5)加载分词Data 文件夹路径
String argu = "H://workspace//ictclas//1//ICTCLAS2015"; String system_charset= "UTF-8";int charset_type = 1;int init_flag = CLibrary.Instance.NLPIR_Init(argu, charset_type, "0");
H://workspace//ictclas//1//ICTCLAS2015是Data 文件夹的父文件夹。
这步骤完成后,你就可以可以阅读手册。
二、github 上下载的代码
目录中包含了 NLPIR SDK 目录,每一个目录是 NLPIR 提供的一个组件。 NLPIR-ICTCLAS 目录包含 NLPIR 组件的代码。
在 Eclipse 中导入 ICTCLAS_java 工程,工程目录如下图
工程中没有填写main 函数,可以在 NlpirTest.java 文件中,加入 main 函数
public classNlpirTest {public static void main(String[] args) throwsException{ NlpirTest t= newNlpirTest(); t.testParticiple(); }public void testParticiple() throwsIOException { ..... } ....... }
和官方 win32 、 win64 、 、 linux64 都是包含库文件的文件夹。
同时会自动加载“工程当前目录“下 Data 问佳佳为分词数据目录。这些目录设置好,就可以进行调试工作了。
三、在 github 中"查找关键字"的组件 Key_Extract
工程目录如下,
project 中提供 java 版本的示例代码,利用 Eclipse 导入工程
同样在 KeyExtractor.java 文件中添加 main 函数。 KeyExtract_GetKeyWords 的第一个
public static voidmain(String[] args) { String= CLibraryKeyExtractor.instance.KeyExtract_GetKeyWords(args[0], 10, true); System.out.println(keyWordsStr); CLibraryKeyExtractor.instance.KeyExtract_Exit(); }
在工程的当前文件夹下,有一个 Data 目录,是分词和提取关键词需要用到的分词数据。需要将需要的 license 考入到这个文件夹。你可以不用区分用到哪一个 user 文件,建议把全部文件都考到当前工程目录 Data 文件夹中。
这些设置完成,在 Eclipse 中传入参数,菜单项 run–>run configure 。
四、导出 jar
Eclipse 工程目录上,右键选择 Export
选择 runnablejar ,生成 jar 文件
之后就可以利用 执行,传递参数,效果如下