zoukankan      html  css  js  c++  java
  • 001-语言模型

    语言模型:

    我 今天 下午 打 篮球

    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(S)被称为语言模型,即用来计算一个句子概率的模型

    p(w2|w1)p(w3|w1,w2)...p(wn|w1,w2,...,wn-1)称为条件概率,在w1发生的情况下,发生w2的概率,在w1,w2都发生的情况下w3发生的概率。

    每一个词的出现都不是独立的,都跟之前的词有关系。

    再将每个概率乘起来,就是这一句话会出现的概率。

     

     

    语言模型存在的问题:

     

    如果有一段很长的话,那么这个概率将会很小

    比如有一句话:我今天要学习深度学习算法,学习的内容是自然语言处理。

    wi是最后一个词,处理

    那么处理这个词在整句话中出现的概率,就是整句话的概率除以这句话没有出现处理的概率。

    这个缺点就是计算量很大,会导致过于稀疏,参数空间会很大。

     

    解决思路:

    假设下一个词的出现依赖它前面的一个词:
    p(S)=p(w1)p(w2|w1)p(w3|w1,w2)...p(wn|w1,w2,...,wn-1)
    =p(w1)p(w2|w1)p(w3|w2)...p(wn|wn-1)

     

    假设下一个词的出现依赖它前面的两个词:
    p(S)=p(w1)p(w2|w1)p(w3|w1,w2)...p(wn|w1,w2,...,wn-1)
    =p(w1)p(w2|w1)p(w3|w1,w2)...p(wn|wn-1,wn-2)

    这么做的目的不是为了单纯的减少计算量和减少参数空间。

    在通常的情况下,一个词的出现也就是跟前2~3个词有很大的关系。

    这种模型称作 N-gram模型

    例如下面的例子:

    p(I want chinesefood)=

    P(I)

    ×P(want|I)

    ×P(chinese|want)

    ×P(food|chinese)

     I后面接want的概率就是827/2533=0.33

    参数个数:

    N表示词典中有多少个词

    n表示关联前几个词

    词典中自身有个组合,

    那么参数的个数:

    一般n=2,n=3,n=4就可以了

     

  • 相关阅读:
    百战天虫中子弹的挖坑效果
    as3对象销毁是否需要全部属性置null?
    事件冒泡其实就是它给它的parent send一个事件
    25个Photoshop创作的励志展示
    15个免费的关于杂志的wordpress主题
    wordpress主题:New Horizon 博客/创意展示主题[v1.0.3][荐](类似瀑布流)
    linux nl命令与逻辑页
    PLSQL用DBMS_JOB建立作业
    PLSQL DBMS_DDL.ANALYZE_OBJECT
    PLSQL的UTL_FILE使用例子
  • 原文地址:https://www.cnblogs.com/Mjerry/p/9818934.html
Copyright © 2011-2022 走看看