查看原文
其他

竞赛冠军方法分享 | 基于多模态GCN和句子排序的POI生成方案

本文介绍CCF和高德地图联合举办的2021POI名称生成竞赛(https://www.datafountain.cn/competitions/522/)中获得冠军方法。针对具有挑战的POI名称生成任务,本文提出了单阶段和双阶段的解决方案,其中单阶段方案将该任务建模为graph中的节点分类和边预测的问题,利用图卷积网络对多模态的节点特征进行建模;双阶段方案将该任务拆解为两个子任务:多模态文本分类任务和句子排序任务,并提出了优化的句子排序模型。我们对上述两种方案的结果进行融合,输出鲁棒的预测结果,最终在比赛中获得了冠军。

一、背景介绍



POI(Point of Interest)指的是兴趣点。针对于地图应用和地理信息系统中,POI可能是一家街边店铺、一个加油站、一所酒店、一个旅游景点等等。POI随处可见,且他的图像信息非常容易获取,但是如何依据图像信息生成正确的POI名称是至关重要的环节。人工作业的方式显然成本高且效率低,因此希望能探寻一种自动化的POI名称生成方式。具体地,一个例子如图1所示。

图1 POI名称生成示例

图中的红色框表示挂牌外轮廓,用于表征挂牌在全图中的位置。黄色框表示挂牌内的所有文本识别结果,包括文本检测框和内部文字识别结果。在上图中,挂牌内的文本包括“李记”,“石味先”,“石锅菜”,“手工水饺”,“凉菜”和“订餐电话:13675296578”。显然,能构成该挂牌POI名称的为“李记”,“石味先”,“石锅菜”,最终的POI名称为“李记石味先石锅菜”,但除此之外,还存在“石味先石锅菜”,“李记石味先”这样的可接受名称,认为其能获得0.5分。

二、方法概况



1.      方法总览

POI名称生成中给定了图像、OCR等标注内容,以期自动生成挂牌名称。由于挂牌设计的多样性以及拍摄条件的不确定,该任务具有一定挑战。本文提出了单阶段和双阶段的解决方案,其中单阶段方案将该任务建模为graph中的节点分类和边预测问题,利用图卷积网络对多模态的节点特征进行建模;双阶段方案将该任务拆解为两个子任务:多模态文本分类任务和句子排序任务,并提出了优化的句子排序模型。我们对上述两种方案的结果进行融合,输出鲁棒的预测结果。最终在CCF和高德地图联合举办的POI名称生成竞赛(https://www.datafountain.cn/competitions/522/)中获得冠军。且入围2021 CCF BDCI总决赛,获得最佳算法能力奖。详见:

https://mp.weixin.qq.com/s/8kBHF1dCh1z_hgxhzuoSpA

2.      单阶段方案

图2 单阶段方案流程图

单阶段方案将POI名称生成任务建模为graph中的节点分类和边预测的问题。具体地,可以将该方案拆解为三个模块:多模态特征提取模块、上下文关系建模模块以及输出解码模块。

2.1多模态特征提取模块

根据标注信息,我们一共可以利用三个维度的特征:文本特征、位置特征和图像特征。这三种特征对于POI取名均有参考价值。例如:店名通常会是一些专有词,可能位于左上角和中间,常常有突出的文字颜色和字体等。因此,为了更好的提取POI名称,必须充分地利用上述三个维度的特征。

具体地,我们分别使用ResNet、BERT和Position Embedding提取样本的视觉、语义及位置特征,融合后得到多模态特征。值得注意的是,若样本中存在N个文本框,则输入为N+2个,即会额外补充[CLS][EOS]两个特殊文本框。其中[CLS]的视觉和位置特征为全图特征,[EOS]的视觉和版面特征为右下角的10*10小图像块特征。这样做的目的是将解码过程统一,即寻找以[CLS]为开始,[EOS]为终点的最高置信度的路径。

2.2上下文关系建模模块

 完成特征提取后,将会使用Self-Attention技术进行GCN建模,该模块可以学习到两两节点之间的关系特性,并根据该关系特性更新每个节点的特征。在训练过程中,首先是对于每个节点的二分类任务,即判断哪些节点属于店名名称。其次,还需要对每两个节点A和B预测其连接的有向边的类型,即判断是否应该将A->B(或A<-B)的内容链接起来构成更长的店名;

2.3 输出解码模块

前向过程中,将会利用类似Beam Search的方法选取一条[CLS]起始,至[EOS]结束的分数最高的路径。每条路径的最终分数为路径所经过的所有节点和边的置信度的乘积。将最高分数路径上的节点文本内容按照顺序拼接,则可得到最终的POI店铺名称。

三、双阶段方案



该方案将POI名称生成任务拆解为两个子任务:挑选出属于店名的文本(多模态文本分类任务)和对上述文本进行排序(句子排序任务)。在原始的句子排序任务基础上,我们还将针对其存在的问题进行优化。
3.1多模态文本分类

该任务的网络结构基本复用 One-Stage方案,不同的是去除了边的预测网络。在此对于网络细节不再赘述。

3.2句子排序任务

 给定属于店名的文本内容(乱序),我们使用句子排序模型生成最终正确、通顺的店名。句子排序任务实际上是一个较为经典的NLP任务。因此我们选取了目前业内SOTA的Re-BART算法作为初始排序模型,具体算法细节请参考[1]。

图3 句子排序模型生成店名示意图
3.3 排序模型优化

由于上述Re-BART模型的输入和输出是等长的,即输入5个句子时,模型就会给出5个句子的顺序,但是在实际情况下,这5个句子中很可能存在由分类错误导致的非店名文本。一定程度上说,此阶段必然会累加文本分类阶段的误差。此外,上述Re-BART模型仅利用了语义信息,忽略了同样重要的版面信息。

针对上述问题,我们提出了改进版本的Re-BART方法。相较于原始方案主要存在两个改进点:

1)增加位置信息:在输入中增加Position Embedding,引入文本的版面信息;

2)增加EOS通过引入EOS判别当前时间步排序模型是否需要停止输出内容,使得模型拥有二次筛选的能力,即不再固定输出为n个,而是当输出EOS,则不再输出后续内容。

