万字长文综述:给你的数据加上杠杆——文本增强技术的研究进展及应用实践

栏目: IT技术 · 发布时间: 4年前

内容简介:2.1. 回译(Back translation)2.2. 随机词替换2.3. 非核心词替换

目 录

1 为什么要了解文本增强技术

2. 典型技术方案

2.1. 回译(Back translation)

2.2. 随机词替换 

2.3. 非核心词替换

2.4. 基于上下文信息的文本增强

2.5. 基于语言生成模型的文本增强

3. 新方向展望

4. 在金融领域任务的实践16

4.1. 金融领域的 NLP 任务为什么需要文本增强技术

4.2. 案例背景及实验条件

4.2.1. 案例背景和数据集特点

4.2.2. 算法模型

4.3. 实验结果及分析

4.3.1. 回译

4.3.2. EDA

4.3.3. 基于 TF-IDF 的文本增强

4.3.4. 三类方法的对比

4.3.4. 小结

5. 总结

参考文献

摘 要

文章系统性地回顾了自然语言处理领域中的文本增强技术在近几年的发展情况,重点列举和讨论了 18 年、19 年中人们常用的五类文本增强技术路径以及对应的代表性技术。接下来,文章以金融领域的自然语言处理任务入手,多维度地分析几类通用文本数据增强技术在实际业务问题上的重要价值。文章的结论是,文本增强技术是一类低成本的数据杠杆,可以在不引入新数据下,有效撬动模型性能。

1 为什么要了解文本增强技术

本文摘自熵简科技 NLP 团队的内部技术沙龙,文章系统性地回顾了自然语言处理领域中的文本增强技术在近几年的发展情况,重点列举和讨论了 18 年、19 年中人们常用的五类文本增强技术路径以及对应的代表性技术,希望对于大家的日常研究工作有所启发。在第 4 节中,我们以金融资管领域的实际应用场景入手,多维度地分析了几类通用的文本数据增强技术在实际产品研发中的作用。

在开始介绍具体方法之前,先简单列举一下目前自然语言处理任务中运用文本增强技术的常见场景:

(1) 少样本场景

在少样本场景下,能够搜集到的样本数目不满足模型训练的需求,导致模型处于欠拟合的状态。自然而然,在现有数据基础上,运用文本增强技术来扩充样本集,是一件又快又省,性价比很高的事。很多研究也已经表明,这种方法可以明显提高模型的性能 [1-3];

(2) 分类任务中样本分布不均衡的场景

除了一些基准benchmark,真实场景中大部分文本分类任务中的各类别样本数目都是不均衡的,很多时候样本数最多类别的数目可能比最少的类别高两个数量级。这会带来很多问题,比如模型对于小样本类别往往处于欠拟合状态,在实际预测时,几乎不会对这一类别给予太高的概率。

自然,面对这样的问题,一种常见的处理方式是针对小样本类别,运用数据增强技术进行样本扩充,从而降低样本间的不均衡性,提高模型的泛化能力。这种方法也在实际中被多次证明了其有效性 [2,4];

当然,对于样本不均衡问题,已经有很多解决方法,大家可以参考这篇 google 引用数快 1 万的论文 [5] 及其引文。

(3) 半监督训练场景

至少从 19 年 NLP 方向 google 出品的半监督学习算法 UDA 可以看出 [6],文本数据增强技术可以用在无标签样本上,以构造出半监督训练所需的样本对,以此让模型从无标签的数据中获取到优化所需的梯度。关于半监督学习的具体进展,后面如果有时间,可以单开一篇文章介绍。

(4) 提高模型的鲁棒性

数据增强技术在不严谨的情况下可以分为两类,一类是在保持语义不变的情况下,变换文本的表达形式,例如接下来提到的回译、文本复述等;另一类是,按照某种策略对原文进行局部调整,例如后面提到同义词替换,随机删除等等。不论是哪种方法,都可以认为是提高了模型的鲁棒性,使得模型更关注文本的语义信息,并对文本的局部噪声不再敏感。举个例子,「文本数据强增技术帮助可以模型对于噪声局部不再感敏」,如果你依然能够看明白这句话的意思,说明你对于文本局部噪声也是不敏感的。

基于这种考虑,无论是少样本场景还是大语料场景,文本增强技术都有助于提高模型的鲁棒性,提高其泛化能力。关于这一点,深度学习领域著名的花书 [7] 的 7.4 节表达了类似的观点。

从上面的介绍可以看出来,文本数据增强技术在自然语言处理中属于基础性技术,具有广阔的应用场景,因此有必要对其进行系统性的讨论。

2. 典型技术方案

2.1. 回译(Back translation)

得益于近几年文本翻译领域的显著进展、各种先进翻译模型的开源(包括百度、google 等翻译 工具 的接口开放),基于回译(back translation)方法的文本数据增强成为了质量高又几乎无技术门槛的通用文本增强技术。回译方法的基本流程很简单,利用翻译模型将语种 1 的原始文本翻译为语种 2 的文本表达,基于语种 2 的表达再翻译为语种 3 的文本表达,最后再直接从语种 3 的形式翻译回语种 1 的文本表达,此文本即是原始文本增强后的文本。当然,很多时候只采用一种中间语种也可以实现很好的增强效果。

我们利用 google 翻译举个例子:

  • 原始文本为:文本数据增强技术在自然语言处理中属于基础性技术; 

  • 翻译为日语:テキストデータ拡張技術は、自然言語処理の基本的な技術です;

  • 日语再翻译为英语:Text data extension technology is a basic technology of natural language processing;

  • 英语再翻译回中文:文本数据扩展技术是自然语言处理的基本技术;

可以看出来,由于 google 翻译足够优秀,增强前后的文本在语义上基本保持一致。因此,对于回译这一增强技术,翻译模型的好坏决定了数据增强的最终效果。

其中还有一些细节值得说一下:

第一,如果采用翻译模型,可以采用 random sample 或 beam search 等策略实现成倍数的数据扩充。如果采用 google 等翻译工具,通过更换中间语种,也可以实现 N 倍的数据扩充。

第二,目前翻译模型对长文本输入的支持较弱,因此在实际中,一般会将文本按照「。」等标点符号拆分为一条条句子,然后分别进行回译操作,最后再组装为新的文本。

说了这么多,我们看一下回译技术在近几年研究报道中的实际应用情况。

