调用“海量智能分词”提供的动态链接库,实现汉语自动分词,并且搭建图形界面用于操作和显示。
首先下载“海量智能分词”软件,解压后拷出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
版权声明:本文为博主原创文章,未经博主允许不得转载。