医疗领域热门话题挖掘

一、前言

前一段时间在《医疗健康领域的短文本解析探索(一)》中提到如何抽取帖子concept,用作为帖子的上层概念,可以提取符合用户认知力度的概念。在《搜索中的Query扩展技术(二)》也提到用根据entity与concept构建实体和概念的上下层级的关系结构,可用于可解释性扩展和推荐。

在腾讯2019年的KDD论文[1]中对文本进行概念化进行了详细的描述,在其concept之上还有一个更上层的topic,其topic是预定义的31个类别,包括'娱乐','科技'等等。在观测指标时我们发现用户对热门话题关注度很高,于是结合目前搜索场景我们做了一些思考,我们可以根据用户短期行为结合concept聚类的topic去挖掘一批热门话题/主题,既可以挖掘用户在近期关注热点,也可以在满足内容查询的同时对用户进行推荐,进而也解决了冷启动问题。

为什么要解决挖掘热门话题和扩展问题?我用微博的话题举例,12月10日黑龙江东宁市发现一例本土病例,当我去微博搜索时,会发现其推荐的话题是好久之前的内容,虽然这些话题在当时的很火热,但是在目前来说其时效性已经过去了,很可能会误导用户。

在花厂这个针对医学领域论坛搜索中也有很多这样的问题,用户搜索'江苏省高级职称'更多的用户是想了解2020年高级职称进度,如果推17、18年的内容显然缺失了时效性(右侧为改进后的效果)。

二、准备工作

既然是热门话题内容的挖掘和扩展,那就产生几个重要的问题

  • 如何保证热门的时效性

  • 如何根据帖子和已抽取的concept找出话题这个上层概念

  • 如何进行扩展

    An Empirical Study on Learning to Rank of Tweets

这是中国科技大在2010年Coling上发表的一篇文章,本文是做结合多种特征做leaning to rank,其中提到Popularity score,根据转发的关系计算每一个user的流行度。pagerank计算如下图所示。

根据用户之间的转发进行构二部图,其中Rv表示转发tweet的用户集合,RN是同时转发两个人的tweet这时两人之间就可以构成一条边,N为用户转发次数,pagerank计算用户之间的流行度做特征。实际上我们可以对用户点击和转发内容来评估流行度,这篇文章对用户进行流行度分析,而我们可以扩展到帖子上,根据用户短期行为去评估帖子的流行度。一个细节问题也就产生了,如何合理构图,真实的点击行为可能存在误点等行为,如何进行合理剪枝。

Billion-scale Commodity Embedding for E-commerce Recommendation in Alibaba

这篇是18年阿里发在kdd上的一篇文章,主要是根据用户点击行为构图,并基于graph embedding 实现淘宝的首页推荐召回。首先问题还是如何构图,上一篇Tweets是对用户之间交互转发,实现用户之间构图,而这篇文章是分析用户在一个session下的点击行为,根据点击item的先后顺序构图。

其中在构图过程中会用一些trick的方法进行剪枝消除噪音:

  • 点击后停留1秒的为误点,移除

  • 过度活跃的用户为无效用户,进行移除

  • 频繁修改商品内容的进行移除

本文提到了三种graph embedding方式,Base Graph Embedding, Graph Embedding with Side information,和Enhanced Graph Embedding with Side information。

    Base Graph Embedding

基础的图表示学习,使用Deepwalk计算每个节点向量,首先节点之间的边权重是用户点击跳转频率,再根据商品之间的邻接矩阵进行random walk 生成node sequence,在使用skip gram进行训练。

    Graph Embedding with Side information

使用BGE可以根据用户行为序列获得items的向量表示,并且可以根据用户点击行为推荐关注度高的items,效果还不错。但是并没有解决冷启动问题,因为很多商品在上架时是无点击行为的。于是就考虑用一些边界信息进行增强,比方说item所属的商店,所属类型等进行构图,作者做了一个假设,用户对搜索产品的类似的产品和同属一个商店的产品更感兴趣,将这些信息作为稀疏特征去增强itme,再使用deep walk进行向量表示,之后再用average-pooling做平均作为item最终的向量表示。

    Enhanced Graph Embedding with Side information