图4 改进版本的Re-BART方法示意图

四、模型融合



POI名称生成任务存在一定的歧义性,如下图中真值为“肇庆市康民大药房连锁有限公司木桥头分店”,但是“康民大药房木头桥店”按照其他样本的规律也很有可能成为该挂牌的真值名称。为了降低上述歧义性,我们对现有模型的结果进行基于置信度投票的融合,实现鲁棒的预测。

图5 POI名称生成任务中的歧义性示意图

五、实验效果



5.1验证集

最终我们的单阶段和双阶段方案在验证集上的性能指标如表1所示。

表1 单阶段和双阶段方案在验证集上的性能指标


从最终实验结果中可以看到,双阶段的方案相较于单阶段方案而言性能更优,但运行速度较慢。认为性能的差异可能是由于以下原因导致的:以下原因导致的:

1)各阶段所需要的特征不同:对于文本分类/节点分类而言,视觉、语义和位置信息都能影响分类结果,但是对于顺序任务而言,语义信息更为重要,视觉信息反而可能是造成干扰的。

2)预训练语料库:句子排序任务中使用了BART预训练语言模型,而单阶段方案中使用的是BERT,在句子排序的任务上,由于两者预训练任务的不同,BART天然地在此任务上优于BERT,这也可能导致性能差异。

5.2测试集

采用相同的方案和模型融合策略,在测试集榜单上最终性能为74.63,并在最终的答辩综合评分中获得冠军

六、总结



针对具有挑战的POI名称生成任务,本文提出了单阶段和双阶段的解决方案,其中单阶段方案将该任务建模为graph中的节点分类和边预测的问题,利用图卷积网络对多模态的节点特征进行建模;双阶段方案将该任务拆解为两个子任务:多模态文本分类任务和句子排序任务,并提出了优化的句子排序模型。我们对上述两种方案的结果进行融合,输出鲁棒的预测结果。最终在比赛中获得了冠军。后续可以从以下几点进一步进行优化:
1)引入文本属性信息,减轻任务学习难度;
2)利用现有的大规模POI语料库进行预训练;
3)寻求更优的多模态融合方式,获取更好的特征;
4)模型优化,设计更贴合该任务的损失函数。
后续可继续探索多模态融合、文档理解等技术,提出更高效、安全、稳健的算法。

七、相关资源



  • 答辩视频:
    https://www.bilibili.com/video/BV1yZ4y1Q7N7

  • 团队主页:
    https://davar-lab.github.io/index.html 

参考文献



[1] Somnath Basu, Faeze Brahman, Snigdha Chasturvedi. 2021. Is Everything in Order? A Simple Way to Order Sentences. In EMNLP

原文作者: 张鹏、李灿、郭大山、黄鑫泽、乔梁、程战战


撰稿:李  灿

编排:高 学
审校:连宙辉
发布:金连文

 


免责声明:1)本文仅代表撰稿者观点,撰稿者不一定是原文作者,其个人理解及总结不一定准确及全面,论文完整思想及论点应以原论文为准。(2)本文观点不代表本公众号立场。


往期精彩内容回顾

欢迎加入中国图象图形学学会!(附入会攻略)


征稿启事:本公众号将不定期介绍文档图像分析与识别及相关领域的论文、数据集、代码等成果,欢迎自荐或推荐相关领域最新论文/代码/数据集等成果给本公众号审阅编排后发布 (联系Email: eelwjin@scut.edu.cn)。


扫描二维码,关注我们:






您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存