天天看點

NLPIR加入自定義詞典(java)

1 下載下傳NLPIR,http://ictclas.nlpir.org/downloads

2 下載下傳後解壓,将Data檔案夾複制到eclipse的項目下(與src同級)

3 根據自己到電腦組態,拷貝NLPIR的lib檔案夾下有對應不同版本(win/linux,32/54位)的.so或者.dll檔案,放置到項目到bin檔案夾下。注:放置到bin檔案夾下我是根據報錯提示做的,網上有的部落格寫到是直接放置到項目下。

4 将NLPIR/sample/JnaTest_NLPIR/lib檔案夾下的jna-4.0.0.jar導入到項目jar包中。

這是配置完後我的項目結構:

NLPIR加入自定義詞典(java)

5 other下放置了我要導入到外部字典——一個txt檔案。

6 建立一個segment.class類,其中實作一個繼承Library的接口:

//libpath是第3步中我放入的NLPIR.so的路徑,注意字尾可以不用寫
    private static String libpath = "NLPIR";
    //第2步中Data的上級路徑,因為我的Data就在項目包下,是以這裡為“”
    private static String rootpath = "";
    public interface CLibrary extends Library {
        CLibrary Instance = (CLibrary) Native.loadLibrary(libpath, CLibrary.class);
        public int NLPIR_Init(String sDataPath, int encoding, String sLicenceCode);
        public String NLPIR_ParagraphProcess(String sSrc, int bPOSTagged);
        public int NLPIR_ImportUserDict(String path);
        public String NLPIR_GetKeyWords(String sLine, int nMaxKeyLimit, boolean bWeightOut);
        public String NLPIR_GetFileKeyWords(String sLine, int nMaxKeyLimit, boolean bWeightOut);
        public int NLPIR_AddUserWord(String sWord);
        public int NLPIR_DelUsrWord(String sWord);
        public String NLPIR_GetLastErrorMsg();
        public void NLPIR_Exit();
    }
           

7 我在main方法中寫一個示例:

public static void main(String[] args) throws Exception {
        //1表示設定字元集為utf-8
        int charset_type = ;
        int init_flag = CLibrary.Instance.NLPIR_Init(rootpath, charset_type, "0");
        String nativeBytes = null;
        //初始化失敗做提示
        if ( == init_flag) {
            nativeBytes = CLibrary.Instance.NLPIR_GetLastErrorMsg();
            System.err.println("init failed, reason is " + nativeBytes);
            return;
        }
        //添加自定義詞典
        int nItems = CLibrary.Instance.NLPIR_ImportUserDict("other/financeTerm.txt");
        try{
            String input = "百雀羚雪花高和茶葉罐都是鐵皮的,修得非常厲害,四面牆壁都是斑斑駁駁";
            //1表示要詞性标注,0表示不要
            String nativeBytes = CLibrary.Instance.NLPIR_ParagraphProcess(sInput, );
            System.out.println(nativeBytes);
            } catch (Exception ex) {
                ex.printStackTrace();
            }
       }