zoukankan      html  css  js  c++  java
  • 0-1语言建模当中会遇到的问题

    在对语言建模之前,先来说明一些基本的简单的概念。

    我们假设:

    有这样一个集合,在这个集合里面,是我们所有的涉及到的单词集,并且这个单词的集合是有限的(finite)。为了表示这个集合,用字母V来表示,例如V={the,a,man,telescopo,Beckham,two…}

    有了单词的集合,然后还需要有一个单词串的集合,为了更形象的解释,比如:

    the STOP

    a STOP

    the fan STOP

    the fan saw Beckham STOP

    the fan saw saw STOP

    the fan saw Beckham play for Real Madrid STOP

    这个单词串的集合使用V+来表示。

    为什么在每个的末尾要加一个STOP呢,这在以后的学习当中会用到,他有利于帮助我们开发一个概率模型。(convenient start to develop a probabilistic model)

    现在有了上面的定义,继续探讨自然语言处理建模当中的问题。

    现在:

    • 我们有一个有许多句子的样本,叫它训练样本training sample.
    • 我们需要学习一个概率分布p(learn a probability distribution p),p满足下面的条件:

            image

              这个公式向我们表明了,x属于V+当中的元素,所有其中的元素的概率相加结果应该是1.

    为了更形象的说明P是什么,可以看下面的例子:

    image

    那么,整体的流程是怎样的呢?

    我们把training sample测试样本当中的句子当作输入input,经过模型的处理,最终的输出便是p(output)。这是我们建立模型的作用。

    为什么要做这些事情(这些事情指的是上面的准备测试样本,计算概率、建模等)?

    起初,研究这些是为了解决语音识别当中遇到的难题,相关的还有手写识别等。这些技术的发展在NLP的很多领域楼来都证明十分的有用。

    这些概率p该怎么计算出来呢?

    原始的办法:

    • 假设我们有N个训练用的句子sentences
    • 每一个单词串,用x1 x2 x3…xn来表示,x表示每一个单词。使用c(x1…xn)来表示这个单词串在训练数据training data当中出现的次数。
    • 计算方法为:p(x1…xn)=c(x1…xn)/N

    这个办法,刚一看到会觉得没有什么不妥,其实如果细心的话可以发现这个公式是有问题的。如果某一个单词串并没有在训练数据中出现,那么这个概率p的值就会变为0,如果P=0的话,那么就没有能力去生成新的句子(has no ability to generalize to new sentences)。因为,在训练样本中没有出现,并不代表在测试的时候或者在实际生活中p=0的单词串不会出现,所以,必须要解决p=0的问题,在0-4中会提到。

  • 相关阅读:
    JMeter--聚合报告之 90% Line 正确理解
    jmeter--函数助手对话框之参数详解
    测试理论--如何根据需求设计测试用例
    java jdk 1.6 下载
    linux磁盘满时,如何定位并删除文件
    linux mysql 新增用户 分配权限
    Hibernate 中多对多(many-to-many)关系的查询语句
    springMVC的url-pattern /和/*的区别
    thinkphp多表关联并且分页
    thinkphp 模板里嵌入 php代码
  • 原文地址:https://www.cnblogs.com/createMoMo/p/3189892.html
Copyright © 2011-2022 走看看