据我们所知,早期人们主要将回译技术用于神经网络翻译模型(NMT)的性能提升 [8,9],通过回译可以将单语语料(monolingual data)构造成双语语料,从而帮助模型提升性能。实验证明,回译可以帮助 NMT 模型带来平均 1.7 BLEU 的性能提升,帮助 facebook 的团队在 WMT'14 English-German 测试集上实现了当时的 SOTA 性能,更多的细节大家可以移步文献 [9],里面有详细讨论。

到了 2018 年,CMU 和 google brain 的团队将回译技术独立出来作为一个专门的数据增强技术用来优化问答模型的性能 [10]。他们同时训练了两个 NMT 模型,分别是 English to French 和 French to English,用来实现回译,如下图所示:

万字长文综述:给你的数据加上杠杆——文本增强技术的研究进展及应用实践

最终的实验证明,回译技术帮助他们的模型带了至少一个百分点的性能提升,如下图红框所示。我们知道,对于问答系统而言,能够有一个百分点的提升,也是很不错的工作。

万字长文综述:给你的数据加上杠杆——文本增强技术的研究进展及应用实践

同时,他们详细研究了不同增强倍数以及不同采样比例下,回译对于模型提升的大小,如下图所示:

万字长文综述:给你的数据加上杠杆——文本增强技术的研究进展及应用实践

对比图中的两个红框部分,研究人员发现,在最佳情况下,回译带来的性能提升与在模型中加入 self-attention 组件带来的提升几乎相当。这似乎表明,挖掘数据多维度的信息和优化模型架构具有同等的重要性。

时间到了 2019 年下半年,google 团队提出了一种可用于 NLP 任务的半监督学习算法(UDA)[6],前面已经提到过了。这篇文章本身并不复杂,主要是实验证明了 回译 等文本增强技术可以用于半监督学习,而且结果看起来很惊人,他们仅用了 20 条样本作为标签数据,就在 IMDb 数据集上实现了接近 SOTA 的性能。当然,我们觉得这里面至少有一半的原因是算法采用的 BERT 模型原本就已经在大规模预料上学习过。关于 UDA 更具体的分析,感兴趣的同学可以移步文献 [6],这里就不再详细展开。

最后,再从机器学习本身来讨论一下回译技术:

第一,回译技术的有效性本质上来源于迁移学习。通过文本增强的过程,回译技术将翻译模型学到的关于词义、语法、句法等知识转移到了新生成的样本上,从而为当前的自然语言处理任务引入了新的信息和知识来源;

第二,回译技术产生的新样本如果有益,隐含着这样一个先验,即模型对于具有不同语言表达形式但同样语义的输入文本,应该具有不变性,或者应该具有相近的输出。那么,是否所有的 NLP 任务都具备这样的先验假设呢?

2.2. 随机词替换

此处所谓的基于随机词替换的数据增强方法是对一类文本数据增强方法的统称,其基本方法类似于图像增强技术中的随机裁剪、图像缩放,通常是随机地选择文本中一定比例的词,并对这些词进行同义词替换、删除等简单操作,不像回译等模型,需要外部预训练好的模型的辅助。

19 年有研究团队提出了一种称为 EDA (Easy data augmentation) 的文本增强方法 [11],该方法可以认为是这一类方法的集大成者。EDA 主要包含四种操作:同义词替换、随机插入、随机交换和随机删除。详细说明如下:

(1) 同义词替换 (SR):从句子中随机选择非停止词。用随机选择的同义词替换这些单词;

(2) 随机插入 (RI):随机的找出句中某个不属于停用词集的词,并求出其随机的同义词,将该同义词插入句子的一个随机位置。重复 n 次;

(3) 随机交换 (Random Swap, RS):随机的选择句中两个单词并交换它们的位置。重复 n 次;

(4) 随机删除 (RD):以概率 p 随机删除句子中每个单词。

下面列举了以上四类操作的例子:

  • 原始文本:今天天气很好。

  • 同义词替换 (SR):今天天气不错。(好 替换为 不错)

  • 随机插入 (RI):今天不错天气很好。(插入 不错)

  • 随机交换 (RS):今天很好天气。(很好 和 天气交换位置)

  • 随机删除 (RD):今天天气好。(删除 很)

对于这种方法,最大的一个疑问是,经过 EDA 操作之后,文本的类别标签(label)是否还能保持不变,毕竟这是对文本进行随机操作。研究人员对于这个问题专门进行了实验分析。首先,他们仅用原始训练集 (未经过数据增强) 训练了一个分类模型,这里姑且称之为「模型 A」。接下来,利用 EDA 方法对测试集进行了数据拓展。最后,将原有的测试集和拓展出的语料输入到模型 A 中,并对模型在最后线性层的输出进行了比较。他们发现原有测试集和拓展出的语料,在高维空间中,距离很小。二者经过 t-SNE 算法降维之后的结果对比,如下图所示:

万字长文综述:给你的数据加上杠杆——文本增强技术的研究进展及应用实践

从上面的分析可以看出来,经过 EDA 变换之后,原始数据集一方面在原有基础上扩展吸收了很多噪声,扩大了数据量,同时还保持了原有的标签,因而有效的扩大了原始样本集的信息容量。

接下来,我们看一下 EDA 技术应用到实际问题中的效果怎么样。

研究人员在五项公开的文本分类数据集中进行实验测试,为了更充分地对比,实验中分别采用了卷积神经网络(CNN)和循环神经网络(RNN)作为分类模型,最终在五项任务中的平均表现如下表所示 [2.2.1]:

万字长文综述:给你的数据加上杠杆——文本增强技术的研究进展及应用实践

从上表的结果中,我们至少可以得出两个结论:

第一:EDA 技术可以有效提到模型的泛化能力,降低泛化误差,即使在完整数据集下,EDA 技术也可以带来平均 0.8 个百分点的提升;

第二:数据集越小,EDA 技术对模型带来的提升越明显。当样本数量只有 500 时,EDA 技术可以带来平均 三个 百分点的提升。因此,很适合用在少样本的场景。值得注意的是,在 EDA 技术的帮助,数据量规模仅有原数据集的 50% 时,模型性能已经超过了不使用 EDA 时在 100% 数据上的表现。

此外,在 19 年 11 月由IBM研究团队发表的一项新的文本增强技术的研究中 [2],也对 EDA 技术进行了对照实验:

万字长文综述:给你的数据加上杠杆——文本增强技术的研究进展及应用实践

