自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(43)
  • 资源 (2)
  • 收藏
  • 关注

转载 最短路径

一、单源点最短路径问题 :问题描述:给定带权有向图G=(V, E)和源点v∈V,求从v到G中其余各顶点的最短路径。迪杰斯特拉(Dijkstra)提出了一个按路径长度递增的次序产生最短路径的算法。Dijkstra算法:基本思想:设置一个集合S存放已经找到最短路径的顶点,S的初始状态只包含源点v,对vi∈V-S,假设从源点v到vi的有向边为最短路径。以后每求得一条最短路

2012-09-15 13:15:24 819 1

转载 ICTCLAS 中科院分词系统 代码 注释 中文分词 词性标注

原文地址:http://qxred.ycool.com/post.1204714.html中科院分词系统概述这几天看完了中科院分词程序的代码,现在来做一个概述,并对一些关键的数据结构作出解释〇、总体流程考虑输入的一句话,sSentence="张华平欢迎您"总体流程:一、分词 "张/华/平/欢迎/您"二、posTagging "张/q 华/j 平/j 欢迎/v 您

2012-08-09 20:36:25 1396

转载 SharpICTCLAS分词系统简介(7)OptimumSegment

原文地址:http://www.cnblogs.com/zhenyulu/articles/675217.html上一篇文章说到经过NShortPath计算后,我们得到了数个候选分词方案,那么这么多个候选分词方案是如何最终成为一个分词结果的呢?其实这个过程是靠OptimumSegment完成的。SharpICTCLAS与ICTCLAS的OptimumSegment过程基本一样没有太大的

2012-08-07 22:26:35 672

转载 SharpICTCLAS分词系统简介(6)Segment

原文地址:http://www.cnblogs.com/zhenyulu/articles/673650.htmlDynamicArray与NShortPath是ICTCLAS中的基础类,本人在完成了基础改造工作后,就着手开始对Segment分词进行移植与改造。SharpICTCLAS中的改造主要体现在以下几方面:1)合并不同类中的部分代码原有ICTCLAS中使用了Se

2012-08-07 22:25:59 784

转载 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 311

转载 SharpICTCLAS分词系统简介(2)初步分词

原文地址:http://www.cnblogs.com/zhenyulu/articles/668035.htmlICTCLAS初步分词包括:1)原子切分;2)找出原子之间所有可能的组词方案;3)N-最短路径中文词语粗分三步。例如:“他说的确实在理”这句话。1)原子切分的目的是完成单个汉字的切分。经过原子切分后变成“始##始/他/说/的/确/实/在/理/末##末”。

2012-08-07 22:24:32 344

转载 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 368

转载 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 240

转载 SharpICTCLAS分词系统简介(4)NShortPath-1

原文地址:http://www.cnblogs.com/zhenyulu/articles/669795.htmlN-最短路径中文词语粗分是分词过程中非常重要的一步,而原有ICTCLAS中该部分代码也是我认为最难读懂的部分,到现在还有一些方法没有弄明白,因此我几乎重写了NShortPath类。要想说明N-最短路径代码是如何工作的并不容易,所以分成两步分,本部分先说说SharpICTCL

2012-08-07 22:21:15 373

转载 中科院中文分词系统ICTCLAS之NShortPath代码的详细分析

原文地址:http://blog.csdn.net/dancefire/article/details/1567881这两天我开始看ICTCLAS的实现代码了,和吕震宇的感觉完全一样,代码真的是糟糕透顶,呵呵,非常同情吕震宇和Sinboy能够那么认真地把那些代码读完。有了你们辛苦、认真的分析工作,让我更容易的读懂ICTCLAS的代码了,谢谢了。阅读过程中注意到了他们分析中有些地方有点小错误。

2012-08-07 22:19:26 1272

转载 中科院中文分词系统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 890

转载 ICTCLAS分词系统研究(十)--后记

原文地址:http://blog.csdn.net/sinboy/article/details/1637566FreeICTCLAS中文分词系统从2006年3月就开始接触,之后通过研读相关论文和源代码,写了一系列的学习笔记,给很多同样的中文分词爱好者提供了一个可参考的文档资料。但因为工作及其它原因(嘿嘿,说白就了就是比较偷懒,没有坚持下去),把该项目做成一个java版的原始想法一度中断。之后

2012-08-07 22:15:31 442

转载 ICTCLAS分词系统研究(九)--对最终结果做优化调整

原文地址:http://blog.csdn.net/sinboy/article/details/1637550在研究(八)中,我们得到了最终的分词结果了,好兴奋呀。不过,还有临门一脚不能忘了,对一些特殊情况做处理。主要是对叠词(相邻的两个字或词一样)及个别词性进行合并处理。比如,以“一片片的白云很好看”,他的最终分词结果是: 经过优化后的分词结果:序号

2012-08-07 22:14:37 456

转载 ICTCLAS分词系统研究(八)--生成最终分词结果

