语言模型

语言模型

一、什么是语言模型

  假设,对于一个观测值:“yuyanmoxing”,可能是由“语言模型”、“寓言模型”、“语言魔性”  … 等得到的,但是要想得到究竟是哪一个,通常需要计算它们的概率,譬如:P(“语言模型”|”yuyanmoxing”) > P(“寓言模型”|”yuyanmoxing”) > … ,(P(I|O)),则可以确定为“语言模型”。如何对这个概率进行计算呢?从数学的角度来看:

<span>语言模型</span>

<span>语言模型</span>

  如果我们直接用第一种方法,即为判别式模型,如果用第二种方法,即为生成式模型。当采用生成式模型的话,需要计算这个语句序列出现的概率即为P(I)的概率,如何计算P(I)的概率呢?

   计算一个文本序列w = { w1 ,w2  …  wn}的概率,需要知道他们之间的关系,我们对这个关系的建模即为语言模型。

 二、统计语言模型

  1.1 统计语言模型

  要计算一个语言序列的概率,关键是看这些词的排序的关系,我们可以利用马尔科夫假设,即当前词只与当前n-1个词有关。譬如,对于序列种一个词wi,我们需要知道w1w2 … wi-1出现时,wi发生的概率。然后根据联合概率公式即可得到句子的概率。假设句子为S,p(S)=p(w1,w2,w3,w4,w5,…,wn) =p(w1)p(w2|w1)p(w3|w1,w2)…p(wn|w1,w2,…,wn-1)。

  在实际操作中,如果文本较长,则p(wn|w1,w2,…,wn-1)的计算是很困难的,假设P个词,则需要计算的概率有Pn个,作比较得到最大的。因此,推出了n-gram模型。 当n取1、2、3时,n-gram模型分别称为unigram、bigram和trigram语言模型。模型的参数估计也称为模型的训练,一般采用最大似然估计(Maximum Likelihood Estimation,MLE)的方法对模型的参数进行估计:

<span>语言模型</span>

  C(X)表示X在训练语料中出现的次数。如给定句子:

  如给定句子集“<s> I am Sam </s>

                    <s> Sam I am </s>

                    <s> I do not like green eggs and ham </s>”

<span>语言模型</span>

 

  1.2 bigram与HMM

  HMM就是bigram语言模型,可以利用HMM的学习问题、概率计算问题、预测问题来解决相关的问题。当然也可以通过上面利用MLE进行估计等进行计算。参考:https://www.cnblogs.com/pinking/p/8531405.html

 

 三、神将网络语言模型

   n-gram模型将词看作符号,不能很好的计算词与词之间的内在联系,泛化能力较差,后得到神将网络模型(Neural n-gram),通过对样本进行训练获得计算概率的模型,而不是通过统计的方法求概率,如图:

<span>语言模型</span>

  神经网络模型的架构如图,输入为n-1个词的one-hot向量,包含一个隐层,神经网络的输出为softmax后每个词出现的概率,然后根据真实语料库种真实的下一个词的one-hot向量通过最小化交叉熵训练模型。

   neural n-gram模型可以捕获词之间的关系,但是利用的词有限,只能利用前n-1个词,无法捕获长期依赖,模型效果与n的选择有关。

 四、循环神经网络语言模型

  RNN模型可以捕获更长时间的信息,对于语料库的单词进行one-hot编码,增加句子开始/结束标志,其主要过程为:

<span>语言模型</span>

  如上神经网络的输出w4即为,P(w4|w1,w2,w3),若要得到一个序列的概率,将上面输出进行连乘即可。

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/119441.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • js页面的弹框怎么关闭啊

    js页面的弹框怎么关闭啊

    2021年10月31日
    37
  • protostuff java_protostuff

    protostuff java_protostuff软件简介protostuff是一个支持各种格式的一个序列化Java类库,包括JSON、XML、YAML等格式。示例代码:publicclassUserSchemaimplementsSchema{publicbooleanisInitialized(Useruser){returnuser.getEmail()!=null;}publicvoidmergeFrom(In…

    2022年5月2日
    39
  • 新东方尹圆圆老师的博客上找来的「建议收藏」

    新东方尹圆圆老师的博客上找来的「建议收藏」这些网站是从新东方尹圆圆老师的博客上找来的,希望大家好好利用:1.http://www.texun.cn/addrso/index.htm特训网:EnglishLearningWebsites2.http://broadcast-live.com/LiveRadioandTVfromAroundtheWorld3.http://www.nxenglish…

    2022年9月13日
    0
  • linux navicat 在线激活码 2021(注册激活)

    (linux navicat 在线激活码 2021)好多小伙伴总是说激活码老是失效,太麻烦,关注/收藏全栈君太难教程,2021永久激活的方法等着你。IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html1STL5S9V8F-eyJsaWNlbnNlSW…

    2022年3月27日
    222
  • jvmxmx和xms参数分析(设定优化校准)

    XmnXmsXmxXss有什么区别Xmn、Xms、Xmx、Xss都是JVM对内存的配置参数,我们可以根据不同需要区修改这些参数,以达到运行程序的最好效果。-Xms堆内存的最小大小,默认为物理内存的1/64-Xmx堆内存的最大大小,默认为物理内存的1/4-Xmn堆内新生代的大小。通过这个值也可以得到老生代的大小:-Xmx减去-Xmn-Xss设置每个线程可使用的内存大小,即…

    2022年4月18日
    44
  • java代码大全及详解_Java练级攻略[通俗易懂]

    java代码大全及详解_Java练级攻略[通俗易懂]Java作为一门使用范围巨大的语言,几乎所有的大型互联网或者分布式架构设计都采用Java相关的技术栈,这也是越来越多的人投入到Java的怀抱中,那Java练级应该怎样做起呢?首先给出几点学习建议:一定要有长时间学习,甚至终生学习的态度;一定要动手实操,无论实例多么简单,建议动手操作一遍;一定要学会思考,思考为什么要这样,而不是那样;不要乱买书,基础的知识是经过很长时间积累的;回顾一下技术的发展,你…

    2022年7月7日
    27

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号