其中,LAMBADA 技术为IBM研究团队所提出的文本增强方法,将本文的后面部分做详细介绍。从表中可以看出,EDA 方法在多数训练集中的表现仅次于IBM最新研究成果 LAMBADA,这再次验证了 EDA 方法的简单有效。

关于 EDA 技术,另一个需要重点关注的问题是,在运用 EDA 技术,如何设置替换比例 和 增强的文本倍数,比如 2000 条语句应对多少数据进行随机删除,增加等。原文给出的建议比例如下 [11]:

万字长文综述:给你的数据加上杠杆——文本增强技术的研究进展及应用实践

其中,α是替换删除等的比例,比如同义词替换中,替换的单词数 n=α∗L,L 是句子长度,随机插入、随机替换类似;Naug 是使用 EDA 方法从每一个句子拓展出的句子数量。

综上,我们可以知道,采用 EDA 文本增强技术进行模型性能的提升,简单而有效,尤其是在小样本场景下。

2.3. 非核心词替换

在上文的 EDA 技术中,对于要替换的词是随机选择的,因此一种直观感受是,如果一些重要词被替换了,那么增强后文本的质量会大打折扣。这一部分介绍的方法,则是为了尽量避免这一问题,所实现的词替换技术,姑且称之为「基于非核心词替换的数据增强技术」。

我们最早是在 google 提出 UDA 算法的那篇论文中发现的这一技术 [6],是否在更早的文献中出现过,我们没有再深究了,有了解的同学请留言告知。

整个技术的核心点也比较简单,用词典中不重要的词去替换文本中一定比例的不重要词,从而产生新的文本。

我们知道在信息检索中,一般会用 TF-IDF 值来衡量一个词对于一段文本的重要性,下面简单介绍一下 TF-IDF 的定义:

TF(词频)即一个词在文中出现的次数,统计出来就是词频 TF,显而易见,一个词在文章中出现很多次,那么这个词可能有着很大的作用,但如果这个词又经常出现在其他文档中,如「的」、「我」,那么其重要性就要大打折扣,后者就是用 IDF 来表征。

IDF(逆文档频率),一个重要性调整系数,衡量一个词是不是常见词。如果某个词比较少见,但是它在这篇文章中多次出现,那么它很可能就反映了这篇文章的特性,正是我们所需要的关键词。

万字长文综述:给你的数据加上杠杆——文本增强技术的研究进展及应用实践

TF-IDF = TF×IDF,通过此公式可以有效衡量一个词对于一段文本的重要性。当我们知道一个词对于一个文本的重要性之后,再采用与 TF-IDF 负相关的概率去采样文中的词,用来决定是否要替换,这样可以有效避免将文本中的一些关键词进行错误替换或删除。

UDA 论文中所提出的具体实现方式如下:

万字长文综述:给你的数据加上杠杆——文本增强技术的研究进展及应用实践

提出这一方法的原始论文并没有单独对这一方法进行对照实验,而是与 回译 技术一起来共同实现文本的增强,我们可以看一下综合的效果。论文在六个不同的数据集进行了实验:

万字长文综述:给你的数据加上杠杆——文本增强技术的研究进展及应用实践

实验中,采用了四种不同的模型进行对照实验,分别是权重随机化的 Transformer 结构,BERT-base,BERT-large 以及在领域内微调过的 BERT-large,表中的数值是在测试集上的误差。从表中可知,在经过 非核心词替换 以及 回译 的文本增强之后,模型在实验各个数据集中基本都取得较大提高。

万字长文综述:给你的数据加上杠杆——文本增强技术的研究进展及应用实践

上图展示了不同含标签数据量下,模型利用 UDA 算法框架和两种数据增强方法可以实现的最佳性能。关于文本增强技术,从图中可以间接验证一个重要判断:无论在少样本下还是大样本场景,文本增强技术的运用可以帮助模型在原始样本集的基础上进一步提高性能。

遗憾地是,论文没有对基于 TF-IDF 替换的文本增强技术的效果进行单独研究,或许团队内部实验过,但没有放在论文中。本文的姊妹篇 文本增强技术在金融领域的应用实践,单独对这一技术的效果进行了对照实验,感兴趣的同学可以参考。

最后再针对 UDA 这篇论文所涉及的文本增强技术讨论两点:

第一,在 UDA 的这篇研究中,研究人员仅仅用到了词替换的操作,并没有将 EDA 中其他三项操作加入进来,如删除、交换位置等等,这可以作为后续的研究方向之一。

第二,相对于 UDA 技术,这一技术额外的操作是引入了 TF-IDF 来衡量一个词对于一个句子的重要性,本质上可以认为是在 EDA 的基础上引入了强的先验知识,再根据确定好的关键词替换同义词,避免无用数据和错误数据的产生。

2.4. 基于上下文信息的文本增强

基于上下文信息的文本增强技术在原理上也很直观:首先需要一个训练好的语言模型(LM),对于需要增强的原始文本,随机去掉文中的一个词或字(这取决于语言模型支持字还是词)。接下来,将文本的剩余部分输入语言模型,选择语言模型所预测的 top k 个词去替换原文中被去掉的词,以形成 k 条新的文本。这里列举两个近两年的代表工作。

一个是日本 Preferred Networks 公司在 2018 年提出的基于双向 LM 的上下文文本增强技术 [12]。整个框架如下:

万字长文综述:给你的数据加上杠杆——文本增强技术的研究进展及应用实践

相对于一般的双向 LM,在这个方案中,为了保证文本变换之后的标签不变(例如对于表示情感极性的文本,变换之后不会从积极变为消极),研究人员在 LM 隐层中加入了文本的标签信息,从而保证产生的文本与原始本文具有相同的标签属性。

研究人员在五个分类任务中测试了这个方法的效果,结果如下:

万字长文综述:给你的数据加上杠杆——文本增强技术的研究进展及应用实践

从上图可以看出,本文提出的方法相对于同义词替换的方法,能够带来 0.5 左右的提升。但是,针对是否应该加入标签信息这个问题。从实验中可以看出,加入标签信息之后带来了约 0.2 个百分点的泛化误差的降低,这个差值基本在泛化误差的波动范围之内,因此是否有明显效果是存疑的。

另一篇研究报道来自于国内的中科院 [13],是 19 年发表的成果。整体的思路与上面的方案类似,主要的区别是将双向 LM 替换为了 BERT,并同样对 BERT 进行了微调,引入了原始文本的标签信息,以保证新产生的样本具有与原始样本相同的标签属性。实验结果如下:

