分词系统研究完版整(ICTCLAS).docVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
分词系统研究完版整(ICTCLAS)

分词系统研究完整版 ?ICTClAS分词系统是由中科院计算所的张华平、刘群所开发的一套获得广泛好评的分词系统,难能可贵的是该版的Free版开放了源代码,为我们很多初学者提供了宝贵的学习材料。 ????? ?但有一点不完美的是,该源代码没有配套的文档,阅读起来可能有一定的障碍,尤其是对C/C++不熟的人来说.本人就一直用Java/VB作为主要的开发语言,C/C++上大学时倒是学过,不过工作之后一直没有再使用过,语法什么的忘的几乎一干二净了.但语言这东西,基本的东西都相通的,况且Java也是在C/C++的基础上形成的,有一定的相似处.阅读一遍源代码,主要的语法都应该不成问题了. ????虽然在ICTCLAS的系统中没有完整的文档说明,但是我们可以通过查阅张华平和刘群发表的一些相关论文资料,还是可以窥探出主要的思路. ?? 该分词系统的主要是思想是先通过CHMM(层叠形马尔可夫模型)进行分词,通过分层,既增加了分词的准确性,又保证了分词的效率.共分五层,如下图一所示: 基本思路:先进行原子切分,然后在此基础上进行N-最短路径粗切分,找出前N个最符合的切分结果,生成二元分词表,然后生成分词结果,接着进行词性标注并完成主要分词步骤. 下面是对源代码的主要内容的研究: 1.首先,ICTCLAS分词程序首先调用CICTCLAS?_WinDlg:?:OnBtnRu?n()开始程序的执行.并且可以从看出它的处理方法是把源字符串分段处理。并且在分词前,完成词典的加载过程,即生成m_ICTCLAS?对象时调用构造函数完成词典库的加载。关于词典结构的分析,请参加分词系统研究(二)。 void CICTCLAS_?WinDlg::?OnBtnRun?() { ??? ...... ??//在此处进行分词和词性标记 ? if(!m_?ICTCLAS.?Paragrap?hProcess?ing((cha?r *)(LPC?TSTR)m_s?Source,s?Result))? ???????? ?m_sRes?ult.Form?at(错误:程序初始化异常!); ???el?se ??????? ?m_sRe?sult.For?mat(%s?,sResult?);//输出最终分词结果 ????...... ?} 2.在OnBtnRun()方法里面调用分段分词处理方法bool CResul?t::Parag?raphProc?essing(c?har *sPa?ragraph,?char *sR?esult)完成分词的整个处理过程,包括分词的词性标注.其中第一个参数为源字符串,第二个参数为分词后的字符串.在这两个方法中即完成了整个分词处理过程,下面需要了解的是在此方法中,如何调用其它方法一步步按照上图所示的分析框架完成分词过程.为了简单起见,我们先不做未登录词的分析。 //Paragraph S?egment a?nd POS T?agging b?ool CRes?ult::Par?agraphPr?ocessing?(char *s?Paragrap?h,char *?sResult)? { ?? ..?...... ??? Proces?sing(sSe?ntence,1?); //Pro?cessing ?and outp?ut the r?esult of? current? sentenc?e. ??Out?put(m_pR?esult[0]?,sSenten?ceResult?,bFirstI?gnore); ?//Output? to the ?imediate? result ?? ......?. } 3.主要的分词处理是在Processin?g()方法里面发生的,下面我们对它进行进一步的分析. bool CResult:?:Process?ing(char? *sSente?nce,unsi?gned int? nCount)? { .....?. ?//进行二叉分词 m_Seg.BiSegm?ent(sSen?tence, m?_dSmooth?ingPara,?m_dictCo?re,m_dic?tBigram,?nCount);? ...... ??//在此处进行词性标注 m_POSTagger?.POSTagg?ing(m_Se?g.m_pWor?dSeg[nIn?dex],m_d?ictCore,?m_dictCo?re); ...?... } 4.现在我们先不管词性标注,把注意力集中在二叉分词上,因为这个是分词的两大关键步骤的第一步. 参考文章: 1.基于层叠隐马模型的汉语词法分析,刘群 张华平等 2.基于N-最短路径的中文词语粗分模型,张华平 刘群 ========?========?========?=====

文档评论(0)

wuyoujun92 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档