中科院分詞ICTCLAS5.0_JNI 使用方法


1.簡介

中國科學院計算技術研究所在多年研究基礎上,耗時一年研制出了基於多層隱碼模型的漢語詞法分析系統 ICTCLAS(Institute of Computing Technology, Chinese Lexical Analysis System),該系統的功能有:中文分詞;詞性標注;未登錄詞識別。分詞正確率高達97.58%(最近的973專家組評測結果),基於角色標注的未登錄詞識別能取得高於90%召回率,其中中國人名的識別召回率接近98%,分詞和詞性標注處理速度為31.5KB/s。ICTCLAS 和計算所其他14項免費發布的成果被中外媒體廣泛地報道,國內很多免費的中文分詞模塊都或多或少的參考過ICTCLAS的代碼。

2.下載

下載地址:

下載以后解壓。

解壓后的目錄結構:

必要說明:

user.lic,用戶授權文件。

3.新建Eclipse項目。

然后將打開API文件夾下的ICTCLAS文件夾拷貝到src目錄下,其它的文件夾和文件全部拷貝到工程目錄下。工程結構如圖所示:

4.測試

你可以自己新建一個測試類,也可以使用已有的測試類。

比如Sample文件夾里有個例子:TestMain.java,你可以將它復制到Eclipse中。然后運行。就可以看到結果了。

注意,ICTCLAS會自動生成一個ICTCLAS.log文件,查看這個文件能獲取許多有用的信息。

5.各種問題。

 

[java]  view plain  copy
 
  1. a.Exception in thread "main" java.lang.UnsatisfiedLinkError: ICTCLAS50.ICTCLAS_Init([B)Z  
  2.     at ICTCLAS50.ICTCLAS_Init(Native Method)  
  3.     at TestMain.testICTCLAS_ParagraphProcess(TestMain.java:33)  
  4.     at TestMain.main(TestMain.java:13)  

解決辦法:

這種情況是你把ICTCLAS50_Windows_32_JNI\API\ICTCLAS\I3S\AC目錄下的類ICTCLAS50.java 沒有放到包ICTCLAS.I3S.AC里。

b.將Data文件夾和其它文件,放置到一個configure文件夾下ICTLAS不識別:

 

[java]  view plain  copy
 
  1. Exception in thread "main" java.lang.UnsatisfiedLinkError: no ICTCLAS50 in java.library.path  
  2.     at java.lang.ClassLoader.loadLibrary(Unknown Source)  
  3.     at java.lang.Runtime.loadLibrary0(Unknown Source)  
  4.     at java.lang.System.loadLibrary(Unknown Source)  
  5.     at ICTCLAS.I3S.AC.ICTCLAS50.<clinit>(ICTCLAS50.java:26)  
  6.     at TestMain.testICTCLAS_ParagraphProcess(TestMain.java:32)  
  7.     at TestMain.main(TestMain.java:15)  

即加載庫文件和Data文件夾、用戶授權文件user.lic的錯誤。

 

解決辦法:

一種方法是:修改ICTCLAS50類和測試類的參數,指定庫文件。

[java]  view plain  copy
 
  1. static  
  2.     {  
  3.         String path = new File("").getAbsolutePath()+"\\<span style="font-family:SimSun; line-height:25.1875px">configure</span>\\ICTCLAS50.dll";  
  4. //      System.loadLibrary("ICTCLAS50");  
  5.         System.load(path);  
  6.     }  

然后再修改TestMain類中的testICTCLAS_ParagraphProcess()方法的argus的值,告訴ICTCLAS,你改變了工程目錄。

 

部分代碼如下:

 

[java]  view plain  copy
 
  1. ICTCLAS50 testICTCLAS50 = new ICTCLAS50();  
  2. //          //String argu = ".";  
  3.             String argu = new File("").getAbsolutePath()+"\\configure";  
  4.             //初始化  
  5.             if (testICTCLAS50.ICTCLAS_Init(argu.getBytes("GB2312")) == false)  
  6.             {  
  7.                 System.out.println("Init Fail!");  
  8.                 return;  
  9.             }  



還有testICTCLAS_FileProcess()方法。

修改后的工程目錄:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM