月度归档:2011年06月

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 的. 其实,每个巨人的成长都是在许多人的成果基础上发展起来的, 举例略。
进步了一点点, 路还很长…

作者:豆博草堂

用python开发windows程序

今天终于可以用wxPython开发GUI程序了,非常高兴。把其中的一些注意点写下来以供参考。
在windows XP平台下,首先需要做以下环境的配置:
1. 首先是安装python ,安装完之后将python/bin所在目录添加到path中。
2. 安装wxPython, 此时要注意wxPython的版本要与前面python的版本一致。
3. 安装py2exe, 这是windows平台下一个非常好的python程序发布工具,可以将python程序编译成exe而脱离python环境执行。
做完上面的安装后,我们就可以来测试一下了

———————————————–
#wxDemo.py

import wx

class App(wx.App):
def OnInit(self):
frame = wx.Frame(parent=None, title=’Bare’)
frame.Show()
return True

app = App()
app.MainLoop()
———————————————-
#setup.py
from distutils.core import setup
import py2exe

setup(windows=["wxDemo.py"])
———————————————-
在命令行执行python setup.py py2exe,当编译完成后,会有一个dist文件夹,里面有一个wxDemo.exe,这就是编译后的exe,在发布时,需要将这个文件夹下面的 library.zip,dll和wxDemo.exe放到同一个目录下,否则程序不能执行。现在,双击wxDemo.exe,你就会看到一个窗口了:)

作者:豆博草堂