在GES中存在一个问题,直接取所有的side information embedding取平均并没有考虑side information之间的权重问题,于是提出一个soft操作,对side infomation embedding做一些加权平均。

M2GRL: A Multi-task Multi-view Graph Representation Learning Framework for Web-scale Recommender Systems

这篇文章是阿里2020年kdd的文章,其中提到对用户行为构图做商品推荐的方案,这个构图思想和上一篇文章相同,只不过今年在instance(item)基础上,对商品category和shop构图。

清洗阶段:用户浏览时长小于2s,判断为用户误点过滤掉

session 切分与合并:用户打开和关闭淘宝记录,如果下次打开时间小于30min则对两条点击数据进行合并。

作者将上述三种图的Representation Learning称为intra-view task,继续使用skip-gram来做node embedding.

作者又通过category-instance和instance-shop构建交互关系,使用使用Multi-task likelihoods[11]作为inter-view task。目标loss为:

如果有兴趣手推一遍公式可以仔细读读《Multi-Task Learning Using Uncertainty to Weigh Losses for Scene Geometry and Semantics》,其思路很清晰。

GIANT- Scalable Creation of a Web-scale Ontology

19年腾讯发表了《A User-Centered Concept Mining System for Query and Document Understanding at Tencent》我们在之前的文章搜索中的Query扩展技术医疗健康领域的短文本解析探索(一)有过介绍。

今年提出的'捷安特'可以说是对去年部分工作做了优化,对phrase mining抽取优化,并且在构建Attention Ontology时对entity进行筛选过滤。去年定义了三层结构topic - concept - entity,今年拓展为category、topic、concept、entity、event这样的五种类型。

去年的topic定义了31种,今年最上层的category扩展到1206种。今年的topic其实表示为一种话题,其定义为在事件之上的一种类型,可以根据实体和事件聚类,将相关事件进行统一表述,例如:特蕾莎梅任职欧盟公布脱欧协议这两个都对应着一个更大的话题英国脱欧谈判。整体结构上比去年稍微复杂一些,结构也更为清晰。

上面这个流程图可以清晰看出用户交互和推荐行程闭环的这个过程,用户点击行为去抽取entity、concept、event,再根据用户行为扩展Attention Ontology,根据本体库给文章和用户自动打标签,通过用户点击行为和大多数用户关注度较高的内容再对用户进行推荐。

去年使用三种方式bootstrappingtitle-query chunk,和sequence label等方式抽取phrase并使用gbdt进行分类,今年换了另一种方式抽取concept,根据用户搜索query和其点击的title分词构图,边有两种第一种相邻边,第二种句法分析的边。使用R-DCN对query-title interaction graph中的每一个节点进行二分类,这个二分类让我们筛选出用户query和点击的title中相对重要的token,再根据 asymmetric traveling salesman problem (ATSP)去获取最短路径,就可以获取质量较高的phrase/concept。

关于事件抽取其实也是一个phrase mining问题,这里的event并不是预先定义好的,而是以一种phrase的形式存在,沿用去年提出的三种抽取方案,不断的抽取挖掘新的事件。在构图的过程中加入了一些trick方法,比方说对文章中出现的关键性词语进行分类,判断这个实体是否可以属于这个concept,定义三种边关系is-A,involve,correlate,并且使用trigger进行node之间构建关系时进行增强。

《Octet- Online Catalog Taxonomy Enrichment with Self-Supervision》

这是2020年UIUC和亚马逊在KDD上的一篇论文,本文提出自监督的方式端到端的进行taxonomy构建和扩展 ,Octet由两部分组成,Term Extraction 和Term Attachment。如下图所示:

其中Term Extraction使用Bilstm + crf来实现,其采用“O,B”作为标注类型。从已有的图中构建数据,训练self-supervision V 模型,在用模型V对新文本进行抽取,抽取到的新的数据再通过Term Attachment加入到Taxonomy T中,再用新的T去构建新的模型V。在这个过程中,Term Attachment使用多种Representation,进行分类任务,判断实体是否可以加入到T中,构建一个self-supervision R的分类任务。这样的流程就形成了一个闭环。

