Driverless AI 中的 NLP¶
本节介绍 Driverless AI 的 NLP(文本)处理功能。Driverless AI 平台能够支持独立文本和具有其他列类型(作为预测性特征)的文本。基于 Tensorflow 的架构和 PyTorch 转换器架构(例如,BERT)主要用于特征工程和模型构建。
详细信息,请参阅:
NLP 特征工程与建模¶
Driverless AI 中的预训练 Pytorch 模型
以下 NLP 插件适用于文本列。可在 here 获取 NLP 转换器 的完整列表。
n 元语法频率/TF-IDF + 截断奇异值分解
n 元语法频率/TF-IDF + 线性/逻辑回归
词嵌入 + CNN 模型 (TensorFlow)
词嵌入 + BiGRU 模型 (TensorFlow)
字符嵌入 + CNN 模型 (TensorFlow)
基于 BERT/DistilBERT 的特征工程嵌套 (PyTorch)
支持将多种转换器架构(例如 BERT)作为建模算法 (PyTorch)
n-gram
n 元语法 是给定文本或语音样本中 n 项的连续序列。
n-gram Frequency
基于频率的特征以向量的形式表示给定文本中每个词的计数,是为不同的 n 元语法值创建的。例如,一元语法相当于单个词,二元语法相当于两个成对的连续词,依此类推。出现更频繁的词和 n 元语法将获得更高的权重。而那些较为罕见的词和 n 元语法将获得较低的权重。
Linear Models for TF-IDF Vectors
Driverless AI NLP 插件还提供了线性模型。这些模型会捕捉对实现高准确率的过程至关重要并被用作基本 DAI 模型中特征的线性相关性。
Word Embeddings
CNN Models for Word Embedding
Bi-directional GRU Models for Word Embedding
循环神经网络,与长短期记忆单元 (LSTM) 和门控循环单元 (GRU) 一样,均是用于 NLP 问题的先进算法。在 Driverless AI 中,我们为之前的词步骤和之后的步骤实现双向 GRU 特征,以预测当前状态。例如,在句子 “John is walking on the golf course” 中,单向模型将表示基于 “John is walking on” 而表示 “golf” 的状态,但是不会表示 “course”。使用双向模型,则表示还将考虑后面的单词,使模型具有更强的预测性能。
简单地说,双向 GRU 模型将两个独立的 RNN 模型合并成单个模型。GRU 架构与 LSTM 架构类似,可提供较高的速度和准确率。与 CNN 模型一样,我们将词嵌入作为输入变量传递给 GRU 模型,而 GRU 模型会返回可被用作新特征集、经过交叉验证的预测结果。
CNN Models for Character Embedding
BERT/DistilBERT Models for Feature Engineering
基于转换器的语言模型(如 BERT)是最先进的 NLP 模型,可用于各种 NLP 任务。这些模型通过使用注意机制来捕捉词间的上下文关系。不同于按顺序读取文本的方向模型,基于转换器的模型一次性读取整个文本序列,允许其根据其周围的所有词学习词的上下文语境。与早期嵌入方法相比,这些模型所获得的嵌入效果有所改进。
BERT 和 DistilBERT 模型可用于为任何文本列生成嵌入。这些预训练的模型用于获得文本嵌入,而后使用线性/逻辑回归,以生成可在之后用于 Driverless AI 中任何下游模型的特征。请参阅专家设置主题中的 NLP Settings,以进一步了解如何为特征工程启用这些模型。我们建议使用 GPU 来利用这些模型的能力并加速特征工程的进程。
PyTorch Transformer Architecture Models (eg. BERT) as Modeling Algorithms
从 Driverless AI 1.9 版开始,支持将下图所示基于转换器的架构作为 Driverless AI 的模型。
BERT 模型支持多种语言。DistilBERT 是 BERT 的精华版,与 BERT 相比,DistilBERT 的参数更少(少 40%),速度更快(加速 60%),同时保留了 95% 的 BERT 级别性能。如果训练时间和模型大小很重要,DistilBERT 模型将十分有用。请参阅专家设置主题的 NLP Settings,进一步了解如何将这些模型作为建模算法启用。我们建议使用 GPU 来利用这些模型的能力并加速模型训练时间。
除了这些技术,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 专家设置¶
Driverless AI 中,有很多适用于 NLP 的可配置设置。更多信息,请参阅专家设置主题中的 NLP Settings. 另请参阅实验设置下 pipeline building recipes 中的 nlp 模型 和 nlp 转换器 。
NLP 示例:情感分析¶
下节提供一个 NLP 示例。此信息基于博文 Automatic Feature Engineering for Text Analytics 使用 Python 客户端的类似示例可在 Python 客户端 中找到。
本示例使用了一个推文情感分析的经典示例,此经典示例使用了 美国航空公司情绪分析数据集 . 请注意,每条推文所表示的情绪均已预先做好标记,而我们的模型将用于标记新推文。我们可以在 Driverless AI 中使用随机拆分将数据集拆分为训练数据和测试数据 (80/20)。在本演示中,我们将使用 ‘text’ 列中的推文和 ‘airline_sentiment’ 列中的情绪(积极、消极或中性)。以下是数据集中的一些样本:

在以表格格式准备好数据集后,我们便可着手使用 Driverless AI。类似于 Driverless AI 设置中的其他问题,我们需要选择数据集,然后指定目标列 (‘airline_sentiment’)。
因为我们不想使用数据集中的任何其他列,所以需要点击 删除列 ,然后删除除 文本 以外的所有列,如下所示:

接下来,我们将打开 TensorFlow NLP 插件。我们可以前往 专家设置、 NLP ,并打开以下选项: CNN TensorFlow 模型 、 BiGRU TensorFlow 模型 、 基于字符的 TensorFlow 模型 或 预训练的 PyTorch NLP 模型 。
此时,我们即已准备好启动实验。文本特征将在特征工程进程中自动生成并进行评估。请注意,某些特征(如 TextCNN)依赖于 TensorFlow 模型。我们建议使用 GPU 来利用 TensorFlow 或 PyTorch 转换器模型的能力并加速特征工程的进程。

实验完成后,用户可以进行新的预测并下载评分管道,就如同任何其他 Driverless AI 实验一样。
资源:
fastText: https://fasttext.cc/