万字长文综述:给你的数据加上杠杆——文本增强技术的研究进展及应用实践

从实验中至少看出两点:

第一点,基于 BERT 的上下文增强技术可以带来明显的模型性能提升,平均能够提高接近两个百分点,这还是很吸引人的。

第二点,将原始原始文本的标签信息带入 BERT(w/C-BERT)相对于不带入的情况(w/BERT)确实能够带来较为显著的模型增益。

由于 BERT 模型已经开源,大家在平常工作和研究中也用的很多,因此从实用价值来说,这篇文章相对于前一篇文章 [12] 的参考意义更大一些。从上面的实验可以看出,即使不对 BERT 做任何改造,直接套用过来,也可以带来至少 1 个百分点的模型性能提升。

2.5. 基于语言生成模型的文本增强

利用语言生成模型进行文本增强是一大类方法,已经报道了多种实现方式 [14-16],19 年之前的研究工作一般是针对特定任务在 RNN 架构基础上衍生出的文本增强技术。直到 19 年前后,GPT 和GPT-2模型横空出世,在文本生成任务上的效果极其惊人,以至于OpenAI当时不敢放出GPT-2完整版的模型参数。

关于 GPT 模型的详细介绍,大家可以参考OpenAI的相关文献 [17,18]。至于中文相关的资料,大家可以参考张俊林老师在知乎上的文章:https://zhuanlan.zhihu.com/p/56865533。本文就不再做详细介绍。

GPT 作为一个在海量语料上预训练过的通用语言生成模型,人们自然会想到拿它来实现文本增强相关的工作。

前面已经提到,IBM的研究团队在 19 年 11 月提出了一种基于 GPT 架构的文本增强技术,他们称之为 LAMBDA (language-model-based data augmentation)[2]。具体方法如下:

LAMBADA 首先在大量文本上进行了预训练,使模型能够捕获语言的结构,从而能产生连贯的句子。然后在不同任务的少量数据集上对模型进行微调,并使用微调后的模型生成新的句子。最后在相同的小型数据集上训练分类器,并进行过滤,保证现有的小型数据集和新生成数据集有相近的分布。

为了充分验证 LAMBADA 技术的性能,研究人员进行了两大类实验。

实验一:将 LAMBADA 技术运用在了三种不同数据集上,并采用三种不同的模型架构(BERT、LSTM、SVM)进行对照实验,结果如下:

万字长文综述:给你的数据加上杠杆——文本增强技术的研究进展及应用实践

其中,Baseline 指的是仅采用原始数据集进行训练时的模型。从表中可以看出,LAMBADA 技术相对于 baseline 在三种数据集下都可以带来性能提升。尤其是对于 ATIS 数据集,相对 baseline 的性能提升超过了 50%,原论文中给出的说法是,ATIS 数据具有明显的分布不均衡性,而 LAMBADA 技术可以有效弥补原数据集的不均衡性。

实验二:将 LAMBADA 技术与当前其他主流的数据增强技术进行了比较(竟然没有比较 回译):

万字长文综述:给你的数据加上杠杆——文本增强技术的研究进展及应用实践

其中,EDA 和 CBERT 在前文中都已经做了详细介绍。从图中可以看出,LAMBADA 技术的优势还是很明显的。如果采用 BERT 作为模型架构,那么相对于其他文本增强算法,至少可以提升 1.2 个百分点;在 ATIS 数据集上,更是比第二名提高了 13 个百分点。同样地,在 SVM 和 LSTM 上,除了个别数据及上的表现略差于 EDA,LAMBADA 技术仍然是一枝独秀。其实很好奇,如果将 回译 技术也纳入比较会是什么样的情况。

总而言之,至少从论文中的实验来看,LAMBADA 技术可以视为当前最优秀的文本增强技术之一。LAMBADA 技术后续还有很多可以挖掘的地方,比如与前面提到的 UDA 框架结合,用实现少样本下的半监督学习。或者像论文原作者提到的那样,未来他们将尝试将此技术用于 zero-shot learning。

3. 新方向展望

(1)文本风格迁移

在 CV 领域,图像风格迁移在前两年研究较多,相信大家也体验过在手机 app 上,一键将普通照片转换为梵高风格的画。对于人眼来说,变换前后的照片虽然风格变化很大,但是上面的人物或动物实体仍然是可以识别出来的。换言之,风格迁移也可以看作是一次图像数据增强(augmentation)。

沿着这个思路,如果在 NLP 领域也有成熟且通用的语言风格迁移算法,那么自然也可以用来做文本数据增强。其实,回译 就有一点文本风格迁移的意思,但是属于风格不可控的文本转换。在这方面,近两年已经有一些代表工作,但目前还有看到把相关算法用于文本数据增强的研究报道,感兴趣的同学可以详细参考文献 [19,20]。

4. 在金融领域任务的实践

文章到这里,其实还有留下两个问题:

第一,我们团队为什么会如此关注文本增强技术,它在具体业务场景中真的能发挥作用吗?

第二,文中提到的几类技术虽然在公开测评集上表现很好,那么在实际业务中的表现如何?特别地,目前没有看到有公开的研究报道对于文中部分技术进行单独实验。自然,我们会好奇这些技术在单独运用时,到底效果怎么样。

本小节接下来部分,尝试对这两个问题进行回答。

4.1. 金融领域的 NLP 任务为什么需要文本增强技术

先回答第一个问题。我们团队之所以如此关注文本增强技术,这与我们日常面临的业务需求紧密相关。我们团队一直致力于将 NLP 和深度学习领域内最新的思想、最成熟的技术真正落地于金融资管领域,让科技赋能产业,因此主要面对的任务特征与金融资管领域的数据特点息息相关。

在面对金融资管领域的数据分析任务时,面临的问题常常具备两类特点:

第一,大量及时有效的信息分布在非结构化的文本数据中,如研报、新闻资讯、twitter 等社交媒体中,需要 NLP 等技术从中高效准确地挖掘出结构化信息。

万字长文综述:给你的数据加上杠杆——文本增强技术的研究进展及应用实践

上图的数据来自 IDC,说明了近几年全球新增的数据中,有 80% 的数据都是非结构化数据(除文本外,还包含图片和语音等数据)。因此,金融业机构需要高精度、高鲁棒性和高效率的 NLP 技术。其中,算法的高精度、高鲁棒性是两项最重要的指标。

第二,很多与金融领域内特定任务相关的应用场景常常面临着少样本的困境。这体现在两方面:

