自然语言处理工程化全景图解析

一、背景

随着科技快速进入AI时代,机器学习,自然语言处理(NLP),计算机视觉,推荐系统等主流的应用方向都已在多个行业陆续落地。这其中的部分应用也已在公司内部落地实施,也有像推荐系统,光学字符识别(OCR)等技术需要进一步在公司内部“开花结果”的。考虑到金融场景中,自然语言处理依然是出现频率最高,应用最广泛的AI技术。本篇文章将重点探讨自然语言处理工程化中的各个流程细节的实现。

二、全景图

<strong>自然语言处理工程化全景图解析</strong>-LMLPHP

上图(图1)充分展示了自然语言处理工程化中的各个流程模块,依次包括:1. 业务场景分析2. 数据获取 3.数据预处理 4. 特征工程 建模与训练 6. 模型评估 7. 模型部署与管理 8.模型性能与监控等。文章将从这几个维度依次展开解析。

三、细节描述

1、业务场景分析

AI算法要想实现价值,首先要着眼于场景。任何丢开场景的算法都只能是算法本身。从场景出发,通过对业务需求的分析,明确其所要解决的问题,作为抽象建模的基础。

对建模的方向确定后,要展开对该模型方案的技术调研,对比各方案并择优选择方案,并对选定方案进行可行性分析。

2、数据获取

在AI时代,算法模型的训练需要大量的数据。所以谁能提前掌握更多的数据,谁则占据先机。当前数据的获取主要来之以下几个途径:业务数据,开源数据集,自建数据,数据爬取等。针对NLP领域中各个特定的算法场景,标注工程师需要对数据进行不同程度,不同方式的标注,只有被正确标注的数据才是有价值的数据。

3、数据预处理

数据预处理这个环节,在几乎所有的AI算法或者应用场景中,都会有所应用,原因在于原始数据并不能直接用于模型训练。常见的文本领域的数据预处理方法包括,文本清洗,文本消歧,文本纠错与分词,降维等。除此之外,还包括去停用词,词干还原与提取(主要适用于英文)等。对于预处理好的文本,通常需要对数据切分得到训练集,验证集和测试集。训练集主要用于模型训练,验证集主要用于新训练模型性能的及时验证,测试集用于最终模型性能的评价。

4、特征工程

在算法模型建模的过程中,特征工程是绕不过的一道坎。

文本领域常见的特征有词频,N元信息,TF-IDF值等,这些特征常见于文本分类任务。除此之外,每个词在不同的语言环境中表现出不同的含义,这种不同含义的表达正是通过词向量来刻画的。

词向量一般被定义为一个1乘N维的长向量,N表示特征的个数,每个特征上有一个0到1之间的权重,这个权重表示该特征在刻画整个词向量过程中所付出的努力或所占的比例。除了上述提到的特征外,人类在说话或者描述问题过程中所使用的前后词语之间都具备较高的逻辑性和连续性,这种连续性则表现出较高的时序性。说的简单一点是词语之间是按照时间的先后顺序产生的。所以,时序特征也是NLP领域非常重要的特征,该特征在情感分析理解上下文语义等场景中用处广泛。

5、建模与训练

该模块可分为建模部分和训练部分。

建模部分则侧重于模型的选择,也就是常说的选型。针对无监督学习任务,常见的聚类模型有KNN 等;如果是监督学习任务,比如文本分类,则会用到机器学习领域的朴树贝叶斯,支持向量机,随机森林等,还可选择深度学习领域的卷积神经网络,循环神经网络等。

对于命名实体识别(NER)任务,常用到概率图模型:隐马尔科夫模型(HMM),条件随机场(CRF),以及深度学习模型配合概率图模型的组合方式,如:BILSTM+CRF, BERT + BILSTM+CRF 等。

自然语言处理建模中经常用到预训练模型。这里的预训练模型指的是,利用预训练好的词向量或者预训练好的模型如BERT, 配合其他的模型完成对下游任务的实现。

6、模型评估

这里提到的模型评估,指的是算法工程师离线评价模型。

模型建立后,算法工程师需在测试集上考察并评价模型的泛化能力。

对于分类问题的模型评价指标有准确率,精确率和召回率,F1值等。需要指出的是,当样本数量存在倾斜时,准确率则不再是可靠的性能指标,常见的案例如癌症预测,则能更多说明这一点。

对于回归问题的模型评价指标有绝对值均值(MAE),最小均方误差(MMSE),RMSE等。针对特定场景,比如文本生成,可以通过BLEU,ROUGE等数学方法评价生成文本和参考文本之间的相似度,以此来评价模型的好坏,但这种自动化的评价方法需要大量的对齐语料且对对齐语料的质量很敏感。对于模型输出的文本是不是符合人类语言学的习惯,是否有用,以及是否符合算法工程师所期望,这就需要领域专家来评定。尽管专家的评定很耗费人力和财力,但这也是一项重要的评价模型途径。

7、模型部署与管理

<strong>自然语言处理工程化全景图解析</strong>-LMLPHP

上述的图为为模型部署图。当模型已经达到比较好的效果或者初始开发模型需要上线工作时,就要用到模型部署的工作。

这部分的工作可分为:数据管理,模型管理和预测输出三部分。下面将具体展开描述:

生产场景中的实时数据,一方面会入库到离线数据池,一方面被转化成在线变量,在线变量直接输入模型,得到模型的预测输出。

同时,离线数据池中的历史数据会继续参与模型的训练以提高模型的泛化能力,至此模型部署则被分成两条线:一条线表示在线预测,一条线表示离线预测。

模型部署过程中根据模型的使用平台不同,中间需要对模型的格式做相应转化,以适配调用方对模型格式的需求。

此外,离线部署和在线部署需保持同步,以保障模型性能的稳定性。必要的时候,我们要对比离线模型和在线模型输出的结果,以确保在线模型输出结果的合理性。

8、模型性能与监控

当模型部署在生产环境中,还需要继续跟进模型的性能表现。直接体现模型好坏的性能指标是业务性能。为保障稳定的性能指标前提需保障模型的鲁棒性、可控性、资源消耗合理、响应时间合理等。此外,模型运行过程中产生的历史数据,都会被记录在模型日志当中以备后期模型的维护和问题追踪。

四、总结

本文详细描述了自然语言处理工程化中的各个细节,通过流程化的思维模式充分展示了自然语言处理中常见的技术要点,对后续的研究实践具有重要的指导意义。

更多学习路线请见:开发者学习路线汇总(持续更新)

08-05 19:17