中科院NLPIR中文分詞java版

jopen 9年前發布 | 295K 次閱讀 中文分詞

摘要:為解決中文搜索的問題,最開始使用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目錄下,包含CC++HadoopJAVAPython等語言示例。

Eclipse新建一個工程導入JAVA工程目錄JnaTest_NLPIR

1Eclipse -> 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 {
.....

    }
.......
}


 和官方網站不同,加載庫文件可以自動判斷系統類型,在工程當前目錄下查找庫文件。“工程當前目錄”的win32win64linux32linux64都是包含庫文件的文件夾。

同時會自動加載“工程當前目錄“下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版

來自:http://www.cnblogs.com/jbexploit/p/4572791.html

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!