摘要:为解决中文搜索的问题,最开始使用 PHP 版开源的 SCWS ,但是处理人名和地名时,会出现截断人名地名出现错误。开始使用 NLPIR 分词,在分词准确性上效果要比 SCWS 好。本文介绍如何在 windows 系统下编译 JAVA ,生成可以执行的 jar 文件。
NLPIR 的下载地址:
http://ictclas.nlpir.org/downloads
GitHub 的地址:
https://github.com/NLPIR-team/NLPIR
两个版本有一些不同,本文将分别讲解如何利用 Eclipse 建立工程。
一、NLPIR 官方版本
下载后文件夹中 bin 目录,如下图所示,其中 NLPIR_WinDemo.exe 是一个 NLPIR 的演示程序,可以尝试运行,了解 NLPIR 的功能。
工程源码在 sample 目录下,包含 C 、 C++ 、 Hadoop 、 JAVA 、 Python 等语言示例。
用 Eclipse 新建一个工程导入 JAVA 工程目录 JnaTest_NLPIR ,
( 1 ) Eclipse -> File->import
(2)选择 JnaTest_NLPIR 所在的路径,点击 Finish
(3)查看 Eclipse 工程
(4)NlpirTest.java 文件中包含 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 文件夹的父文件夹。
这步骤完成后,你就可以调试代码了。有关 API 可以阅读手册。
二、github 上下载的代码
目录中包含了 NLPIR SDK 目录,每一个目录是 NLPIR 提供的一个组件。 NLPIR-ICTCLAS 目录包含 NLPIR 组件的代码。
在 Eclipse 中导入 ICTCLAS_java 工程,工程目录如下图
工程中没有填写main 函数,可以在 NlpirTest.java 文件中,加入 main 函数
public class NlpirTest { public static void main(String[] args) throws Exception{ NlpirTest t = new NlpirTest(); t.testParticiple(); } public void testParticiple() throws IOException { ..... } ....... }
和官方网站不同,加载库文件可以自动判断系统类型,在工程当前目录下查找库文件。“工程当前目录”的 win32 、 win64 、 linux32 、 linux64 都是包含库文件的文件夹。
同时会自动加载“工程当前目录“下 Data 问佳佳为分词数据目录。这些目录设置好,就可以进行调试工作了。
三、在 github 中"查找关键字"的组件 Key_Extract
工程目录如下,
project 中提供 java 版本的示例代码,利用 Eclipse 导入工程
同样在 KeyExtractor.java 文件中添加 main 函数。 KeyExtract_GetKeyWords 的第一个参数是需要提取关键字的文本,第二参数是关键字的个数。
public static void main(String[] args) { String keyWordsStr = 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 文件
之后就可以利用 cmd 执行,传递参数,效果如下