NLPIR分词(c++接口整理)

C/C++接口——对应的各个函数

  • 函数1-bool NLPIR_Init(const char * sInitDirPath=0, int encoding=GBK_CODE,constchar*sLicenceCode=0);初始化函数

(1)  描述:在使用中文分词操作系统之前必须先进行初始化操作,才能继续接下来的操作

(2)  参数说明:

sDataPath:Data 文件夹的路径,为空字符串时从项目根目录下开始寻找,一般在使用的时候先把Data放到项目文件里,所以为空
encode:编码格式,具体的编码对照如下:
0:GBK
1:UTF8
2:BIG5
3:GBK,里面包含繁体字;

sLicenceCode:授权码,为空字符串就可以了

(3)    返回值:返回结果是成功或者失败(1或0)

(4)    示例代码:

#include “NLPIR.h”        //双引号形式代表是从项目文件中调取NLPIR.头文件

#include<stdio.h>        //<>代表从库中调取头文件

#include<string.h>

#include <iostream>

using  namespace std;

#pragma warning (disable:4996) //利用pragma忽略4996错误的警告

#pragma comment(lib,”NLPIR.lib”) //利用pragma调用NLPIR.lib静态库

int main(int arge,char*agrv[])// int arge是参数的个数,char*agrv[]是对应的参数,首个参数是路径

{

  const char *sResult;//定义一个指针型字符数组

  if(!NLPIR_Init())

     

              {

                 printf("Init fails\n");

                 return -1;

            }

            printf("Input sentence now ('q' to quit)!\n");

            scanf("%s",sSentence);

            if (_stricmp(sSentence,"q")!=0)//判断是否有输入字符串数组

            {

                 sResult=NLPIR_ParagraphProcess(sSentence,0);

                 printf("%s\nInput string now('q' to quit)!\n",sResult);//返回分词组

                 scanf("%s",sSentence);

            }

           NLPIR_Exit();  //退出分词系统

           return 0;

}

      注意: ①使用NLPIR时必须先执行NLPIR_Init函数(只需执行一次)。系统关闭时还应执行NLPIR_Exit函数来销毁缓存数据。

      ②NLPIR_Init执行失败通常有两个原因:1. 需要的数据文件格式不兼容或丢失;2.配置文件丢失或存在非法参数。还可以通过日志文件来了解更多信息,日志文件存放在默认路径中。在把NLPIR.dll和NLPIR.lib放入项目文件中时,要注意位数的问题(32位/64位),位数不统一容易造成初始化失败。

 

  • 函数2-NLPIR_Exit:退出函数
  • 退出程序并释放所有资源和NLPIR使用的缓存数据。

函数形式:bool NLPIR_Exit();

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

返回值:

执行成功返回successed,否则返回false

参数:

说明:该函数必须在关闭系统时执行,若需重启NLPIR,再次执行NLPIR_Init函数即可。

 

  • 函数3- unsigned int NLPIR_ImportUserDict(const char *sFilename,bool bOverwrite=true):导入用户词典

(1)  描述:从文件中导入用户自定义的词典。

(2)  参数说明:

const char *sFilename:要导入的用户词典文件所在路径。

bool bOverwrite:是否删除原来的自定义用户词典,是true,否是false

(3)  返回值:导入的词汇数量。

(4)  你只需在更改了用户词典或第一次使用某个词典时执行该函数,当配置文件中的UserDict参数为on时,NLPIR将会(把该词典添加到配置文件中)并在启动时自动加载该词典。当将UserDict置为off时,用户自定义词典文件将不再自动导入。

(5)  示例代码:

 

#include <string.h>

int main(int argc, char* argv[])

