自然语言处理被誉为人工智能皇冠上的明珠,也是现在深度学习的两大热门方向之一。学术界每年生产数量惊人的自然语言处理研究论文,而且每隔一段时间就会出现一个里程碑成为圈内榜一话题。我们关注自然语言处理,通常关注的是模型结构和公式推导,理论研究当然很重要,不过,我认为另一个话题同样重要,就是理论创新怎样成为产品迭代的驱动力。
说得更具体一点,自然语言处理提供了哪些工具,又怎样才能与手头的生产工作对应起来呢?下面我想从数据产品的角度聊聊这个话题。
1.自然语言处理提供了哪些工具
自然语言处理是个很大的研究领域,这里以Transformer模型为例。Transformer现在是自然语言处理的当家花旦,时不时就搞几个让人看着热血沸腾的大新闻,可是,饼是越画越大了,怎样才能吃到嘴里呢?我的思路是看子任务:先把手头问题转化成子任务,然后看看子任务下有哪些可用模型,照方抓药就能把Transformer作为工具使用。
自然语言处理大致可以分为分类任务和生成任务,不过,自然语言处理也井喷了好些年,进一步衍生出了很多子任务。不同的研究论文虽然都同属于自然语言处理领域,但很可能分属于不同的子任务。用产品经理更熟悉的语言来说,这叫细分赛道。
为什么Transformer近年大火?因为它一家就霸占了许多条细分赛道的SOTA。龙兴之地是机器翻译,但现在远远不止。我翻了一下Hugging Face,光列出来Transformer的子任务就达到了12项:
具体的介绍有兴趣可以另开一篇文章。这里我们从数据产品的角度,挑五个容易出趁手工具的子任务聊一聊:
nTranslation。Translation的意思是机器翻译子任务,属于生成任务,要求是将源语言翻译成目标语言,譬如说英译中。不少人直觉上认为机器翻译子任务只能用在翻译软件上,其实不然,我们后面再说。
nText Classification。Text Classification的意思是文本分类子任务,属于分类任务。这是一个大类,下面还有许多好用的子任务,譬如说情感分析(Sentiment Analysis)。情感分析是个很有意思也很有用的子任务,它的要求是判断输入文本表达的是正面情绪还是负面情绪,简单来说就是好评还是差评。这个工具对商家的价值已经呼之欲出。
nZero Shot Text Classification。Zero Shot Text Classification比上面的子任务多了个Zero Shot,这也是这个子任务最大的特点,译法没有统一,有叫零点文本分类,也有叫零击文本分类的,我更习惯于意译为零样本文本分类。从理论上看,零样本文本分类属于是文本分类下的一个子类任务,但单拎出来也是很有道理的。零样本学习是当前研究的热门之一,研究的是这么一个问题:下游任务零样本如何完成深度学习。Transformer之类的现代大模型和过去传统机器学习有一个很大的不同点,现代大模型采取了预训练+微调的模式,大公司提供预训练模型,普通用户根据自己的下游任务训练微调。那能不能索性跳过微调阶段直接用预训练模型解决下游任务呢?可以,这就是零样本学习要研究的问题。零样本学习有几条技术路线,这里不谈,我们只谈应用。从理论上讲,文本分类能做的任务零点文本分类也能够做,但是,就我个人使用感受来说,当前零样本分类模型的发展还远达不到能随意平替其它分类模型的水平,不过,在主题分类等子任务,已经达到可用的程度。譬如输入一段新闻,再输入几个“经济、体育”之类的主题标签,模型能告诉你这段新闻应该属于什么主题。
nToken Classification。Token Classification也属于分类任务,不过这次分类的输入项不是text而是token。Token是自然语言处理中一个很重要的概念,不太好翻译,大概可以按“词”来理解,Token Classification的要求就是对某个词进行分类。用的最多的是命名实体识别(NER),譬如将一段文字中的提到人名、地名抽取出来,这项技术大量运用于构建知识图谱。
nQA。QA就是问答子任务,属于生成任务,形式上来说,就是输入一段文本作为问题,模型也输出一段文本作为这个问题回答。最近正好双十一,我们应该都有过和人工智障客服斗智斗勇的经历,这是典型的QA任务,这里就不赘述了。
Transformer模型还有许多有意思的子任务,譬如经常上热搜的人工智能写小说,用的就是这里的Text Generation和Text2Text Generation子任务。不过,Transformer在不同子任务下的表现水平差距很大,能满足我个人实用需求的目前就是以上这些。
2.怎样在社会化聆听中应用自然语言处理工具
社会化聆听(Social Listening)是指在社交平台中抽取有价值信息,是一种通过数据分析生产的数据产品。当然,抽取有价值信息不是社会化聆听的最终目的,最终目的是辅助企业决策从而提升商业价值。要达到这个目的,需要经过四个阶段的工作。下面我们以一家名为“奔马”的高档汽车品牌需要购买社会化聆听产品为例,具体看看怎样完成这四个阶段的工作,又能在哪些地方使用自然语言处理工具。
第一个阶段是确定分析目标。前面我们说过,社会化聆听的目标是辅助企业决策从而提升商业价值,根据《数据产品经理》一书的总结,社会化聆听能够在市场概览、竞品分析、消费者情绪识别、售前支持、购买信号、用户画像、发掘意见领袖和客户服务于关系维系等八个方面提升商业价值。在汽车销售领域,可以进一步将目标具体化为发现市场潜在发力点、挖掘KOL精准投放广告等等,我们就以第一项目标为例,看看怎样从社交平台聆听所需要的内容。
第二个阶段是确定数据来源。这一步非常关键,首先得把有价值的数据包含在数据来源里面,后面才可能从中抽取有价值信息。我们可以从哪里获取奔马牌高档汽车的相关数据呢?网上聊车的地方很多,譬如微博等面向公众的社交平台和汽车之家等更强调专业性的垂直社区,这些社交平台都会产生大量的UGC数据,有些平台还会根据品牌甚至车型设定专门的频道,能方便我们更精准地获取目标数据。对于平板电脑等其它UGC数据分布更广的商品,还可以考虑到各大电商平台的用户评论区获取数据。
第三个阶段是选择合适工具进行分析。在此之前其实还有一些工作,譬如设计数据字段、从数据源中读取数据、将异构数据转化成合适的格式、清洗错漏数据等等,这些看起来不起眼的工作,往往在实际中占了大头。
不管怎样,假定现在已经有一份整理好的数据摆在我们面前,接下来就可以使用前面介绍的自然语言处理工具从数据中来抽取有价值信息,也就是知识。数据分析的具体流程并不是一成不变,而是根据分析目标的变化而变化:
n情绪分析。最容易想到的做法是分析用户评价的情绪,究竟是好评居多还是差评居多。这一步可以直接使用情感分析模型,将相关评价文本作为模型输入,模型就会输出这是正面还是负面情绪的判别结果。
n归因分析。在情绪分析的基础上可以进一步分析导致好评或者差评的原因。用户评论中除了正负面情绪外,有时候还会包含更具体的对象,譬如脚刹、车大灯、倒车雷达等等,这些汽车相关的名词正是前面所说的命名实体,可以首先使用NER相关的工具进行提取,然后分析相关性。分析相关性的工具很多,譬如统计高频词,或者计算TF-IDF。
n主题分析。分析的流程不是唯一的。假如我们手上正好拿到一份权威的汽车产品行业报告,里面提到了一系列影响汽车市场销售量的因素,譬如油耗、操控性、内饰等等,这些都是很有价值的领域知识,能不能将和获取的数据结合起来呢?有一种思路就是把这些词全都抠下来作为主题,然后就可以通过主题分类模型看看哪些主题正在热议。
n数据增强。聊一聊翻译在数据分析中的应用。数据分析的教材一般不怎么提翻译,而对翻译模型的研究好像也总是沉迷于翻译任务本身,其实我在实践中发现,翻译是一种很好的数据增强工具。很多Transformer模型是有语言限制的,譬如对英语的效果很好,但对中文的效果很差,而我们手头的数据如果正好是中文占了大部分,难道只能选择丢弃吗?未必,不妨试试用翻译模型中译英,然后再输进模型。
第四个阶段是输出数据产品。这里的数据产品主要包括数据和分析结论,这部分可以多考虑可视化技术,将前面的通过自然语言处理技术得到的各种分析结果以词云或者图谱等多种形式展现出来。
3.产品经理的角度看待数据分析
最后想聊一聊数据产品经理本身。有个常见的说法是,数据分析应该首先积累领域知识,成为了领域专家再进行数据分析才能具备专业性。所谓领域知识,就是在对当前行业情况长期跟踪的情况下沉淀的高价值信息,汽车领域俗称“懂车帝”。
那我们是不是首先得成为懂车帝,才能接下“奔马”牌汽车的项目呢?我认为未必。如果将积累领域知识作为生产数据产品的前提,那么,业务范围将很受限制。我知道,传统的行业报告大多选择由领域专家执笔,但是,我认为数据产品不应该是行业报告在数据分析领域的简单延伸,而是一种新的知识生产方式:行业报告是由知识驱动的,而数据产品则是由数据驱动的,通过工具以一定的流程从数据中抽取领域知识,我认为这才是数据分析的目的。
作者介绍:莫凡
网名木羊同学。娱乐向机器学习解说选手,《机器学习算法的数学解析与Python实现》作者,前沿技术发展观潮者,擅长高冷技术的“白菜化”解说,微信公众号“睡前机器学习”,个人知乎号“木羊”。