在您可以在文本数据上训练模型之前,通常需要处理(或预处理)文本。在许多情况下,文本需要在馈送到模型之前进行标记化和向量化,在某些情况下,文本需要额外的预处理步骤,例如规范化和特征选择。
在文本被处理成合适的格式后,您可以在自然语言处理 (NLP) 工作流程中使用它,例如文本分类、文本生成、摘要和翻译。
TensorFlow 提供了两个用于文本和自然语言处理的库:KerasNLP (GitHub) 和 TensorFlow 文本 (GitHub).
KerasNLP 是一个高级 NLP 建模库,包含所有最新的基于 Transformer 的模型以及更低级的分词实用程序。它是大多数 NLP 使用场景的推荐解决方案。KerasNLP 基于 TensorFlow Text,将低级文本处理操作抽象成一个易于使用的 API。但是,如果您更喜欢不使用 Keras API,或者需要访问更低级的文本处理操作,您可以直接使用 TensorFlow Text。
KerasNLP
在 TensorFlow 中处理文本最简单的方法是使用 KerasNLP。KerasNLP 是一个自然语言处理库,支持由模块化组件构建的工作流程,这些组件具有最先进的预设权重和架构。您可以使用 KerasNLP 组件及其开箱即用的配置。如果您需要更多控制,您可以轻松地自定义组件。KerasNLP 为所有工作流程提供图内计算,因此您可以期待使用 TensorFlow 生态系统轻松地进行生产化。
KerasNLP 包含流行的 模型架构 的端到端实现,例如 BERT 和 FNet。使用 KerasNLP 模型、层和分词器,您可以完成许多最先进的 NLP 工作流程,包括 机器翻译、文本生成、文本分类 和 Transformer 模型训练。
KerasNLP 是核心 Keras API 的扩展,每个高级 KerasNLP 模块都是一个 Layer
或 Model
。如果您熟悉 Keras,您已经了解 KerasNLP 的大部分内容。
TensorFlow Text
KerasNLP 提供高级文本处理模块,这些模块可以作为层或模型使用。如果您需要访问更低级的工具,您可以使用 TensorFlow Text。TensorFlow Text 提供操作和库来帮助您处理原始文本字符串和文档。TensorFlow Text 可以执行基于文本的模型通常需要的预处理,并且还包含其他对序列建模有用的功能。
使用 TensorFlow Text,您可以执行以下操作
- 应用功能丰富的分词器,可以根据空格拆分字符串,分离单词和标点符号,并返回带有标记的字节偏移量,以便您知道字符串在源文本中的位置。
- 检查标记是否与指定的字符串模式匹配。您可以检查大写、标点符号、数字数据和其他标记特征。
- 将标记组合成 n 元组。
- 在 TensorFlow 图中处理文本,以便训练期间的分词与推理期间的分词匹配。
从哪里开始
以下资源将帮助您开始使用 TensorFlow 文本处理
- TensorFlow Text:教程、指南和其他资源,帮助您使用 TensorFlow Text 和 KerasNLP 处理文本。
- KerasNLP:KerasNLP 的文档和资源。
- TensorFlow 教程:核心 TensorFlow 文档(本指南)包含多个文本处理教程。
- Google 机器学习:文本分类指南:文本分类的分步介绍。如果您是机器学习新手,这是一个不错的起点。