Driverless AI 中的 NLP

本节介绍 Driverless AI 的 NLP(文本)处理功能。Driverless AI 平台能够支持独立文本和具有其他列类型(作为预测性特征)的文本。基于 TensorFlow 的架构和 PyTorch 转换器架构(例如,BERT)主要用于特征工程和模型构建。

详细信息,请参阅:

注解

  • GPU usage 为 Driverless 中的 NLP 和图像用例带来显著提升。

NLP 特征工程与建模

NLP Feature Engineering

Driverless AI 中的预训练 PyTorch 模型

BERT Models

以下 NLP 插件适用于文本列。可在 here 获取 NLP 转换器 的完整列表。

  • n 元语法频率/TF-IDF + 截断奇异值分解

  • n 元语法频率/TF-IDF + 线性/逻辑回归

  • 词嵌入 + CNN 模型 (TensorFlow)

  • 词嵌入 + BiGRU 模型 (TensorFlow)

  • 字符嵌入 + CNN 模型 (TensorFlow)

  • 基于 BERT/DistilBERT 的特征工程嵌套 (PyTorch)

  • 支持将多种转换器架构(例如 BERT)作为建模算法 (PyTorch)

除了这些技术,Driverless AI 还支持使用 custom NLP recipes,例如 PyTorch 或 Flair。

NLP 特征命名约定

NLP 特征命名约定有助于了解已创建特征的类型。

特征名称使用的语法如下:

[FEAT TYPE]:[COL].[TARGET_CLASS]

  • [FEAT TYPE] 表示以下之一:

  • Txt – n 元语法频率/TF-IDF + 截断奇异值分解

  • TxtTE – n 元语法频率/TF-IDF + 线性模型

  • TextCNN_TE – 词嵌入 + CNN 模型

  • TextBiGRU_TE – 词嵌入 + 双向 GRU 模型

  • TextCharCNN_TE – 字符嵌入 + CNN 模型

  • [COL] 表示文本列的名称。

  • [TARGET_CLASS] 表示要进行模型预测的目标类。

例如,TxtTE:text.0 相当于使用 n 元语法频率/TF-IDF,然后使用线性模型,来对文本列 “text” 进行 0 类预测。

NLP Naming Conventions

NLP 解释器

以下是可用 NLP 解释器列表。更多信息,请参阅 解释器插件NLP 绘图.

  • NLP LOCO 解释器 :NLP LOCO 图会从记录中所有文本特征中移除特定标记,并预测不包括此标记时的局部重要性,以此将留一协变量输出 (LOCO) 类型的方法应用于 NLP 模型。当尝试确定对文本特征的特定更改会如何更改模型所作出的预测时,所得到的评分和原始评分(包括标记)之间的差异非常有用。

  • NLP 部分依赖性图解释器 :NLP 部分依赖性(黄色)描述了 Driverless AI 模型在输入文本标记保留在相应文本中和不包含在相应文本以及 +/-1 标准偏差范围内时的平均预测行为。ICE(灰色)显示单行数据在输入文本标记保留在相应文本中和不包含在相应文本中时的预测行为。文本标记是从 TF-IDF 生成的。

  • NLP 记号赋予器解释器 :NLP 记号赋予器图显示语料库(大型结构化文本集)中每个标记的全局和局部重要性值。此语料库在标记化过程之前根据 Driverless AI 模型所使用的文本特征自动生成。局部重要性值通过将词频-逆文档频率 (TF-IDF) 用作每行中每个标记的加权因子计算得出。TF-IDF 随标记在给定文档中出现的次数成比例增加,并被语料库中包含此标记的文档数所抵消。

  • NLP 向量化器 + 线性模型 (VLM) 文本特征重要性解释器 :NLP 向量化器 + 线性模型 (VLM) 文本特征重要性将单个单词的 TF-IDF 用作相关文本列中的特征,使用这些特征构建一个线性模型(目前为 GLM),然后将其拟合成 Driverless AI 模型的预测类(二元分类)或连续预测(回归)。线性模型的系数给出单词的重要性。注意,此解释器默认按字母顺序使用第一个文本列。

NLP 专家设置

Driverless AI 中,有很多适用于 NLP 的可配置设置。更多信息,请参阅专家设置主题中的 NLP 设置 。另请参阅实验设置下 pipeline building recipes 中的 nlp 模型nlp 转换器

NLP Expert Settings

NLP 示例:情感分析

下节提供一个 NLP 示例。此信息基于博文 Automatic Feature Engineering for Text Analytics 使用 Python 客户端的类似示例可在 Python 客户端 中找到。

本示例使用了一个推文情感分析的经典示例,此经典示例使用了 美国航空公司情绪分析数据集 . 请注意,每条推文所表示的情绪均已预先做好标记,而我们的模型将用于标记新推文。我们可以在 Driverless AI 中使用随机拆分将数据集拆分为训练数据和测试数据 (80/20)。在本演示中,我们将使用 ‘text’ 列中的推文和 ‘airline_sentiment’ 列中的情绪(积极、消极或中性)。以下是数据集中的一些样本:

Example text in dataset

在以表格格式准备好数据集后,我们便可着手使用 Driverless AI。类似于 Driverless AI 设置中的其他问题,我们需要选择数据集,然后指定目标列 (‘airline_sentiment’)。

Example experiment settings

因为我们不想使用数据集中的任何其他列,所以需要点击 删除列 ,然后删除除 文本 以外的所有列,如下所示:

Dropping columns in the dataset

接下来,我们将打开 TensorFlow NLP 插件。我们可以前往 专家设置NLP ,并打开以下选项: CNN TensorFlow 模型BiGRU TensorFlow 模型基于字符的 TensorFlow 模型预训练的 PyTorch NLP 模型

Enable TensorFlow models

此时,我们即已准备好启动实验。文本特征将在特征工程进程中自动生成并进行评估。请注意,某些特征(如 TextCNN)依赖于 TensorFlow 模型。我们建议使用 GPU 来利用 TensorFlow 或 PyTorch 转换器模型的能力并加速特征工程的进程。

Enable TensorFlow models

实验完成后,用户可以进行新的预测并下载评分管道,就如同任何其他 Driverless AI 实验一样。

资源

将 NLP 模型部署到生产

TensorFlow 和 BERT 模型(用于特征工程和建模)支持 Python scoringC++ MOJO scoring 。启用 tensorflow_nlp_have_gpus_in_production parameter in config.toml 以在 GPU 上部署模型。