![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
读ICTCLAS
文章平均质量分 74
princes_fan
这个作者很懒,什么都没留下…
展开
-
ICTCLAS分词系统研究(三)--原子切分
原文地址:http://blog.csdn.net/sinboy/article/details/624929ICTCLAS分词的第一步就是原子分词。但在进行原子切分之前,首先要进行断句处理。所谓断句,就是根据分隔符、回车换行符等语句的分隔标志,把源字符串分隔成多个稍微简单一点的短句,再进行分词处理,最后再把各个分词结果合起来,形成最终的分词结果。分成短句之后,即可进行原子分词转载 2012-08-07 21:26:33 · 1033 阅读 · 0 评论 -
SharpICTCLAS分词系统简介(4)NShortPath-1
原文地址:http://www.cnblogs.com/zhenyulu/articles/669795.htmlN-最短路径中文词语粗分是分词过程中非常重要的一步,而原有ICTCLAS中该部分代码也是我认为最难读懂的部分,到现在还有一些方法没有弄明白,因此我几乎重写了NShortPath类。要想说明N-最短路径代码是如何工作的并不容易,所以分成两步分,本部分先说说SharpICTCL转载 2012-08-07 22:21:15 · 381 阅读 · 0 评论 -
SharpICTCLAS分词系统简介(3)DynamicArray
原文地址:http://www.cnblogs.com/zhenyulu/articles/668695.html从前文可以看出,ICTCLAS中DynamicArray类在初步分词过程中起到了至关重要的所用,而ICTCLAS中DynamicArray类的实现比较复杂,可以说是包罗万象,在一个GetElement方法就综合考虑了1)row优先排序的链表;2)col优先排序的链表;3)当转载 2012-08-07 22:25:12 · 314 阅读 · 0 评论 -
ICTCLAS 中科院分词系统 代码 注释 中文分词 词性标注
原文地址:http://qxred.ycool.com/post.1204714.html中科院分词系统概述这几天看完了中科院分词程序的代码,现在来做一个概述,并对一些关键的数据结构作出解释〇、总体流程考虑输入的一句话,sSentence="张华平欢迎您"总体流程:一、分词 "张/华/平/欢迎/您"二、posTagging "张/q 华/j 平/j 欢迎/v 您转载 2012-08-09 20:36:25 · 1402 阅读 · 0 评论 -
天书般的ICTCLAS分词系统代码(一)
原地址:http://www.cnblogs.com/zhenyulu/articles/653254.htmlICTCLAS分词系统是由中科院计算所的张华平、刘群所开发的一套获得广泛好评的分词系统,该版的Free版开放了源代码,为初学者提供了宝贵的学习材料。我们可以在“http://sewm.pku.edu.cn/QA/”找到FreeICTCLASLinux.tar的C++代码。转载 2012-07-29 09:20:05 · 540 阅读 · 0 评论 -
天书般的ICTCLAS分词系统代码(二)
原文地址:http://www.cnblogs.com/zhenyulu/articles/657017.html上篇文章《天书般的ICTCLAS分词系统代码(一)》 说了说ICTCLAS分词系统有些代码让人无所适从,需要好一番努力才能弄明白究竟是怎么回事。尽管有很多人支持应当写简单、清晰的代码,但也有人持不同意见。主要集中在(1)如果效率高,代码复杂点也行; (2)只要注释写得好就行;(转载 2012-07-29 09:54:43 · 544 阅读 · 0 评论 -
ICTCLAS代码学习笔记之CNShortPath类
N-最短路径算法类,这个是核心算法之一,用于进行中文词语的粗分,算法的相关理论可参见论文《基于N-最短路方法的中文词语粗分模型》。类中包含的几个成员变量依次说明如下:m_apCost是一个动态数组的指针,用于记录词图中的各结点及其路径的权重值;m_nValueKind是无符号整型数据,用于记录共生成几个结果,一般为1,也可能生成多组结果;m_nVertex是无符号整型数据,用于记录转载 2012-07-29 15:13:01 · 351 阅读 · 0 评论 -
ICTCLAS代码学习笔记之CsegGraph类
CsegGraph类的相关笔记,这个类为词图类,主要是词的有向图。提供两个核心函数,一个是原子切分,一个是生成词图。为了保存相关的信息,有三个成员变量m_sAtom,m_nAtomLength和m_nAtomPOS分别存储句中的词(字符串)、每个词的长度(字符串长度)及该词的词性。由于都是预定义大小的buffer,因此还需要一个无符号整型变量m_nAtomCount来记录切分后词的个数。另外,在粗转载 2012-07-29 15:13:43 · 336 阅读 · 0 评论 -
ICTCLAS代码学习笔记之CSpan类
CSpan是标注器,词性标注和角色标注都是使用这个类来完成的,使用的是相同结构的词典,另标注算法是隐马模型(HMM)完成的。类中使用的一些宏变量如下:#define MAX_WORDS_PER_SENTENCE 120 //!用于记录每个句子中最多词的个数#define MAX_UNKNOWN_PER_SENTENCE 200 //!用于定义每个句子中的最多未登陆词#define转载 2012-07-29 15:18:39 · 1708 阅读 · 0 评论 -
ICTCLAS代码学习笔记之ContextStat类
ContextStat.h和ContextStat.cpp是上下文无关类CContextStat的相关声明和实现。该类的相关操作只在Cspan类中调用。该类中使用一个结构体tagContext,具体如下:struct tagContext{int nKey;//The key wordint **aContextArray;//The context arrayint *aTa转载 2012-07-29 15:17:13 · 561 阅读 · 0 评论 -
ICTCLAS代码学习笔记之CDictionary类
关于ICTCLAS词典的组织词典相关的操作都在自定义的类CDictionary里,相关文件为CDictionary.h和CDictionary.cpp;涉及几个结构体变量,只注明了变量没有写构造函数。struct tagWordResult{char sWord[WORD_MAXLENGTH]; //!可以用string代替//The wordint nHandle;//the转载 2012-07-29 15:06:25 · 549 阅读 · 0 评论 -
ICTCLAS代码学习笔记之Cqueue类
主要看Cqueue类,即Queue.h和Queue.cpp两个文件。Queue所包含的结点类型主要是用于处理最短路径时的相关信息,即struct tagQueueElem{unsigned int nParent; //!父结点的序号unsigned int nIndex;//number of index in the parent node,父结点中的序号ELEMENT_TYP转载 2012-07-29 15:11:56 · 330 阅读 · 0 评论 -
ICTCLAS代码学习笔记之CUnknowWord类
未登录词识别(CUnknowWord类)ICTCLAS的未登陆词识别是基于角色标注的。具体的算法大家可以参照张华平等人03年的文章。算法的基本思想就是,首先定义一些与命名实体类型相关的角色,针对中国人名可能就有“姓“、“两字名的第一个字”、“两字名的第二个字”、“名字的前缀”、“名字的后缀”等等,然后通过一个已标注了角色的训练语料库进行学习,得到一些显著的角色串模板,例如“姓“+“两字名的第一转载 2012-07-29 15:15:59 · 909 阅读 · 0 评论 -
ICTCLAS代码学习笔记之Utility
Utility.h和Utility.cpp是一些常调用的公有函数的集合。声明了一些宏和字符串操作的一些函数,具体说明如下:定义了句子开始标记CT_SENTENCE_BEGIN和结束标记CT_SENTENCE_END。定义了字符(包括单字节和双字节)的类型属性:单字节字符CT_SINGLE,一般为ASCII码范畴字符;分割符CT_DELIMITER主要为双字节情况,对于单字节的分割符在当前版本中转载 2012-07-29 15:10:19 · 700 阅读 · 0 评论 -
ICTCLAS代码学习笔记之Csegment类
Csegment类的相关学习笔记,重拾炉灶,嘿嘿。CSegment类是一个比较重要的类,词语切分的核心工作是在这一部分完成的。成员变量m_pWordSeg是一个指向WORD_RESULT 的二维指针([MAX_SEGMENT_NUM][MAX_WORDS])。注意二维数组的大小是在构造函数中预定义的,MAX_SEGMENT_NUM为10,MAX_WORDS为650,有可能会溢出,程序对于MAX转载 2012-07-29 15:15:19 · 1021 阅读 · 0 评论 -
ICTCLAS分词系统研究(五)--N最短路径
原文地址:http://blog.csdn.net/sinboy/article/details/745498ICTCLAS和别的分司系统不一样的地方就是于--N最短路径分词算法。所谓N最短路径其实就是最短路径和最大路径的折中,保留前N个最优路径。这样做的目的就是对这两种方法取长补短,既能达到一个比较理解的分词不达意效果,又能保证分词不达意速度。在此处,我们中国人的中庸思想被完美体现:转载 2012-08-07 21:54:20 · 899 阅读 · 0 评论 -
ICTCLAS分词系统研究(二)--词典结构
原文地址:http://blog.csdn.net/sinboy/article/details/624909ICTCLAS的词典结构是理解分词的重要依据,通过这么一个数据结构设计合理访问速度高效的词典才能达到快速准备的分词的目的。通过阅读和分析源代码,我们可以知道,是程序运行初,先把词典加载到内存中,以提高访问的速度。源代码在Result.cpp的构造函数CResult()内转载 2012-08-07 21:00:31 · 1076 阅读 · 0 评论 -
ICTCLAS分词系统研究(四)--初次切分
原文地址:http://blog.csdn.net/sinboy/article/details/663123经过原子分词后,源字符串成了一个个独立的最小语素单位。下面的初次切分,就是把原子之间所有可能的组合都先找出来。算法是用两个循环来实现,第一层遍历整个原子单位,第二层是当找到一个原子时,不断把后面相邻的原子和该原子组合到一起,访问词典库看它能否构成一个有意义有词组。用数学方法转载 2012-08-07 21:34:29 · 716 阅读 · 0 评论 -
ICTCLAS分词系统研究(六)--得到初分结果
原文地址:http://blog.csdn.net/sinboy/article/details/1637327仍然以“他说的确实在理”为例,经过NshortPath的处理后,我们可以得到N条最短二叉分词路径,如下:初次生成的分词图表: 1234567890始##始转载 2012-08-07 22:12:22 · 1174 阅读 · 0 评论 -
ICTCLAS分词系统研究(八)--生成最终分词结果
原文地址:http://blog.csdn.net/sinboy/article/details/1637530经过人名、地名等未登陆词的识别之后,再次生成二叉分词图表,求取N-最短路径。为何再次执行这样的循环,是因为在得到初分结果后又增加了新的节点(比如:人名或地名)到结果链表中,需要再次求取最短路径:经过优化后的二叉分词图表: 12345转载 2012-08-07 22:13:46 · 421 阅读 · 0 评论 -
ICTCLAS分词系统研究(十)--后记
原文地址:http://blog.csdn.net/sinboy/article/details/1637566FreeICTCLAS中文分词系统从2006年3月就开始接触,之后通过研读相关论文和源代码,写了一系列的学习笔记,给很多同样的中文分词爱好者提供了一个可参考的文档资料。但因为工作及其它原因(嘿嘿,说白就了就是比较偷懒,没有坚持下去),把该项目做成一个java版的原始想法一度中断。之后转载 2012-08-07 22:15:31 · 445 阅读 · 0 评论 -
中科院中文分词系统ICTCLAS之NShortPath代码的详细分析
原文地址:http://blog.csdn.net/dancefire/article/details/1567881这两天我开始看ICTCLAS的实现代码了,和吕震宇的感觉完全一样,代码真的是糟糕透顶,呵呵,非常同情吕震宇和Sinboy能够那么认真地把那些代码读完。有了你们辛苦、认真的分析工作,让我更容易的读懂ICTCLAS的代码了,谢谢了。阅读过程中注意到了他们分析中有些地方有点小错误。转载 2012-08-07 22:19:26 · 1279 阅读 · 0 评论 -
SharpICTCLAS分词系统简介(5)NShortPath-2
原文地址:http://www.cnblogs.com/zhenyulu/articles/672442.html在了解了1-最短路径的计算方式后,我们看看N-最短路径的计算。N-最短路径的计算方式与1-最短路径基本相同,只是在记录所有可达路径时,要保留最短的前N个结果。让我们仍然以上篇文章的案例来看看如何实现N-最短路径的运算。1、数据表示这里我们仍然沿用前文转载 2012-08-07 22:22:37 · 245 阅读 · 0 评论 -
SharpICTCLAS分词系统简介(6)Segment
原文地址:http://www.cnblogs.com/zhenyulu/articles/673650.htmlDynamicArray与NShortPath是ICTCLAS中的基础类,本人在完成了基础改造工作后,就着手开始对Segment分词进行移植与改造。SharpICTCLAS中的改造主要体现在以下几方面:1)合并不同类中的部分代码原有ICTCLAS中使用了Se转载 2012-08-07 22:25:59 · 788 阅读 · 0 评论 -
SharpICTCLAS分词系统简介(7)OptimumSegment
原文地址:http://www.cnblogs.com/zhenyulu/articles/675217.html上一篇文章说到经过NShortPath计算后,我们得到了数个候选分词方案,那么这么多个候选分词方案是如何最终成为一个分词结果的呢?其实这个过程是靠OptimumSegment完成的。SharpICTCLAS与ICTCLAS的OptimumSegment过程基本一样没有太大的转载 2012-08-07 22:26:35 · 681 阅读 · 0 评论 -
ICTCLAS分词系统研究(九)--对最终结果做优化调整
原文地址:http://blog.csdn.net/sinboy/article/details/1637550在研究(八)中,我们得到了最终的分词结果了,好兴奋呀。不过,还有临门一脚不能忘了,对一些特殊情况做处理。主要是对叠词(相邻的两个字或词一样)及个别词性进行合并处理。比如,以“一片片的白云很好看”,他的最终分词结果是: 经过优化后的分词结果:序号转载 2012-08-07 22:14:37 · 457 阅读 · 0 评论 -
SharpICTCLAS分词系统简介(1)读取词典库
原文地址:http://www.cnblogs.com/zhenyulu/articles/668024.htmlICTCLAS分词的总体流程包括:1)初步分词;2)词性标注;3)人名、地名识别;4)重新分词;5)重新词性标注这五步。就第一步分词而言,又细分成:1)原子切分;2)找出原子之间所有可能的组词方案;3)N-最短路径中文词语粗分三步。在所有内容中,词典库的读取是最基本转载 2012-08-07 22:23:37 · 375 阅读 · 0 评论 -
SharpICTCLAS分词系统简介(2)初步分词
原文地址:http://www.cnblogs.com/zhenyulu/articles/668035.htmlICTCLAS初步分词包括:1)原子切分;2)找出原子之间所有可能的组词方案;3)N-最短路径中文词语粗分三步。例如:“他说的确实在理”这句话。1)原子切分的目的是完成单个汉字的切分。经过原子切分后变成“始##始/他/说/的/确/实/在/理/末##末”。转载 2012-08-07 22:24:32 · 355 阅读 · 0 评论 -
中科院中文分词系统ICTCLAS之CSegment的GenerateWord()详细分析
原文地址:http://blog.csdn.net/dancefire/article/details/1606602一、简介这次分析的是ICTCLAS中的//Generate Word according the segmentation routebool CSegment::GenerateWord(int **nSegRoute, int nIndex)转载 2012-08-07 22:18:18 · 895 阅读 · 0 评论 -
CTCLAS分词系统研究(一)
原文地址:http://blog.csdn.net/sinboy/article/details/622596 ICTClAS分词系统是由中科院计算所的张华平、刘群所开发的一套获得广泛好评的分词系统,难能可贵的是该版的Free版开放了源代码,为我们很多初学者提供了宝贵的学习材料。 但有一点不完美的是,该源代码没有配套的文档,阅读起来可能有一定的障碍,尤其是对C/C++转载 2012-08-07 20:59:23 · 945 阅读 · 0 评论 -
ICTCLAS代码学习笔记之CResult类
最后一个核心文件CResult类。这个类是最外层的包装,私有成员变量包括一个切分器(m_Seg)一个词性标记器m_POSTagger、两个词典(核心词典m_dictCore和二元词典m_dictBigram)、三个未登陆词识别器(m_uPerson,m_uTransPerson,m_uPlace)。公有成员变量中的m_pResult记录切词及标注的结果,m_dResultPossibility用于转载 2012-07-29 15:20:52 · 771 阅读 · 0 评论