大语言模型技术专栏(一):5分钟搞懂N-grams语言模型,小白也能轻松上手!
简单来说,N-grams语言模型就是一个用来预测下一个词可能是什么的工具。比如,当你输入“今天天气真”时,模型会预测下一个词可能是“好”“不错”或“糟糕”。这里的“N”代表一个数字,表示模型每次考虑多少个词。Unigram(1-gram):只考虑当前词,比如“天气”。Bigram(2-gram):考虑当前词和前一个词,比如“今天 天气”。Trigram(3-gram):考虑当前词和前两个词,比如“
文章目录
概要
今天的第一期,我们来聊聊N-grams语言模型——它是自然语言处理(NLP)领域的经典模型,也是理解现代大语言模型的基础。
什么是N-grams语言模型?
简单来说,N-grams语言模型就是一个用来预测下一个词可能是什么的工具。比如,当你输入“今天天气真”时,模型会预测下一个词可能是“好”“不错”或“糟糕”。
这里的“N”代表一个数字,表示模型每次考虑多少个词。比如:
Unigram(1-gram):只考虑当前词,比如“天气”。
Bigram(2-gram):考虑当前词和前一个词,比如“今天 天气”。
Trigram(3-gram):考虑当前词和前两个词,比如“今天 天气 真”。
N-grams模型的核心思想是:通过统计历史数据中词与词的组合概率,来预测未来的词。
N-grams模型的工作原理
统计词频
N-grams模型的第一步是统计词与词的组合出现的频率。比如,我们有一个简单的句子:
今天 天气 真好
Bigram统计:
“今天 天气”出现1次
“天气 真”出现1次
“真 好”出现1次
计算概率
接下来,模型会根据统计结果计算概率。比如:
在“天气”之后,“真”出现的概率是100%(因为“天气 真”只出现了一次)。
在“真”之后,“好”出现的概率也是100%。
预测下一个词
当我们输入“今天 天气”时,模型会查找“天气”之后最可能出现的词。根据统计结果,“真”是唯一的选择,所以模型会预测下一个词是“真”。
N-grams模型的优缺点
优点
简单易懂:N-grams模型基于统计,不需要复杂的数学知识。
计算高效:相比于深度学习模型,N-grams的计算速度非常快。
适合小数据:在数据量较少的情况下,N-grams仍然可以表现不错。
缺点
数据稀疏问题:如果某些词组合在训练数据中从未出现,模型就无法预测。
缺乏上下文理解:N-grams只能考虑有限的上下文(N个词),无法捕捉长距离依赖关系。
泛化能力差:对于未见过的新词或新组合,模型表现较差。
N-grams模型的应用场景
虽然N-grams模型看起来简单,但它在实际应用中仍然有很多用途:
文本生成:比如生成简单的句子或段落。
拼写纠错:通过统计词频,判断用户输入的词是否合理。
语音识别:帮助识别语音中的模糊词。
搜索引擎:用于查询建议和自动补全。
N-grams与现代大语言模型的关系
N-grams模型是现代大语言模型(如GPT、BERT)的前身。虽然大语言模型使用了更复杂的神经网络架构,但它们的核心思想仍然是通过上下文预测下一个词。可以说,N-grams是大语言模型的“简化版”,而大语言模型则是N-grams的“升级版”。
动手实践:用Python实现一个简单的Bigram模型
from collections import defaultdict, Counter
# 训练数据
text = "今天 天气 真好 今天 天气 真糟糕"
# 统计Bigram频率
bigrams = defaultdict(Counter)
words = text.split()
for i in range(len(words) - 1):
bigrams[words[i]][words[i + 1]] += 1
# 预测下一个词
def predict_next_word(word):
if word in bigrams:
return bigrams[word].most_common(1)[0][0]
return "未知"
# 测试
print(predict_next_word("天气")) # 输出:真
总结
N-grams语言模型是NLP领域的经典技术,虽然它已经被更强大的深度学习模型取代,但它的核心思想仍然影响着现代大语言模型的设计。理解N-grams模型,不仅能帮助我们打好NLP的基础,还能更好地理解大语言模型的底层逻辑。
更多推荐

所有评论(0)