{

//Sample1: Sentence or paragraph lexical analysis with only one result

char sSentence[2000]="张华平于 1978 年 3 月 9 日出生于江西省波阳县。 ";

const char * sResult;

if(!NLPIR_Init())

{

printf("Init fails\n");

return -1;

}

//Sample4: 用定义好的词典

sResult=NLPIR_ParagraphProcess("1989 年春夏之交的政治风波 1989 年政治风波 24 小时降雪量 24 小时降雨量 863 计划 ABC 防护训练 APEC 会议 BB 机 BP 机 C2 系统 C3I 系统 C3 系统C4ISR 系统 C4I 系统 CCITT 建议",1);

printf("Before Adding User-defined lexicon, the result is:\n%s\n",sResult);

unsigned int nItems=NLPIR_ImportUserDict("userdict.txt");//引入新词

printf("%d user-defined lexical entries added!\n",nItems);

sResult=NLPIR_ParagraphProcess("1989 年春夏之交的政治风波 1989 年政治风波 24 小时降雪量 24 小时降雨量 863 计划 ABC 防护训练 APEC 会议 BB 机 BP 机 C2 系统 C3I 系统 C3 系统C4ISR 系统 C4I 系统 CCITT 建议",1);

printf("After Adding User-defined lexicon, the result is:\n%s\n",sResult);

NLPIR_Exit();

return 0;

}

  • 函数4- const char * NLPIR_ParagraphProcess(const char *sParagraph,int bPOStagged=1);

(1)    对指定段落进行分词,并返回分词结果(处理一个段落文字,返回运行结果缓存的指针)。

(2)    参数说明:

sParagraph:文本内容

bPOStagged:是否需要分词标记,0 表示不标记,1,表示需要标记,默认为 1;

(3)    返回值:返回分词结果

(4)    示例代码:上例

  • 函数5- result_t * NLPIR_ParagraphProcessA(const char *sParagraph,int *pResultCount,bool bUserDict=true)

(1)    描述:对指定的段落进行分词,并返回分词结果(运行结果向量的指针,该指针由系统进行管理,用户无法对它进行分配和释放)。

(2)    参数描述:

const char *sParagraph:待分词的段落

int *pResultCount:返回分词结果的分词个数,结果自动生成(结果向量的大小)

bool bUserDict:是否要用户词典(自定义)

(3)    返回值:结构体的形式

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是用户词典中的词;0是非用户词典中的词
int weight;// 词的权重

}

(4)    示例代码:

#include "NLPIR.h"

#include <stdio.h>

#include<string.h>

#include <iostream>

using namespace std;

 

#pragma warning( disable : 4996) 

#pragma comment(lib,"NLPIR.lib")

 

 

int main(int arge,char*argv[])

{

 

//2.NLPIR_ParagraphProcessA

//Sample:Sentence or paragraph lexical analysis with only one result char sSentence[2000];

  char sSentence[2000];

  const result_t*pVecResult;// 定义pVecResult的结构体

  int nCount;

  if (!NLPIR_Init())

  {

  printf("Init fails\n");

  return -1;

  }

  printf("Input sentence now ('q' to quit)!\n");

  //char sSentence[200];

  scanf("%s",sSentence);//输入语句

  //const char *sSentence="我的多久放假多久";

  //pVecResult=NLPIR_ParagraphProcessA(sSentence1,&nCount,true);

 

  if (_stricmp(sSentence,"q")!=0)

  {

pVecResult=NLPIR_ParagraphProcessA(sSentence,&nCount,true);

         printf("nCount=%d\n",nCount);//打印分词结果数

         for (int i=0;i<nCount;i++)

         {

         printf("Start=%d Lenght=%d Word_ID=%d POS_ID=%d\n",

                       pVecResult[i].start,

                       pVecResult[i].length,

                       pVecResult[i].word_ID,

                       pVecResult[i].sPOS,

                       pVecResult[i].weight,

                       pVecResult[i].iPOS);

         }

  }

  NLPIR_Exit();

  return 0;

  }

 

函数6- Double NLPIR_FileProcess(const char *sSourceFilename,const char *sResultFilename,int bPOStagged=1);

 

(1)  描述:处理一个TXT文件。

(2)  参数:

char * sSourceFilename: 要处理的源文件名称;

char * sResultFilename: 存储处理结果的文件名称;

int bPOStagged:  判断是否需要位置标记,0:无标记;1:有标记。默认值为1。

(3)  返回值:如果执行成功,返回处理速度值,否则返回false。

(4)  示例代码:

//#define _CRT_SECURE_NO_DEPRECATE

 

