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

时间: 2024-10-06 20:34:09

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

网络免费API接口整理

从网上看到一些免费API接口,在个人开发小程序等应用练手时可试用. 各类无次数限制的免费API接口整理,主要是聚合数据上和API Store上的一些,还有一些其他的. 聚合数据提供30大类,160种以上基础数据API服务,国内最大的基础数据API服务,下面就罗列一些免费的各类API接口. 聚合的免费API接口数据: 手机号码归属地API接口:https://www.juhe.cn/docs/api/id/11 历史上的今天API接口:https://www.juhe.cn/docs/api/id

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

各类无次数限制的免费API接口整理,主要是聚合数据上和API Store上的一些,还有一些其他的. 聚合数据提供30大类,160种以上基础数据API服务,国内最大的基础数据API服务,下面就罗列一些免费的各类API接口. 聚合的免费API接口数据: 手机号码归属地API接口:https://www.juhe.cn/docs/api/id/11 历史上的今天API接口:https://www.juhe.cn/docs/api/id/63 股票数据API接口:https://www.juhe.cn/

Eclipse下C++调用NLPIR分词系统

最近在研究文本挖掘,对于中文文本,首先要进行分词,那么就用到了NLPIR分词系统.总结了一下网上的资料:下面介绍一下如何用C++调用NLPIR分词系统: step 1:下载最新版的NLPIR分词系统:http://ictclas.nlpir.org/.解压后如下图: step 2:打开IDE(我用的是eclipse)新建一个c++工程NLPIR,然后从上面解压出来的文件中找到Data.NLPIR.h.NLPIR.lib.NLPIR.dll,拷贝到刚才新建的工程下面: step 3:添加库文件,右

接口自动化之接口整理(抓包)

陆续在几个公司都有接触过接口测试,每个公司的接口测试需求都差不多.但是,项目的大小会影响接口测试任务的简繁. 涉及到TCP协议的接口,也涉及到http协议的接口. 前段时间,刚接到一个走HTTP协议的接口测试需求. 开发提供过来的接口如下: test: 1. get_list a. url - subject_id / compliance_id    b. ajax - subject_id / compliance_id 2.get_map a. url -    b. ajax - qry

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

一.NLPIR是什么? NLPIR(汉语分词系统)由中科大张华平博士团队开发,主要功能包括:中文分词,词性标注,命名实体识别,用户词典功能,详情见官网:http://ictclas.nlpir.org/. 二.java环境下的使用: 主要参考了如下资料:http://www.360doc.com/content/14/0926/15/19424404_412519063.shtml 下面是个人的使用方法,仅供参考 1.下载NLPIR工具包,链接如下:http://ictclas.nlpir.or

水果项目第4集-接口整理

既然要用Aps.net wep api来开发接口,就要好好把接口需求给整理整理. 接口是供客户端调用的. 接口其实就是在服务端的一个程序,发个http请求就能调用. 接口独立一点好. 一个接口就干那么一件事就行了. 接口简单整理一下: 1.用户注册 参数:手机号 密码 手机验证码 地址 2.用户登录 参数:手机号 密码 3.获取商品列表 参数:分类标识 4.获取商品具体信息 参数:商品编号 5.提交订单 参数:用户账号 订单包含商品 收货地址 联系电话 6.获取用户订单列表 参数:用户账号 7.

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

javaweb学了半本,整理了一下Servlet技术模型.servlet容器模型.jsp技术模型中的类与接口,有助于理解web应用中的页面跳转和参数传递,目录: HttpServlet 可作Scope的类(PageContext.HttpServletRequest.HttpSession.ServletContext) 其他在servlet中使用到的类(RequestDispatcher.ServletInputStream.HttpServletPesponse) HttpServlet 可

互联网各种免费接口整理

域名注册信息查询 Whois API http://api.chaxun.la/toolsapi/getwhois/ 京东获取单个商品价格接口: http://p.3.cn/prices/mgets?skuIds=J_商品ID&type=1 用例 ps:商品ID这么获取:http://item.jd.com/954086.html 淘宝商品搜索 http://suggest.taobao.com/sug?code=utf-8&q=商品关键字&callback=cb 用例 ps:ca

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

前面已经分析过,Client端发起远程调用,而实际完成处理任务的,是Server端的 CameraClient 实例.远程client 和 server是两个不同的进程,它们使用binder作为通信工具,完成进程间的通信. 注:CameraClient定义如下: 1 class CameraClient : public CameraService::Client 2 { 3 //... 4 }; App需要对Camera进行各种操作,framework-java 和framework-c++