使用 TensorFlow 进行文本和自然语言处理

在对文本数据训练模型之前,通常需要对文本进行处理(或预处理)。在许多情况下,文本需要先经过分词(tokenized)和向量化(vectorized)才能输入模型;在某些情况下,文本还需要进行额外的预处理步骤,例如归一化和特征选择。

将文本处理成合适的格式后,您可以将其应用于自然语言处理 (NLP) 工作流程,例如文本分类、文本生成、摘要和翻译。

TensorFlow 提供了两个用于文本和自然语言处理的库:KerasNLP (GitHub) 和 TensorFlow Text (GitHub)。

KerasNLP 是一个高级 NLP 建模库,包含所有最新的基于 Transformer 的模型以及底层分词工具。它是大多数 NLP 用例的推荐解决方案。KerasNLP 构建于 TensorFlow Text 之上,将底层文本处理操作抽象为易于使用的 API。但如果您更喜欢不使用 Keras API,或者需要访问底层文本处理算子,则可以直接使用 TensorFlow Text。

KerasNLP

在 TensorFlow 中开始文本处理最简单的方法是使用 KerasNLP。KerasNLP 是一个自然语言处理库,支持使用具有最先进预设权重和架构的模块化组件构建工作流程。您可以直接使用 KerasNLP 组件的开箱即用配置。如果需要更多控制,也可以轻松自定义组件。KerasNLP 为所有工作流程提供图内(in-graph)计算,因此您可以利用 TensorFlow 生态系统轻松实现生产化。

KerasNLP 包含流行模型架构的端到端实现,例如 BERTFNet。使用 KerasNLP 模型、层和分词器,您可以完成许多最先进的 NLP 工作流程,包括机器翻译文本生成文本分类 Transformer 模型训练

KerasNLP 是核心 Keras API 的扩展,每个高级 KerasNLP 模块都是一个 Layer(层)或 Model(模型)。如果您熟悉 Keras,那么您就已经理解了 KerasNLP 的大部分内容。

TensorFlow Text

KerasNLP 提供了以层或模型形式存在的高级文本处理模块。如果您需要访问更底层的工具,可以使用 TensorFlow Text。TensorFlow Text 提供了操作和库来帮助您处理原始文本字符串和文档。TensorFlow Text 可以执行基于文本的模型通常需要的预处理,并且还包括对序列建模有用的其他功能。

使用 TensorFlow Text,您可以执行以下操作:

  • 应用功能丰富的分词器:它们可以按空格拆分字符串、分离单词和标点符号,并返回带有标记的字节偏移量,以便您知道字符串在源文本中的位置。
  • 检查标记是否匹配指定的字符串模式。您可以检查大小写、标点符号、数值数据和其他标记特征。
  • 将标记合并为 n-grams。
  • 在 TensorFlow 计算图中处理文本,以确保训练时的分词与推理时的分词保持一致。

从哪里开始

以下资源将帮助您开始使用 TensorFlow 进行文本处理: