zoukankan      html  css  js  c++  java
  • Traditional Language Model

    Traditional Language Model通常用于回答下述问题:

    How likely is a string of English words good English ?

    (p_{LM}()the house is small()ge p_{LM}() small the is house())
    (p_{LM}()I am going home()ge p_{LM}()I am going house())

    生成该句子 (W=w_1, w_2, w_3, w_4...w_n) 的概率为(p(W)) 如何计算?

    我们可以使用 chain rule 将该句子分解(decompose):

    [egin{split}p(w_1, w_2, w_3...w_n) &=p(w_1) * p(w_2|w_1)*p(w_3|w_1,w_2)cdots* p(w_n| w_1, w_2cdots w_{n-1})end{split} ]

    我们发现 (p(w_n| w_1, w_2cdots w_{n-1}))需要很多前置项(w_1, w_2cdots w_{n-1}),在数据集中很难计算,十分稀疏(sparse)。

    Markov 假设

    • 当前词只和前面的词相关;
    • 只和前面的(k)个单词相关

    这样表示就相对简便。

    uni-gram model

    [P(w_i|w_0cdots w_{i−1})approx P(w_i) ]

    Bi-gram model

    [P(w_i|w_0cdots w_{i−1})approx P(w_i|w_{i-1}) ]

    Tri-gram model

    [P(w_i|w_0cdots w_{i−1})approx P(w_i|w_{i-1},w_{i-2}) ]

    例如,2-gram的 language model:

    [p(w_1, w_2, w_3,cdots w_n)approx p(w_1) * p(w_2|w_1) * p(w_3|w_2) cdots p(w_n|w_{n-1}) ]

    n-gram probability estimation

    2-gram概率估计

    [p(w_2|w_1)=frac{count(w_1,w_2)}{count(w_1)} ]

    所以我们只需要找一个大词库,然后统计(w_1)出现的次数和(w_1,w_2)共同出现的次数,即可。

    Linear interpolation

    • Bigram: (P(w_i∣w_{i−1})=lambda_2 P(w_i∣w_{i−1})+ (1−λ_2) P(w_i))

    • Unigram: (P(w_i)=lambda_1 P(w_i)+(1-lambda_1)frac{1}{N})

  • 相关阅读:
    Postgres 的 Range 类型
    Postgres 的 Array 类型
    joi库 学习笔记
    nginx官方文档 之 http负载均衡 学习笔记
    pm2 官方文档 学习笔记
    SSH 学习笔记
    防止活动上线时 微信openid 被伪造的解决办法
    PHP 中 var_export、print_r、var_dump 调试中的区别
    nake_api_protect 请求保护器——防止请求被恶意刷
    接口的防刷办法
  • 原文地址:https://www.cnblogs.com/ZJUT-jiangnan/p/5829609.html
Copyright © 2011-2022 走看看