zoukankan      html  css  js  c++  java
  • 中科院分词系统(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。

    参数:

    无。

  • 相关阅读:
    PHP基础学习笔记(一)
    安装wampserver之后,浏览器中输入localhost页面显示IIS7解决办法
    HTML5常识总结(一)
    AngularJs中的服务
    AngularJs中的directives(指令part1)
    Happy Number——LeetCode
    Binary Tree Zigzag Level Order Traversal——LeetCode
    Construct Binary Tree from Preorder and Inorder Traversal——LeetCode
    Construct Binary Tree from Inorder and Postorder Traversal——LeetCode
    Convert Sorted Array to Binary Search Tree——LeetCode
  • 原文地址:https://www.cnblogs.com/fonttian/p/9162830.html
Copyright © 2011-2022 走看看