首頁 > 軟體

在linux下使用NLPIR(ICTCLAS2015)進行中文分詞

2019-12-17 17:57:55

中文分詞的庫有很多,在做開發的時候沒有必要自己從頭寫起,只需呼叫這些庫就行,所以如何使用這些庫是很重要的,本教學演示如何使用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檔案內容截圖如下:

表明可以成功執行分詞庫。



IT145.com E-mail:sddin#qq.com