自然语言处理(NLP)简介#
什么是自然语言处理(NLP)?#
自然语言处理(NLP)是机器学习中的一个核心领域,专注于文本相关的各类任务,包括机器翻译、文本理解、问答系统等应用。

图片来源:博客文章。
在深度学习中,NLP 的独特之处在于它处理的是离散数据(如文本),并且通常按照从左到右的顺序进行解析。
课程内容#
本课程将重点讨论下一个 token 的预测问题,并从预测下一个字符开始,以简化理解。该问题是现代语言模型(如 GPT、Llama、Gemini 等)的核心基础。
具体来说,目标是基于前文(即上下文)预测下一个词汇。上下文的长度取决于模型的方法和复杂度,通常由用于预测的 token 数量决定。
什么是 token? Token 是模型的输入单元,可以是一个字符、字符组或单词,在输入模型前会被转换为向量形式。
课程灵感来源#
本课程深受 Andrej Karpathy 的视频系列(GitHub 仓库链接)启发,特别是其中的 “building makemore” 课程。我们在此基础上提供了法语书面版本的教学内容。 强烈推荐观看该视频系列,它是目前最优秀的免费语言模型课程之一。
课程将分为多个 Notebook,逐步引入复杂度递增的模型。通过理解每个模型的局限性,我们将逐步过渡到更高级的架构。
课程大纲:
第一课:双字符模型(Bigram,包括经典方法与神经网络实现)
第二课:使用全连接网络预测下一个词汇
第三课:WaveNet(分层架构)
第四课:RNN(循环神经网络与序列架构)
第五课:LSTM(改进型循环网络)
注:第七课的Transformer 专题将探讨相同的下一个字符生成问题,但采用 Transformer 架构,并基于更复杂的数据集。
数据集 prenom.txt 的获取#
本课程使用的数据集包含约 3 万个自 1900 年以来法国最常见的名字(数据来源:法国国家统计与经济研究所 INSEE)。文件 prenoms.txt 已预置在目录中,无需运行下方代码。
若需自行生成,可先从 INSEE 网站下载 nat2022.csv 文件。
import pandas as pd
# Chargement du fichier CSV
df = pd.read_csv('nat2022.csv', sep=';')
# On enlève la catégorie '_PRENOMS_RARES' qui regroupe les prénoms peu fréquents
df_filtered = df[df['preusuel'] != '_PRENOMS_RARES']
# Pour compter, on fait la somme des nombres de naissances pour chaque prénom
df_grouped = df_filtered.groupby('preusuel', as_index=False)['nombre'].sum()
# On va trier les prénoms par popularité
df_sorted = df_grouped.sort_values(by='nombre', ascending=False)
# On extrait les 30 000 prénoms les plus populaires
top_prenoms = df_sorted['preusuel'].head(30000).values
with open('prenoms.txt', 'w', encoding='utf-8') as file:
for prenom in top_prenoms:
file.write(f"{prenom}\n")
在接下来的 Notebook 中,我们将首先分析数据集(如独特字符统计等)。