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()也是永久性的导入用户词典。一次导入之后下次不需要再导入。如果下次导入的词典和上次的不同,下次的会覆盖上次的。

NLPIR分词(c++接口整理)的更多相关文章

  1. 各类无次数限制的免费API接口整理

    各类无次数限制的免费API接口整理,主要是聚合数据上和API Store上的一些,还有一些其他的. 聚合数据提供30大类,160种以上基础数据API服务,国内最大的基础数据API服务,下面就罗列一些免 ...

  2. 网络免费API接口整理

    转载自: https://www.cnblogs.com/doit8791/p/9351629.html 从网上看到一些免费API接口,在个人开发小程序等应用练手时可试用. 各类无次数限制的免费API ...

  3. paip.中文 分词 -- 同义词大全整理

    paip.中文 分词 -- 同义词大全整理 同义词的处理方法: 作者Attilax  艾龙,  EMAIL:1466519819@qq.com  来源:attilax的专栏 地址:http://blo ...

  4. nlpir分词器过期处理

    nlpir分词器的非商业授权期限只有1个月,到期之后使用分词器在创建实例时就会提示授权到期,解决方法如下: 在nlpir发明者张教授的github页面下载对应的授权证书,地址在这. 将下载的证书覆盖分 ...

  5. 解决使用nlpir分词,遇到License过期问题

    问题:使用pynlpir分词,遇到License过期问题 抛出异常:pynlpir.LicenseError: Your license appears to have expired. Try ru ...

  6. NLPIR分词工具的使用(java环境下)

    一.NLPIR是什么? NLPIR(汉语分词系统)由中科大张华平博士团队开发,主要功能包括:中文分词,词性标注,命名实体识别,用户词典功能,详情见官网:http://ictclas.nlpir.org ...

  7. 常用天气预报API接口整理(转)

    文章转自:http://www.nohacks.cn/post-35.html 自序: 由nohacks.cn 收集整理,来源于网络,版权归原作者所有,基本收集了网络上能使用的大部分天气API接口,作 ...

  8. JavaWeb中使用到的类与接口整理(一)servlet包

    javaweb学了半本,整理了一下Servlet技术模型.servlet容器模型.jsp技术模型中的类与接口,有助于理解web应用中的页面跳转和参数传递,目录: HttpServlet 可作Scope ...

  9. sc7731 Android 5.1 Camera 学习之二 framework 到 HAL接口整理

    前面已经分析过,Client端发起远程调用,而实际完成处理任务的,是Server端的 CameraClient 实例.远程client 和 server是两个不同的进程,它们使用binder作为通信工 ...

随机推荐

  1. 让两个对象间建立weak关系

    让两个对象间建立weak关系 这是为了给两个对象间建立weak关系,当一个对象被释放时,另外一个对象再获取这个值时就是nil,也就是不持有这个对象:) 源码: WeakRelatedDictionar ...

  2. [翻译] USING GIT IN XCODE [2] 在XCODE中使用GIT[2]

    USING GIT IN XCODE http://www.cimgf.com/2013/12/10/using-git-in-xcode/ USING AN EXISTING REMOTE PROJ ...

  3. php安装--php-5.3.28

    PHP的整合使用: 一.下载php源码包:https://pan.baidu.com/s/1Cied8ozHez4xJ9l1HQ7pKQ 二.把源码包放到/usr/src目录 三.解压源码包并进入目录 ...

  4. php函数substr_replace中文乱码的替代解决方法

    $str = "中华人民共和国"; $len = mb_strlen($str,'utf-8'); if($len>=6){ $str1 = mb_substr($str,0 ...

  5. Mac Item2 设置别名 永久生效

    使用 Item2 终端, 设置 别名的时候, 按照 网上的说法, 是 去 修改 用户目录下的   .bashrc   或者  .bash_profile 这两个文件都可以, 把 alias 写在 这两 ...

  6. PHP设计模式系列 - 装饰器

    什么是装饰器 装饰器模式,对已有对象的部分内容或者功能进行调整,但是不需要修改原始对象结构,可以使用装饰器设 应用场景 设计一个UserInfo类,里面有UserInfo数组,用于存储用户名信息 通过 ...

  7. A NB群友 【记忆化搜索】(2019年华南理工大学程序设计竞赛(春季赛))

    冲鸭!去刷题:https://ac.nowcoder.com/acm/contest/625/A 题目描述 CC是著名的算法竞赛选手,他不仅人长得帅,而且技术了得,自然而然就有了许多粉丝. 为了能帮助 ...

  8. Kubernetes 1.6新特性

    Kubernetes 1.6已结发布,包括9个Stable特性.12个Beta特性.8个Alpha特性,共29个新特性.Kubernetes 1.6重点关注集群规模扩展和自动化.目前最多支持5000个 ...

  9. python基础整理7——爬虫——爬虫开发工具

    HTTP代理神器Fiddler Fiddler是一款强大Web调试工具,它能记录所有客户端和服务器的HTTP请求. Fiddler启动的时候,默认IE的代理设为了127.0.0.1:8888,而其他浏 ...

  10. 百度api:根据经纬度获取地理位置信息

    调用百度api,根据经度和纬度获取地理位置信息,返回Json. C#代码: using Newtonsoft.Json; using Newtonsoft.Json.Linq; using Syste ...