将文本表示为张量
在本节的第一部分中,我们将专注于文本分类任务。我们将使用 [AG News](https://www.kaggle.com/amananandrai/ag-news-classification-da…
课程内容
将文本表示为张量
课前测验
文本分类
在本节的第一部分中,我们将专注于文本分类任务。我们将使用 AG News 数据集,该数据集包含如下新闻文章:
- 类别:科技
- 标题:Ky.公司获得研究肽类的资助(美联社)
- 正文:美联社 - 一家由路易斯维尔大学化学研究员创立的公司获得了一项开发资助...
我们的目标是根据文本将新闻项目分类到某个类别中。
表示文本
如果我们想用神经网络解决自然语言处理(NLP)任务,我们需要一种方法将文本表示为张量。计算机已经通过诸如 ASCII 或 UTF-8 等编码将文本字符表示为数字,这些数字映射到屏幕上的字体。
作为人类,我们理解每个字母代表什么,以及所有字符如何组合形成句子的单词。然而,计算机本身并没有这样的理解,神经网络需要在训练过程中学习这些含义。
因此,我们可以使用不同的方法来表示文本:
- 字符级表示,即将文本中的每个字符表示为一个数字。假设我们的文本语料库中有 C 个不同的字符,那么单词 Hello 将被表示为一个 5xC 的张量。每个字母对应于一个独热编码的张量列。
- 词级表示,即我们创建一个包含文本中所有单词的词汇表,然后使用独热编码表示单词。这种方法更好一些,因为单个字母本身没有太多意义,因此通过使用更高级的语义概念——单词——我们简化了神经网络的任务。然而,由于词汇表的规模较大,我们需要处理高维稀疏张量。
无论采用哪种表示方式,我们首先需要将文本转换为标记序列,一个标记可以是字符、单词,甚至是单词的一部分。然后,我们使用词汇表将标记转换为数字,这个数字可以通过独热编码输入到神经网络中。
N-Grams
在自然语言中,单词的确切含义只能在上下文中确定。例如,神经网络 和 捕鱼网络 的含义完全不同。考虑上下文的一种方法是基于单词对构建模型,并将单词对视为单独的词汇标记。这样,句子 将被表示为以下标记序列:,,,。这种方法的问题在于词汇表的规模显著增长,并且像 和 这样的组合被表示为不同的标记,尽管它们使用了相同的动词,但并没有共享任何语义相似性。
