ICTCLAS2014 C++版本 的使用方法

来源:互联网 发布:淘宝原厂货 编辑:程序博客网 时间:2024/06/06 05:12

这个工具是什么?先看看他的官方介绍吧:

NLPIR汉语分词系统(又名ICTCLAS2013),主要功能包括中文分词;词性标注;命名实体识别;用户词典功能;支持GBK编码、UTF8编码、BIG5编码。新增微博分词、新词发现与关键词提取;张华平博士先后倾力打造十余年,内核升级10次。


虽然介绍时候还是用的ICTCLAS2013,但是你会发现下载的版本里面dll是2014版本的。以前的博客可能不能成功使用。

ICTCLAS2013 Java版本的使用方法 请点击点击打开链接

ICTCLAS2013 c++版本的使用方法  请点击点击打开链接



一,先下载2014版本的c++版本:点击打开链接

此本版下面后的文件名字:20131115123549_nlpir_ictclas2013_u20131115_release.zip

解压文件后看到很多文件的:


图1. rar解压后的文件图


但是2014版本中的bin文件夹打开时这样的:


图2. 图1中bin文件夹打开后看到的图

注意: 此dll是2014版本的。


二,自己新建一个c++工程,在vs2010建名为ICTCLAS2014的工程(不要使用预编译头)。

建好后如图所示:


图3. 工程ICTCLAS2014根目录下的文件


三,将图1中的example-c文件夹(是整个文件夹,下同)复制到图3的ICTCLAS2014目录下,并且在ICTCLAS2014源文件中导入,同时将ICTCLAS2014.cpp文件下的_tmain函数注释掉。如图:


图4. 导入example-c文件夹下的Example-C.cpp文件



图5. 导入完成后,工程下面出现Example-C.cpp文件(图中红底线示意)


四,将图1中的include文件夹复制到图2的工程根目录下。否则,会出现下图所示错误。


图6. 复制include文件夹之前工程提示“无法打开源文件 "../../include/NLPIR.h"



图7.复制include文件夹之后,工程ICTCLAS2014根目录下的文件


五,

1>将图1中的lib文件夹复制到图2工程根目录下面,并且在项目->添加现有项中导入lib下的NLPIR.lib文件。


图8. 导入lib文件夹下NLPIR.lib文件

2>将图2中ICTCLAS2014文件夹下的NLPIR.dll文件复制到工程根目录下ICTCLAS2014目录下Debug目录下[注意:没有Debug目录,请将工程编译一次]。

注意:如果机器是32位的,请去下载32位对应的dll。

3>注释掉Example-C.cpp文件第9行语句。

 #pragma comment(lib, "../../bin/NLPIR.lib")  -->   // #pragma comment(lib, "../../bin/NLPIR.lib")

  (不要问我为什么,我只能告诉你,我也不知道。在我实验中不注释掉这句话,依然报错 fatal error LNK1104。)


六,将图1中的Data文件夹和test文件夹复制到图3工程根目录下。


图9, 步骤六完成后工程根目录下的文件


七,不做修改,编译后,运行工程。

失败了!!!!!!


图10, 编译,运行未做任何修改Example-C.cpp代码的结果。

解决方法:

Example-C.cpp的322行注释掉,并且将323行注符号删除。修改后的两行如下:

testNewWord(GBK_CODE);
//testNewWord(UTF8_CODE);

编译后运行程序。成功了,如图:

图11,修改322行和323行后运行结果,识别新词。


如果想试试分词,继续行动。将327行注释符号去掉。编译,运行。

可惜的是......ICTCLAS INIT FAILED! 如图:


图12, 同时开启识别新词和分词函数的失败结果图。


不要泄气,注释掉322行,然后修改第80行代码:

if(!ICTCLAS_Init())//数据在当前路径下,默认为GBK编码的分词   ==》 if(!NLPIR_Init("..",0)//数据在当前路径下,默认为GBK编码的分词

注意:此处的NLPIR_Init("..",0)中的0是表示GBK编码。

编译,运行。 成功!!


图13,运行成功图。


注意事项:

1. 如果细心你会发现在图2中ICTCLAS2014文件夹中有一个20131213.err文件。


图14,ICTCLAS2014文件夹中文件,下划线为20131213.err文件


打开20131213.err文件


图15,20131213.err文件内容

此处的报错和图10报错是同一个类型(图10报错时候log文件也显示这个)。


2,testNewWord(GBK_CODE) 和 SplitGBK(sInput)同时使用报错。错误类型还未知。

12 0