• 三、N元语法(N-gram)


    为了弥补 One-Hot 独热编码维度灾难语义鸿沟以及 BOW 词袋模型丢失词序信息稀疏性这些缺陷,将词表示成一个低维的实数向量,且相似的词的向量表示是相近的,可以用向量之间的距离来衡量相似度。

    N-gram 统计语言模型是用来计算句子概率的概率模型,即某一个词的出现由其前面每一个词出现的概率决定。假设一个长度为N的句子,句子 S=(X1,...,XN),那么这个句子的概率(也就是这 N 个词共同出现的概率)如下:

    P(S=(X1,..., XN))=P(X1)P(X2|X1)...P(XN)|X1...X(N-1))

    N的取值名称含义
    1Unigram当前词出现的概率仅仅与自身相关
    2Bigram当前词出现的概率仅仅与前面的1个词相关
    3Trigram当前词出现的概率仅仅与前面的2个词相关
    .........
    NN-gram当前词出现的概率仅仅与前面的(N-1)个词相关

    例如,长度为4的序列X1, X2, X3, X4 在Ungram、Bigram和Trigram中的概率分别为:

    P(X1, X2, X3, X4) = P(X1)P(X2)P(X3)P(X4)

    P(X1, X2, X3, X4) = P(X1)P(X2|X1)P(X3|X2)P(X4|X3)

    P(X1, X2, X3, X4) = P(X1)P(X2|X1)P(X3|X1, X2)P(X4|X2, X3)

    随着 N 的取值越大,N-gram 模型在理论上越精确,但是也越复杂,需要的计算量和训练语料数据量也就越大,并且精度提升的不够明显,所以在实际的任务中很少使用 n>3 的语言模型。

    例如,使用一个含有三句话的微型语料库,而且需要在这三句话的前后分别加上开始符和结束符 (目的是为了让以某一词为条件的所有概率加起来是 1,从而保证这确实是一个合法的概率分布)接下来我们来看语料:

    1. 我爱你
    2. 我爱她
    3. 她爱你

    BOS:Begining Of Sequence,代表序列开始。 EOS:End Of Sequence,代表序列结束。

    利用 Bi-gram 计算各个词出现的概率:

    • 单词 "" 出现的次数:3次
    • 单词 "我" 出现的次数:2次
    • 单词 "爱" 出现的次数:3次
    • 单词 "你" 出现的次数:2次
    • 单词 "她" 出现的次数:2次
    • 单词 "" 出现的次数:3次
    • 二元组 "我爱" 出现的次数:2次
    • 二元组 "爱你" 出现的次数:2次
    • 二元组 "她爱" 出现的次数:1次
    • 二元组 "爱她" 出现的次数:1次
    • 二元组 "我" 出现的次数:2次
    • 二元组 "她" 出现的次数:1次
    • 二元组 "你" 出现的次数:2次
    • 二元组 "她" 出现的次数:1次

    利用 Bi-gram 计算相邻两个词先后出现的概率: 

    • P(我|) = Count(我) / Count() = 2/3;
    • P(她|) = Count(她) / Count() = 1/3;
    • P(爱|) = Count(我爱) / Count(我) = 1;
    • P(|你) = Count(你) / Count(你) = 1;
    • P(你|) = Count(爱你) / Count(爱) = 2/3;
    • P(她|爱) = Count(爱她) / Count(爱) = 1/3;
    • P(爱|) = Count(她爱) / Count(她) = 1/2;
    • P(|她) = Count(她) / Count(她) = 1/2.

    这样我们就完成了 Bi-gram 各个概率值的计算,整个句子的概率就是挑选出对应的概率相乘即可。

    • P(我爱你) = P(我|) × P(爱|) × P(你|) × P(|你) = 2/3 × 1 × 2/3 ×1 = 4/9
    • P(我爱她) = P(我|) × P(爱|) × P(她|) × P(|你) = 2/3 × 1 × 1/3 ×1 = 2/9
    • P(她爱你) = P(她|) × P(爱|) × P(你|) × P(|你) = 1/3 × 1 × 1 × 2/3 = 2/9

    N-gram 语言模型使用统计频次来近似概率值,可能会出现数据稀疏问题:

    • 如果分子为0,估计的概率值为0,由于连乘的方式会导致最终计算出句子的概率值为0;
    • 如果分母为0,分母为0,计算的公式将没有任何意义
  • 相关阅读:
    Facebook与跨文化交流:数字社交的桥梁
    PyInstaller库—Python第三方库—程序打包
    windows CMD命令的一些使用方法及注意事项
    leetcode 90 子集II
    搜素题目(蓝桥杯 C++ 代码+注解)
    MySQL建立主-从服务器双机热备配置
    CSM32RV003:国产高精度16位ADC低功耗RISC-V内核MCU
    你不知道的JavaScript----promise
    稳压器【TPS6283810YFPR 3A】汽车类、TPS629203QDRLRQ1,TPS74550PQWDRVRQ1采用小型6 引脚 WSON 封装。
    A股风格因子看板 (2023.09 第03期)
  • 原文地址:https://blog.csdn.net/contributed_l/article/details/136491367