在实验过程中,作者使用了四种Representation,Structural Representation使用RGCNs对用户行为(搜索的query中的term和点击的term是构图)进行Graph Embedding,Semantic Representation使用word embedding表示term的语义信息。Lexical Representation是一些字层面的工作,比方说Prefix,Suffix,Edit distance, LCS和Contains等等。最后训练的时候用已有的图结构sample一些正样本,其余为负样本进行,因为是二分类任务,因此目标函数还是交叉上损失。

三、自己动手丰衣足食

整体思路已经很清晰了,就先简单做一个baseline模型试试。根据用户行为进行构图,对concept进行聚类,使用pagerank计算整体的话题流行度。点击行为构图流程如下所示:

根据用户搜索query和点击行为进行构图,根据用户点击次数和停留时间等特征对路线进行剪枝。因为我们考虑的是流行度,通用的pagerank是利用有向图进行计算的,加权的pagerank[5- 6]其实是对常规的一种拓展,更能体现出受欢迎程度。排序效果如下图所示:

我们虽然用pagerank计算了流行度,但是我们用的数据是从7天内点击行为来的,这七天并不能覆盖到所有的帖子,并且在更新的过程中如果直接进行覆盖,可能会出现之前热门的帖子,没有点击关注行为之后,其帖子pagerank没有更新依旧保存着热度。这里我们就考虑使用牛顿冷却衰减[6-7]。

因为我们的更新时间固定,因此我们只需要计算k的这个更新系数就好了,有兴趣的童鞋可以去手推一下公式,这里就不过多介绍了,其中要注意的就是如果直接使用这种方式更新数据,很可能对突然出现或消失的数据不友好,因此对k限制在(0.05-5)区间内,并将其更新系数和上一轮更新梯度取均值作为本次更新结果。

接下来就是concept聚类[8]过程了,聚类没有弄的很复杂,常规的LDA就有很好的效果。concept文本的特征我们还是采用基础的向量表示tfidf,doc2vec和word2vec。

最终的热门话题扩展结果如下所示:

四、总结

随着GNN的工作越来越多,根据用户行为构图,并进行图表示学习的推荐近几年比较火爆。微软,亚马逊,阿里,还有腾讯今年都有很多相关的论文,并且在实际工业生产中有着不错的效果。用户行为可以隐藏着很多信息,比方说短期用户关注热点;搜索query可以和click中的内容进行构图,可用于下游任务;抽取用户query中的conept;构建用户画像,例如:医学生在论坛上搜索如何准备考研,我们会推荐考研指南concept下的高质量内容。用户搜索疫情相关信息,我们会推荐新冠疫情这个concept下的热门权威内容。

通过用户行为,可以不用过多考虑一些周期性时效性的问题,因为在用户搜索点击行为中已经告诉我们哪些内容他们更感兴趣,哪些内容会随着时间而失去关注,并且可以解决冷启动问题。第三节介绍了一个常规的工业界方法,去解决新闻热点挖掘问题。其中还有更多更有趣的玩法等待大家挖掘。

参考文献

[1]《GIANT- Scalable Creation of a Web-scale Ontology》

[2]《An Empirical Study on Learning to Rank of Tweets》

[3]《Billion-scale Commodity Embedding for E-commerce Recommendation in Alibaba 》

[4]《M2GRL: A Multi-task Multi-view Graph Representation Learning Framework for Web-scale Recommender Systems》

[5] https://www.geeksforgeeks.org/weighted-pagerank-algorithm/

[6] PageRank for ranking authors in co-citation networks

[7] 阮一峰的网络日志---基于用户投票的排名算法(四):牛顿冷却定律

[8] https://mathbitsnotebook.com/Algebra2/Exponential/EXCooling.html

[9]《Octet- Online Catalog Taxonomy Enrichment with Self-Supervision》

[10]《TaxoExpan- Self-supervised Taxonomy Expansion with Position-Enhanced Graph Neural Network》

[11]《Multi-Task Learning Using Uncertainty to Weigh Losses for Scene Geometry and Semantics》

(0)

相关推荐