#include "NLPIR.h"

#include <stdio.h>

#include<string.h>

#include <iostream>

using namespace std;

 

#pragma warning( disable : 4996) 

#pragma comment(lib,"NLPIR.lib")

 

 

int main(int arge,char*argv[])

{

        if (!NLPIR_Init())

        {

            printf("Init fails\n");

            return -1;

        }

        printf("Input sentence now ('q' to quit)!\n");

        NLPIR_FileProcess("屌丝,一个字头的诞生.txt","test_result.txt",0);

        NLPIR_Exit();

        return 0;

        }

 

函数7- int NLPIR_GetParagraphProcessAWordCount(const char *sParagraph);

(1)  描述:NLPIR_ParagraphProcessA函数的C#实现API。

(2)  参数:char * sParagraph: 输入段落的源

(3)  返回值:返回输入段落的词汇数量。

(4)  示例代码:

        #include "NLPIR.h"

        #include <string>

        #include <stdio.h>

        #include <string.h>

        #pragma comment(lib,"NLPIR.lib")//表示链接NLPIR.lib这个库

        int main(int argc, char* argv[])//argc是命令行总的参数个数,argv[]是argc     个参数,其中第0个参数是程序的全名,以后的参数 

  {

//NLPIR_GetParagraphProcessAWordCount:返回段落的词个数

 

  if (!NLPIR_Init())

  {

      printf("Init fails\n");

      return -1;

  }

  char s[100]="点击下载超女纪敏佳深受观众喜爱。禽流感爆发在非典之后。";

  int count = NLPIR_GetParagraphProcessAWordCount(s);//先得到结果的词数

  printf("count=%d",count);

  NLPIR_Exit();

  return 0;

}

**函数8- void NLPIR_ParagraphProcessAW(int nCount,result_t * result);

 

(1)  描述:NLPIR_ParagraphProcessA函数的C#实现API。

(2)  参数:nCount: 输入段落的词汇数量;result: 处理结果的结构体指针;

(3)  说明:该函数只有在NLPIR_Init函数执行成功后才能使用,处理结果的输出格式可在配置文件中进行设置。

 

函数9- int NLPIR_AddUserWord(const char *sWord);

(1)  描述:向用户词典添加一个词汇。‘

(2)  参数:char * sWord:要添加的词汇。

(3)  返回值:如果添加成功,返回successed(1),否则返回false(0)

(4)  示例代码:

        #include "NLPIR.h"

        #include <string>

        #include <stdio.h>

        #include <string.h>

 

 

        #pragma comment(lib,"NLPIR.lib")//表示链接NLPIR.lib这个库

        int main(int argc, char* argv[])//argc是命令行总的参数个数,argv[]是argc     个参数,其中第0个参数是程序的全名,以后的参数 

            {

//Sample1: Sentence or paragraph lexical analysis with only one result char sSentence[2000];

  char sSentence[2000];

  const char * sResult;  

  if(!NLPIR_Init())

  {

      printf("Init fails\n");

      return -1;

  }

  NLPIR_AddUserWord("爱思客 n");////添加词:爱思客\t词性。其中“爱思客”为要添加的词,“n”为词的词性,”\t”为分隔符

  printf ("Input sentence now('q' to quit)!\n");

  scanf("%s",sSentence);

  while (_stricmp(sSentence,"q")!=0)

  {

      sResult=NLPIR_ParagraphProcess(sSentence,0);

      printf("%s\nInput string now('q' to quit)!\n", sResult);

      scanf("%s",sSentence);

  }

 

  NLPIR_Exit();

  return 0;

}

函数10- int NLPIR_SaveTheUsrDic();

 

(1)  描述:将用户词典保存至硬盘。

(2)  参数:无

(3)  返回值:成功返回,失败返回0

(4)  示例代码:

#include "NLPIR.h"

#include <string>

#include <stdio.h>

#include <string.h>

 

 

#pragma comment(lib,"NLPIR.lib")//表示链接NLPIR.lib这个库

