中科院分詞系統(NLPIR)JAVA簡易教程(2014-11-12)


(第一版,創建時間2014-11-12)

這篇文檔內容主要從官方文檔中獲取而來,對API進行了翻譯,並依據個人使用經驗進行了一些補充,鑒於能力有限、水平較低,文檔中肯定存在有很多不足之處,還請見諒。

下載地址:http://ictclas.nlpir.org/downloads,下載最新的NLPIR/ICTCLAS2014分詞系統下載包

 

NLPIR是用C/C++編寫的,如果要用JAVA來使用NLPIR,需要通過JNA調用NLPIR的函數來實現。下面通過一個示例來進行說明:

首先新建一個JAVA項目,導入JNA的jar包(可從下載包中的sample\JnaTest_NLPIR\lib文件夾中拷貝),將下載包中的Data文件夾拷貝到項目根目錄中,再將lib文件夾中與你操作系統對應的文件夾中的NLPIR.dll和NLPIR.lib文件拷貝到系統根目錄中,不妨新建一個名為source的文件夾,放到那里面去。我的目錄如下圖所示:

然后新建一個接口,繼承JNA的Library接口,在接口中定義對NLPIR一系列函數的實現(具體API可參見下方我翻譯的API或參看include文件夾中的頭文件NLPIR.h)。

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();    
}

 

再新建一個類,實例化上面的接口后,就可以調用NLPIR的各個函數了。

import java.math.BigDecimal;
import wordSegmentation.study.CLibrary;
import com.sun.jna.Native;

