摘要:1、SharpICTCLAS中词库的扩充 如果对SharpICTCLAS目前词库不满意的化,可以考虑扩充现有词库。扩充方法非常简单,代码如下: Copy Code 词库扩充 static void Main( string[] args) ...
阅读全文
文章分类 - ICTCLAS
摘要:前文对SharpICTCLAS中的一些主要内容做了介绍,本文介绍一下SharpICTCLAS中一些其它考虑,包括事件机制以及如何使用SharpICTCLAS。 1、SharpICTCLAS中的事件 分词过程比较复杂,所以很可能有人希望能够追踪分词的过程,设置代码断点比较麻烦,因此SharpICTCL...
阅读全文
摘要:上一篇文章说到经过NShortPath计算后,我们得到了数个候选分词方案,那么这么多个候选分词方案是如何最终成为一个分词结果的呢?其实这个过程是靠OptimumSegment完成的。SharpICTCLAS与ICTCLAS的OptimumSegment过程基本一样没有太大的变化。 1、Optimum...
阅读全文
摘要:DynamicArray与NShortPath是ICTCLAS中的基础类,本人在完成了基础改造工作后,就着手开始对Segment分词进行移植与改造。SharpICTCLAS中的改造主要体现在以下几方面: 1)合并不同类中的部分代码 原有ICTCLAS中使用了SegGraph与Segment两个类完成...
阅读全文
摘要:在了解了1-最短路径的计算方式后,我们看看N-最短路径的计算。 N-最短路径的计算方式与1-最短路径基本相同,只是在记录所有可达路径时,要保留最短的前N个结果。让我们仍然以上篇文章的案例来看看如何实现N-最短路径的运算。 1、数据表示 这里我们仍然沿用前文例子,对下图求N-最短路径,每条边的权重已经...
阅读全文
摘要:N-最短路径中文词语粗分是分词过程中非常重要的一步,而原有ICTCLAS中该部分代码也是我认为最难读懂的部分,到现在还有一些方法没有弄明白,因此我几乎重写了NShortPath类。要想说明N-最短路径代码是如何工作的并不容易,所以分成两步分,本部分先说说SharpICTCLAS中1-最短路径是如何实...
阅读全文
摘要:从前文可以看出,ICTCLAS中DynamicArray类在初步分词过程中起到了至关重要的所用,而ICTCLAS中DynamicArray类的实现比较复杂,可以说是包罗万象,在一个GetElement方法就综合考虑了1)row优先排序的链表;2)col优先排序的链表;3)当nRow为-1时的行为;4...
阅读全文
摘要:ICTCLAS初步分词包括:1)原子切分;2)找出原子之间所有可能的组词方案;3)N-最短路径中文词语粗分三步。 例如:“他说的确实在理”这句话。 1)原子切分的目的是完成单个汉字的切分。经过原子切分后变成“始##始/他/说/的/确/实/在/理/末##末”。 2)然后根据“词库字典”找出所有原子之间...
阅读全文
摘要:ICTCLAS分词的总体流程包括:1)初步分词;2)词性标注;3)人名、地名识别;4)重新分词;5)重新词性标注这五步。就第一步分词而言,又细分成:1)原子切分;2)找出原子之间所有可能的组词方案;3)N-最短路径中文词语粗分三步。 在所有内容中,词典库的读取是最基本的功能。ICTCLAS中词典存放...
阅读全文
摘要:在研究了一段时间中科院计算所张华平、刘群所开发的ICTCLAS分词系统(Free版)代码后,阅读了大量的相关资料,我开始着手将C++的ICTCLAS分词系统移植到.net平台下,并取得了较好的实验结果。这种移植并不容易,在研究了ICTCLAS分词理论的同时还要阅读C++代码实现,其中遇到了很多困惑、...
阅读全文
摘要:上篇文章《天书般的ICTCLAS分词系统代码(一)》 说了说ICTCLAS分词系统有些代码让人无所适从,需要好一番努力才能弄明白究竟是怎么回事。尽管有很多人支持应当写简单、清晰的代码,但也有人持不同意见。主要集中在(1)如果效率高,代码复杂点也行; (2)只要注释写得好就行;(3)软件关键在思路(这我同意),就好像买了一台电脑,不管包装箱内的电脑本身怎么,一群人偏在死扣那个外面透明胶带帖歪了(这我...
阅读全文
摘要:ICTCLAS分词系统是由中科院计算所的张华平、刘群所开发的一套获得广泛好评的分词系统,该版的Free版开放了源代码,为初学者提供了宝贵的学习材料。我们可以在“http://sewm.pku.edu.cn/QA/”找到FreeICTCLASLinux.tar的C++代码。 可是目前该版本的ICTCLAS并没有提供完善的文档,所以阅读起来有一定的难度,所幸网上可以找到一些对ICTCLAS进行代码分析...
阅读全文