int main(int argc, char* argv[])//argc是命令行总的参数个数,argv[]是argc       个参数,其中第0个参数是程序的全名,以后的参数 

          {

//Sample1: Sentence or paragraph lexical analysis with only one result char sSentence[2000];

char sSentence[2000];

const char * sResult;

if(!NLPIR_Init())

{

      printf("Init fails\n");

      return -1;

  }

  NLPIR_AddUserWord("爱思客 n");////添加词:爱思客\t词性。其中“爱思客”为要添加的词,“n”为词的词性,”\t”为分隔符

  NLPIR_SaveTheUsrDic();//保存用户词典

  printf ("Input sentence now('q' to quit)!\n");

  scanf("%s",sSentence);

  while (_stricmp(sSentence,"q")!=0)

  {

      sResult=NLPIR_ParagraphProcess(sSentence,0);

      printf("%s\nInput string now('q' to quit)!\n", sResult);

      scanf("%s",sSentence);

  }

 

  NLPIR_Exit();

  return 0;

}

 

 

 

函数11- int NLPIR_DelUsrWord(const char *sWord);

(1)  描述:从用户词典中删除一个词汇。

(2)     参数:char * sWord:要删除的词汇

(3)  返回值:如果要删除的词汇不存在,则返回-1;如果删除成功,则返回该词汇的句柄。

(4)  示例代码:

#include "NLPIR.h"

      #include <string>

      #include <stdio.h>

      #include <string.h>

 

 

      #pragma comment(lib,"NLPIR.lib")//表示链接NLPIR.lib这个库

      int main(int argc, char* argv[])//argc是命令行总的参数个数,argv[]是argc     个参数,其中第0个参数是程序的全名,以后的参数 

          {

//Sample1: Sentence or paragraph lexical analysis with only one result char sSentence[2000];

  char sSentence[2000];

  const char * sResult;  

  if(!NLPIR_Init())

  {

      printf("Init fails\n");

      return -1;

  }

NLPIR_AddUserWord(“ iThinker n” );//你好\t 词性

  NLPIR_AddUserWord("爱思客 n");//添加词:爱思客\t词性。其中“爱思客”为要添加的词,“n”为词的词性,”\t”为分隔符

  NLPIR_DelUsrWord(“ iThinker” );//删除 iThinker,删除时词语后面不能加词性

  NLPIR_SaveTheUsrDic();//保存用户词典

   NLPIR_AddUserWord("武传营的 n");////添加词:爱思客\t词性。其中“爱思客”为要添加的词,“n”为词的词性,”\t”为分隔符

   NLPIR_SaveTheUsrDic();//保存用户词典

   NLPIR_DelUsrWord("武传营的 " );//删除 iThinker

  NLPIR_SaveTheUsrDic();//保存用户词典

  printf ("Input sentence now('q' to quit)!\n");

  scanf("%s",sSentence);

  while (_stricmp(sSentence,"q")!=0)

  {

      sResult=NLPIR_ParagraphProcess(sSentence,0);

      printf("%s\nInput string now('q' to quit)!\n", sResult);

      scanf("%s",sSentence);

  }

 

  NLPIR_Exit();

  return 0;

}

 

函数12- NLPIR_API const char * NLPIR_GetKeyWords(const char *sLine,int nMaxKeyLimit=50,bool
bWeightOut=false);

(1)  描述:从输入的段落中提取关键词。

(2)  参数:

char *sLine :输入的段落

int nMaxKeyLimit:关键词最大的数量

bool bWeightOut:是否输出权重

(3)  返回值:如果执行成功,返回结果列表。如果执行失败,返回NULL

格式如下:

“科学发展观 宏观经济”

或者

“科学发展观23.80 宏观经济12.20”(带有权值)

(4)  示例代码:

#include "NLPIR.h"

#include <string>

#include <stdio.h>

#include <string.h>

 

 

#pragma comment(lib,"NLPIR.lib")//表示链接NLPIR.lib这个库

int main(int argc, char* argv[])//argc是命令行总的参数个数,argv[]是argc      个参数,其中第0个参数是程序的全名,以后的参数 

