分类目录归档:算法

n-gram 分词程序

经过一个月的开发,我的N-gram程序终于可以进行分词了,虽然由于语料库太小导致统计数据不足,分词效果不是很理想,但至少我终于从零开始完成了这个程序的开发,开发了分词程序的基本模块,包括语料预处理,分解,词典管理,从语料中统计信息,分词等功能。通过开发,我终于初步明白了数据挖掘、自然语言处理、搜索技术中数据处理所面临的一些问题,也明白了自己努力的方向。在大语料方面,我自己开发了一个小方案,但效率却比较低。
春节,也许还会有新的进展,特别是大语料的处理还需要进一步优化。

 

2010-10-18:今天找出了以前的代码,上传到了 http://idocbox.googlecode.com/files/xSpliter-0.1.zip 供大家了解一些简单的原理。 注意,我的代码是5年前写的,现在看,这个代码有很多问题的。所以,大家就当我献丑了,仅仅学习下就可以。

        用法:下载完了,把代码解压后的工程导入到eclipse, 通过执行里面的单元测试来了解统计、建统计词典、分词的过程。 

 

      有问题欢迎交流,如果我有时间,我会写一个分布式、更加智能、灵活、高效的算法实现给大家的。

作者:豆博草堂

又突破一个难关

在这段学习NLP过程中,终于生成了语言识别所需的配置文件(其实要细细的看就会发现那个文件的格式很简单.), 学会了如何识别文本所采用的语言的方法,同时也发现那个软件中所采用的算法抗干扰(有人也称鲁棒性)能力较弱,如果你在中文中夹杂几个英文单词,她就会识别错,现在已经明白,西文与中文构词元素是完全不同的,西文采用字母构词,同样行数的文本,西文统计词频普遍偏高,而中文每个字互不相关,词频非常的低,这样计算数据自然不能相提并论(知道为什么吗?还记得不等式:(a+ c)/(b+c) > a/b, where 0<a<b, c>0吗?就是这个原因。)。这是个问题,要研究下。

对于我开发的分词程序,我决定先放着, 要让它非常高效的运行估计再没有2个月是达不到的,毕竟我投入了一个月才写出语料预处理,分解,词典管理,从语料中统计信息,分词等,而且分词效果不好,计算效率低, 我采用的是统计方法。与其再投入大量精力和时间自己摸索着开发,贻误时机,不如直接拿别人做好的开源产品直接来用(虽然也有些问题),先让系统运转起来,然后投入精力到最核心的部分,那样才值。

原来我以为google的搜索的所有技术都是自己开发的,现在才发现,有很多他是购买别的公司的,比如中文处理技术,他是购买http://www.basistech.com 的. 其实,每个巨人的成长都是在许多人的成果基础上发展起来的, 举例略。
进步了一点点, 路还很长…

作者:豆博草堂