Beautiful Data-统计语言模型的应用三:分词1

  本节我们开始《Beautiful Data》中的“Word Segmentation”之旅,虽然Peter Norvig大牛从中文分词的需求讲起,但本节事实上讲得是英文分词,毕竟Google语言模型是以英文语料库为基础的,用中文分词举例Google语言模型就无用武之地了。一般说来,英文是不需要分词的,基本上tokenization就够了。但是某些时候,譬如英文网址(URLs)就没有空格,对于搜索引擎或者文字处理程序来说正确的分词就很重要了。不过,无论英文分词还是中文分词,利用统计语言模型来分词的思想本质是一样的。
  首先来看一个例子,如“choosespain.com”,这是一个希望说服你“choose Spain”(选择西班牙)作为旅游目的地的网站。如果被分成“chooses pain”(选择痛苦),其结果可想而知。对于人类来说,凭借多年的经验,做出正确的分词应该没什么问题,但是对于计算机,将这些经验进行编码几乎是不可能的任务。不过还是有“捷径”可以走的:对于这两条候选的分词短语,在Google语言模型中的二元(bigram)表中进行查找,其中“choose Spain”出现了3,210次,而”chooses pain”则没有出现,这也就意味着”chooses pain”在Google的trillion-word语料库中出现的次数少于40次。因此,“choose Spain”至少有80倍的可能作为正确的分词结果。
  再来看另一个例子,假设存在这样一个未分词的短语“insufficientnumbers”,如果我们不考虑Google语言模型里的单词的大小写问题,以下两种分法的计数结果是:

  insufficient numbers 20751
  in sufficient numbers 32378

  虽然后者比前者多了大约50%,但是相对于Google语料库的规模,区别不是很明显,尽管我们可以猜测哪一个是正确的分词结果,却不能肯定这个猜测。对于不确定的问题,我们没有任何办法计算出一个百分百正确的答案,也没有一个完整的模型使得只有一个结果是正确的,事实上对于人类专家来说也是如此。不过,对于解决这类不确定的问题,还是有一套既定的方法:
  1.定义一个概率模型。我们不能通过定义所有的要素(语义、语法、词汇等)来决定“choose Spain”是否是一个更好的候选分词结果,但是可以通过一个简化的模型给出一个近似的概率。对于较短的候选短语如“choose Spain”,可以通过在语料库数据中查找n-gram次数的方式来决定其概率。对于较长的候选短语,可以通过将其分解为较小短语的方式来得到相关的概率。至于未登录词,也可以通过一些方法估计其概率。这里的关键点就是定义一个语言模型(language model)——一个覆盖了大多数字符串的某种语言的概率分布——并且通过语料库数据学习相关的参数,然后利用该模型来决定每一个候选短语的概率。
  2.枚举候选短语。我们不能确定”insufficient numbers”或者”in sufficient numbers”中哪一个是更可能的分词短语,但是我们可以将这两个均看作是候选短语,甚至““in suffi cient numb ers”也是候选。在这一步里,我们暂时不做判断,而是尽可能多的枚举各种可能的候选短语,或者仔细的挑选样本。
  3.选择最可能的候选短语。对于每一个候选短语,利用语言模型计算其概率,然后选择获得最高概率的那一个短语作为最佳结果。
  如果你喜欢数学公式,那么这个方法可以定义为:
   best = argmax c∈candidates P(c)
  或者,如果你喜欢计算机编码(我们将使用Python),也可以如下描述:
   best = max(c in candidates, key=P)

未完待续:分词2

注:原创文章,转载请注明出处“我爱自然语言处理”:www.52nlp.cn

本文链接地址:http://www.52nlp.cn/beautiful-data-统计语言模型的应用三分词1

此条目发表在中文分词, 语言模型分类目录,贴了, , , , , , 标签。将固定链接加入收藏夹。

Beautiful Data-统计语言模型的应用三:分词1》有 6 条评论

  1. Brishen说:

    “或者,如果你喜欢计算机编码(我们将使用Pythyon)”
    是python哦,呵呵

    [回复]

    52nlp 回复:

    呵呵,谢谢,已做修改,nltk研究的怎么样了?

    [回复]

    Brishen 回复:

    惭愧啊,就是去年暑假通读了全书,将代码敲了一下。后来做实验写论文就没再看了哦,呵呵。

    [回复]

    52nlp 回复:

    能通读全书并练习代码很不错了,呵呵!

  2. wangning说:

    《Natural Language Processing with Python 》这本书的确不错,很适合刚入门不久但又苦于无法计算机实现的学习者。而且还附带工具包,有时间一定要仔细研究一下!

    [回复]

    52nlp 回复:

    恩,再配合《自然语言处理综论》或者《统计自然语言处理基础》看看理论方面的知识就更好了!

    [回复]

发表评论

电子邮件地址不会被公开。 必填项已用*标注