• 中科院分词系统(NLPIR)JAVA简易教程


    这篇文档内容主要从官方文档中获取而来,对API进行了翻译,并依据个人使用经验进行了一些补充,鉴于能力有限、水平较低,文档中肯定存在有很多不足之处,还请见谅。

    下载地址:http://ictclas.nlpir.org/downloads,下载最新的NLPIR/ICTCLAS分词系统下载包

    授权文件下载地址:https://github.com/NLPIR-team/NLPIR/tree/431b6351f30ed7d606ac50fde1f4456c596998df/License

    NLPIR是用C/C++编写的,如果要用Java来使用NLPIR,需要通过JNA调用NLPIR的函数来实现。下面通过一个示例来进行说明:

    首先新建一个JAVA项目,导入JNA的jar包(可从下载包中的sampleJnaTest_NLPIRlib文件夹中拷贝),将下载包中的Data文件夹拷贝到项目根目录中,再将lib文件夹中与你操作系统对应的文件夹中的NLPIR.dll和NLPIR.lib文件拷贝到系统根目录中,不妨新建一个名为source的文件夹,放到那里面去。我的目录如下图所示:

    然后新建一个接口,继承JNA的Library接口,在接口中定义对NLPIR一系列函数的实现(具体API可参见下方我翻译的API或参看include文件夹中的头文件NLPIR.h)。

    1. </pre><pre name="code" class="java">package study;  
    2. import com.sun.jna.Library;  
    3.   
    4.   
    5. public interface CLibrary extends Library{  
    6.   
    7.   
    8.     //初始化  
    9.     public int NLPIR_Init(String sDataPath, int encoding, String sLicenceCode);  
    10.     //对字符串进行分词  
    11.     public String NLPIR_ParagraphProcess(String sSrc, int bPOSTagged);  
    12.     //对TXT文件内容进行分词  
    13.     public double NLPIR_FileProcess(String sSourceFilename,String sResultFilename, int bPOStagged);  
    14.     //从字符串中提取关键词   
    15.     public String NLPIR_GetKeyWords(String sLine, int nMaxKeyLimit,boolean bWeightOut);  
    16.     //从TXT文件中提取关键词   
    17.     public String NLPIR_GetFileKeyWords(String sLine, int nMaxKeyLimit,boolean bWeightOut);  
    18.     //添加单条用户词典  
    19.     public int NLPIR_AddUserWord(String sWord);  
    20.     //删除单条用户词典  
    21.     public int NLPIR_DelUsrWord(String sWord);  
    22.     //从TXT文件中导入用户词典  
    23.     public int NLPIR_ImportUserDict(String sFilename);  
    24.     //将用户词典保存至硬盘  
    25.     public int NLPIR_SaveTheUsrDic();  
    26.     //从字符串中获取新词  
    27.     public String NLPIR_GetNewWords(String sLine, int nMaxKeyLimit, boolean bWeightOut);  
    28.     //从TXT文件中获取新词  
    29.     public String NLPIR_GetFileNewWords(String sTextFile,int nMaxKeyLimit, boolean bWeightOut);  
    30.     //获取一个字符串的指纹值  
    31.     public long NLPIR_FingerPrint(String sLine);  
    32.     //设置要使用的POS map  
    33.     public int NLPIR_SetPOSmap(int nPOSmap);  
    34.     //获取报错日志  
    35.     public String NLPIR_GetLastErrorMsg();  
    36.     //退出  
    37.     public void NLPIR_Exit();      
    38. }  

    再新建一个类,实例化上面的接口后,就可以调用NLPIR的各个函数了。

    1. package study;  
    2.   
    3. import java.math.BigDecimal;  
    4. import study.CLibrary;  
    5. import com.sun.jna.Native;  
    6.   
    7. public class Demo {  
    8.   
    9.       
    10.     public static void main(String[] args) throws Exception {  
    11.         //初始化  
    12.         CLibrary instance = (CLibrary)Native.loadLibrary(System.getProperty("user.dir")+"\source\NLPIR", CLibrary.class);  
    13.         int init_flag = instance.NLPIR_Init(""1"0");  
    14.         String resultString = null;  
    15.         if (0 == init_flag) {  
    16.             resultString = instance.NLPIR_GetLastErrorMsg();  
    17.             System.err.println("初始化失败! "+resultString);  
    18.             return;  
    19.         }  
    20.                   
    21.         String sInput = "哎~那个金刚圈尺寸太差,前重后轻,左宽右窄,他戴上去很不舒服,"  
    22.                 + "整晚失眠会连累我嘛,他虽然是只猴子,但你也不能这样对他啊,官府知道会说我虐待动物的,"  
    23.                 + "说起那个金刚圈,啊~去年我在陈家村认识了一个铁匠,他手工精美,价钱又公道,童叟无欺,"  
    24.                 + "干脆我介绍你再定做一个吧!";  
    25.   
    26.         try {  
    27.             resultString = instance.NLPIR_ParagraphProcess(sInput, 1);  
    28.             System.out.println("分词结果为:  " + resultString);  
    29.               
    30.             instance.NLPIR_AddUserWord("金刚圈");  
    31.             instance.NLPIR_AddUserWord("左宽右窄");  
    32.             resultString = instance.NLPIR_ParagraphProcess(sInput, 1);  
    33.             System.out.println("增加用户词典后分词结果为: " + resultString);  
    34.               
    35.             instance.NLPIR_DelUsrWord("左宽右窄");  
    36.             resultString = instance.NLPIR_ParagraphProcess(sInput, 1);  
    37.             System.out.println("删除用户词典后分词结果为: " + resultString);  
    38.               
    39.             instance.NLPIR_ImportUserDict(System.getProperty("user.dir")+"\source\userdic.txt");  
    40.             resultString = instance.NLPIR_ParagraphProcess(sInput, 1);  
    41.             System.out.println("导入用户词典文件后分词结果为: " + resultString);  
    42.               
    43.             resultString = instance.NLPIR_GetKeyWords(sInput,10,false);  
    44.             System.out.println("从段落中提取的关键词: " + resultString);  
    45.               
    46.             resultString = instance.NLPIR_GetNewWords(sInput, 10false);  
    47.             System.out.println("新词提取结果为: " + resultString);  
    48.               
    49.             Double d = instance.NLPIR_FileProcess("D:\1.txt""D:\2.txt"1);  
    50.               
    51.             System.out.println("对文件内容进行分词的运行速度为: " );  
    52.             if(d.isInfinite())  
    53.                 System.out.println("无结果");  
    54.             else{  
    55.                 BigDecimal b = new BigDecimal(d);  
    56.                 System.out.println(b.divide(new BigDecimal(1000), 2, BigDecimal.ROUND_HALF_UP)+"秒");                  
    57.             }  
    58.             resultString = instance.NLPIR_GetFileKeyWords("D:\3.txt"10,false);  
    59.             System.out.println("从文件中提取关键词的结果为: " + resultString);              
    60.               
    61.             instance.NLPIR_Exit();  
    62.   
    63.         } catch (Exception e) {  
    64.             System.out.println("错误信息:");  
    65.             e.printStackTrace();  
    66.         }  
    67.   
    68.     }  
    69. }  

    其中我在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。

    参数:

    无。

  • 相关阅读:
    裴蜀定理
    欧几里得算法
    最大公约数
    质数和合数
    整除
    CSP斗地主
    skkyk:点分治
    题解:P2130 狂奔的Wzf
    题解:最大子树和
    博客大换主题祭
  • 原文地址:https://www.cnblogs.com/fonttian/p/7294827.html
Copyright © 2020-2023  润新知