作者简介
孙哲,携程资深算法工程师。长期从事自然语言相关工作,当前主要涉及内容化,对于内容挖掘和生成方面有相关的一些研究和探索。
内容化的核心是主题,产品,内容。主题是对用户需求最为直接的刻画,能够有效命中用户的兴趣点;产品是用户和商家的最终目标,是整个内容化的核心;内容则是对于产品,主题的详细阐述,能够有效促使用户点击、种草等。
本文主要围绕这些难点,例如如何根据主题选产品,如何根据主题产品挖内容,进行具体的阐述,讲述携程AI助力产品内容化的相关实践。
一、马可波罗平台
1.1 马可波罗平台简述
马可波罗平台是携程的内容化中台,主要包含三个部分,如图1所示:
1)数据层:马可波罗中台也是一个数据的中台,在数据层面包含了携程大部分的数据,包括产品维表数据,产品评论数据,游记攻略,旅拍等。
2)算法层:算法层主要包含两个方向,NLP相关和图片相关。NLP相关则包含了NLP大部分的一些相关基础算法,如情感分析,文本匹配,文本生成,实体识别,实体链接等。而图片则主要聚焦在图片优选上,包含图片优美度,图片分类,图片去重等。
3)平台功能层:平台功能主要包含四个方面,主题自动发现,基于产品的内容化,基于文章的内容化以及内容多样性。内容比较多,本篇文章主要从后三点进行详细的阐述。
1.2 基于产品的内容化
基于产品的内容化,也就是以产品为出发点,自动的挖掘该产品对应的内容信息,包括主题图片挖掘和主题优质文本抽取。
首先,运营人员会定义主题以及主题相关的关键词,如“亲子”主题,以及对应的关键词“亲子,儿童,孩子”等。基于定义的主题,利用算法自动获取跟主题相关的产品,并且对于每一个产品,如“广州亚特兰酒店”,会自动挖掘“亲子”主题对应的图片以及文本内容。样例,如图2。
图2 基于产品的内容化样例
部分场景样例如下:
图3 主题产品挖掘线上展示
1.3 基于文章的内容化
基于文章的内容化,主要包含3个模块。首先,进行主题文章的挖掘,根据当前话题自动获取相关的文章,对话题文章进行自动聚合。其次,进行文章评级,通过对图片/文本等内容的量级以及质感进行综合评分,级别粗筛,有效过滤低质文章,缩小候选文章的量。最后,文章自动挂货,自动识别文章中对应的景点,酒店,餐厅,城市等,并根据不同的场景需求,进行自动的产品挂载,提高产品挂载的灵活性。
线上部分场景样例如下:
图4 主题文章挖掘
1.4 内容多样性
现有的内容数据模式比较单一,也比较冗余,如游记类。因此,我们进行微游记的生成,自动扩充微游记的形式和数量,来满足不同场景对于文本多样性和量级的需求,提高内容的丰富度。
主要包括三个模块,首先构建素材库,包括优质长文本/短亮点自动抽取,图片的首图优选,内容和改写和生成,主要是从大量的文本内容中获取细粒度的内容素材。其次,文章框架模块,可以根据不同场景的应用需求,定义不同的文章框架,如产品-多维度模式,给定酒店产品,从交通位置,设施,环境,美食等维度进行内容阐述和拼接。最后,进行微游记的生成,包含图文匹配,内容标签化,语义去重等相关工作。
在线部分场景样例如下:
图5 优质内容抽取
二、主题内容挖掘
2.1 主题产品/文章挖掘
语义匹配是主题产品/文章挖掘的核心。语义匹配模型主要分为并行方式、交互方式两类,根据抽取特征到计算相似度之间是否发生交互。
并行式使用孪生网络进行建模,也就是两文本使用相同的网络进行语义的抽象。在进行语义抽象的过程中,两者是完全独立的,没有任何交互,因此损失了很多语义细节信息。但是它的优势在于,工程应用时可以提前对候选进行语义向量化,提高效率,同时更能捕捉语义整体上的信息。
而交互式则是在模型建立的初期,就计算两文本之间的交互矩阵,可以根据不同的场景需求,细化不同词语粒度,不同表达角度的交互矩阵,从而较好地对两个文本之间的交互细节进行度量。后加CNN等网络提取方式度量两者之间的相关度,把并行方式中利用相似度方式进行语义维度的距离建模转化成利用深层网络进行更复杂更为综合的语义度量问题,从而有效进行相关优化,如图7。但是在实践中,交互式的方式会出现对于相关共现词比较敏感的情况。因此,在使用的时候会对两者进行综合,结合两者的优势,达到更好的效果。
在实践中,我们结合了并行式和交互式,分别根据图6和图7使用lstm+attention和CNN方法搭建匹配模型框架,然后将两个网络结构进行拼接,最后同时训练两者的loss。
图6 语义匹配lstm+attention
图7语义匹配-cnn
我们使用1000个匹配的q和a,然后每个匹配的q和a随机增加3~4条不匹配的数据。评判标准为分别使用监督学习和非监督学习的方法为每个q和a计算匹配得分,然后判断最高得分的q和a是否为真实匹配对。最终的结果表明,监督学习的方法正确率超过90%,远高于非监督学习80%左右的准确度。
对于匹配模型,从文本差异性上又分为相似模型和相关模型。相似模型,输入的两个文本具有相近的长度,同质的内容,如标准Q匹配。而相关模型,在长度、内容的类型上差异均比较大,如问答匹配。
对于我们当前场景,更多的是短文本-长文本的匹配,对于长文本而言,主题不聚焦,主题多样性情况更严重,更偏向于相关匹配问题。对于相关匹配问题,结合局部相关度能够带来更好的效果[3],如图8。
首先,基于不同的关键词获取对应的局部上下文,计算每个局部上下文跟整体主题的相关度。其次,对某个关键词进行局部语义表征,获取当前关键词和整体上下文的相关度。最后再基于每个关键词的权重和语义表征来获取全局的语义表征向量,完成从局部匹配到全局的一个语义的过度,从而达到更好的效果,相比DSSM这种单纯的整体语义匹配的模型,能获得更优的效果。
图8 相关度匹配模型
2.2 文章自动挂货
以文章为核心进行内容化,文章进行主题分类后,需要建立跟产品的关联,也就是文章自动挂货。文章自动挂货的核心是命名实体识别和实体链接。
对于命名实体而言,主要使用基于lstm+crf[4]的方法,lstm能够有效结合上下文语义,crf则能够保证序列化的规则性。标准的命名实体识别分为人名,地名,机构名,而对于旅游行业而言,需要的粒度则较细,需要细化到景点,酒店,餐厅,城市等维度。由于细粒度的类别在上下文的表达中,有较多比较相近的地方,因此在做命名实体识别的时候,类别还是到人名,地名,机构名。在识别出实体后,会基于一个粗分类模型,进行细粒度类别的区分,最终结合实体链接的结果进行进一步的反向校验,如图9。
图9 旅游的命名实体识别
在进行命名实体识别的过程中,会存在一些比较常见的badcase。对于有些badcase我们很难在模型中去完全解决,会通过增加一些后处理的方式进行校验,如“瘦西湖”中景点部分识别,识别出“西湖”,则通过景点/酒店等的字典树进行反向补全,提高准确和召回。另一方面,对于“另外酒店还非常人性化地为我们把退房时间延迟”,识别出“另外酒店”,这边则会结合句法分析和词法分析的方式进行反向校验。
对于命名实体而言,利用多任务或者预训练模型去进行模型的优化,是比较有效的点。多任务如结合语言模型,分类模型,跨场景的命名实体识别等方式[2],使用预训练语言模型如bert,能够有效提高最终准确率,在我们现有数据上能提高大概5-10个点。
对于实体链接而言,如图10所示,首先会进行名称模块解析,通过前缀和后缀解析,获取对应的核心词。基于核心词进行候选的召回,基于词粒度的方式会导致召回过少的问题,基于字粒度的方式则会导致召回噪音过大的问题,这边使用基于2-gram的方式来调整粒度,改善对应的召回质量。
在进行候选重排的时候,特征维度则会结合整个mention部分,核心词部分,后缀部分等交互组合的字面相似度,包括编辑距离,jaccard相似度,in逻辑等,同时结合候选简介/地址等上下文与当前上下文的语义相关度,以及候选召回量和热度。
实验结果表明,语义相关度能够带来更多的信息量,有效提高召回,提升大概30个百分点,当然带来信息量的同时必然也会有一定的噪音,对于准确度有一定的损失。在此同时,增加候选召回量作为特征,有效模拟人在进行消歧判别时的逻辑,较少的召回量,从概率上看,确定性会更高一些,较多的召回量,则具有更高的不确定性,因此能够有效提高准确度,大概6个百分点。
图10 实体链接框架
2.3 主题图片挖掘
这边构建了图片标签分类模型,包含两百左右的主题标签。标签的类别比较多,这边构建了一个多层体系的标签系统来提高保证同级别标签之间的粒度和可区分度,如图11。
图11 图片标签层级体系
在应用时,用户定义自己的主题,同时会手动建立自定义主题和200左右的图片主题标签的映射关系,从而实现用户自定义主题的图片自动挖掘,如“亲子”,则对应“动物园”,“游乐园”等。
三、优质内容抽取和生成
3.1 文章自动评级
对于文章评级而言,由于文章内容比较长,较为复杂,同时标准不一,难以定义,进行选优比较困难,因此更多集中在过滤低质的内容,标准较为清晰,单一,关键点的检测较为简单。在进行质量粗筛的时候,会综合考虑文本长度,图片数量,实体识别,图文质量等维度,但是其核心主要还是敏感段落识别,负向情感识别等,核心是一个分类问题。
对于分类问题,常用深度学习分类模型,包括fastText,TextCnn,LSTM+attention等,均有不错的效果。2018年bert[1]出现以后,迁移学习在NLP领域成为主流。Bert是transformer的Encoder部分,相对于仅仅使用当前词上文信息的传统语言模型,它同时结合了上文和下文信息,并使用Mask LM的方式进行训练,同时结合Next Sentence任务,借助大规模的无监督数据有效提高对应场景的效果。它能够较好的支持word level,如实体识别任务,和sentence level,如情感分析任务。在我们现有情感分析任务上,bert比其他方法效果大概超出3%-5%的准确度。
3.2 优质内容文本抽取和生成
优质内容文本抽取和生成可以见之前分享的《NLP应用及实践-多场景智能内容抽取和生成》,这里就不详述。
3.3 首图优选
首图优选的功能位于我们马可波罗-运营平台,如下图所示,对于每一个酒店会根据主要的类别维度进行美图的优选排序。提供一个AI精选的模块,自动聚合了各个类别中较为优质的图片集合,供运营人员进行优先选择,利用这个模块,运营每个酒店的效率提升了3/4。
首图优选主要包含三个模块:首图分类,图片美感度以及图片去重。
首先,对于图片美感度模型,我们这边定义的是一个二分类问题,若是定义成回归问题,对于样本的标注要求比较高,需要多人对同一张样本进行同时标注。在进行分类样本标注的时候,尽量保证美图和丑图具有较高的区分度,对于定义比较模糊的样本,则放弃标注。基于分类样本训练出来的美感度模型,从可用性角度来看,高分值的图片确实具有较高的可用性,但是对于细分值的区分度则较弱,也就是说0.95分的图片不一定比0.92分的图片更具有美感度。
在此同时,美的图片不一定适合做首图,因此我们基于首图优选场景,从特定类别和图片视角定义了一些图片类型,如外观,游泳池,大床房等,如图12所示。
图12 首图分类
对于首图图片分类和优美度判断模型,用了基于inception v3的迁移学习,后接浅层网络,基于当前场景数据进行finetuning,均能达到较好的效果。
由于图库中存在大量重复的图片,或者进行较为轻微裁剪,加滤镜等变换后的图片,因此我们基于常见的变换方式,构建了大量轻度变换的匹配样本,进行基于triplet loss的匹配模型的训练。这比单纯基于现有类似inception模型获取向量的方式,对当前场景具有更好的适配性,同时特征维度较为可控,特征冗余性较小,模型稳定性和性能也更好。
四、总结
本文详细阐述了携程在内容化上的一些实践,包含相关框架,思路,落地场景以及核心算法,主要的模块包括如何基于产品进行内容化,如何基于文章进行产品化,内容形式多样化等。通过算法和模型能够有效抽取现有大量内容中一些亮点,优质的内容,但是算法在文本的细节语义表达上的处理还是有一些欠缺,离不开人工的校验。通过算法和模型的方式,能够大大降低运营人员的工作和运营周期,有效提高效率。
未来优化点包括:
参考文献
[1] Jacob Devlin, Ming-Wei Chang, Kenton Lee, Kristina Toutanova. BERT: Pre-training of Deep BidirectionalTransformers for Language Understanding.
[2] Chen Jia, Xiaobo Liang, Yue Zhang. Cross-Domain NER usingCross-Domain Language Modeling.
[3] Liang Pang, Yanyan Lan, Jiafeng Guo, Jun Xu, Jingfang Xu, Xueqi Cheng. DeepRank: A New Deep Architecture for RelevanceRanking in Information Retrieval.
[4] Lample,G., Ballesteros, M., Subramanian, S., Kawakami, K. and Dyer, C., 2016. Neuralarchitectures for named entity recognition.