三
31
说完了Python中的__call__函数,我们继续来完善segment.py,首先将Pw函数删除: 阅读全文
三
27
上一节我们已经解读了Pdist类中的__init__函数,这一节重点关注一下Python类中的__call__函数。首先简单的回顾一下上一节提到的一段话:缺省的情况,对于未知的单词,其概率均为1/N,但是对于每一个实例,Pdist均提供一个函数重载这个缺省值。为了避免过长 的单词拥有过高的概率,我们从概率10/N出发,对于候选单词的每一个字母都除以10。 阅读全文
三
14
对于Pw函数,这里稍微多做一点说。首先我们从一元语言模型的文件里读取单词及其计数,如果一个单词在语料库中出现,它的概率就是Count(word)/N,这里N是语料库的单词数目的规模。事实上,相对于使用完整的1千3百万单词(词型)的一元语言模型,Peter Norvig大牛对这个一元语言模型进行了简化:(a) 创建了一个更通用的词汇表,并且其中的单词是大小写不敏感(不区分)的,故“the”,”The”以及“THE”的计数是加在一起作为“the”的计数的;(b)只有由字母(letter)组合的单词才被计入其中,而对于其他包含数字或者标点的“单词”则被过滤,故“+170.002”以及“can’t”都不会被计入;(c)只列出其中最常用的1百万单词中的前1/3,也就是333333个单词。 阅读全文
三
10
本节我们进入《Beautiful Data》中分词的编码阶段,完整的程序及数据大家可以在“Natural Language Corpus Data: Beautiful Data”上下载ngrams.zip,我这里主要做一些解读。程序由python实现,无论在Linux或者Windows平台下,只要安装了相应的python版本,程序均可以通过测试,不过我所使用的是python2.6,注意,在python3.0上会有一些问题。 阅读全文
三
2
现在,我们就可以应用这个方法来进行分词了。首先定义一个函数:segment,其输入是一串没有空格的字符串,而输出则是一个单词列表,既最好的分词结果: 阅读全文
二
26
本节我们开始《Beautiful Data》中的“Word Segmentation”之旅,虽然Peter Norvig大牛从中文分词的需求讲起,但本节事实上讲得是英文分词,毕竟Google语言模型是以英文语料库为基础的,用中文分词举例Google语言模型就无用武之地了。一般说来,英文是不需要分词的,基本上tokenization就够了。但是某些时候,譬如英文网址(URLs)就没有空格,对于搜索引擎或者文字处理程序来说正确的分词就很重要了。不过,无论英文分词还是中文分词,利用统计语言模型来分词的思想本质是一样的。 阅读全文
六
4
这篇文章是师弟YYL写给52nlp的。实验室机器的cpu是intel 64位的,而我安装的是Ubuntu8.10的32位版本,因此《Ubuntu8.10下moses测试平台搭建全记录》里的SRILM的编译方法只适用于32位的系统。师弟新装了Ubuntu 9.04 64位的桌面版,发现参照我的方法和其他人写的SRILM编译方法并不合适,而关于64位系统下编译SRILM的文章又很少,于是给52nlp写了这篇文章,这里非常感谢! 阅读全文
三
28
Moses目前支持三个语言模型工具包:SRILM(The SRI language modeling toolkit),IRSTLM(IRST language modeling toolkit)和RandLM(the RandLM language modeling toolkit). SRILM我已经多次介绍过了,这里再介绍一下IRSTLM。 阅读全文
二
25
SRILM是著名的约翰霍普金斯夏季研讨会(Johns Hopkins Summer Workshop)的产物,诞生于1995年,由SRI实验室的Andreas Stolcke负责开发维护。 阅读全文
二
16
自然语言处理:概率语言模型
Natural Language Processing: Probabilistic Language Modeling 阅读全文