{

//Sample1: Sentence or paragraph lexical analysis with only one result char sSentence[2000];

  char sSentence[2000];

  const char * sResult;  

  if(!NLPIR_Init())

  {

      printf("Init fails\n");

      return -1;

  }

printf ("Input sentence now('q' to quit)!\n");

  scanf("%s",sSentence);

  while (_stricmp(sSentence,"q")!=0)

  {

      sResult=NLPIR_GetKeyWords(sSentence);

      printf("%s\nInput string now('q' to quit)!\n", sResult);

      scanf("%s",sSentence);

  }

 

  NLPIR_Exit();

  return 0;

}

 

函数13- NLPIR_API const char * NLPIR_GetFileKeyWords(const char *sTextFile,int nMaxKeyLimit=50,bool bWeightOut=false);

 

(1)  描述:从TXT文件中提取关键词。

(2)  参数:

const char *sTextFile:输入文件名称;

int nMaxKeyLimit:关键词的最大数量;

bWeightOut:是否输出权值

(3) 返回值:如果执行成功,返回执行结果列表。如果执行失败,返回NULL。格式同上

(4)  示例代码:

#include "NLPIR.h"

#include <string>

#include <stdio.h>

#include <string.h>

 

 

#pragma comment(lib,"NLPIR.lib")//表示链接NLPIR.lib这个库

int main(int argc, char* argv[])//argc是命令行总的参数个数,argv[]是argc      个参数,其中第0个参数是程序的全名,以后的参数 

{

//Sample1: Sentence or paragraph lexical analysis with only one result char sSentence[2000];

  char sSentence[20000];

  const char * sResult;  

  if(!NLPIR_Init())

  {

      printf("Init fails\n");

      return -1;

  }

printf ("Input sentence now('q' to quit)!\n");

  if (_stricmp(sSentence,"q")!=0)

  {

      sResult=NLPIR_FileGetKeyWords(“18届三中全会.txt”,50,true);

      printf("%s\n ", sResult);

  }

 

  NLPIR_Exit();

  return 0;

}

 

 

 

函数14- NLPIR_API const char * NLPIR_GetNewWords(const char *sLine,int nMaxKeyLimit=50,bool bWeightOut=false);

(1)描述:从段落中提取新词。

(2)参数:

const char *sLine:输入的段落

int nMaxKeyLimit:关键词的最大数量;

bWeightOut:是否输出权值

(3)返回值:如果执行成功,返回提取到的新词列表,否则返回NULL。格式如下:

“科学发展观 宏观经济”

或者

“科学发展观23.80 宏观经济12.20”(带有权值)

 

(5)  示例代码:

#include "NLPIR.h"

#include <string>

#include <stdio.h>

#include <string.h>

 

 

#pragma comment(lib,"NLPIR.lib")//表示链接NLPIR.lib这个库

int main(int argc, char* argv[])//argc是命令行总的参数个数,argv[]是argc      个参数,其中第0个参数是程序的全名,以后的参数 

{

//Sample1: Sentence or paragraph lexical analysis with only one result char sSentence[2000];

  char sSentence[20000];

  const char * sResult;  

  if(!NLPIR_Init())

  {

      printf("Init fails\n");

      return -1;

  }

printf ("Input sentence now('q' to quit)!\n");

  if (_stricmp(sSentence,"q")!=0)

  {

      sResult=NLPIR_GetNewWords(“18届三中全会.txt”,50,true);

      printf("%s\n ", sResult);

  }

 

  NLPIR_Exit();

  return 0;

}

 

函数15- NLPIR_API const char * NLPIR_GetFileNewWords(const char *sTextFile,int nMaxKeyLimit=50,bool bWeightOut=false);

(1)描述:从TXT文件中提取新词。

(2)参数:

const char *sLine:输入文件的名称;

int nMaxKeyLimit:关键词的最大数量;

bWeightOut:是否输出权值

(3)返回值:如果执行成功,返回提取到的新词列表,否则返回NULL。格式如下:

“科学发展观 宏观经济”

或者

“科学发展观23.80 宏观经济12.20”(带有权值)

4)示例代码:

#include "NLPIR.h"

#include <string>

#include <stdio.h>

#include <string.h>

 

 

#pragma comment(lib,"NLPIR.lib")//表示链接NLPIR.lib这个库

