sinboy的菜地

一份耕耘,一份收获

用户操作
[即时聊天] [发私信] [加为好友]
sinboy
sinboy的公告

喜欢中文分词技术的朋友请入http://groups.google.com/group/ictclas

最近评论
lcm62975723:谢谢你。
不知是否能给出一个完整的源代码。我的email是:
lichunming3793789@126.com
leon:您好! 我也需要JAVA版的ICTCLAS源码一份
非常感谢您
我的邮箱是 leiyongekin@126.com
再次谢谢您了。
yuzishui:呵呵,都是要源码的。
谢谢您的知识.
也希望您能坚持下去.
支持.
周梁:怎么就这两句话?赶紧加强啊。
xazl.ia.ac.cn@gmail.com
周梁:我刚开始看,这里我觉得楼主可能没有理解,
作者的原意是为了防止权重相同的节点,<判断就是和=判断区别开,如果出现=,i就不会增加,继续会在这个权重下面进行插入父节点。呵呵。
可以参考他的论文一段话:

如果两条或两条以上路径长度相等,那么他们的长度并列第i,都要列入粗分结果集,而且不影响其他路径的排列序号,最后的粗分结果集合大小大于或等于N。
文章分类
收藏
    相册
    IO
    TPTP
    友情链接
    DanceFire的BLOG
    Justin的BLOG
    Martin Fowler
    博客园设计模式
    吕震宇的BLOG
    存档
    软件项目交易
    订阅我的博客
    XML聚合  FeedSky
    订阅到鲜果
    订阅到Google
    订阅到抓虾
    订阅到BlogLines
    订阅到Yahoo
    订阅到GouGou
    订阅到飞鸽
    订阅到Rojo
    订阅到newsgator
    订阅到netvibes

    原创 ICTCLAS分词系统研究(一)收藏

    新一篇: ICTCLAS分词系统研究(二)--词典结构 | 旧一篇: 学习在Java中使用嵌入式数据库Derby

            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-最短路径的中文词语粗分模型>>,张华平 刘群

    发表于 @ 2006年03月12日 21:56:00|评论(loading...)|编辑

    新一篇: ICTCLAS分词系统研究(二)--词典结构 | 旧一篇: 学习在Java中使用嵌入式数据库Derby

    评论

    #cfan_haifeng 发表于2007-10-24 18:59:21  IP: 218.28.28.*
    谢谢,收益啦
    #FM 发表于2007-11-21 23:29:10  IP: 219.140.158.*
    请问您有ICTCLAS的源码吗?能否发给我一份呢?
    我的邮箱fudream@sina.com
    谢谢!!!
    #caral111 发表于2008-01-12 16:48:30  IP: 202.112.90.*
    谢谢了,最近正在学习这个
    请问您有分词的词典和源码吗?能不能发我一份呢?
    我的邮箱:caral111yc@sina.com
    太谢谢了
    #shuisi 发表于2008-04-27 16:01:25  IP: 202.98.13.*
    请教一下,请问您有ICTCLAS的源码吗?
    能发给我一份吗?
    我的邮箱是listudyfly888@163.com
    非常感谢!!!
    2008-05-04 15:22:32作者回复
    您可以访问它的主页www.ictclas.org
    #skid_y 发表于2008-05-12 17:05:23  IP: 222.131.60.*
    请问您有ICTCLAS的源码吗?
    能发给我一份吗?
    我的邮箱是listudyfly888@163.com
    非常感谢!!!
    #skid_y 发表于2008-05-12 17:06:34  IP: 222.131.60.*
    您好!请问您有ICTCLAS的源码吗?
    能发给我一份吗?
    我的邮箱是generaldpy@163.com
    非常感谢!!!
    #sinboy 发表于2008-05-16 16:22:05  IP: 60.190.244.*
    发你们邮箱了,请查收
    #dove 发表于2008-05-19 11:02:52  IP: 58.154.201.*
    您好!请问您有ICTCLAS的Java版的源码吗?
    能发给我一份吗?
    我的邮箱是chujingnian@163.com
    非常感谢!!!
    #sinboy 发表于2008-05-21 15:06:51  IP: 60.190.244.*
    ICTCLA4J开源项目:http://code.google.com/p/ictclas4j/
    #leon 发表于2008-09-10 22:12:58  IP: 116.21.168.*
    您好! 我也需要JAVA版的ICTCLAS源码一份
    非常感谢您
    我的邮箱是 leiyongekin@126.com
    再次谢谢您了。
    发表评论  


    登录
    Csdn Blog version 3.1a
    Copyright © sinboy