摘要:為解決中文搜索的問題,最開始使用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執行,傳遞參數,效果如下