无聊小制作:“数词+非数词+数词+非数词”的出现频数

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

      

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

无聊小研究:各种文体中出现频率最高的四字词

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

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

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

数学冷知识:不断取英文表达的字符数,最后总会得到数字4

    这道题的答案有几个字母?答案: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 啊。

Read more…

漫话中文自动分词和语义识别(上):中文分词算法

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

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

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

Read more…