一方面,可搜集的数据量少,数据搜集的时间成本很高,尤其在从 0 到 1 的立项初期。曾经在某个项目上,我们用了三周时间才搜集到 1000 多条有效样本。

另一方面,数据的人工标注成本很高。大家都知道,NLP 属于认知层面的技术,数据标注的难度和不确定性本来就比图像识别要高。而对于金融领域的问题,还需要业务人员甚至金融分析师的参与才能实现相对准确的数据标注,满足业务需求。这又进一步增大了数据标注成本。

因此,不论是为了提高模型的准确性和鲁棒性,还是为了在少样本场景下尽可能有效地利用数据,我们都希望能够充分运用文本增强技术这个低成本的数据杠杆,在有限条件下尽可能撬动模型的性能。

关于第二个问题,这也是我们之前深入探索这一技术时的疑问。在本文的接下来部分,我们以金融资管领域的一类典型的文本处理任务为案例,以对照实验的方式详细地讨论和展示,文本增强技术在具体产品开发时的重要作用。

4.2. 案例背景及实验条件

4.2.1. 案例背景和数据集特点

此案例由前面提到的少样本场景下的某个金融舆情项目抽象出来。其任务目标是,针对金融舆情类的短文本进行所属行业分类,项目中以中信一级行业分类作为分类基准,包括餐饮旅游、商贸零售、煤炭、纺织服装、农林牧渔、建筑、石油石化、家电、通信、计算机等 29 个行业类别。

这里展示了几条原始样本,我们可以直观感受一下数据(数据中的数值类指标为虚构数):

  • 原始数据:【xxx 月报】特点:(1)紧跟物业市场动向,观测各地政策变化;(2)补充公告内容,跟踪项目中标和收并购。行业:「物业服务」入产业结构鼓励类目,中消协发布调查报告。行业类别:房地产

  • 原始数据:公司有望成为「慢病管理+血糖监测+药物治疗」三位一体的糖尿病管理大平台企业。维持预测 2001-2002 年 EPS 为 0.2/0.34/0.21 元,同比增长 11/11/11%,现价对应 01~21 年 PE 为 10/10/10 倍,维持「增持」评级。行业类别:医药

  • 原始数据:公司实现飞机起降架次 6 万次,同比增长 4.8%,旅客吞吐量 800 万人次,同比增长 4.5%,货邮吞吐量 32.2 万吨,同比增长 0.8%。行业类别:交通运输

在项目初期,我们共搜集和标注的有效数据约为 1900 条。为了充分测试和准确验证算法的性能,在维持各类别数据相对均衡的情况下,我们将数据集随机分为了训练集和测试集。

其中,训练集共包含 900 条样本,用于模型的训练。测试集包含约 1000 条数据,仅用来测试模型的泛化误差,不参与模型的训练。

4.2.2. 算法模型

在实际产品中,一般会采用多模型集成以及人工规则等多种方法的结合,以尽可能提高模型的泛化能力。在本文中,为了突出实验重点,我们采用 TextCNN 网络作为行业分类器 [21],其网络架构如下图所示:

万字长文综述:给你的数据加上杠杆——文本增强技术的研究进展及应用实践

这里对于 TextCNN 网络简单做一下介绍,对于此模型熟悉的同学可以直接跳过此部分。如上图所述,TextCNN 网络由基于word2vec技术的词向量层 (Word embedding block)、基于 TextCNN 架构的卷积神经网络层(Multi-CNN block)共同构成。

TextCNN 架构由美国纽约大学的 Kim 教授提出 [21],该架构的两类基本操作分别是卷积运算和池化运算:

  • 卷积运算本质上是局部区域的加权运算,应用在本模型中可以有效提取文本的局部特征及局部语序信息。通过不同长度卷积核的组合,还可以同时提到取文本中不同距离上的特征信息。

  • 池化运算一方面可以实现降维功能,并保证输出向量的长度不受文本长度变化的影响,另一方面池化操作还可以保证平移不变性,从而使得文本的关键特征不受到位置的影响。

得益于这两大优势,同时 CNN 网络天然支持并行运算,具备无可比拟的计算效率优势,因此本模型采用 CNN 网络作为文本信息特征提取层。值得一提的是,基于工程实践经验以及公开研究结果来看 [22, 23],卷积神经网络在自然语言处理任务中具备独特的优势,受到很多大厂的青睐。

本模型的训练样本包含两个部分:

  • 词向量层的语料训练样本:由各门户网站的新闻语料、各机构发布的研报、百度百科等文本构成的数亿规模的语料;

  • 整体模型的训练样本:包含上述的训练集中的 900 条语料、利用数据增强技术对 900 条原始语料扩充之后获得的语料;

4.3. 实验结果及分析

本文接下来部分,分别将 回译、EDA 和 基于 TF-IDF 的词替换 这三种数据增强技术运用在上述案例上,验证三类方法是否有效。

4.3.1. 回译

在回译的具体实现方案上,我们先后尝试了两种方案:

  • 方案一:利用开源的 中-英、英-中 两个翻译模型实现回译变换,在输出选择时,我们同时尝试了随机采样和 beam search 两种方式,以实现多倍数的文本增强;

  • 方案二:利用 google 翻译,选用多个中间语种做过渡,以同样实现多倍数的文本增强。如,中-日-英-中,中-法-德-中 等。

实验中我们发现,虽然方案一所增强文本的语言丰富度更高,但是方案二所增强的文本在语义准确度和连贯性上更好,因此最终采用方案二。

原始文本与增强后的文本举例如下:

  • 原始文本:公司有望成为「慢病管理+血糖监测+药物治疗」三位一体的糖尿病管理大平台企业。维持预测 2001-2002 年 EPS 为 0.2/0.34/0.21 元,同比增长 11/11/11%,现价对应 01~21 年 PE 为 10/10/10 倍,维持「增持」评级。

  • 增强后文本:该公司有望成为具有「慢病管理+血糖监测+药物治疗」的三位一体糖尿病管理平台公司。维持预测,2001 年至 2002 年每股收益为 0.2 / 0.34 / 0.21 元,比上年增长 11/11/11%。当前价格是对应于 01-21 PE 的 10/10/10 倍,维持「增持」评级。

