语言模型(LM)介绍及实操

本文详细介绍了语言模型LM,从LM的定义、类别到构建N-gram Model和Neural Language Model的实操,包括使用GPT-2进行自然语言生成。通过实例展示了LM在NLP任务中的应用和其重要性。
摘要由CSDN通过智能技术生成

原文地址:https://medium.com/analytics-vidhya/a-comprehensive-guide-to-build-your-own-language-model-in-python-5141b3917d6d

 文章开头便引用了一句话:We tend to look through language and not realize how much power language has. 我们往往低估了语言的力量。文本摘要抽取,文本生成,文本自动填充这些任务都依赖于Language Model (LM),事实上,LM是大部分NLP任务的基石,本篇文章就带我们由浅入深,亲自实践LM去了解它的广度与深度。

什么是LM?

A language model learns to predict the probobality of a sequence of words. LM学习预测一个词序列出现的概率。如何理解一个词序列出现的概率?以一个机器翻译的例子来说明,在机器翻译任务中,通常是给你一个词序列,让你把它转换成另一个词序列,你需要估计转换后的词序列的概率分布,概率最高的那个词序列就是一个理想的翻译结果。比如以下两个词序列:the cat is small 和 small the is cat,很明显第一个词序列出现的概率更高。当模型能够学习到语言的规律(词序列的概率分布)时,就可以解决很多NLP任务。

LM的类别

有两种类型的LM:

1. Statistical Language Model 统计语言模型。 这类LM利用一些传统的统计模型如N-gram, HMM,或者一些特定的统计规则来学习词的概率分布。

2. Neural Language Model 神经语言模型。利用神经网络来建模的语言模型。

下面将分别介绍这两类语言模型。

构建一个N-gram Model

N-gram 就是一个长度为N的词序列,可以通过下面这个例子来理解N-gram:

“I love reading blogs about data science on Analytics Vidhya.”

这个句子中可以抽出1-gram有"I","love","reading"等等由一个词构成的单元,2-gram包括"I love","love reading","reading blogs"等由两个连续词构成的序列。一个N-gram Model可以预测自然语言中一个长度为N的词序列出现的概率。

为了预测长度为N的语言序列的概率,即构建该N-gram Model,需要使用链式法则来获取N个词出现的联合概率分布:

p(w1...ws) = p(w1) . p(w2 | w1) . p(w3 | w1 w2) . p(w4 | w1 w2 w3) ..... p(wn | w1...wn-1)

可以发现为了求得联合概率分布,需要计算若干条件概率。这些条件概率都是在给定history的条件下来预测下一个词,即下图所示:

可以发现当历史很长时,若考虑所有的历史词p(wn | w1...wn-1),会使得模型空间过大,模型过于复杂,同时也会有数据稀疏等问题。因此,通常使用马尔科夫假设,使得下一个要预测的词只与当前一个词有关,与其他历史词无关,从而使得条件概率简化为p(wn | wn-1)。

下面来实操构建一个N-gram Language Model。使用的Reuters数据集共包含10,788篇新闻文档,1,300,000个词。使用以下代码可以构建一个language model:

# code courtesy of https://nlpforhackers.io/language-models/

from nltk.corpus import reuters
from nltk import bigrams, trigrams
from collections import Counter, defaultdict

# Create a placeholder for model
model = defaultdict(
  • 4
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值