if (!NLPIR_Init("", 0, ""))//给出Data文件所在的路径,注意根据实际情况修改。 { Debug.WriteLine("Init ICTCLAS failed!"); return; }
这是初始化NLPIR的第一步。最后要由:
NLPIR_Exit();
来退出。
IntPtr intPtr =NLPIR_ParagraphProcess(s);//切分结果保存为IntPtr类型 String str = Marshal.PtrToStringAnsi(intPtr);//将切分结果转换为string
将一个文本串s传入并得到分词后的结果。
intPtr = NLPIR_GetKeyWords(s, 10, true); str = Marshal.PtrToStringAnsi(intPtr);//将切分结果转换为string //将一个文本串传入并得到提取的关键词结果。
下面是用户词典操作部份代码:
String ss; Debug.WriteLine("insert user dic:"); ss = Console.ReadLine(); while (ss[0]!='q'&&ss[0]!='Q') { //用户词典中添加词 int iiii = NLPIR_AddUserWord(ss);//词 词性 example:点击下载 vyou intPtr = NLPIR_ParagraphProcess(s, 1); str = Marshal.PtrToStringAnsi(intPtr); Debug.WriteLine(str); NLPIR_SaveTheUsrDic(); // save the user dictionary to the file //删除用户词典中的词 Debug.WriteLine("delete usr dic:"); ss = Console.ReadLine(); iiii = NLPIR_DelUsrWord(ss); str = Marshal.PtrToStringAnsi(intPtr); Debug.WriteLine(str); NLPIR_SaveTheUsrDic(); }
新词发现功能:
NLPIR_NWI_Start();//新词发现功能启动 //NLPIR_NWI_AddFile("../../test/屌丝,一个字头的诞生.TXT");//添加一个待发现新词的文件,可反复添加 NLPIR_NWI_AddMem(textBox1.Text);//添加一段文本 NLPIR_NWI_Complete();//新词发现完成 intPtr = NLPIR_NWI_GetResult(); str = Marshal.PtrToStringAnsi(intPtr);
下面函数是文件处理,实际就是把一个源文件生成为一个分词结果文件:
NLPIR_FileProcess("屌丝,一个字头的诞生.TXT", "屌丝,一个字头的诞生-分词结果.TXT"); NLPIR_NWI_Result2UserDict();//新词识别结果导入分词库 NLPIR_FileProcess("屌丝,一个字头的诞生.TXT", "屌丝,一个字头的诞生-自适应分词结果.TXT");
注意NLPIR_NWI_Result2UserDict函数必须用在NLPIR_NWI_Complete()函数调用之后。实际上UserDict.pdat是不可读的,但由日期来看确实更新了,证明新词应该加了进去。
由分词结果来看,对比其它分词工具,NLPIR更科学一些,更符合原文的本来含义。
原创文章,作者:苏葳,如需转载,请注明出处:https://www.swmemo.com/579.html
评论列表(2条)
您好,我的程序中一直出现上下文中不存在名称“NLPIR_AddUserWord”,无法转义识别等问题,想问问是怎么回事
您好,我的程序中一直出现上下文中不存在名称“NLPIR_AddUserWord”,无法转义识别等问题,想问问是怎么回事