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}