汉语自动分词

来源:互联网 发布:人工智能发明成果 编辑:程序博客网 时间:2024/06/10 13:34

调用“海量智能分词”提供的动态链接库,实现汉语自动分词,并且搭建图形界面用于操作和显示。

首先下载“海量智能分词”软件,解压后拷出include文件夹下的HLSegFunc.h、HLPubDef.h和dll&lib文件夹下的HLSSplit.dll、HLSplitWord.dat、HLSSplit.lib。

图形界面使用MFC搭建,新建基于对话框的MFC应用程序,同时要将HLSSplit.lib、HLSegFunc.h、HLPubDef.h拷贝至工程目录下,将HLSSplit.dll、HLSplitWord.dat拷至Debug目录下。

因为下载海量智能分词链接库可能已经过期,故为了正常运行,需要改动一下计算机时间,我们使用的需要将系统时间调制2005年。

搭建界面如下:


“分词”按钮的响应函数如下:

void CTest20Dlg::OnBnClickedButton2(){CString strText; // 存放要进行分词的字符串GetDlgItemText(IDC_EDIT1,strText);bool bInitDict = HLSplitInit();if(!bInitDict){ MessageBox("初始化分词字典失败"); return ;}HANDLE hHandle = HLOpenSplit (); //创建分词句柄if(hHandle == INVALID_HANDLE_VALUE){//创建分词句柄失败MessageBox("创建分词句柄失败");HLFreeSplit () ;//卸载分词字典return ;}int iExtraCalcFlag = 0; //附加计算标志,不进行附加计算LPCSTR lpText = (LPCSTR)strText ;bool bSuccess = HLSplitWord (hHandle, lpText, iExtraCalcFlag);CString strResult = "";if(bSuccess){//分词成功int nResultCnt = HLGetWordCnt (hHandle);//取得分词个数for(int i = 0 ; i < nResultCnt ; i++){//取得分词结果SHLSegWord* pWord ;//存放分词结果中的一个词pWord = HLGetWordAt (hHandle , i) ;//取得一个分词结果strResult += pWord->s_szWord;strResult +=" "; //以空格分割分词结果中的每个词}HLCloseSplit (hHandle) ;//关闭分词句柄}else{//分词失败 MessageBox("分词失败"); HLCloseSplit (hHandle) ;//关闭分词句柄 HLFreeSplit () ;//卸载分词字典 return ;}HLFreeSplit () ; //卸载分词词典SetDlgItemText(IDC_EDIT2,strResult);}

“载入文件”按钮响应函数见上篇博客《MFC显示文本文档

效果如下:


完整的工程下载:http://download.csdn.net/detail/u010839382/8313415


0 0
原创粉丝点击