在实验参数的选择上,我们重点对于数据集规模、数据增强倍数这两个参数进行了详细的对照实验。整体的实验步骤可概括如下:

  • 步骤一:对训练集中的 900 条样本,运用 回译 技术进行文本增强操作,共增强 4 倍(因此利用了 4 种不同的中间语种);

  • 步骤二:从原始训练集的 900 条样本中随机取 20%、40%、60%、80% 和 100 % 比例的数据,然后混合进对应的增强后数据(包括 0 倍,即不做增强),在不同混合倍数下进行模型训练,并记录最优实验结果;

  • 步骤三:重复步骤二的实验三次,以三次实验的平均值作为最终结果。

最终的实验结果如下:

万字长文综述:给你的数据加上杠杆——文本增强技术的研究进展及应用实践

从上表的结果来看,我们至少可以得出以下几个结论:

第一,从整体来看,无论是在小规模数据下(20% 比例的数据对应约 180 条训练样本)还是在完整训练集下(约 900 条训练样本),回译技术都可以给模型带来 8~25 个百分点的提升。这个提升有时可以带来质的变化。例如,在比例为 60% 的实验中,无扩充下的模型 F1 值为 0.823,这很难应用在金融领域的产品上。而运用文本增强技术之后,模型可以达到 0.921,这个表现已经接近灰度发布的标准了。

第二,对比不同倍数下的模型表现可以发现,相对于无扩充时 baseline 的表现,1 倍扩充时给模型带来的新增提升是最显著的,之后新增的倍数带来的模型增益逐渐递减,但即使采用 4 倍增强时,模型的性能依然略有提升。考虑到回译的实现方式(参看方案二),这可能得益于不同语种之间对于同一语义表达的多样性。

第三,对比不同数据规模下回译带来的模型提升,我们可以发现,随着数据规模增强,回译给 baseline 带来的提升绝对值在逐渐降低,这也验证了前一篇文章中的结论。即,小样本场景下,文本增强技术给模型带来的提升会更加显著。

第四,从结果来看,在采用完全数据集下,在不引入额外数据的情况下,回译技术帮助模型表现从 0.91 提升到了 0.95,这也充分说明了回译是一种低成本的数据杠杆。

值得一提的是,回译技术确实帮助模型在原有数据集上有效地提升了能力,但 embedding 层发挥的作用也不可能忽略。此模型用到的 embedding 层在海量通用语料和领域内语料上预训练过,其词典收录了 20 万个词。对于金融领域内的重点词,已经有很好的先验表示。

4.3.2. EDA

在 EDA 增强方案中,我们尝试了五种操作,分别是同义词替换,随机插入,随机交换,随机删除和句子位置随机替换。

其中,句子位置随机替换在原始的 EDA 技术中并不包含,而是我们在本实验中新加入的一种增强方式。本质上,我们是在表达这样一种先验信念,即对于所处理的金融舆情短文本,其句子出现的先后顺序并不影响其所属的行业。

关于实现中的几个重要细节:

第一,所操作的词语数,比如每句话同义词替换个数,随机交换个数等按照公式 n=α∗L,L 是句子长度,α是替换删除等的比例,经过试验发现 0.1 到 0.2 之间效果最佳。

第二,同义词替换所用的同义词:采用word2vec方法在公开的新闻语料训练的词向量,找出与被替换文本最相似的词语。

第三,五种方法独立使用,也即,对于每一条扩充的样本,只使用了一种增强操作。更花式的组合,大家可以自己尝试。

原始文本与增强后的文本举例如下:

  • 原始数据:【周报(12.02-12.08)】:拼多多上线火车票业务,海南离岛购物免税新政三周年销售近 200 亿。(行业类别:餐饮旅游)

  • 同义词替换:【周报(12.02 亿 12.08,】:拼多多上线火车票业务)海南离岛购物免税新政三周年销售近 200 亿。

  • 随机插入:【周报(12.02-12.08)】:拼革新多多上线火车票业务,海南离岛购物免税新政三周年销售近 200 亿。

  • 随机交换:【服务 200(12.02 近 12.08)】:拼多多上线火车票业务,海南离岛购物免税新政三周年销售-周报亿。

  • 随机删除:【周报(12.02-12.08)】:拼多多上线火车票,海南离岛购物免税新政三周年销售近 200。

  • 随即交换句子位置:海南离岛购物免税新政三周年销售近 200 亿,【周报(12.02-12.08)】:拼多多上线火车票业务。

再次说明,上述文本中的数值为虚构数值,无任何参考意义。

直观来看,经过五项操作之后,新扩充出文本与原始样本的行业类别仍然保持一致。

在实验参数的选择上,与回译类似,我们同样对于数据集规模、数据增强倍数这两个参数进行了详细的实验,步骤可概括如下:

  • 步骤一:对训练集中的 900 条样本,运用 五种 EDA 技术进行文本增强操作,每中操作进行 2 倍,3 倍,4 倍扩充,即每条样本对应扩充 10 倍,15 倍,20 倍;

  • 步骤二、三:与回译实验相同;

实验结果如下:

万字长文综述:给你的数据加上杠杆——文本增强技术的研究进展及应用实践

从表中的结果,EDA 技术给模型带来的提升整体与回译技术类似:

  • 第一,无论是在仅有 180 条样本的场景下,还是在完整数据集下,EDA 的运用可以给模型带来 2~30 个百分点不等的提升,数量越小,相对于 baseline 的提升越明显;

  • 第二,运用 EDA 技术时,较好的增强倍数在 3 倍左右,数据量小时,可适当选择更大的增强倍数;

  • 第三,从表中可以看出,数据集仅为 60% 时,采用 EDA 进行 2 倍扩充时,模型的表现就已经超过了在完全数据集下不用 EDA 技术的模型,这也充分说明了 EDA 的杠杆作用。同时,这一现象,也在 EDA 的原始论文中提到过 [4];

4.3.3. 基于 TF-IDF 的文本增强

在基于 TF-IDF 增强方案中,主要思想是基于 TF-IDF 值评估原始样本中各个词对于文本的重要性,在此基础上,用词典中的非核心词替换掉文中不重要词,以重新生成一段文本。

在构建候选词的字典时,由于原始预料数量较少,我们搜集整理了 4 万多篇研究报告,尽量保证每个行业的报告数目不少于 1000 篇。同时,考虑到研报第一页的内容在分布上与原始预料的分布最为相似,因此我们以这 4 万多篇研报的第一页来构建字典,并统计相应的词频和 IDF 值,用来统计字典中各词的被替换概率。

下面给出一些原始文本与增强之后文本的对比:

