2021-05-12 14:32:11
在linux下使用NLPIR(ICTCLAS2015)進行中文分詞
中文分詞的庫有很多,在做開發的時候沒有必要自己從頭寫起,只需呼叫這些庫就行,所以如何使用這些庫是很重要的,本教學演示如何使用java在linux下呼叫NLPIR中文分詞庫。
1
Linux下建立一個空專案命名為WordTwo,在src資料夾中新增兩個程式碼,檢視如下
2
將下載的NLPIR開啟至lib目錄下,將符合要求的so檔案拷入到WordTwo的bin資料夾下。注意linux的版本不同則選擇不同的so檔案,名字不要修改。
3
將下載的NLPIR目錄下的Data資料夾整個複製到專案WordTwo中,放在根目錄下。
4
CLibrary為實現中文分詞的介面宣告,具體內容如圖所示
import com.sun.jna.Library;
public interface CLibrary extends Library{
//初始化
public int NLPIR_Init(String sDataPath, int encoding, String sLicenceCode);
//對字串進行分詞
public String NLPIR_ParagraphProcess(String sSrc, int bPOSTagged);
//對TXT檔案內容進行分詞
public double NLPIR_FileProcess(String sSourceFilename,String sResultFilename, int bPOStagged);
//從字串中提取關鍵詞
public String NLPIR_GetKeyWords(String sLine, int nMaxKeyLimit,boolean bWeightOut);
//從TXT檔案中提取關鍵詞
public String NLPIR_GetFileKeyWords(String sLine, int nMaxKeyLimit,boolean bWeightOut);
//新增單條使用者詞典
public int NLPIR_AddUserWord(String sWord);
//刪除單條使用者詞典
public int NLPIR_DelUsrWord(String sWord);
//從TXT檔案中匯入使用者詞典
public int NLPIR_ImportUserDict(String sFilename);
//將使用者詞典儲存至硬碟
public int NLPIR_SaveTheUsrDic();
//從字串中獲取新詞
public String NLPIR_GetNewWords(String sLine, int nMaxKeyLimit, boolean bWeightOut);
//從TXT檔案中獲取新詞
public String NLPIR_GetFileNewWords(String sTextFile,int nMaxKeyLimit, boolean bWeightOut);
//獲取一個字串的指紋值
public long NLPIR_FingerPrint(String sLine);
//設定要使用的POS map
public int NLPIR_SetPOSmap(int nPOSmap);
//獲取報錯紀錄檔
public String NLPIR_GetLastErrorMsg();
//退出
public void NLPIR_Exit();
}
5
新增Demo程式碼,進行測試:
宣告部分如圖所示:
String Path=System.getProperty("user.dir").toString();
CLibrary instance = (CLibrary)Native.loadLibrary("NLPIR", CLibrary.class);
int init_flag = instance.NLPIR_Init("", 1, "0");
String resultString = null;
if (0 == init_flag) {
resultString = instance.NLPIR_GetLastErrorMsg();
System.err.println("initn"+resultString);
return;
}
String sInput ="哎~那個金剛圈尺寸太差,前重後輕,左寬右窄,他戴上去很不舒服,"
+ "整晚失眠會連累我嘛,他雖然是隻猴子,但你也不能這樣對他啊,官府知道會說我虐待動物的,"
+ "說起那個金剛圈,啊~去年我在陳家村認識了一個鐵匠,他手工精美,價錢又公道,童叟無欺,"
+ "乾脆我介紹你再定做一個吧!";
resultString = instance.NLPIR_ParagraphProcess(sInput, 1);
6
新增一句程式碼使用檔案
Double d = instance.NLPIR_FileProcess(Path+"/resource/1",Path+"/resource/2",1);
1和2分別為文字檔案,1的路徑和內容截圖如下:
7
執行以下程式碼
resultString = instance.NLPIR_GetFileKeyWords(Path+"/resource/3", 10,false);
2檔案內容截圖如下:
表明可以成功執行分詞庫。
相關文章