ICTClAS分词系统是由中科院计算所的张华平、刘群所开发的一套获得广泛好评的分词系统,难能可贵的是该版的Free版开放了源代码,为我们很多初学者提供了宝贵的学习材料。

但有一点不完美的是,该源代码没有配套的文档,阅读起来可能有一定的障碍,尤其是对C/C++不熟的人来说.本人就一直用Java/VB作为主要的开发语 言,C/C++上大学时倒是学过,不过工作之后一直没有再使用过,语法什么的忘的几乎一干二净了.但语言这东西,基本的东西都相通的,况且Java也是在 C/C++的基础上形成的,有一定的相似处.阅读一遍源代码,主要的语法都应该不成问题了.

虽然在ICTCLAS的系统中没有完整的文档说明,但是我们可以通过查阅张华平和刘群发表的一些相关论文资料,还是可以窥探出主要的思路.

该分词系统的主要是思想是先通过CHMM(层叠形马尔可夫模型)进行分词,通过分层,既增加了分词的准确性,又保证了分词的效率.共分五层,如下图一所示:

基本思路:先进行原子切分,然后在此基础上进行N-最短路径粗切分,找出前N个最符合的切分结果,生成二元分词表,然后生成分词结果,接着进行词性标注并完成主要分词步骤.

下面是对源代码的主要内容的研究:

1.首先,ICTCLAS分词程序首先调用CICTCLAS_WinDlg::OnBtnRun()开始程序的执行.并且可以从看出它的处理方法是 把源字符串分段处理。并且在分词前,完成词典的加载过程,即生成m_ICTCLAS对象时调用构造函数完成词典库的加载。关于词典结构的分析,请参加分词 系统研究(二)。

void CICTCLAS_WinDlg::OnBtnRun()
{

......

//在此处进行分词和词性标记

if(!m_ICTCLAS.ParagraphProcessing((char *)(LPCTSTR)m_sSource,sResult))
         m_sResult.Format("错误:程序初始化异常!");
   else
        m_sResult.Format("%s",sResult);//输出最终分词结果

......

}

2.在OnBtnRun()方法里面调用分段分词处理方法bool CResult::ParagraphProcessing(char *sParagraph,char *sResult)完成分词的整个处理过程,包括分词的词性标注.其中第一个参数为源字符串,第二个参数为分词后的字符串.在这两个方法中即完成了整个分 词处理过程,下面需要了解的是在此方法中,如何调用其它方法一步步按照上图所示的分析框架完成分词过程.为了简单起见,我们先不做未登录词的分析。

//Paragraph Segment and POS Tagging
bool CResult::ParagraphProcessing(char *sParagraph,char *sResult)
{

........

Processing(sSentence,1); //Processing and output the result of current sentence.
  Output(m_pResult[0],sSentenceResult,bFirstIgnore); //Output to the imediate result

.......

}

3.主要的分词处理是在Processing()方法里面发生的,下面我们对它进行进一步的分析.

bool CResult::Processing(char *sSentence,unsigned int nCount)
{

......

//进行二叉分词

m_Seg.BiSegment(sSentence, m_dSmoothingPara,m_dictCore,m_dictBigram,nCount);

......

//在此处进行词性标注

m_POSTagger.POSTagging(m_Seg.m_pWordSeg[nIndex],m_dictCore,m_dictCore);

......

}

4.现在我们先不管词性标注,把注意力集中在二叉分词上,因为这个是分词的两大关键步骤的第一步.

参考文章:

1.<<基于层叠隐马模型的汉语词法分析>>,刘群 张华平等

2.<<基于N-最短路径的中文词语粗分模型>>,张华平 刘群