public class Demo {

    
    public static void main(String[] args) throws Exception {
        //初始化
        CLibrary instance = (CLibrary)Native.loadLibrary(System.getProperty("user.dir")+"\\source\\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("初始化失敗!\n"+resultString);
            return;
        }
                
        String sInput = "哎~那個金剛圈尺寸太差,前重后輕,左寬右窄,他戴上去很不舒服,"
                + "整晚失眠會連累我嘛,他雖然是只猴子,但你也不能這樣對他啊,官府知道會說我虐待動物的,"
                + "說起那個金剛圈,啊~去年我在陳家村認識了一個鐵匠,他手工精美,價錢又公道,童叟無欺,"
                + "干脆我介紹你再定做一個吧!";

        try {
            resultString = instance.NLPIR_ParagraphProcess(sInput, 1);
            System.out.println("分詞結果為:\n " + resultString);
            
            instance.NLPIR_AddUserWord("金剛圈");
            instance.NLPIR_AddUserWord("左寬右窄");
            resultString = instance.NLPIR_ParagraphProcess(sInput, 1);
            System.out.println("增加用戶詞典后分詞結果為:\n" + resultString);
            
            instance.NLPIR_DelUsrWord("左寬右窄");
            resultString = instance.NLPIR_ParagraphProcess(sInput, 1);
            System.out.println("刪除用戶詞典后分詞結果為:\n" + resultString);
            
            instance.NLPIR_ImportUserDict(System.getProperty("user.dir")+"\\source\\userdic.txt");
            resultString = instance.NLPIR_ParagraphProcess(sInput, 1);
            System.out.println("導入用戶詞典文件后分詞結果為:\n" + resultString);
            
            resultString = instance.NLPIR_GetKeyWords(sInput,10,false);
            System.out.println("從段落中提取的關鍵詞:\n" + resultString);
            
            resultString = instance.NLPIR_GetNewWords(sInput, 10, false);
            System.out.println("新詞提取結果為:\n" + resultString);
            
            Double d = instance.NLPIR_FileProcess("d:\\1.txt", "d:\\2.txt", 1);
            
            System.out.println("對文件內容進行分詞的運行速度為: " );
            if(d.isInfinite())
                System.out.println("無結果");
            else{
                BigDecimal b = new BigDecimal(d);
                System.out.println(b.divide(new BigDecimal(1000), 2, BigDecimal.ROUND_HALF_UP)+"秒");                
            }
            resultString = instance.NLPIR_GetFileKeyWords("D:\\3.txt", 10,false);
            System.out.println("從文件中提取關鍵詞的結果為:\n" + resultString);            
            
            instance.NLPIR_Exit();

        } catch (Exception e) {
            System.out.println("錯誤信息:");
            e.printStackTrace();
        }

    }

其中我在source文件夾中添加了一個用戶詞典userdic.txt,在程序運行時導入到系統中,該文件內容如下:

前重后輕 nr

 

對TXT文件進行分詞處理時需要用到的3個TXT文件,分別如下所示:

1.txt作為從文件內容進行分詞操作的文件源,其內容如下:

曾經有一份真摯的感情擺在我的面前我沒有珍惜,等我失去的時候才追悔莫及,人間最痛苦的事莫過於此,你的劍在我的咽喉上刺下去吧,不用在猶豫了!如果上天能給我一次再來一次的機會,我會對哪個女孩說三個字:我愛你,如果非要在這份愛上加一個期限,我希望是一萬年!

2.txt作為對1.txt進行分詞處理的結果接收文件,為一個空文件,運行后其內容如下:

曾經/d 有/vyou 一/m 份/q 真摯/a 的/ude1 感情/n 擺/v 在/p 我/rr 的/ude1 面前/f 我/rr 沒有/d 珍惜/v ,/wd 等/udeng 我/rr 失去/v 的/ude1 時候/n 才/d 追悔莫及/vl ,/wd 人間/n 最/d 痛苦/a 的/ude1 事/n 莫過於/vl 此/rzs ,/wd 你/rr 的/ude1 劍/n 在/p 我/rr 的/ude1 咽喉/n 上/f 刺/v 下去/vf 吧/y ,/wd 不/d 用/v 在/p 猶豫/a 了/y !/wt 如果/c 上/f 天/qt 能/v 給/p 我/rr 一/m 次/qv 再/d 來/vf 一/m 次/qv 的/ude1 機會/n ,/wd 我/rr 會/v 對/p 哪個/ry 女孩/n 說/v 三/m 個/q 字/n :/wp 我/rr 愛/v 你/rr ,/wd 如果/c 非/b 要/v 在/p 這/rzv 份/q 愛上/v 加/v 一個/mq 期限/n ,/wd 我/rr 希望/v 是/vshi 一/m 萬/m 年/qt !/wt 

3.txt作為從內容提取關鍵詞的文件源,其內容如下:

你把胡子剃光干什么?你不知不知道你少了胡子一點性格都沒有了……唉~文也不行武也不行,你不做山賊,你想做狀元啊?省省吧你!改變什么形象,好好的做你山賊這份很有前途的職業去吧!

 

程序運行結果如下:

分詞結果為:
哎/e ~/w 那個/rz 金剛/n 圈/qv 尺寸/n 太/d 差/a ,/wd 前重后輕/nr ,/wd 左寬/nr 右/f 窄/a ,/wd 他/rr 戴/v 上/f 去/vf 很/d 不/d
舒服/a ,/wd 整/v 晚/tg 失眠/vi 會/v 連累/v 我/rr 嘛/y ,/wd 他/rr 雖然/c 是/vshi 只/q 猴子/n ,/wd 但/c 你/rr 也/d 不/d 能/v
這樣/rzv 對/p 他/rr 啊/y ,/wd 官府/n 知道/v 會/v 說/v 我/rr 虐待/v 動物/n 的/ude1 ,/wd 說/v 起/vf 那個/rz 金剛/n 圈/qv ,/wd
啊/y ~/w 去年/t 我/rr 在/p 陳家村/nr 認識/v 了/ule 一個/mq 鐵匠/n ,/wd 他/rr 手工/d 精美/a ,/wd 價錢/n 又/d 公道/a ,/wd 童叟無欺
/vl ,/wd 干脆/d 我/rr 介紹/v 你/rr 再/d 定做/v 一個/mq 吧/y !/wt
增加用戶詞典后分詞結果為:
哎/e ~/w 那個/rz 金剛圈/n 尺寸/n 太/d 差/a ,/wd 前重后輕/nr ,/wd 左寬右窄/n ,/wd 他/rr 戴/v 上/f 去/vf 很/d 不/d 舒服/a ,/wd 整
/v 晚/tg 失眠/vi 會/v 連累/v 我/rr 嘛/y ,/wd 他/rr 雖然/c 是/vshi 只/q 猴子/n ,/wd 但/c 你/rr 也/d 不/d 能/v 這樣/rzv 對/p
他/rr 啊/y ,/wd 官府/n 知道/v 會/v 說/v 我/rr 虐待/v 動物/n 的/ude1 ,/wd 說/v 起/vf 那個/rz 金剛圈/n ,/wd 啊/y ~/w 去年/t 我/
rr 在/p 陳家村/nr 認識/v 了/ule 一個/mq 鐵匠/n ,/wd 他/rr 手工/d 精美/a ,/wd 價錢/n 又/d 公道/a ,/wd 童叟無欺/vl ,/wd 干脆/d 我/
rr 介紹/v 你/rr 再/d 定做/v 一個/mq 吧/y !/wt
刪除用戶詞典后分詞結果為:
哎/e ~/w 那個/rz 金剛圈/n 尺寸/n 太/d 差/a ,/wd 前重后輕/nr ,/wd 左寬/nr 右/f 窄/a ,/wd 他/rr 戴/v 上/f 去/vf 很/d 不/d 舒服/a
,/wd 整/v 晚/tg 失眠/vi 會/v 連累/v 我/rr 嘛/y ,/wd 他/rr 雖然/c 是/vshi 只/q 猴子/n ,/wd 但/c 你/rr 也/d 不/d 能/v 這樣/r
zv 對/p 他/rr 啊/y ,/wd 官府/n 知道/v 會/v 說/v 我/rr 虐待/v 動物/n 的/ude1 ,/wd 說/v 起/vf 那個/rz 金剛圈/n ,/wd 啊/y ~/w
去年/t 我/rr 在/p 陳家村/nr 認識/v 了/ule 一個/mq 鐵匠/n ,/wd 他/rr 手工/d 精美/a ,/wd 價錢/n 又/d 公道/a ,/wd 童叟無欺/vl ,/wd
干脆/d 我/rr 介紹/v 你/rr 再/d 定做/v 一個/mq 吧/y !/wt
導入用戶詞典文件后分詞結果為:
哎/e ~/w 那個/rz 金剛圈/n 尺寸/n 太/d 差/a ,/wd 前重后輕/nr ,/wd 左寬/nr 右/f 窄/a ,/wd 他/rr 戴/v 上/f 去/vf 很/d 不/d 舒服/a
,/wd 整/v 晚/tg 失眠/vi 會/v 連累/v 我/rr 嘛/y ,/wd 他/rr 雖然/c 是/vshi 只/q 猴子/n ,/wd 但/c 你/rr 也/d 不/d 能/v 這樣/r
zv 對/p 他/rr 啊/y ,/wd 官府/n 知道/v 會/v 說/v 我/rr 虐待/v 動物/n 的/ude1 ,/wd 說/v 起/vf 那個/rz 金剛圈/n ,/wd 啊/y ~/w
去年/t 我/rr 在/p 陳家村/nr 認識/v 了/ule 一個/mq 鐵匠/n ,/wd 他/rr 手工/d 精美/a ,/wd 價錢/n 又/d 公道/a ,/wd 童叟無欺/vl ,/wd
干脆/d 我/rr 介紹/v 你/rr 再/d 定做/v 一個/mq 吧/y !/wt
從段落中提取的關鍵詞:
前重后輕#陳家村#左寬#金剛圈#
新詞提取結果為:

對文件內容進行分詞的運行速度為:
0.76秒
從文件中提取關鍵詞的結果為:
胡子#形象#職業#前途#

 

分詞后每個詞后面都跟着詞性標記(bPOSTagged參數為1時,輸出結果顯示標記;為0時,不現實標記),並彼此以空格分隔;提取的關鍵詞則以#號分隔;因輸入的文字沒有新詞,均能被識別,所以新詞提取結果為空。各函數的具體使用可參考下面我翻譯的API。

 

我對NLPIR系統的接口函數說明進行了簡單的翻譯,如下所示:

1. NLPIR_Init

初始化分析器,並根據配置文件為NLPIR准備數據。

函數形式:

bool NLPIR_Init(const char* sInitDirPath=0, int encoding=GBK_CODE,

const char* sLicenceCode=0)

需要的頭文件:<NLPIR.h>

返回值:

如果初始化成功,返回successed,否則返回false。

參數:

char* sInitDirPath:指定存放配置文件Configure.xml和Data文件的路徑,默認值為0,表明路徑為當前工作目錄。

int encoding: 編碼格式標識符,默認為GBK_CODE ,也可以設置為UTF8_CODE和BIG5_CODE。

char*  sLicenceCode: 商業用戶需要使用的許可證編碼,免費用戶無需使用該參數。

說明:

使用NLPIR時必須先執行NLPIR_Init函數(只需執行一次)。系統關閉時還應執行NLPIR_Exit函數來銷毀緩存數據。

NLPIR_Init執行失敗通常有兩個原因:1. 需要的數據文件格式不兼容或丟失;2.配置文件丟失或存在非法參數。還可以通過日志文件來了解更多信息,日志文件存放在默認路徑中。

 

 

2. NLPIR_Exit

退出程序並釋放所有資源和NLPIR使用的緩存數據。

函數形式:

bool NLPIR_Exit();

需要的頭文件:<NLPIR.h>

返回值:

執行成功返回successed,否則返回false。

參數:

說明:

該函數必須在關閉系統時執行,若需重啟NLPIR,再次執行NLPIR_Init函數即可。

 

 

3. NLPIR_ImportUserDict

從文件中導入用戶自定義的詞典。

函數形式:

unsigned int NLPIR_ImportUserDict(const char * sFilename);

需要的頭文件:<NLPIR.h>

返回值:

導入的詞匯數量。

參數:

char * sFilename: 要導入的用戶詞典文件所在路徑。

說明:

該函數只有在NLPIR_Init函數執行成功后才能使用。詞典文件的格式請參見相關示例。

你只需在更改了用戶詞典或第一次使用某個詞典時執行該函數,當配置文件中的UserDict參數為on時,NLPIR將會(把該詞典添加到配置文件中)並在啟動時自動加載該詞典。當將UserDict置為off時,用戶自定義詞典文件將不再自動導入。

 

 

4. NLPIR_ParagraphProcess

處理一個段落文字,返回運行結果緩存的指針。

函數形式:

const char * NLPIR_ParagraphProcess(const char * sParagraph, int bPOStagged=1);

需要的頭文件:<NLPIR.h>

返回值:

運行結果緩存的指針。

參數:

char * sParagraph: 輸入段落的源

int bPOStagged:  判斷是否需要位置標記,0:無標記;1:有標記。默認值為1。

說明:

該函數只有在NLPIR_Init函數執行成功后才能使用

 

 

5. NLPIR_ParagraphProcessA

函數形式:

result_t * NLPIR_ParagraphProcessA(

const char * sParagraph, int * pResultCount, bool bUserDict=true)

需要的頭文件:<NLPIR.h>

返回值:

運行結果向量的指針,該指針由系統進行管理,用戶無法對它進行分配和釋放。

其結構如下:

struct result_t{

int start; //start position,詞語在輸入句子中的開始位置

int length; //length,詞語的長度

char sPOS[POS_SIZE];//word type,詞性ID值,可以快速的獲取詞性表

int  iPOS;//詞性

int word_ID; //如果是未登錄詞,設成或者-1

int word_type; //區分用戶詞典;1,是用戶詞典中的詞;,非用戶詞典中的詞

int weight;// word weight

};

參數:

char * sParagraph: 輸入段落的源

int * pResultCount: 結果向量的大小

bool bUserDict:是否使用用戶詞典

說明:

該函數只有在NLPIR_Init函數執行成功后才能使用

 

 

6. NLPIR_FileProcess

處理一個TXT文件。

函數形式:

Double NLPIR_FileProcess(const char * sSourceFilename,

const char * sResultFilename, int bPOStagged=1);

需要的頭文件:<NLPIR.h>

返回值:

如果執行成功,返回處理速度值,否則返回false。

參數:

char * sSourceFilename: 要處理的源文件名稱;

char * sResultFilename: 存儲處理結果的文件名稱;

int bPOStagged:  判斷是否需要位置標記,0:無標記;1:有標記。默認值為1。說明:

該函數只有在NLPIR_Init函數執行成功后才能使用

處理結果的輸出格式可在配置文件中進行設置。

 

 

7. NLPIR_GetParagraphProcessAWordCount

NLPIR_ParagraphProcessA函數的C#實現API。

函數形式:

int NLPIR_GetParagraphProcessAWordCount(const char *sParagraph);

需要的頭文件:<NLPIR.h>

返回值:

返回輸入段落的詞匯數量。

參數:

char * sParagraph: 輸入段落的源

說明:

該函數只有在NLPIR_Init函數執行成功后才能使用

處理結果的輸出格式可在配置文件中進行設置。

 

 

8. NLPIR_ ParagraphProcessAW

NLPIR_ParagraphProcessA函數的C#實現API。

函數形式:

void NLPIR_ParagraphProcessAW(int nCount,result_t * result);

需要的頭文件:<NLPIR.h>

返回值:

無。

參數:

nCount: 輸入段落的詞匯數量;

result: 處理結果的結構體指針;

說明:

該函數只有在NLPIR_Init函數執行成功后才能使用

處理結果的輸出格式可在配置文件中進行設置。

 

 

9. NLPIR_AddUserWord

向用戶詞典添加一個詞匯。

函數形式:

int NLPIR_AddUserWord(const char * sWord);

需要的頭文件:<NLPIR.h>

返回值:

如果添加成功,返回successed,否則返回false。

參數:

char * sWord:要添加的詞匯。

說明:

該函數只有在NLPIR_Init函數執行成功后才能使用

 

 

10. NLPIR_SaveTheUsrDic

將用戶詞典保存至硬盤。

函數形式:

int NLPIR_SaveTheUsrDic();

需要的頭文件:<NLPIR.h>

返回值:

如果執行成功返回1,否則返回0。

參數:

說明:

該函數只有在NLPIR_Init函數執行成功后才能使用

 

11. NLPIR_DelUsrWord

從用戶詞典中刪除一個詞匯。

函數形式:

int NLPIR_DelUsrWord(const char * sWord);

需要的頭文件:<NLPIR.h>

返回值:

如果要刪除的詞匯不存在,則返回-1;如果刪除成功,則返回該詞匯的句柄。

參數:

char * sWord:要刪除的詞匯。

說明:

該函數只有在NLPIR_Init函數執行成功后才能使用

 

12. NLPIR_GetKeyWords

從輸入的段落中提取關鍵詞。

函數形式:

const char * NLPIR_GetKeyWords(const char * sLine,int nMaxKeyLimit=50,

bool bWeightOut=false);

需要的頭文件:<NLPIR.h>

返回值:

如果執行成功,返回執行結果列表。如果執行失敗,返回NULL。

格式如下:

"科學發展觀 宏觀經濟 "

或者

"科學發展觀 23.80 宏觀經濟 12.20" (帶有權值)

參數:

char * sLine:輸入的段落;

int nMaxKeyLimit:關鍵詞最大數量;

bool bWeightOut: 是否輸出權值;

說明:

無。

 

13. NLPIR_GetFileKeyWords

從TXT文件中提取關鍵詞。

函數形式:

const char * NLPIR_GetFileKeyWords(const char * sTextFile,

int nMaxKeyLimit=50, bool bWeightOut=false);

需要的頭文件:<NLPIR.h>

返回值:

如果執行成功,返回執行結果列表。如果執行失敗,返回NULL。格式同上。

參數:

char * sTextFile:輸入文件的名稱;

int nMaxKeyLimit:關鍵詞最大數量;

bool bWeightOut: 是否輸出權值;

說明:

 

14. NLPIR_GetNewWords

從段落中提取新詞。

函數形式:

const char * NLPIR_GetNewWords(const char * sLine, int nMaxKeyLimit=50,

bool bWeightOut=false);

需要的頭文件:<NLPIR.h>

返回值:

如果執行成功,返回提取到的新詞列表,否則返回NULL。格式同上

參數:

char * sLine:輸入的段落;

int nMaxKeyLimit:關鍵詞最大數量;

bool bWeightOut: 是否輸出權值;

說明:

 

15. NLPIR_GetFileNewWords

從TXT文件中提取新詞。

函數形式:

const char * NLPIR_GetFileNewWords(const char * sTextFile,

int nMaxKeyLimit=50, bool bWeightOut=false);

需要的頭文件:<NLPIR.h>

返回值:

如果執行成功,返回提取到的新詞列表,否則返回NULL。格式同上

參數:

char * sTextFile:輸入文件的名稱;

int nMaxKeyLimit:關鍵詞最大數量;

bool bWeightOut: 是否輸出權值;

說明:

16. NLPIR_FingerPrint

提取段落的一個指紋。

函數形式:

unsigned long NLPIR_FingerPrint(const char * sLine);

需要的頭文件:<NLPIR.h>

返回值:

如果執行成功,返回指紋值,否則返回0。

參數:

char * sLine:輸入的段落;

說明:

無。

 

17. NLPIR_SetPOSmap

設置使用的POS map。

函數形式:

int NLPIR_SetPOSmap(int nPOSmap);

需要的頭文件:<NLPIR.h>

返回值:

如果執行成功,返回1,否則返回0。

參數:

int nPOSmap :  

ICT_POS_MAP_FIRST  計算所一級標注集

ICT_POS_MAP_SECOND  計算所二級標注集

PKU_POS_MAP_SECOND  北大二級標注集

PKU_POS_MAP_FIRST    北大一級標注集

說明:

該函數只有在NLPIR_Init函數執行成功后才能使用

 

 

18. NLPIR_GetLastErrorMsg

獲取最近一條報錯信息。

函數形式:

const char * NLPIR_GetLastErrorMsg();

需要的頭文件:<NLPIR.h>

返回值:

獲取最近一條報錯信息的指針。

參數:

無。

說明:

無。

 

以下為新詞識別函數,建議脫機使用。

1. NLPIR_NWI_Start

啟動新詞識別。

函數形式:

bool NLPIR_NWI_Start();

需要的頭文件:<NLPIR.h>

返回值:

如果執行成功,返回successed,否則返回false。

參數:

 

 

2. NLPIR_NWI_AddFile

往新詞識別系統中添加待識別新詞的文本文件,需要在運行 NLPIR_NWI_Start()之后,才有效。

函數形式:

Int NLPIR_NWI_AddFile(const char * sFilename);

需要的頭文件:<NLPIR.h>

返回值:

如果執行成功,返回true,否則返回false。

參數:

char *sFilename:輸入的文件名;

 

 

3. NLPIR_NWI_AddMem

往新詞識別系統中添加一段待識別新詞的內存,需要在運行 NLPIR_NWI_Start()之后,才有效。

函數形式:

bool NLPIR_NWI_AddMem(const char *sText);

需要的頭文件:<NLPIR.h>

返回值:

如果執行成功,返回true,否則返回false。

參數:

char *sFilename:文件名

 

 

4. NLPIR_NWI_Complete

新詞識別添加內容結束,需要在運行 NLPIR_NWI_Start()之后,才有效。

函數形式:

bool NLPIR_NWI_Complete();

需要的頭文件:<NLPIR.h>

返回值:

如果執行成功,返回true,否則返回false。

參數:

無。

說明:

 

 

5. NLPIR_NWI_GetResult

獲取新詞識別的結果。

函數形式:

const char * NLPIR_NWI_GetResult(bool bWeightOut=false);

需要的頭文件:<NLPIR.h>

返回值:

執行結果的列表。

參數:

bool bWeightOut:是否輸出權重值。

 

6. NLPIR_NWI_Result2UserDict

將新詞識別結果導入到用戶詞典中,需要在運行 NLPIR_NWI_Complete()之后,才有效,如果需要將新詞結果永久保存,建議在執行NLPIR_SaveTheUsrDic函數。

函數形式:

unsigned int NLPIR_NWI_Result2UserDict()

需要的頭文件:<NLPIR.h>

返回值:

如果執行成功,返回true,否則返回false。

參數:

無。

 


免責聲明!

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



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