阿里云「飞天发布时刻」2024来啦!新产品、新特性、新能力、新方案,等你来探~ 了解详情
写点什么

携程 AI 助力产品内容化实践

  • 2020-01-21
  • 本文字数:5486 字

    阅读完需:约 18 分钟

携程AI助力产品内容化实践

内容化的核心是主题,产品,内容。主题是对用户需求最为直接的刻画,能够有效命中用户的兴趣点;产品是用户和商家的最终目标,是整个内容化的核心;内容则是对于产品,主题的详细阐述,能够有效促使用户点击、种草等。


本文主要围绕这些难点,例如如何根据主题选产品,如何根据主题产品挖内容,进行具体的阐述,讲述携程 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 模型获取向量的方式,对当前场景具有更好的适配性,同时特征维度较为可控,特征冗余性较小,模型稳定性和性能也更好。

四、总结

本文详细阐述了携程在内容化上的一些实践,包含相关框架,思路,落地场景以及核心算法,主要的模块包括如何基于产品进行内容化,如何基于文章进行产品化,内容形式多样化等。通过算法和模型能够有效抽取现有大量内容中一些亮点,优质的内容,但是算法在文本的细节语义表达上的处理还是有一些欠缺,离不开人工的校验。通过算法和模型的方式,能够大大降低运营人员的工作和运营周期,有效提高效率。


未来优化点包括:


  • 特色抽取:结果中还是存在很多的比较单一的语句,在抽取部分存在例如:早餐丰富,孩子喜欢等缺乏细节或者特色的语句;在生成部分还存在句子句法错误的问题。

  • 缺乏用户反馈:缺少用户 CTR(点击率)数据,所有的流程和算法的结果验证主要是依赖业务及运营人员检验,因此不能真实了解用户的喜好和意图。构建以点击率、转化率为优化目标的模型,从而切实为业务产生价值。

  • 抽取和生成结合:后面的方向需要考虑生成方式的探索。并且还需要合理地将生成结果和抽取结果进行融合。

参考文献

[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.


作者介绍


孙哲,携程资深算法工程师。长期从事自然语言相关工作,当前主要涉及内容化,对于内容挖掘和生成方面有相关的一些研究和探索。


本文转载自公众号携程技术(ID:ctriptech)。


原文链接


https://mp.weixin.qq.com/s?__biz=MjM5MDI3MjA5MQ==&mid=2697269321&idx=1&sn=a4b797680aacde90c8db3f5676c706a5&chksm=8376ef7db401666be5c1ac927728806be10d9b92585d38dd351a3e00963c310e6f433b8f94f5&scene=27#wechat_redirect


公众号推荐:

跳进 AI 的奇妙世界,一起探索未来工作的新风貌!想要深入了解 AI 如何成为产业创新的新引擎?好奇哪些城市正成为 AI 人才的新磁场?《中国生成式 AI 开发者洞察 2024》由 InfoQ 研究中心精心打造,为你深度解锁生成式 AI 领域的最新开发者动态。无论你是资深研发者,还是对生成式 AI 充满好奇的新手,这份报告都是你不可错过的知识宝典。欢迎大家扫码关注「AI前线」公众号,回复「开发者洞察」领取。

2020-01-21 10:001737

评论

发布
暂无评论
发现更多内容

QDS04 TensorFlow

耳东@Erdong

tensorflow 8月日更 qds

python-类,对象--》多态,封装,继承

加里都好

Python

LeetCode题解:208. 实现 Trie (前缀树),对象,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

模块五作业

Mr.He

架构实战营

Flutter Android 端 FlutterEngine Java 相关流程源码分析

工匠若水

flutter android 面试 8月日更

https 与 http 区别

一个大红包

8月日更

有书香气的七夕节

箭上有毒

8月日更

Linux之rcp命令

入门小站

Linux

在线日期计算器

入门小站

工具

「让我们一起Golang」让协程自己kill自己

Regan Yue

协程 Go 语言 8月日更

Web框架Gin | Gin 中间件

xcbeyond

Go 语言 gin gin-middleware 8月日更

持久层Mybatis中对于SQL注入的问题,聊聊你的想法?

卢卡多多

SQL优化 8月日更

毕业设计:电商秒杀系统

唐高为

Seata搭建与分布式事务入门

码农参上

SpringCloud spring cloud alibaba seata 8月日更

crudapi增删改查接口零代码产品成功案例之商会联盟卡项目

crudapi

Java Vue 零代码 crudapi qusar

Android开发:Android Studio插件GsonFormat根据Json自动生成javabean的方法

三掌柜

8月日更 8月

实战架构训练营总结

贯通

#架构实战营

【Flutter 专题】66 图解基本约束 Box (一)

阿策小和尚

Flutter 小菜 0 基础学习 Flutter Android 小菜鸟 8月日更

MySQL 系列教程之(四)MySQL 中的数据类型

若尘

MySQL 数据库 8月日更

【Dubbo3.0 技术专题】总体技术体系介绍及技术指南(目录)

洛神灬殇

dubbo Dubbo服务 8月日更 Dubbo3

架构实战营 | 毕业总结

架构实战营

模式包括问题和解决方案

escray

学习 极客时间 如何落地业务建模 8月日更

部署MinIO存储服务的四种方式

liuzhen007

8月日更

手撸二叉树之二叉树的堂兄弟节点

HelloWorld杰少

数据结构与算法 8月日更

JavaScript 中如何比较变量的相等

devpoint

JavaScript ES6 8月日更

【自驱型成长】——控制感

LeifChen

压力 控制感 8月日更 自驱型成长

架构训练营毕业总结

Neil43

架构训练营

配置Flink流式应用(九)

数据与智能

flink Kubernetes YARN

如何设计一个容错的微服务架构

架构精进之路

架构 微服务 8月日更

【设计模式】中介者模式

Andy阿辉

C# 后端 设计模式 8月日更

架构实战营毕业总结

唐高为

携程AI助力产品内容化实践_AI&大模型_孙哲_InfoQ精选文章