转载

中科院NLPIR中文分词java版

摘要:为解决中文搜索的问题,最开始使用 PHP 版开源的 SCWS ,但是处理人名和地名时,会出现截断人名地名出现错误。开始使用 NLPIR 分词,在分词准确性上效果要比 SCWS 好。本文介绍如何在 windows 系统下编译 JAVA  ,生成可以执行的 jar 文件。

中科院NLPIR中文分词java版

NLPIR 的下载地址:

http://ictclas.nlpir.org/downloads

GitHub 的地址:

https://github.com/NLPIR-team/NLPIR

两个版本有一些不同,本文将分别讲解如何利用 Eclipse 建立工程。

一、NLPIR 官方版本

下载后文件夹中 bin 目录,如下图所示,其中 NLPIR_WinDemo.exe 是一个 NLPIR 的演示程序,可以尝试运行,了解 NLPIR 的功能。

中科院NLPIR中文分词java版

工程源码在 sample 目录下,包含 C C++ Hadoop JAVA Python 等语言示例。

Eclipse 新建一个工程导入 JAVA 工程目录 JnaTest_NLPIR

1 Eclipse -> File->import

中科院NLPIR中文分词java版

(2)选择 JnaTest_NLPIR 所在的路径,点击 Finish

中科院NLPIR中文分词java版

(3)查看 Eclipse 工程

中科院NLPIR中文分词java版

(4)NlpirTest.java 文件中包含 main 函数,下面的语句初始化 NLPIR 需要的库文件

中科院NLPIR中文分词java版

CLibrery 类是包含在 NlpirTest.java 文件中,

CLibrary Instance = (CLibrary) Native.loadLibrary("H://workspace//ictclas//1//ICTCLAS2015//lib//win64//NLPIR", CLibrary.class);

函数 loadLibrary 需要传递库文件位置,源码提供了多种语言类库,我们的工程需要加载 win64 类库,该文件夹内容如下 ,

中科院NLPIR中文分词java版

(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 工程,工程目录如下图

中科院NLPIR中文分词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

工程目录如下,

中科院NLPIR中文分词java版

project 中提供 java 版本的示例代码,利用 Eclipse 导入工程

中科院NLPIR中文分词java版

同样在 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 文件夹中。

中科院NLPIR中文分词java版

这些设置完成,在 Eclipse 中传入参数,菜单项 run-->run configure

中科院NLPIR中文分词java版  

四、导出 jar

Eclipse 工程目录上,右键选择 Export

中科院NLPIR中文分词java版

选择 runnablejar ,生成 jar 文件

中科院NLPIR中文分词java版

之后就可以利用 cmd 执行,传递参数,效果如下

中科院NLPIR中文分词java版

正文到此结束
Loading...