- 1、本文档共7页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验报告-中文分词验报告-中文分词
实验报告1 双向匹配中文分词
? 小组信息
目录
摘要 --------------------------------------------------------------------------------------- 1
理论描述 --------------------------------------------------------------------------------- 1
算法描述 --------------------------------------------------------------------------------- 2
详例描述 --------------------------------------------------------------------------------- 3
软件演示 --------------------------------------------------------------------------------- 4
总结 --------------------------------------------------------------------------------------- 6
? 摘要
这次实验的内容是中文分词,现有的分词算法可分为三大类:基于字符串匹配的分词方法、基于理解的分词方法和基于统计的分词方法。按照是否与词性标注过程相结合,又可以分为单纯分词方法和分词与标注相结合的一体化方法。
而我们用到的分词算法是基于字符串的分词方法(又称机械分词方法)中的正向最大匹配算法和逆向匹配算法。一般说来,逆向匹配的切分精度略高于正向匹配,遇到的歧义现象也较少。统计结果表明,单纯使用正向最大匹配的错误率为1/169,单纯使用逆向最大匹配的错误率为1/245。
? 理论描述
中文分词指的是将一个汉字序列切分成一个一个单独的词。中文分词是文本挖掘的基础,对于输入的一段中文,成功的进行中文分词,可以达到电脑自动识别语句含义的效果。它是信息提取、信息检索、机器翻译、文本分类、自动文摘、语音识别、文本语音转换、自然语言理解等中文信息处理领域的基础。
双向最大匹配算法是两个算法的集合,主要包括:正向最大匹配算法和逆向最大匹配算法.如果两个算法得到相同的分词结果,那就认为是切分成功,否则,就出现了歧义现象或者是未登录词问题。
正向最大匹配算法:从左到右将待分词文本中的几个连续字符与词表匹配,如果匹配上,则切分出一个词。
逆向最大匹配算法:从右到左将待分词文本中的几个连续字符与词表匹配,如果匹配上,则切分出一个词。
? 算法描述
本文实现双向匹配算法,具体算法描述如下:
正向最大匹配算法MM:
//对纯中文句子s1的正向减字最大匹配分词
string CHzSeg::SegmentHzStrMM(CDict dict,string s1)const
{
string s2=;//保存句子s1的分词结果
while(!s1.empty())
{
unsigned int len=s1.size();
//如果待切分的句子大于最大切分单元
//len=最大切分单元,否则len=句子的长度
if(lenMAX_WORD_LENGTH)
len=MAX_WORD_LENGTH;
//取s1句子最左边长度len为的子句子
string w=s1.substr(0,len);
//判断刚刚取出来的子句子是不是一个词
bool isw=dict.IsWord(w);
//当w中至少有一个中文字不能构成字的时候,减去最右边的一个中文字
while(len2isw==false)
{
///减去最右边的一个中文字
len-=2;
w=w.substr(0,len);
//再次判断减字后的w是不是构成一个词
isw=dict.IsWord(w);
}
s2+=w+SEPARATOR;
s1=s1.substr(w.size());
}//end while
return s2;
}
逆向最大匹配算法RMM:
//对纯中文句子s1的逆向减字最大匹配分词
string CHzSeg::SegmentHzStrRMM(CDict dict,string s1)const
{
string s2=;//保存句子s1的分词结果
while(!s1.empty())
{
unsigned int len=s1.size();
//如果待切分的句子大于最大切分单元
//len=最大切分单元,否则len=句子的长度
if(lenMAX_WORD_LENGTH)
len=MAX_WORD_LEN
文档评论(0)