自然语言处理(Natural Language Processing,NLP)是人工智能的一个重要分支,它研究能实现人与机器之间用自然语言进行有效通信的各种理论和方法,即让机器“懂”人类的语言。NLP 涉及的面非常广,包括语音识别 、内容理解、信息检索、信息抽取、问答系统、机器翻译、对话系统等。其中短视频的应用场景下,内容标签技术是内容理解的一个重要手段。本文主要给大家介绍多模态短视频内容标签技术及在爱奇艺的相关应用。
全文共分为五个部分重点解读:
一、什么是内容标签
二、提取内容标签的方法
三、多模态短视频内容标签的难点
四、模型的迭代之路
五、内容标签的主要应用场景
提到标签,推荐系统里面使用比较广泛的是内容标签和类型标签,其中内容标签是对文本、图文或者短视频等内容的表征(表征,就是用一些关键词或者是短语来表达对应的内容是什么含义)。内容标签是根据内容来生成的标签,也就是说有什么样的内容它就会有什么样的标签,标签的集合是开放的。然而类型标签是一个分类体系,就是把不同的内容分到不同的体系下面,这个分类体系是预先定义好的,这就是内容标签和类型标签两者的区别。
本质上内容标签和另一个我们经常使用的关键词抽取技术非常类似。但不同的是我们做内容标签的一个重要出发点是为了推荐系统来对各种内容生成标签。它更突出了推荐的应用场景,虽然内容标签的应用也不仅限于在推荐场景下,可以针对任何基于内容理解的场景内容,因为内容是一个广泛的含义,包括文本、图文、短视频等等。而关键词抽取,主要针对的是文本,它是从文本里面把跟该文本意义最相关的一些词语抽取出来,在文献检索、自动文摘、文本聚类/分类等方面有着重要的应用。
内容标签有什么作用?举三个典型的应用场景,让大家对内容标签有一个比较直观的印象:
第一,个性化推荐,通过对内容进行标签提取,结合用户的兴趣TAG,对用户进行精准的个性化推荐,是内容标签在个性化推荐上面的一个典型的应用。
第二,搜索,通过内容的关键词或者内容标签,跟用户输入的关键词做精准匹配,返回更精确的搜索结果。
第三,聚类&分类,使用内容标签作为文本特征,来提升聚类或分类的效果。
提取内容标签的方法在这里我总结了两大类方法:
第一类是抽取式,本质是从文本中抽取关键词或者短语;
第二类是生成式,通过生成的方式,来生成关键词和短语。
这是两条不同的技术路线。
先看抽取式,抽取式主流的方法第一步是做侯选词的提取,第二步对侯选词做排序,然后把得分高的选出来作为关键词。又可以分为有监督和无监督的方法,当然也可以把监督和无监督相结合起来:
其中有监督的方法:是先提取侯选词,提取的方法可以结合一些无监督的方法。比如说通过词频序列标注提取一些侯选的关键词。然后做一个分类或者排序,来选出得分高的候选词作为关键词。
第二个是无监督的方法,无监督方法使用比较广泛的是基于词频的方法和基于图的方法。基于词频最常用的方法是TF-DF,它是最简单也是使用比较广泛的一种关键词提取方法;基于图的方法最常用的是TextRank方法,它是从PageRank算法发展而来,它的思想是以文本中的词为节点,以词的相邻关系为边构建词图,然后使用PageRank算法进行迭代来计算每个节点的rank值,选取rank值较高的词作为关键词。TextRank后续发展的模型有:ExpandRank、CiteTextRank、PositionRank等。
抽取式另外一个思路是联合学习。因为两步走的方法有一个缺点,就是错误会积累。比如说侯选标签没有提取出来,或者提取错了,那么第二步排序怎么做都做不好。所以有一些研究者把这两个流程结合起来通过联合学习来做标签提取。它的好处是可以避免错误积累,当然学习的难度也会加大。
但抽取式有一个缺点,就是只能抽取在文本中出现的关键词。但是很多的关键词它在文本中并没有出现,特别是具有归纳或者是概括特性的关键词。抽取式在这个时候就无能为力了。
第二类的方法是最近研究方面比较热的生成式。生成式有两个思路,第一个思路是通过seq2seq技术框架来生成标签,就是把文本作为输入,把标签作为输出去做一个端到端的生成。因为不要求生成的签一定在原始文本中,所以说它可以比较好的解决没有在文本中出现的标签的问题。
另外一种思路是使用强化学习来生成标签,比较有代表性的是ACL2019的一篇文章,它是为了解决内容标签召回的问题,目的是为了提高召回,在使用强化学习的时候,当召回低于Ground-Truth时,使用Recall作为Reward,召回高于Ground-Truth时,使用F1 score作为Reward,这样可以对召回和精度做一个平衡。训练框架使用的是基于self-critical的策略梯度方法。
接下来介绍一下在短视频场景下这种内容形式上的内容标签抽取方法。短视频目前已经成为了一种主流的媒介形态,如何提升短视频的分发效率,是各大短视频平台面临的重要课题。内容标签作为短视频内容理解的重要手段,在爱奇艺得到了广泛的应用。
先看一下短视频内容标签有什么样的难点:
第一,内容标签集合是一个开放集合,根据我们的统计它的数量有好几百万,所以不能使用分配的方法(如分类),来生成标签。
第二,短视频内容标签的标准很难统一,我们曾经做过统计,两个人给同一批短视频标注内容标签,标注完全一致率只有22.1%。所以对于一个短视频哪些词可以作为内容标签,并没有统一的标准。
第三,抽象标签占比较高,抽象标签学术上叫absence标签。就是这个标签它没有在标题中出现,经过统计在短视频中抽象标签占比高于40%。同时,标题因为长度也比较短,特别是短视频标题,很多情况下它并不是一个完全的句子,而是一些关键词的拼接,在信息比较少又不规范的情况下,语义理解起来也就更加困难。
第四,融合多模态,包括封面图和视频内容,比如,在一个短视频的标题为“男子开车堵在女子家门口,女子不费吹灰之力,连人带车一块弄走”,看不出这个视频是什么含义,但这个视频内容描述的是关于明星张歆艺的相关的内容,所以这类内容需要结合多模态的信息才能准确抽取出准确的内容标签。
(一)、文本模型:
首先我们来看看文本模型,从词权重+阈值——CRF模型——注意力模型——Transformer模型,文本模型经过了一系列的算法迭代,具体如下:
· 词权重+阈值:这个是最初始的版本,词权重结合阙值来抽取标签。但是首先阈值很难划定,因不同的词在不同的句子中它的得分是不一样的,虽然它能把一些重要的词抽取出来,但是总体的精度和召回都比较低。同时,内容标签有时候可能是抽象标签,也可能是一个短语,或者是多个词,用这种方法是解决不了的。
· CRF模型:CRF在序列标注任务中是一个经典的模型,但是它有个特点,第一它只能抽取标题中出现的词或短语,同时需要人工来设定特征模板,还有一个问题就是它主要使用当前词的周围词的特征,如果这个词的特征词距离比较远的话,效果就比较差。
· 注意力模型:也是抽取式的模型,通过人工定义一些抽象标签作为候选标签,然后使用注意力模型来进行排序,所以它可以抽取出一部分抽象标签。同时能比较好的使用全局的特征。
· Transformer模型:典型的生成式的模型,它是有比较好的语义概括的归纳能力,在抽象标签的效果也不错。
Transformer把抽取任务转化成生成任务,同时具有语义概括的能力,并且也可以对一些别名进行归一化。总体来说,它的效果要比抽取式好很多。
文本模型因为仅仅使用文本内容,会造成信息的缺失。比如,从标题里面并不能任何有价值的信息,但是从封面图可以看出具体短视频内容。所以如果仅仅使用文本标题,模型效果会有很大的瓶颈,我们使用封面图来解决文本信息语义缺失的问题。
(二)、文本+封面图模型:
要想把封面图加入模型,首先面临的第一个问题就是怎么把封面图向量化, 其中会用到迁移学习,迁移学习目前在业界是应用比较广泛的一种技术,它使用大规模数据预训练好的模型在新的任务新的数据上进行Fine-Tuning,从而加快模型学习效率,使模型能较快的达到一个比较好的效果。我们的做法是使用ImageNet预训练好的模型,在我们的数据集上用这个模型去初始化一个图像分类的任务,分类的标签是图像对应标题的高频抽象标签。预训练模型我们比较了ResNet、Inceptionv3、Xception等模型,最终我们使用Xception来初始化我们的图像分类模型,然后抽取出倒数第2层2048维向量作为图像的表征。
图象和模型融合的方式有三种:第一种方式是把图象向量作为一个token拼接到文本输入里面,一般的做法是拼接到文本向量的首尾。第二种融合的方式是设置图象向量作为Encoder隐藏层初始化向量,因为隐藏层的参数初始化有两种方式,第一种方式是初始化为0;,第二种是随机初始化,这儿使用图像向量作为隐藏层的初始化向量。第三种方式是将图像向量和Encoder输出向量融合,然后作为Decoder的初始向量。
我们图像融合方式是这样:把封面图通过Xception之后生成的图象向量,同时在三个地方去做做融合:Encoder输入端的首尾、Encoder输出端的首尾以及作为Decoder的初始向量。
增加封面图信息后,可以解决一部分因为标题导致的信息缺失的问题,模型效果也有了一个较大的提升。但是因为短视频标题是短文本,有时候是一些关键词的拼接,并且训练数据偏娱乐,那么对于一些通用领域的短视频标题,语义理解就比较困难,所以仅仅使用Transformer模型有时候并不能准确的生成内容标签。下面举一个例子,这个标题是:容易被男生吃定的8种类型的女生,现在通过Transformer模型只能提取出它内容标签是女生,但是其实它的内容标签应该是恋爱技巧,就是需要模型对标题做了一个语义的归纳和概括,生成更抽象的表达。
针对这种问题,我们想到的一个解决方法就是在模型中加入Bert向量。Bert是使用大规模数据上训练出来的预训练模型,它的语义理解能力较强,目前在NLP多个领域的效果达到了SOTA的效果。
那么如何将Bert向量融合到模型中?我们参考了融合封面图向量的方式,首先把标题文本经过Bert提取出标题的语义特征,也就是把标题文本字符串转化成了一个向量,一般是提取Bert的倒数第二层的向量作为文本表示向量,如果提取最后一次,因为离目标太近,可能在新的任务上有偏差。
把文本向量提取出来之后,通过三种方式来加入到这个模型。第一种方式是跟封面图做拼接之后,加入到Encoder输入,第二种方式是加到Encoder输出,第三种方式是加到Decoder的初始化向量,通过这三种方式把Bert加入到模型中,文本的语义理解能力有了一些增强,很多需要高度概括的一些内容标签也可以生成出来。
(三)、多模态融合方式
文本加封面图模型还是会造成语义信息丢失的问题。比如说刚才举的例子,也就是说只有看了视频之后才能知道这个视频是什么内容。所以视频内容本身就有非常丰富的语义信息。怎么把这个视频的内容加入到模型,是我们接下来考虑的问题。
首先我们抽取短视频的关键帧,什么叫关键帧?也即信息比较丰富的视频帧,因为有些帧没有什么信息的,所以加进来效果也不一定好。抽出来之后第二步把每一个关键帧,通过Xception转化成视频帧向量,分别把视频帧向量、封面图向量和文本向量,包括文本的Bert向量做一个多模态的融合,通过生成模型来生成标签,这是总体的一个框架。
那么接下来的一个问题就是,不同模态怎么去融合,主要有三种方式:
第一种方式是在数据级别或者是输入的层面做一个融合,这个方式早期的一种多模态融合方式,这种方式非常简单,很容易实现,缺点是不同模态的特征抽取方式不一样,直接拼接可能会破坏预训练模型的输入一致性。
第二种方式是在最后做融合,即各个模态单独做特征提取和单独做决策,生成每个模态决策的结果,最后做融合。常见的融合方式是把不同模态的预测分数做平均、加权平均、取最大值等。
第三种方式是在模型的不同层面对多模态进行融合,这也是现在比较常见的一种方法。
这儿给大家介绍一下NIPS2019年的一篇文章,它是通过把视觉和语言的特征在模型层面作了一个深入的交互,来做一个融合,这是一种典型的HrbridFusion方法。
在我们的模型中也是用了类似的多模态融合方式。在Encoder端使用Early Fusion对文本向量、文本Bert向量、封面图向量、视频帧向量做融合;使用Hrbrid Fusion的方式融合文本向量和视频帧向量。
然后在Decoder端,使用Enhanced Scaled Dot-ProductionAttention的方式做对多模态内容做进一步融合。加入视频理解的信息之后,模型效果有了明显的提升,可以把视频里面的内容可以很好的提取出来。
最后给大家介绍一下内容标签在爱奇艺的一些应用:
1)个性化推荐,首先是理解用户,也就是用户打一些兴趣标签,兴趣标签是多个维度,其中内容标签是细粒度兴趣标签中最重要的一种标签;然后是理解内容,生成短视频的内容标签,根据内容标签做召回和排序。
2)搜索,内容标签在搜索方面也是有较多的应用:
首先是搜索相关性,特别是短视频的抽象标签对提升搜索相关性有较大帮助,因为短视频标签在文本标题中没有出现,所以通过Query并不能召回这些短视频。所以通过Query和抽象标签的匹配可以扩大短视频搜索的召回,从而提升搜索的相关性。
第二是做Query扩展,通过Query和点击过的短视频的内容标签做一个影射,然后训练一个端到端的生成模型,来生成输入Query的扩展Query。
第三是Term的紧密度,如果Query中的Term之间紧密度得分比较高,那么它们在一起出现的可能性就大,这个signal有助于提升搜索相关性的效果。判断紧密度的方法之一就是如果不同的Term出现在同一内容标签中,那么它们的紧密度就高。
第四是在Query推荐,通过生成Query的内容标签,和用户的兴趣标签做匹配,用来做Query推荐中的召回和排序。
同时在其他方面也有很多应用,这里举三个例子,第一个是长短关联,就是当你看到的短视频如果是长视频的一个片段,可以使用自动的方法把该短视频关联到对应长视频上面,这样既能通过短视频给长视频导流,也能满足用户观看需求,提升用户体验。这其中会用到内容标签技术,通过内容标签可以扩大长短关联的召回。
第二个应用是IP的关联,就是当前这个短视频它对应的IP是什么,可能对应的是游戏,可能是对应的是商城的一个商品,可能对应的是一个文学等等,其中也会使用到内容标签中的实体标签进行关联。
第三个是一个事件聚合,通过内容标签是可以扩大事件聚合的召回,来提升事件聚合的效果。
短视频内容标签技术还有很多优化的空间,未来主要从提升标注的质量、融合更多的信息如音视频信息等等,能够进一步提升模型的精度以及在短视频上的效果。