原文地址:http://blog.csdn.net/sinboy/article/details/1637530经过人名、地名等未登陆词的识别之后,再次生成二叉分词图表,求取N-最短路径。为何再次执行这样的循环,是因为在得到初分结果后又增加了新的节点(比如:人名或地名)到结果链表中,需要再次求取最短路径:经过优化后的二叉分词图表: 12345

2012-08-07 22:13:46 416

转载 ICTCLAS分词系统研究(六)--得到初分结果

原文地址:http://blog.csdn.net/sinboy/article/details/1637327仍然以“他说的确实在理”为例,经过NshortPath的处理后,我们可以得到N条最短二叉分词路径,如下:初次生成的分词图表: 1234567890始##始

2012-08-07 22:12:22 1168

转载 ICTCLAS分词系统研究(五)--N最短路径

原文地址:http://blog.csdn.net/sinboy/article/details/745498ICTCLAS和别的分司系统不一样的地方就是于--N最短路径分词算法。所谓N最短路径其实就是最短路径和最大路径的折中,保留前N个最优路径。这样做的目的就是对这两种方法取长补短,既能达到一个比较理解的分词不达意效果,又能保证分词不达意速度。在此处,我们中国人的中庸思想被完美体现:

2012-08-07 21:54:20 894

转载 ICTCLAS分词系统研究(四)--初次切分

原文地址:http://blog.csdn.net/sinboy/article/details/663123经过原子分词后,源字符串成了一个个独立的最小语素单位。下面的初次切分,就是把原子之间所有可能的组合都先找出来。算法是用两个循环来实现,第一层遍历整个原子单位,第二层是当找到一个原子时,不断把后面相邻的原子和该原子组合到一起,访问词典库看它能否构成一个有意义有词组。用数学方法

2012-08-07 21:34:29 713

转载 ICTCLAS分词系统研究(三)--原子切分

原文地址:http://blog.csdn.net/sinboy/article/details/624929ICTCLAS分词的第一步就是原子分词。但在进行原子切分之前,首先要进行断句处理。所谓断句,就是根据分隔符、回车换行符等语句的分隔标志,把源字符串分隔成多个稍微简单一点的短句,再进行分词处理,最后再把各个分词结果合起来,形成最终的分词结果。分成短句之后,即可进行原子分词

2012-08-07 21:26:33 1031

转载 ICTCLAS分词系统研究(二)--词典结构

原文地址:http://blog.csdn.net/sinboy/article/details/624909ICTCLAS的词典结构是理解分词的重要依据,通过这么一个数据结构设计合理访问速度高效的词典才能达到快速准备的分词的目的。通过阅读和分析源代码,我们可以知道,是程序运行初,先把词典加载到内存中,以提高访问的速度。源代码在Result.cpp的构造函数CResult()内

2012-08-07 21:00:31 1070

转载 CTCLAS分词系统研究(一)

原文地址:http://blog.csdn.net/sinboy/article/details/622596 ICTClAS分词系统是由中科院计算所的张华平、刘群所开发的一套获得广泛好评的分词系统,难能可贵的是该版的Free版开放了源代码,为我们很多初学者提供了宝贵的学习材料。      但有一点不完美的是,该源代码没有配套的文档,阅读起来可能有一定的障碍,尤其是对C/C++

2012-08-07 20:59:23 941

转载 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 754

转载 ICTCLAS代码学习笔记之CSpan类

CSpan是标注器,词性标注和角色标注都是使用这个类来完成的,使用的是相同结构的词典,另标注算法是隐马模型(HMM)完成的。类中使用的一些宏变量如下:#define MAX_WORDS_PER_SENTENCE 120 //!用于记录每个句子中最多词的个数#define MAX_UNKNOWN_PER_SENTENCE 200 //!用于定义每个句子中的最多未登陆词#define

2012-07-29 15:18:39 1663

转载 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 554

转载 ICTCLAS代码学习笔记之CUnknowWord类

未登录词识别(CUnknowWord类)ICTCLAS的未登陆词识别是基于角色标注的。具体的算法大家可以参照张华平等人03年的文章。算法的基本思想就是,首先定义一些与命名实体类型相关的角色,针对中国人名可能就有“姓“、“两字名的第一个字”、“两字名的第二个字”、“名字的前缀”、“名字的后缀”等等,然后通过一个已标注了角色的训练语料库进行学习,得到一些显著的角色串模板,例如“姓“+“两字名的第一

2012-07-29 15:15:59 905

转载 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 1012

转载 ICTCLAS代码学习笔记之CsegGraph类

CsegGraph类的相关笔记,这个类为词图类,主要是词的有向图。提供两个核心函数,一个是原子切分,一个是生成词图。为了保存相关的信息,有三个成员变量m_sAtom,m_nAtomLength和m_nAtomPOS分别存储句中的词(字符串)、每个词的长度(字符串长度)及该词的词性。由于都是预定义大小的buffer,因此还需要一个无符号整型变量m_nAtomCount来记录切分后词的个数。另外,在粗

2012-07-29 15:13:43 332

转载 ICTCLAS代码学习笔记之CNShortPath类