int main(int argc, char* argv[])//argc是命令行总的参数个数,argv[]是argc      个参数,其中第0个参数是程序的全名,以后的参数 

{

//Sample1: Sentence or paragraph lexical analysis with only one result char sSentence[2000];

  char sSentence[20000];

  const char * sResult;  

  if(!NLPIR_Init())

  {

      printf("Init fails\n");

      return -1;

  }

printf ("Input sentence now('q' to quit)!\n");

  if (_stricmp(sSentence,"q")!=0)

  {

      sResult=NLPIR_FileGetNewWords(“18届三中全会.txt”,50,true);

      printf("%s\n ", sResult);

  }

 

  NLPIR_Exit();

  return 0;

}

 

函数16- unsigned long NLPIR_API unsigned long NLPIR_FingerPrint(const char *sLine);

 

(1)  描述:提取段落的一个指纹

(2)  参数:

const char *sLine:输入的段落

(3)  返回值:如果执行成功,返回指纹值,否则返回0。

(4)     示例代码:

 

#pragma  warning(disable:4996)

#include "NLPIR.h"

#include <string>

#include <stdio.h>

#include <string.h>

 

#pragma comment(lib,"NLPIR.lib")//表示链接NLPIR.lib这个库

int main(int argc, char* argv[])//argc是命令行总的参数个数,argv[]是argc          个参数,其中第0个参数是程序的全名,以后的参数 

{

//Sample1: Sentence or paragraph lexical analysis with only one result char sSentence[2000];

      char sSentence[200];

      const char * sResult;   

      if(!NLPIR_Init())

      {

             printf("Init fails\n");

             return -1;

      }

      printf ("Input sentence now('q' to quit)!\n");

      scanf("%s",sSentence);

      if (_stricmp(sSentence,"q")!=0)

      {

             unsigned long Finger=NLPIR_FingerPrint(sSentence);

             printf("%d\n ",  Finger);

      }

 

      NLPIR_Exit();

      return 0;

}

 

函数17- int NLPIR_SetPOSmap(int nPOSmap);

  

(1)  描述:设置使用的POS map(标注集)。

(2)  参数:int nPOSmap

ICT_POS_MAP_FIRST 1//计算所一级标注集

ICT_POS_MAP_SECOND 0//计算所二级标注集

ICT_POS_MAP_SECOND 2//北大二级标注集

PKU_POS_MAP_FIRST 3//北大一级标注集

(3)  返回值:如果执行成功,返回1,否则返回0。

(4)  示例代码:

 

#include "NLPIR.h"

#include <stdio.h>

#include <string.h>

 

#pragma warning(disable,4996)

#pragma comment(lib,"NLPIR.lib")

 

int main()

{

  //Sample1: Sentence or paragraph lexical analysis with only one result

  char sSentence[2000];

 

  const char * sResult;

  if(!NLPIR_Init())

  {

         printf("Init fail\n");

         return -1;

  }

  NLPIR_SetPOSmap(ICT_POS_MAP_SECOND);

  printf("Input sentence now('q' to quit)!\n");//选择标注集

  scanf("%s",sSentence);

  while (_stricmp(sSentence,"q")!=0)

  {

         sResult=NLPIR_ParagraphProcess(sSentence,0);

         printf("%s\nInput string now('q' to quit)!\n",sResult);

         scanf("%s",sSentence);

  }

  NLPIR_Exit();

  return 0;

}

 

函数18- const char * NLPIR_GetLastErrorMsg();

  

(1)  描述:获取最近一条报错信息。

(2)  参数:无

(3)  返回值:获取最近一条报错信息的指针

(4)  示例代码:无

 

新词发现批量处理功能
/*********************************************************************/
 以下函数为 2013 版本专门针对新词发现的过程,一般建议脱机实现,不宜在线处理
* 新词识别完成后,再自动导入到分词系统中,即可完成
* 函数以 NLPIR_NWI(New Word Identification)开头
*********************************************************************/
/*********************************************************************/

函数1- bool NLPIR_NWI_Start();

 

(1)  描述:启动新词识别

(2)  参数:无

