引言
我个人觉得计算机竟然能处理语言这件事非常神奇。这就像看着婴儿学说话,只不过是通过代码和算法实现的。有时候会觉得不可思议,但这正是自然语言处理(NLP)的魅力所在。你真的能让计算机理解你的语言吗?这就是最有趣的部分。如果你是第一次阅读我的趣味项目系列,我想说明一下,本系列的目标是通过推荐一些优秀的实操项目,促进基于项目的学习,涵盖从简单到稍进阶的内容。在本文中,我从 NLP 的主要领域挑选了 5 个项目,让你从基础到应用概念,全面了解 NLP 的工作原理。其中一些项目会用到特定的架构或模型,了解它们的结构会很有帮助。所以如果你觉得需要先巩固某些概念,不用担心,我在结论部分添加了一些额外的学习资源:)
1. 从零构建分词器
项目 1:如何用 Python 和 HuggingFace 构建 BERT WordPiece 分词器
项目 2:一起构建 GPT 分词器
文本预处理是任何 NLP 任务的第一步,也是最关键的一步。它通过将原始文本分解成单词、子词甚至字节等更小的单元,让机器能够实际处理文本。为了更好地理解其工作原理,我推荐你尝试这两个很棒的项目。第一个项目会带你一步步用 Python 和 HuggingFace 构建 BERT WordPiece 分词器,展示单词如何被拆分成更小的子词单元(例如添加 “##” 标记单词的部分),这种方式能帮助 BERT 等模型将生僻词或拼写错误的单词拆分成熟悉的片段,从而更好地处理它们。第二个是安德烈・卡帕西(Andrej Karpathy)的视频《一起构建 GPT 分词器》,虽然时长稍长,但却是一份黄金资源。他详细讲解了 GPT 如何使用字节级别的字节对编码(BPE)来合并常见的字节序列,从而更灵活地处理文本,包括空格、标点符号甚至表情符号。如果你想了解文本被转化为分词的实际过程,强烈推荐观看这个视频。一旦你熟练掌握了分词技术,NLP 中的其他内容就会变得清晰易懂。
2. 实体识别(NER)实操:识别姓名、日期和机构
项目 1:Python 中的命名实体识别(NER):预训练模型与自定义模型
项目 2:用 BERT 构建实体提取模型
理解了文本的表示方式后,下一步就是学习如何从文本中提取实际含义。命名实体识别(NER)是一个很好的起点,它能教会模型识别句子中的实体。例如,在 “苹果公司今年 1 月的股价达到了 143 美元的历史新高” 这句话中,一个优秀的 NER 系统应该能识别出 “苹果公司” 是机构、“143 美元” 是货币、“今年 1 月” 是日期。第一个视频展示了如何使用 spaCy 和 Hugging Face Transformers 等库中的预训练 NER 模型,你会看到如何输入文本、获取实体预测结果,甚至可视化这些结果。第二个视频则更进一步,带你通过微调 BERT 自己构建一个实体提取系统。不同于依赖现成的库,你需要自己编写整个流程:文本分词、将分词与实体标签对齐、在 PyTorch 或 TensorFlow 中微调模型,然后用它来标记新的文本。我建议将这个项目作为你的第二个实操项目,因为 NER 是能让 NLP 变得更实用的任务之一,你会开始看到机器如何理解 “谁在何时何地做了什么”。
3. 文本分类:用 BERT 进行情感预测
项目:文本分类 | 用 HuggingFace、PyTorch 和 Python 实现 BERT 情感分析教程
学习了文本表示和实体提取之后,下一步是教模型为文本分配标签,情感分析就是一个经典的例子。这是一个比较早的项目,你可能需要做一处修改才能运行(可以查看视频下方的评论),但我仍然推荐它,因为它还解释了 BERT 的工作原理。如果你还不熟悉 Transformer 模型,这会是一个很好的起点。该项目会带你使用 Hugging Face 提供的预训练 BERT 模型,对电影评论、推文或产品反馈等文本进行分类。在视频中,你会看到如何加载带标签的数据集、预处理文本,以及微调 BERT 模型来预测每个样本是积极、消极还是中性的。这个项目清晰地展示了分词、模型训练和评估如何在一个工作流程中协同作用。
4. 用循环神经网络(RNN)和长短期记忆网络(LSTM)构建文本生成模型
项目 1:AI 文本生成 ——Python 中的下一个单词预测
项目 2:用 LSTM 进行文本生成与拼写(Nabil Hassein 主讲)
序列建模专注于输出为文本序列的任务,是现代语言模型工作原理的重要组成部分。这些项目聚焦于文本生成和下一个单词预测,展示机器如何学会逐词续写句子。第一个视频带你构建一个基于简单循环神经网络(RNN)的语言模型,用于预测序列中的下一个单词。这是一个经典练习,能很好地展示模型如何捕捉文本中的模式、语法和结构 —— 这也是 GPT 等大型模型的核心工作原理,只是规模更大。第二个视频使用长短期记忆网络(LSTM)从散文或代码中生成连贯的文本,你会看到模型如何逐词或逐字符输入文本、如何采样预测结果,以及如何通过温度调节和束搜索等技巧控制生成文本的创造性。这些项目会让你清楚地认识到,文本生成并非魔法,而是通过智能的方式串联预测结果实现的。
5. 构建序列到序列(Seq2Seq)机器翻译模型
项目:PyTorch 序列到序列(Seq2Seq)机器翻译教程
最后一个项目将 NLP 的应用范围从英语扩展到实际场景,聚焦于机器翻译任务。在这个项目中,你将构建一个编码器 – 解码器网络:一个网络读取并编码源语言句子,另一个网络将其解码为目标语言。这基本上就是谷歌翻译等翻译服务的核心工作原理。该教程还展示了注意力机制,让解码器能够聚焦于输入文本的相关部分,并解释了如何使用平行文本进行训练,以及如何用双语评估替补(BLEU)分数等指标评估翻译结果。这个项目将你迄今为止学到的所有知识整合到一个实际的 NLP 任务中。即使你之前使用过翻译应用,构建一个简易翻译器也能让你亲手体验这些系统背后的工作机制。
结论
以上就是本次推荐的全部项目。每个项目对应 NLP 的一个主要领域:分词、信息提取、文本分类、序列建模和应用多语言 NLP。通过实际操作这些项目,你将全面了解 NLP 流水线的完整工作流程。如果你觉得这些项目有帮助,别忘了给教程创作者点赞,并分享你的成果。
原文链接:https://www.kdnuggets.com/5-fun-nlp-projects-for-absolute-beginners