N-最短路径算法类,这个是核心算法之一,用于进行中文词语的粗分,算法的相关理论可参见论文《基于N-最短路方法的中文词语粗分模型》。类中包含的几个成员变量依次说明如下:m_apCost是一个动态数组的指针,用于记录词图中的各结点及其路径的权重值;m_nValueKind是无符号整型数据,用于记录共生成几个结果,一般为1,也可能生成多组结果;m_nVertex是无符号整型数据,用于记录

2012-07-29 15:13:01 346

转载 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 322

转载 ICTCLAS代码学习笔记之Utility

Utility.h和Utility.cpp是一些常调用的公有函数的集合。声明了一些宏和字符串操作的一些函数,具体说明如下:定义了句子开始标记CT_SENTENCE_BEGIN和结束标记CT_SENTENCE_END。定义了字符(包括单字节和双字节)的类型属性:单字节字符CT_SINGLE,一般为ASCII码范畴字符;分割符CT_DELIMITER主要为双字节情况,对于单字节的分割符在当前版本中

2012-07-29 15:10:19 691

转载 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 541

原创 C++学习笔记之运算符重载

operator 运算符>例1 :复数的+、-、=运算 // 文件1:complex1.h--复数类的定义#ifndef COMPLEX1_H#define COMPLEX1_Hclass Complex {public: Complex(double = 0.0, double = 0.0); Complex operator+(const Complex&)

2012-07-29 11:12:29 190

转载 天书般的ICTCLAS分词系统代码(二)

原文地址:http://www.cnblogs.com/zhenyulu/articles/657017.html上篇文章《天书般的ICTCLAS分词系统代码(一)》 说了说ICTCLAS分词系统有些代码让人无所适从,需要好一番努力才能弄明白究竟是怎么回事。尽管有很多人支持应当写简单、清晰的代码,但也有人持不同意见。主要集中在(1)如果效率高,代码复杂点也行; (2)只要注释写得好就行;(

2012-07-29 09:54:43 543

转载 天书般的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 539

原创 C++学习笔记之模板

函数模板template参数列表>例子1:函数模板例子 templatevoid sortArray(ElementType b[], int len) { for (int pass = 0; pass < len - 1; pass ++ ) for(int i = pass+1; i <= len-1; i++) if ( b[ pass ] > b[ i

2012-07-28 19:17:38 215

原创 C++学习笔记之异常

程序执行中需要处理异常动态分配空间时可能不会成功打开文件可能会失败除法运算时分母可能为0整数相乘可能溢出指针可能越界……异常处理方法一使用选择语句(if…else…)判断异常情况,即时处理正常程序流程和异常处理语句混在一起程序员往往无法专注于正常流程编程异常处理方法二使用C++异常处理机制判断异常情况,发现异常后抛出异常正常程序流程和异常

2012-07-28 19:09:12 318

原创 C++学习笔记之文件和流

文件普通文件二进制文件文本文件输入输出设备:键盘、显示器、打印机等标准输入流(用指针stdin操作)标准输出流(用指针stdout操作)标准错误流(用指针stderr操作)C++采用相同的方式操作普通文件和I/O设备打开一个已存在的文件或建立并打开一个新文件FILE *fopen( const char *filename, const char *mo

2012-07-28 17:12:25 487

原创 C++学习笔记之const

const约束const对象不能调用非const成员函数const成员函数不能调用非const成员函数不能修改const对象构造函数和析构函数可以修改const对象例子:初始化const数据成员的方法class Circle {public: Circle(double a = 5.0,double b = 5.0,double c = 5.0);private:

2012-07-28 16:27:13 260

原创 C++学习笔记之类和对象

构造函数函数名和类名完全相同没有返回类型作用:初始化类的对象一个类可以有多个构造函数创建类的对象时,自动调用类的构造函数创建一个对象时只调用一个构造函数(根据参数列表)且只在创建时调用一次构造函数可以确保对象在使用前被初始化析构函数函数名和类名相似(前面多了一个字符“~”)没有返回类型没有参数析构函数不能被重载作用:撤销对象前做清理工作,一般是释放对象在

2012-07-28 16:17:31 246

原创 C++学习笔记之双向链表

定义双向链表的节点:struct node{ int data; node * next; //指向后续节点 node * pre; //指向前面的节点 };建立双向链表新节点链入链尾原链尾节点的后继指针指向新节点新节点的前驱指针指向原链尾节点新链尾节点的后继指针置为空指针将新节点链入链头原链头节点的前驱指针指向新节点新节点的后继指

2012-07-28 15:47:52 319

原创 C++学习笔记之单向链表

例子:struct node { int data; node * next; };next:指向下一个node类型的结构,连接node 的纽带存放学生信息的链表节点struct student { int num; char name[20]; char sex; float score; stu

2012-07-28 15:34:59 309

中文信息处理基础-詹卫东

中文分词的整套资源,中文信息处理基础、字符串分析、字频分析、最大匹配法、正逆向、等等,最全最齐的资源,还带有课件

2012-10-06

C++学习课件

清华大学C++课件,非常好用~找了好久才找到完整的,分享给大家

2012-08-08

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除