Jan 5

    这篇文章是漫话中文分词算法的续篇。在这里,我们将紧接着上一篇文章的内容继续探讨下去:如果计算机可以对一句话进行自动分词,它还能进一步整理句子的结构,甚至理解句子的意思吗?这两篇文章的关系十分紧密,因此,我把前一篇文章改名为了《漫话中文自动分词和语义识别(上)》,这篇文章自然就是它的下篇。我已经在很多不同的地方做过与这个话题有关的演讲了,在这里我想把它们写下来,和更多的人一同分享。

    什么叫做句法结构呢?让我们来看一些例子。“白天鹅在水中游”,这句话是有歧义的,它可能指的是“白天有一只鹅在水中游”,也可能指的是“有一只白天鹅在水中游”。不同的分词方案,产生了不同的意义。有没有什么句子,它的分词方案是唯一的,但也会产生不同的意思呢?有。比如“门没有锁”,它可能是指的“门没有被锁上”,也有可能是指的“门上根本就没有挂锁”。这个句子虽然只能切分成“门/没有/锁”,但由于“锁”这个词既有可能是动词,也有可能是名词,因而让整句话产生了不同的意思。有没有什么句子,它的分词方案是唯一的,并且每个词的词义也都不再变化,但整个句子仍然有歧义呢?有可能。看看这句话:“咬死了猎人的狗”。这句话有可能指的是“把猎人的狗咬死了”,也有可能指的是“一只咬死了猎人的狗”。这个歧义是怎么产生的呢?仔细体会两种不同的意思后,你会发现,句子中最底层的成分可以以不同的顺序组合起来,歧义由此产生。

查看更多 »

Dec 29

     据说,爱出题也是 Geek 的一种特征。这几天在做语言工程课的期末大作业时,再一次见识了汉语里各种诡异的语法规则,然后突然想到了这样一种好玩的题型,于是竟然暂时放下手中的作业,花时间编了几个这样的题目来(感谢 Geek 小美女 localhost_8080 的帮助)。
    下面的每一组词中,前五个词都具有某种共同的性质,这种性质是后面五个词都不具有的。你能猜出每组词所对应的那个性质吗?

      (1) 反复、高兴、磨蹭、说笑、许多 | 地震、动静、金黄、巨大、雕刻
      (2) 鱼、路、船、裙子、短信 | 山、剑、伞、文章、水母
      (3) 锁、画、挂钩、标志、爱好 | 钟、鞋、密码、学问、照片
      (4) 腿、门、气味、鱼刺、笔记本 | 手、电、建筑、铅笔、地球仪
      (5) 车、地、桌子、屁股、筷子 | 水、胃、位置、大陆、晚餐

查看更多 »

Nov 26
汉字地图第二版
icon1 Matrix67 |icon2 Brain Storm | icon4 2011-11-26 21:13 | icon324 Comments »

    去年年初的时候,我曾经发布过某专业课期末作业研究过程中带来的一个有趣的副产品:汉字的字义网络图。不过,当时我是直接调用的 Mathematica 的相关函数,函数几乎不能调整参数,并且也无法处理边上权重不同的情况。最近在研究引力斥力绘图算法,突然想到把当时的数据重新画一张图。于是就有了汉字地图第二版(点击小图看大图):

   

查看更多 »

Oct 17

    昨天和同事聊到,汉语还真是奇怪,有“四分五裂”,有“五颜六色”,也有“七上八下”,但好像从没听说过六什么七什么的。于是想到,在汉语中,“数词 + 非数词 + 数词 + 非数词”的短语是怎样分布的呢?回到家后立即用 Mathematica 做了一个柱状图,绘出了九九八十一种数词短语模式在大规模真实语料中的出现频数。注意,这里统计的是总的出现频数,重复出现也会计算在内。另外,这是一个简单而机械的统计过程,因而 “三人一组”、“七天七夜”之类的非成语也被算了进来。

      

    嗯,对,没有任何意义,纯属无聊之作。

Sep 29

今天,我拿到了梦寐以求的大规模中文语料库,总大小超过 1 G ,覆盖了各个时代各种文体的中文资料。有了这个语料库后,我便能完成很多早就想做的事情,比方说,统计各种文体中出现频率最高的四字词。给定一段文本后,基本的统计过程如下:

  1. 统计所有连续四字的出现频数;
  2. 按频数对所有四字组合从高到低排序;
  3. 删掉所有包含非汉字字符(比如数字、标点)的四字组合;
  4. 删掉明显不成词或者不成词组的四字组合(这一步有人为因素,因此下面的数据并不是 100% 客观的);
  5. 列出频数最高的 10 个四字词。

所选用的统计对象基本上都是数十万字的篇幅,所有步骤都是用 Mathematica 实现的。下面是结果:
查看更多 »

Aug 8

    这道题的答案有几个字母?答案:four。

    有趣的是,这是唯一的答案。如果令函数 f(n) 表示非负整数 n 的英文表达中有多少个字母(不算空格和短横线), n=4 是该函数的唯一不动点。

       n    0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, …
      f(n)  4, 3, 3, 5, 4, 4, 3, 5, 5, 4, 3, …

    事实上, @IanMathmogician 发现了一个更有趣的“数学冷知识”:任取一个 0 到 100 之间的整数 n ,算出这个数的英文表达中的字符个数,再算出所得结果的英文表达的字符数,并这样一直迭代下去,最后总会得到数字 4 。我用 Mathematica 做了一张图片,可以让大家直观地看到,这真的可以说是条条大路通向数字 4 啊。

查看更多 »

Apr 27
蛋疼研究之单词等式
icon1 Matrix67 |icon2 Brain Storm | icon4 2011-04-27 11:39 | icon320 Comments »

    先给大家看两个“单词等式”:

ACT + DEAL = DONE
COIN + TRY = DIAL

    除了意义上说得通以外,从另外一个角度来看,这两个等式也是成立的。大家能猜到是什么吗?

查看更多 »

Mar 10

    记得第一次了解中文分词算法是在 Google 黑板报 上看到的,当初看到那个算法时我彻底被震撼住了,想不到一个看似不可能完成的任务竟然有如此神奇巧妙的算法。最近在詹卫东老师的《中文信息处理导论》课上再次学到中文分词算法,才知道这并不是中文分词算法研究的全部,前前后后还有很多故事可讲。在没有建立统计语言模型时,人们还在语言学的角度对自动分词进行研究,期间诞生了很多有意思的理论。

    中文分词的主要困难在于分词歧义。“结婚的和尚未结婚的”,应该分成“结婚/的/和/尚未/结婚/的”,还是“结婚/的/和尚/未/结婚/的”?人来判断很容易,要交给计算机来处理就麻烦了。问题的关键就是,“和尚未”里的“和尚”也是一个词,“尚未”也是一个词,从计算机的角度看上去,两者似乎都有可能。对于计算机来说,这样的分词困境就叫做“交集型歧义”。

    有时候,交集型歧义的“歧义链”有可能会更长。“中外科学名著”里,“中外”、“外科”、“科学”、“学名”、“名著”全是词,光从词库的角度来看,随便切几刀下去,得出的切分都是合理的。类似的例子数不胜数,“提高产品质量”、“鞭炮声响彻夜空”、“努力学习语法规则”等句子都有这样的现象。在这些极端例子下,分词算法谁优谁劣可谓是一试便知。

查看更多 »

« 更早的日志