九、N-gram语言模型

本文详细介绍了N-gram模型的概念、计算方法,通过实例演示了如何构建和使用二元( Bi-gram )模型,并展示了如何利用CountVectorizer在Python中实现。重点讲解了极大似然估计在条件概率计算中的应用。
摘要由CSDN通过智能技术生成

1.语言模型

语言模型的作用是根据文本输入 ,计算文本内容是句子的概率。
在这里插入图片描述

2 N-gram模型介绍

2.1 语言模型概念

  • 如果我们有一个由m 个词组成的序列(或者说一个句子),我们希望计算句子的概率。根据链式规则,可得
    在这里插入图片描述
  • 根据马尔可夫假设可得:
    在这里插入图片描述

2.2 N-gram模型简介

  • N-gram模型是一种语言模型(Language Model,LM),语言模型是一个基于概率的判别模型,它的输入是一句话(单词的顺序序列),输出是这句话的概率,即这些单词的联合概率(joint probability)。
    在这里插入图片描述

2.3 N-gram模型定义

  • 当n=1时,一个一元模型为:
    在这里插入图片描述
  • 当n=2时,一个二元模型为:
    在这里插入图片描述
  • 当n=3时,一个三元模型为 :
    在这里插入图片描述

3 N-gram语言模型

3.1 N-gram计算条件概率

  • 如何计算公式中每一项条件概率。
    在这里插入图片描述
  • 极大似然估计:频数项
    在这里插入图片描述

3.2 N-gram概率计算实例

  • 以Bi-gram为例,假设由三句话组成的语料库:
  • 容易统计,“I”出现了3次,“I am”出现了2次,因此可以计算概率:
  • 在这里插入图片描述
  • 同理:还能计算出如下概率:
    在这里插入图片描述

4 N-gram模型的实现

4.1 N-gram语言模型构建的具体过程

  • 导入文本特征抽取模块
  • 加载语料库
  • 构建N-gram模型
  • 文本转换为向量表示

4.2 步骤

步骤1:导入文本特征抽取模块

from sklearn.feature_extraction.text import CountVectorizer

步骤2:加载语料库

# 语料库
text = ["orange banana apple grape",
        "banana apple apple",
        "grape",
        'orange apple']

步骤3:N-gram模型构建

# ngram_range=(2, 2)表明适应2-gram;decode_error="ignore":忽略异常字符,
ngram_vectorizer = CountVectorizer(
    ngram_range=(2, 2),
    decode_error="ignore"
)

步骤4:文本转化为向量表示

# 将文本转换为对应的向量(数字)表示
x1 = ngram_vectorizer.fit_transform(text)
print(x1.toarray())
print(ngram_vectorizer.vocabulary_)

4.5 运行结果

# print(x1.toarray())运行结果:
[[0 1 1 0 1]
 [1 0 1 0 0]
 [0 0 0 0 0]
 [0 0 0 1 0]]
# print(ngram_vectorizer.vocabulary_)运行结果:
{'orange banana': 4, 'banana apple': 2, 'apple grape': 1, 'apple apple': 0, 'orange apple': 3}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值