在我们谈论自然语言处理技术时,通常我们指的是统计自然语言处理。统计和语言,一边是枯燥的数字,一边是鲜活的文字,放在一起似乎是一个很奇怪的组合。难不成我们在表达或者理解的时候,还要时刻想着数学期望值和方差么?何况对于许多人来说,大学期间的概率统计等课程体验,实在不足为外人道。
说到这里,先打个岔,心理学中有过一个很著名的实验:
首先,向测试者给出一个叫做Linda的人物特征及背景描述:“Linda”,是一位31岁的单身女性,直率,非常聪明。她在大学期间主修哲学,学生时期非常关注种族歧视问题和社会偏见,同时也参加过反核武器示威游行。
然后,参与测试的人员被要求将以下几个事件按照概率从大到小排列出来:
1)Linda是一名女权主义者
2)Linda是一名银行出纳员
3)Linda是一名女权主义者和银行出纳员
有兴趣的读者也可以列一下。
如果你的答案中,3)排在了2)之前,那么恭喜,你的想法和87%参加此项测试的斯坦福大学研究生一样,都错了。
正确答案是无论如何,3)的概率都不可能能超过1)、2)。概率理论告诉我们,两个事件的联合概率,总是不大于其中单一事件的概率。但是这个简单的法则却时常被人们忽略(无关智商和教育背景),这就是所谓的林达问题。这一问题产生的原因,当然不是几句话能够说得清楚,但是它至少告诉我们,人脑运用概率统计理论的娴熟程度,显然不甚乐观。
回到语言上来,语言学有两个基本问题:
1)人们说的话是什么。
2)人们谈及的事物,对应现实世界中的什么。
这两个问题,前者侧重词法语法,后者侧重语义。统计自然语言处理,就是期望借助统计的方法,来解决第一个问题,即研究分析人们说的话本身。其中涉及到的方面有:文本划分(特别的,中文需要分词)、词法消歧、句法消歧等。
统计自然语言处理的手段,是统计语言模型。基于统计的语言建模,简单而言,就是处理一个大量经过预先分词以及词性标注的文本库(语料),计算在这个语料库当中每个词出现的词频,以及和其他词相邻共现的词频,这个处理过程称为训练。有了这些词频信息,就能很大程度上模拟词在真实语言中的分布情况,为诸如分词,搭配发现,输入法乃至语音识别等应用打下基础。拿分词来说好了,通常而言,“中国人民”切分为“中国.人民”的概率都是大于“中国人.民”,就是因为根据相应的统计语言模型的词频信息计算联合概率,“中国.人民”要大于“中国人.民”。当然整句的切分会更加复杂,多种切分方式不能经由简单的计算得出哪一种最优,因此一般会用到隐含马儿可夫模型(Hidden Markov Modle),或者条件随机场(Conditional Random Field)等方法。
对于统计语言模型,Google黑板报上有很精彩的描述。
(http://www.googlechinablog.com/2006/04/blog-post.html)
总之呢,语料库以及所对应的统计语言模型的质量,会很大程度影响到语言处理的最终效果。譬如使用人民日报的语言样本,对BBS语言进行分析,就很难得出令人满意的结果。
原因很简单,咱们使用的很多BBS用语,或许从来没有在人民日报编辑们的字典里出现过。

2:01 上午
你好,看了你的blog觉得很有意思。我是对外汉语专业的,NLP和Machine translation 也是我们的研究方向,但都是在Linguistics的范畴内,研究句法规则之类的。统计语言模型倒少有研究,用统计学的方式来分词和甄别词语是很有效,但是针对长句翻译恐怕还是有困难(我们在教学过程中发现,老外在词汇方面没有问题,但在中文的虚词,句法上有很大困难)
另外,你最后提到了语料库的问题,现在官方的语料库确实太旧,那buzzwords之类的统计,难道只有自己动手丰衣足食了么……