多彩编程 多彩编程MZPH · CODE BLOG
ARTICLE DETAIL

文章详情

深耕前端与后端开发技术的一线实战笔记与踩坑复盘。

TensorFlow 文本与自然语言处理:从 KerasNLP 到 TensorFlow Text 的完整技术选型指南

TensorFlow 文本与自然语言处理:从 KerasNLP 到 TensorFlow Text 的完整技术选型指南 文档开发工具教程【免费下载链接】docsTensorFlow documentation项目地址https://gitcode.com/gh_mirrors/doc/docs点击查看免费下载本指南以 TensorFlow 官方文档 Text and natural language processing with TensorFlow 为骨架系统梳理在 TensorFlow 中处理文本数据的完整路径为什么文本必须先经过预处理、KerasNLP 与 TensorFlow Text 两大库各自承担什么角色、何时应该选择哪一层 API以及如何通过官方教程快速上手文本分类、翻译、生成等 NLP 工作流。读完本文你将掌握从原始字符串到可训练张量的标准化、分词、向量化全流程并能在高层建模 API 与底层文本算子之间做出正确的工程取舍。为什么文本必须先预处理在把文本数据喂给模型之前通常需要先对文本进行处理preprocessing。与图像、数值这类天然结构化的输入不同原始文本是变长的字符串序列模型无法直接消费。多数情况下文本需要经过分词tokenization与向量化vectorization将每个词或子词映射为整数索引或稠密/稀疏向量部分场景还需要额外的预处理步骤例如标准化normalization转小写、去标点、折叠 Unicode 大小写与特征选择feature selection限制词表大小、丢弃低频词、构建 n-gram 等。只有当文本被转换为合适的格式后才能进入自然语言处理NLP工作流——包括但不限于文本分类text classification文本生成text generation摘要生成summarization机器翻译translation在 TensorFlow 生态中文本与 NLP 能力由两个互补的库提供KerasNLP高层 NLP 建模库与TensorFlow Text底层文本处理算子库。二者的关系可以概括为KerasNLP 构建在 TensorFlow Text 之上把底层文本处理操作抽象成易于使用的 Keras API而当你需要精细控制或不想依赖 Keras 时可以直接使用 TensorFlow Text。KerasNLP推荐的首选 NLP 建模方案对于大多数 NLP 使用场景KerasNLP 都是官方推荐的起点。它是一个自然语言处理库支持由模块化组件modular components构建的工作流这些组件自带 state-of-the-art 的预置权重与架构。你可以直接用开箱即用的配置调用 KerasNLP 组件需要更多控制时也可以轻松地对组件进行定制。KerasNLP 的所有工作流都提供图内计算in-graph computation这意味着预处理与模型前向传播可以在同一张计算图中完成借助 TensorFlow 生态可以非常顺畅地完成生产化部署。KerasNLP 的架构覆盖KerasNLP 内置了流行模型架构的端到端实现例如BERT双向 Transformer 编码器广泛用于分类、抽取式问答等任务FNet以傅里叶变换替换自注意力机制的 Transformer 变体在保持不错效果的同时显著降低计算复杂度。借助 KerasNLP 的模型Model、层Layer与分词器Tokenizer可以完成多种 SOTA NLP 工作流官方示例覆盖了机器翻译neural machine translation with KerasNLP文本生成GPT 风格生成文本分类FNet 分类Transformer 模型预训练pretraining a transformer from scratch with KerasNLPKerasNLP 与 Keras 的关系KerasNLP 是核心 Keras API 的扩展每一个高层 KerasNLP 模块本质上都是一个Layer或Model。这意味着如果你已经熟悉 Keras那么你已经理解 KerasNLP 的大部分设计——可以像使用tf.keras.layers.Embedding、tf.keras.Sequential一样去组合、训练和部署 KerasNLP 组件无需学习一套全新的编程范式。从仓库的教程导航 tutorials/_toc.yaml 可以看出/tutorials/text/index页面在官方教程体系中处于 Text 分类的入口位置紧随其后即是 Get started with KerasNLP 与 Text and NLP guide 两条通往 KerasNLP 上手指南的路径进一步印证了 KerasNLP 作为入门首选的定位。TensorFlow Text低层文本处理算子库KerasNLP 以 Layer/Model 形态提供高层文本处理模块如果你需要访问更低层的工具则可以直接使用 TensorFlow Text。TensorFlow Text 提供了一批操作ops与库帮助你直接处理原始文本字符串与文档。它既能完成文本模型常规所需的预处理也包含对序列建模有用的其他特性。TensorFlow Text 的核心能力按照官方索引页的归纳使用 TensorFlow Text 可以完成以下四类操作应用功能丰富的分词器可以在空白字符上切分字符串、分离单词与标点并且随 token 一起返回字节偏移量byte offsets——这样你就知道每个 token 在源文本中的精确位置便于定位、对齐与可视化。检查 token 是否匹配指定字符串模式可以检查大写capitalization、标点punctuation、数值数据numerical data等 token 特征实现基于规则的特征筛选。将 token 组合成 n-gram在字符/词序列基础上构造连续 n 元组特征丰富模型可用的上下文信息。在 TensorFlow 图内处理文本让训练时的分词与推理时的分词严格一致从根本上规避训练-推理偏差training-serving skew。在仓库教程中看 TensorFlow Text 的实战用法仓库内的 加载文本数据教程 给出了 TensorFlow Text 低层 API 的完整实战范例它使用text.UnicodeScriptTokenizer将字符串转换为 token使用text.case_fold_utf8做 Unicode 大小写折叠标准化再配合tf.lookup.StaticVocabularyTable将 token 映射为整数从而绕过TextVectorization层、用更细粒度的方式实现标准化→分词→查表向量化。具体调用链如下节选自教程实现class MyTokenizer(tf.keras.layers.Layer): def __init__(self): super().__init__() self.tokenizer tf_text.UnicodeScriptTokenizer() def call(self, text): lower_case tf_text.case_fold_utf8(text) result self.tokenizer.tokenize(lower_case) # 传入一批字符串时返回 RaggedTensor if isinstance(result, tf.RaggedTensor): result result.to_tensor() # 转为 0 填充的稠密张量 return result随后教程通过Dataset.map将分词应用到整个数据集按词频排序保留前VOCAB_SIZE个 token 构建词表再创建tf.lookup.StaticVocabularyTable完成整数映射0预留为填充位n1预留为 OOV 越界词标记。这段示例清楚地展示了 KerasNLP 上层抽象之下、TensorFlow Text 真正执行的底层机理。一条完整的文本预处理链路Keras 内置工具实战在进入两大库之前先理解 Keras 自带的两件标准武器是很有必要的——它们是学习文本预处理的第一站也常与 TensorFlow Text 互补使用。用 text_dataset_from_directory 加载文本目录文本分类教程 展示了tf.keras.utils.text_dataset_from_directory的用法它要求目录按每个类别一个子目录、每个样本一个文件组织然后直接产出一个带标签的tf.data.Dataset。支持validation_split与subset参数完成数据划分官方提示使用validation_split时必须指定随机种子或传入shuffleFalse否则验证集与训练集可能重叠。用 TextVectorization 完成标准化、分词、向量化三合一tf.keras.layers.TextVectorization是 Keras 内置的标准预处理层一次调用即可完成标准化、分词、向量化三步。文本分类教程中的典型配置max_features 10000 vectorize_layer layers.TextVectorization( standardizecustom_standardization, # 自定义标准化函数如去除 HTML 标签 max_tokensmax_features, # 词表上限 output_modeint, # 每个 token 映射为唯一整数索引 ) vectorize_layer.adapt(raw_train_ds.map(lambda x, y: x)) # 仅在训练集上构建词表需要特别强调的工程要点均来自官方教程原文只对训练数据调用adapt用测试集构建词表会泄漏信息data leakage。output_modeint保留 token 顺序binary模式则只标记该 token 是否至少出现一次两种模式语义不同按任务选择。层可以放进模型内部把TextVectorization嵌入模型后模型可直接消费原始字符串简化部署但在 GPU 上训练时把层放在模型外可以借助异步 CPU 处理与数据缓冲获得更好的性能。推荐的过渡策略是开发期放模型外部署前移入模型内。该层还会自动完成批量内的填充padding因为同一批次中不同样本长度不一。TensorFlow Text 的图内分词上述第 4 条能力与TextVectorization放入模型内的思路一脉相承都是为了保证训练与推理的预处理完全一致从而避免训练-推理偏差。两大库的定位对比与选型建议维度KerasNLPTensorFlow Text抽象层级高层Layer/Model形态低层文本处理 ops 与工具推荐场景绝大多数 NLP 任务推荐首选需要细粒度控制、不使用 Keras、序列建模扩展内置内容Transformer 模型BERT、FNet 等、分词器、预置权重分词器、token 特征检查、n-gram、字节偏移与 TensorFlow 的关系核心 Keras API 的扩展原生 TensorFlow 算子生产化图内计算易于生产化图内处理训练/推理一致选型结论很直接默认选择 KerasNLP它把 TensorFlow Text 的底层操作抽象为易用 API且覆盖了最新 Transformer 模型只有当你不愿意使用 Keras API、或确实需要访问底层文本处理算子时才直接使用 TensorFlow Text。两者并非互斥——KerasNLP 本身就构建在 TensorFlow Text 之上理解底层实现有助于你在定制需求时做出正确决策。从哪开始官方学习路径导航官方为文本处理新手规划了清晰的起步路线原文 Where to start 一节结合当前仓库可直接阅读的教程推荐按以下顺序推进TensorFlow Text 与 KerasNLP 总入口Text and natural language processing with TensorFlow即本文所依据的索引页先建立整体认知。KerasNLP 上手先读 Getting Started with KerasNLP再通过 Pretraining a Transformer from scratch with KerasNLP 体验从零预训练 Transformer 的完整流程。仓库内的官方文本教程可直接在本仓库查看源码基本文本分类从目录加载 IMDb 影评、TextVectorization预处理、Embedding 池化分类器全流程使用 TensorFlow Hub 的文本分类电影评论用 Hub 预训练嵌入完成分类加载文本数据依次覆盖 Keras 工具text_dataset_from_directoryTextVectorization与低层工具TextLineDatasettf.lookup TensorFlow Text 的UnicodeScriptTokenizer、case_fold_utf8并详细对比两种路径的性能与灵活性差异。文本分类的逐步入门若你是机器学习新手Google 官方的 Machine Learning: Text Classification 指南是很好的第一步。仓库教程导航文件 tutorials/_toc.yaml 的 Text 分组完整罗列了这些入口其中text_classification_with_hub等教程直接对应本仓库 tutorials/keras 目录 下的 notebook便于按图索骥、对照原文逐行实践。小结在 TensorFlow 中处理文本核心思路是先预处理、再建模用标准化、分词、向量化把原始字符串变成模型可消费的张量再进入分类、生成、翻译等 NLP 工作流。KerasNLP 以高层Layer/Model形态覆盖了从 BERT/FNet 等预置架构到自定义组件的最主流需求是默认推荐TensorFlow Text 则在底层提供字节偏移、token 特征检查、n-gram 与图内分词等精细能力供高级用户直接调用。二者上下呼应、共同构成 TensorFlow 完整的文本 NLP 技术栈而官方教程仓库提供了从入门到进阶的可运行范例是实际落地时最可靠的参考。赞分享文档开发工具教程【免费下载链接】docsTensorFlow documentation项目地址https://gitcode.com/gh_mirrors/doc/docs点击查看免费下载相关推荐终极TensorFlow文本处理指南7个快速掌握自然语言处理基础技术的完整教程终极TensorFlow文本处理指南7个快速掌握自然语言处理基础技术的完整教程 想要快速掌握TensorFlow文本处理和自然语言处理技术吗TensorFl教程深度学习机器学习如何用TensorFlow Text构建智能文本处理应用完整NLP工具指南如何用TensorFlow Text构建智能文本处理应用完整NLP工具指南 TensorFlow Text是TensorFlow生态系统中专门为自然语言处理人工智能机器学习深度学习分布式训练预训练如何免费永久激活IDM开源激活脚本完整使用指南如何免费永久激活IDM开源激活脚本完整使用指南 还在为Internet Download Manager的30天试用期限制而烦恼吗想要永久免费使用这款强大的CLI上一篇Minimal Mistakes 自动生成摘要Auto-Generated Excerpt机制详解从 excerpt_separator 到 Archive 索引页的完整链路下一篇使用 flutter_bloc_feature 砖块为 Flutter 项目快速生成带 BLoC 的完整 Feature 目录结构创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表