Topic-Aware Neural Keyphrase Generation for Social Media Language

ACL 2019 Topic-Aware Neural Keyphrase Generation for Social Media Language

github

本文由腾讯AILab和香港中文大学联合发表,文章关注的问题为自然语言理解的中的关键短语(keyphrase)生成问题,另外所研究的场景是更为常见与广泛的社交媒体(social media)。

背景

随着网络技术和硬件设备的发展,人与人之间的沟通逐渐的变得更加的便携和简易,而且twitter、Facebook、weibo等广泛被使用的社交媒体为人们之间的沟通和意见的交流提供了一个很好的平台。不同地方的用户可以在不同的地方及不同的时间在社交媒体上分享自己的生活,或是对于社会中发生的热点事件给出自己的看法。


在这里插入图片描述
source

正如任何事物都是一把双刃剑,社交媒体的发展也不可避免的会带来诸多的问题。但如何中它所存在的内容中得到有用的信息也是一件十分重要的事情,因此社交媒体的关键行短语生成问题成为了自然语言理解领域一个热门的方向。所谓的主题性短语生成(主题性短语抽取)任务的目的在于从大量的文本中提取出可以表达主题的关键性信息,而所关注的信息层级在短语这个层次。

现有的方法主要是直接中给定的文本中抽取到表示关键主题的短语或是使用得到的词来组成短语,这样的做法可以在一定程度中得到想要的结果,特别是在例如科学文献等比较规范化的文本语料中效果不错。但是社交媒体上的内容具有一个很大的特点,那表示数据的稀疏性。由于社交媒体本身的定位,用户所发布的内容通常篇幅较短、格式各异,因此那些在规范化文本上有效的方法在这里往往效果很差。


在这里插入图片描述

从文中给出的例子中我们可以看出,在[S]这句话中我们无法找到它所对应的关键短语:超级碗(super bowl)。但其中所出现的yellow pants和匹兹堡钢人队(Steeler)具有很大的联系。因此,社交媒体中出现yellow pants的内容往往也和超级碗具有很大的关联性,因此现有的方法是无法正确的得到,那如何解决这个问题呢?

我们可以想一下:关于同一主题来说,不同的人所给出的内容是有差别的;对于同一主题的描述相关的词也有很多。因此,如果从不同的词中首先得到关于主题的隐表示再进行后续的关键性短语生成任务,既可以得到包含主题词的文本,也可以得到并没有在现有文本中出现的主题短语,这也是本文提出的模型的出发点。

模型

由于本文所提出的方法是结合了主题感知的关键性短语生成,因此模型的架构如下所示:


在这里插入图片描述

其中上图中绿色的部分表示主题模型(topic model),上面的两部分整体上表示生成模型(generation model)。

假设所处理的语料库记为 { x 1 x 2 , . . . , x C } \{x_{1},x_{2},...,x_{|C|}\} ,那么其中的 x i x_{i} 这里表示为两种形式 X b o w X_{bow} x s e q x_{seq} X b o w X_{bow} 这里表示为基于词袋模型的向量形式 x s e q x_{seq} 是一般的基于词典的索引序列向量形式。前者做为主题模型的输入,后者做为生成模型的Encoder的输入。

1、主题模型(Neural Topic Model,NTM)

NTM整体上基于变分自编码器的架构,它所处理的任务即 X b o w X_{bow} 的重建。中间过程得到的隐表示 z z 做为主题的隐表示参与生成模型Decoder的生成过程。

  • Encoder : μ = f μ ( f e ( X b o w ) , log σ = f σ ( f e ( X b o w ) ) \mu = f_{\mu}(f_{e}(X_{bow}), \log \sigma = f_{\sigma} (f_{e}(X_{bow}))
  • Decoder: z N ( μ , σ 2 ) θ = s o f t m a x ( f θ ( z ) ) w s o f t m a x ( f ϕ ( θ ) ) z \sim N(\mu, \sigma^2) \\ \theta = softmax(f_{\theta}(z)) \\ w \sim softmax(f_{\phi}(\theta))

其中 f f_{*} 表示多层感知机。

利用NTM对于 X b o w X_{bow} 的重建过程,模型可以逐渐学习到关于不同的词所对应的主题信息,然后将其做为后续生成过程的指导信息。

2、生成模型(Neural Keyphrase Generation Model,KG)
生成模型这里采用了基于注意力机制的Seq2Seq模型,其中Encoder使用双向的GRU,Decoder使用单向的GRU。Encoder的输入为 x s e q x_{seq} ,Decoder的输入为Encoder的状态表示和主题模型所提供的指导信息,模型的输出为关键性短语。
P r ( y x ) = j = 1 y P r ( y j y < j , M , θ ) Pr(y|x) = \prod_{j=1}^{|y|} Pr(y_{j}|y_{<j},M,\theta)

为了模型的效果,这里也使用了COPY机制允许模型可以直接从源文本中直接抽取关键性短语。模型整体的运行机制和一般的Seq2Seq模型并没有太大的区别,因此理解起来也并不难,只需要清楚模型各部分的输入和输出。

由于模型整体上可以分为两部分,因此训练过程对应的损失函数为两部分: L = L N T M + γ L K G L = L_{NTM} + \gamma* L_{KG} 其中 L N T M L_{NTM} 所对应的为主题模型的变分下界形式: L N T M = D K L ( p ( z ) q ( z x ) ) E q ( z x ) [ p ( x z ) ] L_{NTM} = D_{KL}(p(z) || q(z|x)) - E_{q(z|x)}[p(x|z)]

L K G L_{KG} 对应的为交叉熵损失: L K G = n = 1 N log ( ) P r ( y n x n , θ n ) L_{KG} = - \sum_{n=1}^{N} \log ()Pr(y_{n}|x_{n}, \theta_{n})

实验

实验部分所使用的三个数据集分别采样自Twitter、StackExchange和Weibo,其中对于数据的预处理和模型的参数设置可见原文的实验部分,实验所使用的评估指标为MAP和F1。实验结果如下所示:


在这里插入图片描述

具体的实验结果可见原文~

发布了267 篇原创文章 · 获赞 91 · 访问量 19万+

猜你喜欢

转载自blog.csdn.net/Forlogen/article/details/104199431
今日推荐