CodeRoadMap
路线图学习路径文章题库资源社区

浏览

首页路线图学习路径知识库题库文章资源社区我的学习
CodeRoadMap

中文编程学习导航:路线图、讲义与题库,进度可同步。

路线图学习路径文章题库社区

© 2026 CodeRoadMap

津ICP备2026012044号-1|coderoadmap@126.com
首页/AI 人工智能入门 · 微软 12 周课/将文本表示为张量

课程目录

  1. 01人工智能简介
  2. 02知识表示与专家系统
  3. 03神经网络简介
  4. 04神经网络入门:感知机
  5. 05使用感知器进行多类别分类
  6. 06神经网络简介:多层感知机
  7. 07使用我们自己的框架进行MNIST分类
  8. 08神经网络框架
  9. 09使用 PyTorch/TensorFlow 进行分类
  10. 10计算机视觉
  11. 11计算机视觉简介
  12. 12使用光流检测运动
  13. 13卷积神经网络
  14. 14宠物面部分类
  15. 15预训练网络与迁移学习
  16. 16使用迁移学习对牛津宠物进行分类
  17. 17自动编码器
  18. 18生成对抗网络
  19. 19目标检测
  20. 20使用好莱坞头部数据集进行头部检测
  21. 21分割
  22. 22人体分割
  23. 23自然语言处理
  24. 24将文本表示为张量
  25. 25嵌入
  26. 26语言建模
  27. 27训练 Skip-Gram 模型
  28. 28循环神经网络
  29. 29生成网络
  30. 30使用 RNN 进行词级文本生成
  31. 31注意机制与Transformer
  32. 32命名实体识别
  33. 33命名实体识别 (NER)
  34. 34预训练大型语言模型
  35. 35遗传算法
  36. 36深度强化学习
  37. 37other-deeprl-lab
  38. 38多智能体系统
  39. 39伦理与负责任的人工智能
  40. 40多模态网络
第 24 课1 小时

将文本表示为张量

在本节的第一部分中,我们将专注于文本分类任务。我们将使用 [AG News](https://www.kaggle.com/amananandrai/ag-news-classification-da…

课程内容

将文本表示为张量

课前测验

文本分类

在本节的第一部分中,我们将专注于文本分类任务。我们将使用 AG News 数据集,该数据集包含如下新闻文章:

  • 类别:科技
  • 标题:Ky.公司获得研究肽类的资助(美联社)
  • 正文:美联社 - 一家由路易斯维尔大学化学研究员创立的公司获得了一项开发资助...

我们的目标是根据文本将新闻项目分类到某个类别中。

表示文本

如果我们想用神经网络解决自然语言处理(NLP)任务,我们需要一种方法将文本表示为张量。计算机已经通过诸如 ASCII 或 UTF-8 等编码将文本字符表示为数字,这些数字映射到屏幕上的字体。

显示字符映射到 ASCII 和二进制表示的图示

图片来源

作为人类,我们理解每个字母代表什么,以及所有字符如何组合形成句子的单词。然而,计算机本身并没有这样的理解,神经网络需要在训练过程中学习这些含义。

因此,我们可以使用不同的方法来表示文本:

  • 字符级表示,即将文本中的每个字符表示为一个数字。假设我们的文本语料库中有 C 个不同的字符,那么单词 Hello 将被表示为一个 5xC 的张量。每个字母对应于一个独热编码的张量列。
  • 词级表示,即我们创建一个包含文本中所有单词的词汇表,然后使用独热编码表示单词。这种方法更好一些,因为单个字母本身没有太多意义,因此通过使用更高级的语义概念——单词——我们简化了神经网络的任务。然而,由于词汇表的规模较大,我们需要处理高维稀疏张量。

无论采用哪种表示方式,我们首先需要将文本转换为标记序列,一个标记可以是字符、单词,甚至是单词的一部分。然后,我们使用词汇表将标记转换为数字,这个数字可以通过独热编码输入到神经网络中。

N-Grams

在自然语言中,单词的确切含义只能在上下文中确定。例如,神经网络 和 捕鱼网络 的含义完全不同。考虑上下文的一种方法是基于单词对构建模型,并将单词对视为单独的词汇标记。这样,句子 将被表示为以下标记序列:,,,。这种方法的问题在于词汇表的规模显著增长,并且像 和 这样的组合被表示为不同的标记,尽管它们使用了相同的动词,但并没有共享任何语义相似性。

I like to go fishing
I like
like to
to go
go fishing
go fishing
go shopping

在某些情况下,我们可能会考虑使用三元组(tri-grams)——三个单词的组合。因此,这种方法通常被称为n-grams。此外,使用字符级表示时,n-grams 通常大致对应于不同的音节。

词袋模型和 TF/IDF

在解决文本分类等任务时,我们需要能够用一个固定大小的向量表示文本,这个向量将作为最终密集分类器的输入。最简单的方法之一是组合所有单个单词的表示,例如通过将它们相加。如果我们将每个单词的独热编码相加,我们将得到一个频率向量,显示每个单词在文本中出现的次数。这种文本表示被称为词袋模型(BoW)。

图片由作者提供

词袋模型本质上表示了文本中出现了哪些单词以及它们的数量,这确实可以很好地指示文本的内容。例如,关于政治的新闻文章可能包含 总统 和 国家 等词,而科学出版物可能包含 对撞机、发现 等词。因此,单词频率在许多情况下可以很好地指示文本内容。

词袋模型的问题在于某些常见单词,例如 and、is 等,出现在大多数文本中,并且它们的频率最高,从而掩盖了真正重要的单词。我们可以通过考虑单词在整个文档集合中出现的频率来降低这些单词的重要性。这就是 TF/IDF 方法的主要思想,该方法在本课附带的笔记本中有更详细的介绍。

然而,这些方法都无法完全考虑文本的语义。我们需要更强大的神经网络模型来实现这一点,我们将在本节后续内容中讨论。

✍️ 练习:文本表示

通过以下笔记本继续学习:

  • 使用 PyTorch 表示文本
  • 使用 TensorFlow 表示文本

总结

到目前为止,我们已经学习了可以为不同单词添加频率权重的技术。然而,这些技术无法表示单词的含义或顺序。正如著名语言学家 J. R. Firth 在1935年所说:“单词的完整意义总是与上下文相关,任何脱离上下文的意义研究都不能被认真对待。”我们将在课程后续内容中学习如何通过语言建模从文本中捕获上下文信息。

? 挑战

尝试使用词袋模型和不同的数据模型完成一些其他练习。你可以参考这个 Kaggle 比赛 来获得灵感。

课后测验

复习与自学

在 Microsoft Learn 上练习你的文本嵌入和词袋模型技术。

作业:笔记本


← 上一课自然语言处理下一课 →嵌入