(3)  返回值:如果执行成功,返回bool,true:successed,否则返回false:fail。

函数2- Int NLPIR_NWI_AddFile(const char * sFilename);

(1)  描述:往新词识别系统中添加待识别新词的文本文件,需要在运行 NLPIR_NWI_Start()之后,才有效

(2)  参数:

char * sFilename:文件名

(3)  返回值:如果执行成功,返回true,否则返回false。

 

函数3- bool NLPIR_NWI_AddMem(const char *sText);

(1)  描述:往新词识别系统中添加一段新词的内存,需要在运行NLPIR_NWI_Start()之后,才有效。

(2)  参数:char * sFilename-文件名

(3)  返回值:如果执行成功,返回true,否则返回false。

 

函数4- bool NLPIR_NWI_Complete();

(1)描述:新词添加结束,需要在运行NLPIR_NWI_Start()之后,才有效。

   (2)参数:无

(3)返回值:如果执行成功,返回true,否则返回false。

 

函数5- const char * NLPIR_NWI_GetResult(bool bWeightOut=false);

获得新词识别结果

(1)  描述:获取新词识别结果

(2)  参数:bool bWeightOut-是否输出权重值

(3)  返回值:执行结果的列表

 

函数5- unsigned int NLPIR_NWI_Result2UserDict()

(1)  描述:将新词识别结果导入到用户词典中,需要在运行NLPIR_NWI_Complete()之后,才有效,如果需要将新词结果永久保存,建议在执行NLPIR_SaveTheUsrDic函数

(2)  参数:无

(3)  返回值:如果执行成功,返回true,否则返回false。

 

*======================示例代码============================*

#include "NLPIR.h"

#include <stdio.h>

#include <string.h>

 

#pragma warning(disable:4996)

#pragma comment(lib,"NLPIR.lib")

int main()

{

      if (!NLPIR_Init())

      {

             printf("init fail\n");

             return -1;

      }

      char sInputFile[1024]="用户词典.txt",sResultFile[1024];

      NLPIR_NWI_Start();//启动新词发现功能

      NLPIR_NWI_AddFile(sInputFile);//添加新词训练的文件,可反复添加

      NLPIR_NWI_Complete();//添加文件或者训练内容结束

      const char * pNewWordlist=NLPIR_NWI_GetResult();//输出新词识别结果

      printf("识别出的新词为:%s\n",pNewWordlist);

 

      strcpy(sResultFile,sInputFile);//sInputFile赋值给sResultFile

    strcat(sResultFile,"_result1.txt");//sResultFile,"_result1.txt"连接到一起,结果放到sResultFile中

      NLPIR_FileProcess(sInputFile,sResultFile);

 

      NLPIR_NWI_Result2UserDict();//新词结果导入词典,利用新的词典,重新分词

      strcpy(sResultFile,sInputFile);

      strcat(sResultFile,"_result2.txt");

      NLPIR_FileProcess(sInputFile,sResultFile);

 

      NLPIR_Exit();

      return 0;

}

 

附:


NLPIR_AddUserWord("沪指 n");

这个函数的作用是将“沪指”这个词加入到分词词典。但是他是临时的加,只在这个程序中有效,程序关闭之后就无效了。

 

如果在使用了上面的函数之后,再使用这个函数NLPIR_SaveTheUsrDic(),就将“沪指”这个词完全的保存了。下次程序即使不导入这个词,仍然会将这个词分出来

 

NLPIR_DelUsrWord("沪指")

这个函数和NLPIR_AddUserWord相反,作用是临时的删除一个词语。注意,词语后面不能加词性。但是只是临时的删除,如果不使用NLPIR_SaveTheUsrDic()保存的话,下次就会运行程序时,还是认为没有删除这个词语。

 

NLPIR_NWI_Result2UserDict()

这个函数是永久的导入字典。另外一个从文本文件中导入用户词典的函数ImportUserDi()也是永久性的导入用户词典。一次导入之后下次不需要再导入。如果下次导入的词典和上次的不同,下次的会覆盖上次的。

posted on 2016-12-26 11:29  金秀  阅读(2825)  评论(0编辑  收藏  举报

导航