1. 程式人生 > >ICTCLAS2013 Java版本的使用方法

ICTCLAS2013 Java版本的使用方法

這個工具是什麼?先看看他的官方介紹吧:

NLPIR漢語分詞系統(又名ICTCLAS2013),主要功能包括中文分詞;詞性標註;命名實體識別;使用者詞典功能;支援GBK編碼、UTF8編碼、BIG5編碼。新增微博分詞、新詞發現與關鍵詞提取;張華平博士先後傾力打造十餘年,核心升級10次。

[最近試用日期:2013-12-15]

ICTCLAS2013 c++版本的使用方法:點選開啟連結

ICTCLAS2014 c++版本的使用方法:點選開啟連結

Java32位版本下載地址:點選開啟連結

介紹時候說:

        NLPIR漢語分詞系統(又名ICTCLAS2013),在Windows環境下,32位,供Java呼叫的API,具體見示例。

        說明:本下載包僅僅是補充包,還需要下載 NLPIR漢語分詞系統(又名ICTCLAS2013版)下載包 ,替換其中的dll即可。

“替換其中的dll即可”這句話還害的我折騰了一下午,我一直沒有弄清楚到底如何操作。

後來我自己弄,弄OK了。很簡單,很傻的方法。廢話不多說,開始吧。

一,下載Java32位的版本,上面已經給出了。然後下載他的c++版本,裡面有些東西需要用到的點選開啟連結

二,(可選)在eclipse中新建一個工程,就命令ICT吧,然後將Java32位的版本的rar解壓檔案中Win-32bit-JNI-lib資料夾下面的kevin資料夾和TestNLPIR.java檔案(看圖1)扔到工程ICT的src資料夾下面。記得將上述扔進去的東西新增到工程的build path。不會的話看這裡:

點選開啟連結。不然工程執行時候報錯:editor does not contain a main type


  圖1.需要扔進ICT工程src的檔案。

=========================如果就這麼執行的話,會報錯的。

三,上圖剩下的那個玩意NLPIR_JNI.dll和c++版本(32位下載點選開啟連結 檔名:20131115123549_nlpir_ictclas2013_u20131115_release.zip)中的bin資料夾下面一個NLPIR.dll扔到工程之外其他地方(我扔進工程裡面,後面的import步驟報錯,原因未知。)然後在工程中匯入這個玩意,如何匯入看這裡點選開啟連結

,不然工程執行時候報錯:no .... in java.library.path

================================現在執行的話,TestNLPIR.java執行37行就不能繼續了。

[注意 如果機器版本是64位的,請下載64位NLPIR.dll  下載地址:點選開啟連結 下載檔名:20131105115102_win64.zip  2013.12.15]

四,將c++版本的Data資料夾(是整個資料夾)放到ICT工程下面(我自己新建一個file資料夾,放入這個地方,形成路徑“專案名/file/Data/***.**”)。然後修改TestNLPIR.java的31行這句:

        String argu = "../../";  ==>    String argu = "./file/";            (注意我是根據我自己建資料夾的地方修改的,這裡指向Data資料夾,而不是Data裡的檔案)

================================現在執行的話,TestNLPIR.java執行43行就不能繼續了

五,將c++版本的test資料夾扔進ICT工程下面(我是自己扔進去的),然後修改TestNLPIR.java的48 49兩行:

String argu1 = "E:/NLPIR/test/test.TXT";
String argu2 = "E:/NLPIR/test/test_result1.TXT";

                ==>

String argu1 = "./test/test.TXT";
String argu2 = "./test/test_result1.TXT";                 (注意我是根據我自己建資料夾的地方修改的) 

繼續修改76行

argu2 = "E:/NLPIR/test/test_result2.TXT";  ==>      argu2 = "./test/test_result2.TXT"; 

然後執行吧,可以看看ICT工程下面的test資料夾裡面多一個test_result1.TXT檔案,就是test.TXT分完詞加詞性後的結果。好像這個對一個句子分完詞後自己加了一個空行。

截個圖看看吧,圖2 test.TXT 的一部分。 圖3 test_result1.TXT一部分


圖2 test.TXT 的一部分


圖3 test_result1.TXT一部分

到此,已經正確執行。中間有一些問題我也沒有解決,還有他的分詞輸出如何不加詞性什麼的我也沒去研究。先到這裡為止吧。

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

如果不要詞性,修改第63行:

testNLPIR.NLPIR_FileProcess(argu1.getBytes("GB2312"), argu2.getBytes("GB2312"), 1);

==> testNLPIR.NLPIR_FileProcess(argu1.getBytes("GB2312"), argu2.getBytes("GB2312"), 0)

函式原型在NLPIR.java中public native   boolean NLPIR_FileProcess(byte[] sSrcFilename,byte[] sDestFilename,int bPOSTagged);

/-------------------------新增使用者字典---------------------------------------/ 2013-5-28/

記憶體方式新增使用者字典:

拿原檔案中句子舉例子:

待分詞的句子:張華平推出的NLPIR分詞系統,又名ICTCLAS2013,新增新詞識別、關鍵詞提取、微博分詞功能。

原始(未加字典)分詞結果:


可以在39行  //匯入使用者詞典前下面試著加這麼幾句話:
    

String s = "分詞系統	NN";
    byte[] ret = s.getBytes();
    testNLPIR.NLPIR_AddUserWord(ret);
現在的分詞結果是這樣的


 ----------- "分詞系統"被切分在一起了。

如果不想要這個單詞了。

就刪掉前面加的那些句子,新加入這麼幾句話:

String s = "分詞系統";
    byte[] ret = s.getBytes();
    testNLPIR.NLPIR_DelUsrWord(ret);
現在的分詞結果又如以前:


注意事項:1>新增單詞的時候中間是tab鍵隔開。String s = "分詞系統    NN";

          2>刪除單詞的時候千萬不要帶詞性,僅刪除單詞。String s = "分詞系統";

以上加入使用者詞典部分參考點選開啟連結