TF-IDF等方法是将文本数值化表示的有效手段。这些方法通常基于“词袋”假设,将文档视为无序的词语集合。虽然对于某些任务,例如基于主题的文档分类,这种方法行之有效,但它忽略了语言的一个基本特点:其序列性。词语出现的顺序对于理解其原意通常非常重要。请看下面这些简单的句子:“狗咬人。”“人咬狗。”如果使用基本的词袋表示,这两个句子可能看起来非常相似。它们包含完全相同的词语:{狗, 咬, 人}。然而,它们的含义截然不同,这种差异完全取决于词语的顺序。一个忽略顺序的模型无法区分这两种情况。这并非一个孤立的问题。许多重要的自然语言处理任务都很大程度上依赖于理解文本的序列结构:机器翻译: 将“Ich bin müde”(德语)翻译成“I am tired”(英语)需要将序列进行对应,因为不同语言的词序和结构有所不同。简单地逐字翻译通常会导致语法错误或无意义的输出。情感分析: 所表达的情感会根据词序和上下文而变化。比较“这部电影很好”与“这部电影不好”。“不”这个词改变了“好”的情感,但它的位置很重要。模型需要处理序列以理解这种否定。词性标注(POS): 判断“book”(预订/书)是名词还是动词通常取决于周围的词语。在“请预订航班”中,“book”是动词。在“我读这本书”中,它是名词。序列提供了必要的语境。命名实体识别(NER): 识别像“纽约市”这样的实体需要识别出这三个词语共同构成一个单一实体,这与“新”、“约克”或“市”单独出现的情况有所不同。语言模型: 此处的目的是在给定前文词语的情况下,预测序列中的下一个词。这本质上需要理解词语之间按顺序的依赖关系。TF-IDF等基于频率的方法擅长捕捉文档或语料库中存在哪些词以及它们的重要性,但它们抛弃了序列中编码的位置和时序信息。这些方法本质上是把所有词语放进一个袋子,摇匀,然后数数。这个过程丢失了序列所提供的语法结构和语境关系。为了处理顺序很重要的任务,我们需要能够逐步处理输入的模型,这些模型会保持某种形式的记忆或内部状态,用于捕捉序列中前面元素的信息。这种“记忆”过去信息的能力使得模型能够结合之前的语境理解当前的输入。本章介绍一类专门为序列数据设计的模型:循环神经网络(RNNs)及其更高级的版本,如LSTM和GRU。这些模型解决了忽略顺序表示的局限性,并为处理序列不可或缺的复杂语言理解任务奠定了基础。我们将首先研究RNN的基本架构。