原始样本 1:锦江酒店调研纪要,经济型酒店相比中高端酒店各指标下滑多一点,入住率、单价均有下滑,幅度较之前差不多。近期中端酒店同店 revpar 数据是持平,整体受新开店影响略有下降。

  • 增强后样本 (扩充系数 p=0.1):齐格勒酒店调研纪要,经济型酒店相比中探访酒店各细目下滑多一点专攻入住率、单价均有下滑,幅度较之前差不多。近期中端酒店同店 revpar 数据是持平,整体受新开店略有下降。

  • 增强后样本 (扩充系数 p=0.3):201912 锦江酒店每位纪要,经济型酒店相比中高端酒店各指标下滑多一点,入住率陶冶华有下滑,幅度较之前差不多。近期中端酒店同店 revpar 诺思是于长,整体受新町村蓝黛略有下降。

原始样本 2:大秦铁路点评:电煤需求回升或受港口卸车影响,8 月运量同比 2%。新闻/公告。大秦铁路公布 9 月份运营数据,公司核心资产大秦线 9 月份完成货物运输量。

  • 增强后样本 (扩充系数 p=0.1):大秦铁路点评:电煤需求回升或受港口卸车影响,8 月运量同比 2%。新闻/公告:大秦铁路公布 9 月份运营马勒,公司核心资产大秦线 9 月份完成货物运输。

  • 增强后样本 (扩充系数 p=0.3):大秦铁路助益:项下不断回升或西递专属卸车影响,8 月运量同比 2%。偿债/公告。大秦铁路形制 10 月份运营数据,滑石封航 cerner 大秦线 9 月份完成招聘。

在实验参数的选择上,我们重点对于数据集规模、数据增强倍数以及扩充比例这三个参数进行了实验。步骤可概括如下:

  • 步骤一:将数据集按照之前的比例划分为 训练集 和 测试集,并对训练集进行文本增强操作,替换比例分别为 5%,10%,15%,20%,25%,30%;

  • 步骤二、三:与回译实验相同;

实验结果如下,遵循简明扼要、突出矛盾的特点,这里只展示了替换比例为 10% 和 30% 的情况:

万字长文综述:给你的数据加上杠杆——文本增强技术的研究进展及应用实践

从表中的结果可以得出以下结论:

第一,本方法与 EDA 技术给模型带来的提升类似,即无论是在少样本还是在完整数据集下,本方法都可以给模型带来 3~30 个百分点的提升,样本越少,效果越明显。

第二,对比不同替换比例下的实验结果,p=0.1 的替换比例一般会优于 p=0.3 的情况,尤其在小样本下,这种差别会更加明显。这是由于在 30% 的比例下,文本引入了更多的噪声。但是,二者的差距很多时候都在 1 个百分点以内,这说明在这类任务下,模型对于噪声的容忍度是很高的。这反过来可以启发我们更好地设计和优化模型。

4.3.4. 三类方法的对比

为了更全面地了解三类方法的特点,我们选取了其中最有代表性的部分实验数据进行了对比:

万字长文综述:给你的数据加上杠杆——文本增强技术的研究进展及应用实践

对比表中的三类方法,初步可以得出以下结论:

第一,三种方法都可以有效帮助模型提升性能。在全数据集下,只要保证充足的增强倍数,三类方法对于模型的提升基本相当。

第二,整体而言,基于 TF-IDF 的增强方法在效果上稍逊于另外两种方法,随着样本量减少,这一差别越发明显。从正则化或者先验假设来看待这个问题:回译技术在基本保证语义不变的情况下,可以提供丰富多样的文本表达形式;EDA 技术则通过五种不同的操作,给模型施加了五类先验信念,例如,文本中的句子应是可以交换的,部分词是可以被替换、删除或者交换位置的。而基于 TF-IDF 的增强方法仅仅告诉了模型不重要词对于文本的行业类型没有贡献。相对而言,前两类方法给予了模型更多的信息,因而能够给模型更大的提升。

4.3.4. 小结

本文首先介绍了金融资管领域文本分析任务的特点,以金融资管领域一类典型的行业分类任务为案例,在少样本场景下,对三种不同的文本增加技术进行了详细的实验分析,证明了 回译、EDA 和 基于 TF-IDF 词替换方法确实可以作为数据杠杆,在实际业务中撬动模型的性能。

另外,据我们所知,这也是第一次有公开文章单独对基于 TF-IDF 的文本增强技术的实验分析。如果有同学在其他地方发现了更早的实验报道,望告知。

关于本文内容的其他补充如下:

第一,EDA 或 基于 TF-IDF 的词替换方法会在原始样本中引入噪声,并导致一部分语义的丢失,因此这类方法是否有效与具体任务息息相关。在本文的案例中,行业分类属于依靠少数一些关键词的出现与否即可实现类别划分的任务,对于局部噪声并不敏感。因而,EDA 等技术才能够有效发挥作用;

第二,我们内部正在实验基于 GPT 的 LAMBADA 方法 [5],并在尝试提出一些新的思想和方法,后面有机会再和大家分享。

5. 总结

本文回顾了文本数据增强技术(Data Augmentation)近几年的发展情况,重点列举和讨论了 18 年、19 年中人们最常用到的五类文本增强技术路径以及对应的代表性技术,分别是 回译 (Back Translation)、随机词替换 (EDA 技术)、非核心词替换 (基于 TF-IDF 的词替换)、基于上下文信息的文本增强(C-BERT)以及 基于生成语言模型的文本增强 (LAMBADA),给出了各方法的详细实现方案以及实验效果。简单总结如下:

第一,从各技术的实验中来看,无论对于少样本场景还是大样本场景,文本数据增强技术都能带来额外的增益,尤其在少样本场景下,文本增强技术往往有奇效,多个实验证明了可以带来 5~20 个百分点的提升;

第二,文中提到的五种技术都可以独立运用,而且实现起来相对简单,属于性价比很高的提高模型性能的通用方法。在实际中,大家可以尝试联合运用这几种方法。

第三,回译、基于上下文信息的文本增强以及基于 GPT 的文本增强,都利用了外部预训练好的模型作为杠杆来撬动下游任务,因此可以认为这是 NLP 普通玩家能够享受当前 NLP 技术快速发展的红利之一;

最后,从机器学习的角度再简单谈谈对于文本增强技术的认识,总结上述几类方法,至少可以从四个角度来看待文本增强技术的有效性:

(1)正则化:

文本增强技术无疑是一种有效的正则化方法,无论是回译、EDA、非核心词替换还是基于上下文的文本增强,本质上都是设计者表达了一种模型偏好,或者对于模型的分布施加了较强的先验分布假设。其中,回译表达的模型偏好是,模型应该对于不同表达形式但同一语义的文本具有不变性。EDA、关键词替换等表达的模型偏好则是,模型应该对于文本的局部噪声不敏感。因此,即使面临少样本场景,在这种正则化下,模型也能够在假设空间中有效的收敛,实现较好的泛化误差。

(2)迁移学习:

任何学习都需要有效的外部信息指导,上面所提的部分文本增强技术的有效性无疑也可以从迁移学习的角度来理解。无论是回译、基于GPT-2的文本增强还是未来有希望的文本风格迁移,都可以理解为将外部预训练好的模型从其他地方所学习到的信息或者知识迁移到了当前的任务中,提高了整体数据的信息容量,进而更好地指导当前模型的学习。

(3) 提高模型鲁棒性:

EDA、关键词等技术除了可以从语义层面的噪声来看待,同时还可以看作是对于输入数据施加一般化噪声(与具体任务无关的),实现类似于 dropout 层的功能,而这一思路已经被各个研究证明,可以一定程度提高模型的鲁棒性。

(4) 流形:

同一类标签的文本可以视为文本空间中某一类流形,因此有效的文本增强技术应该保证新生成的文本仍然是该流形上的一点。

参考文献

  • Wei, Jason W., and Kai Zou. "Eda: Easy data augmentation techniques for boosting performance on text classification tasks." arXiv preprint arXiv:1901.11196 (2019). 

  • Anaby-Tavor, Ateret, et al. "Not Enough Data? Deep Learning to the Rescue!." arXiv preprint arXiv:1911.03118 (2019). 

  • Hu, Zhiting, et al. "Learning Data Manipulation for Augmentation and Weighting." Advances in Neural Information Processing Systems. 2019. 

  • Wang, William Yang, and Diyi Yang. "That』s so annoying!!!: A lexical and frame-semantic embedding based data augmentation approach to automatic categorization of annoying behaviors using# petpeeve tweets." Proceedings of the 2015 Conference on Empirical Methods in Natural Language Processing. 2015. 

  • Chawla, Nitesh V., et al. "SMOTE: synthetic minority over-sampling technique." Journal of artificial intelligence research16 (2002): 321-357. 

  • Xie, Qizhe, et al. "Unsupervised data augmentation." arXiv preprint arXiv:1904.12848 (2019). 

  • Goodfellow, Ian, Yoshua Bengio, and Aaron Courville. Deep learning. MIT press, 2016. 

  • Sennrich, Rico, Barry Haddow, and Alexandra Birch. "Improving neural machine translation models with monolingual data." arXiv preprint arXiv:1511.06709 (2015). 

  • Edunov, Sergey, et al. "Understanding back-translation at scale." arXiv preprint arXiv:1808.09381 (2018). 

  • Yu, Adams Wei, et al. "Qanet: Combining local convolution with global self-attention for reading comprehension." arXiv preprint arXiv:1804.09541 (2018). 

  • Wei, Jason W., and Kai Zou. "Eda: Easy data augmentation techniques for boosting performance on text classification tasks." arXiv preprint arXiv:1901.11196 (2019). 

  • Kobayashi, Sosuke. "Contextual augmentation: Data augmentation by words with paradigmatic relations." arXiv preprint arXiv:1805.06201 (2018). 

  • Wu, Xing, et al. "Conditional BERT contextual augmentation." International Conference on Computational Science. Springer, Cham, 2019. 

  • Liu, Ting, et al. "Generating and exploiting large-scale pseudo training data for zero pronoun resolution." arXiv preprint arXiv:1606.01603 (2016). 

  • Hou, Yutai, et al. "Sequence-to-sequence data augmentation for dialogue language understanding." arXiv preprint arXiv:1807.01554 (2018). 

  • Dong, Li, et al. "Learning to paraphrase for question answering." arXiv preprint arXiv:1708.06022 (2017).

  • Radford, Alec, et al. "Improving language understanding by generative pre-training." URL https://s3-us-west-2. amazonaws. com/openai-assets/researchcovers/languageunsupervised/language understanding paper. pdf (2018). 

  • Radford, Alec, et al. "Language models are unsupervised multitask learners."OpenAIBlog 1.8 (2019): 9. 

  • Hu, Zhiting, et al. "Toward controlled generation of text." Proceedings of the 34th International Conference on Machine Learning-Volume 70. JMLR. org, 2017. 

  • Guu, Kelvin, et al. "Generating sentences by editing prototypes." Transactions of the Association for Computational Linguistics 6 (2018): 437-450.

  • Kim, Yoon. "Convolutional neural networks for sentence classification." arXiv preprint arXiv:1408.5882 (2014).

  • Strubell, Emma, et al. "Fast and accurate entity recognition with iterated dilated convolutions." arXiv preprint arXiv:1702.02098 (2017).

  • Tang, Gongbo, et al. "Why self-attention? a targeted evaluation of neural machine translation architectures." arXiv preprint arXiv:1808.08946 (2018).

作者信息

李渔,熵简科技联合创始人,博士毕业于清华大学电子工程系,以第一作者身份发表学术论文 10 余篇,申请专利 6 项,致力于将先进的自然语言处理及深度学习技术真正落地于金融资管领域,让科技赋能产业。目前负责熵简科技 NLP 技术中台的建设,包括层次化的分层架构、大数据泛采体系、持续部署的后台支持以及前沿算法的领域内落地等,为熵简科技的各大业务线提供底层技术支持和可落地的解决方案。


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

CSS 3实战

CSS 3实战

成林 / 机械工业出版社 / 2011-5 / 69.00元

全书一共分为9章,首先从宏观上介绍了CSS 3技术的最新发展现状、新特性,以及现有的主流浏览器对这些新特性的支持情况;然后详细讲解了CSS 3的选择器、文本特性、颜色特性、弹性布局、边框和背景特性、盒模型、UI设计、多列布局、圆角和阴影、渐变、变形、转换、动画、投影、开放字体、设备类型、语音样式等重要的理论知识,这部分内容是本书的基础和核心。不仅每个知识点都配有丰富的、精心设计的实战案例,而且详细......一起来看看 《CSS 3实战》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

MD5 加密
MD5 加密

MD5 加密工具

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器