黄聪:ICTCLAS分词系统研究(一)(转)相关推荐

  1. freeictclas java_天书般的ICTCLAS分词系统代码(一)

    ICTCLAS分词系统是由中科院计算所的张华平.刘群所开发的一套获得广泛好评的分词系统,该版的Free版开放了源代码,为初学者提供了宝贵的学习材料.我们可以在"http://sewm.pku ...

  2. 黄聪:搜索引擎原理系列视频教程1.0

    朋友您好,我是黄聪的笔记本博客主人.您可能对搜索引擎原理已经有所了解,也许你是一个SEO,也许你对搜索引擎很感兴趣.但如果您接触搜索引擎时间不久,而且没太多技术基础的话,在使用过程中肯定会遇到各种各样 ...

  3. 黄聪:《跟黄聪学WordPress插件开发》

    续<跟黄聪学WordPress主题开发>之后,又一个作品完成!<跟黄聪学Wordpress插件开发>,国内最好的Wordpress插件开发视频教程!! 目录预览: WordPr ...

  4. 黄聪:Microsoft Enterprise Library 5.0 系列教程(二) Cryptography Application Block (高级)

    原文:黄聪:Microsoft Enterprise Library 5.0 系列教程(二) Cryptography Application Block (高级) 本章介绍的是企业库加密应用程序模块 ...

  5. 黄聪:C# MP3操作类,能播放指定的mp3文件,或播放嵌入的资源中的Mp3文件

    以下为我写的Mp3操作类源代码: using System; using System.Collections.Generic; using System.Linq; using System.Tex ...

  6. 黄聪:如何使用CodeSmith批量生成代码(转:http://www.cnblogs.com/huangcong/archive/2010/06/14/1758201.html)...

    先看看CodeSmith的工作原理: 简单的说:CodeSmith首先会去数据库获取数据库的结构,如各个表的名称,表的字段,表间的关系等等,之后再根据用户自定义好的模板文件,用数据库结构中的关键字替代 ...

  7. 黄聪:C#编写的Word操作类,有换页,添加表格,文本功能

    最近要帮老师做个工资管理系统,需要自动生成Word. 就上网找了个Word操作类,再做了点修改,下面公布一下自己的代码: using System; using System.Collections. ...

  8. 黄聪:如何使用CodeSmith批量生成代码(原创系列教程)

    在上一篇我们已经用PowerDesigner创建好了需要的测试数据库,下面就可以开始用它完成批量代码生成的工作啦. 下面我会一步步的解释如何用CodeSmith实现预期的结果的,事先声明一下,在此只做 ...

  9. 黄聪:一个拼图工具的制作思路

    测试简图: 功能简介: 1.双击左窗口可打开源图像; 2.框选左窗口可把图像选取复制到右窗口; 3.剪取的图块可以移动, 可配合 Ctrl 单选或多选, 可用 Delete 删除选择的图块; 4.双击 ...

最新文章

  1. 图像均值迁移模糊:pyrMeanShiftFiltering()
  2. 【五校联考7day2】QYQ的图
  3. MySQL学习笔记(三)
  4. 使用cat写入内容到指定文件
  5. 为什么不应该重写service方法
  6. 上周并发题的解题思路以及介绍Go语言调度器
  7. PAT-乙级-1009. *说反话 (20)
  8. 科大讯飞 语音识别 VB WIN10 X64 VS2017
  9. 查看exe代码_【安全风险通告】Windows Type 1字体解析远程代码执行漏洞安全风险通告...
  10. Pocket Gems面经prepare: Diamond and Ruby
  11. Hystrix dashbord 服务降级熔断限流监控介绍
  12. VMWare 16 pro虚拟机无法开启,打不开磁盘“E:\ubuntu16.04.vmdk”或它所依赖的某个快照磁盘,显示模块“Disk”启动失败
  13. MAC使用技巧之苹果电脑新手最容易犯的20个错误
  14. 基于Javaweb的问卷调查系统
  15. peewee mysql_peewee基本使用
  16. CRC-16校验(多项式为x16+x15+x2+1):
  17. 通过httpclient发送请求的几种方式,发送文件、参数、json对象
  18. Java SE 005 运算符续
  19. python拼多多1分抢手机_如何抢到拼多多1元秒杀?抢不到是怎么回事?
  20. 相对定位中整周模糊度确定方法

热门文章

  1. Object-C 有私有变量?私有方法?
  2. antv g2字体阴影_antv g2的理解总结
  3. icmp报文_用侦察兵的故事趣讲ICMP和Ping,看完想忘都难!
  4. gpio的8种工作模式_【超低功耗系列一】STM32L 低功耗产品和模式
  5. Maltego更新到4.2.4.12374
  6. 用坐标实现物体的移动c语言,C语言之实现控制台光标随意移动的实例代码
  7. 联想杜比音效_联想小新15 2020锐龙版首销;OPPO Find X2系列也可尝鲜安卓11
  8. oracle编程艺术在线,oracle编程艺术笔记-1
  9. JAVA实现从尾到头打印链表(《剑指offer》)
  10. 百度计算生物研究登上Nature子刊!将3D结构引入分子表征,结果超越斯坦福MIT,已落地制药领域...