摘要

  • 主题模型对于在文档的集合中发现潜在的主题非常有用。近期的研究已经展示了主题建模方法作为一个聚类任务的可行性。
  • 本文展示了BERTopic,它是一个话题模型,它通过对一个基于类的TF-IDF的变体的开发,抽取一致的话题表示。
  • 具体来说,BERTopic采用预训练的基于transformer的语言模型来产生文档的嵌入,对这些文档嵌入进行聚类,并最后利用基于类的TF-IDF过程来产生话题的表示
  • BERTopic 产生一致的话题,并且在有关的经典模型,以及最近的聚类方法的多种多样的基准中,保持竞争力。

引言/研究动机

  • 为了揭示文本中的共同主题和隐含故事,主题模型已经被证实是一个有力的无监督工具。传统模型,像潜在狄利克雷分配(LDA)和非负矩阵因数分解,将每个文档作为一个词袋,并且将每个文档模型化为一些潜在话题的混合。
  • 这些模型的局限性是,通过词袋表示,它们忽视了词之间的语义关系。由于这些表示不能解释句子中的词的上下文,词袋输入很可能不能准确得表示文档。
  • BERT和它的变体早产生上下文词和句子的向量表示时,已经展示了很好的结果。这些向量表示的语义属性使得文本的意义被编码进去,在该方式下相似的文本在向量空间中能更接近。
  • Sia等人采用基于中心的技术,与传统方法(像LDA)来表示话题相比较,证明了聚类嵌入的可行性。从这些聚类了的嵌入中,话题表示被从嵌入词中提取,并且找到那些与聚类中心接近的。相似得,Top2Vec使用Doc2Vec的词和文档表示来共同地学习嵌入话题,嵌入文档和嵌入词向量。与Sia等人的方法比较,文档被聚类,并且通过找到接近于话题中心的词来创建话题表示。有趣的是,尽管话题的表示是从一个基于中心的视角抽取的,簇是从一个基于密度的视角来产生的,采取的是HDBSCAN。
  • 上述的话题建模技术假设:距离簇的中心近的词最可能能代表那个簇,也就是话题。实际上,一个簇并不总是呈现一个围绕中心的球形分布。这样一来,这个假设不能够对所有的文档的簇以及这些簇的表示都成立,所以话题也会被误导。经过Sia等人尝试克服它通过基于簇中词的频率对主题词进行重新排序,最初的候选名单仍然是从一个基于中心的视角选择的。
  • 本文引入BERTopic,一个主题模型,利用聚类技术和一个基于类的TF-IDF变体来产生一致的主题表示。更细致的说,我们首先使用一个预训练的语言模型创建了文档嵌入来获取文档级别的信息。其次,我们第一次降低文档嵌入的维度,在创建文档的语义相似的簇之前。第三,为了克服基于中心的视角,我们开发了一个基于类的TF-IDF版本来抽取每个主题的主题表示。这三个独立的步骤能够使得主题模型非常的灵活,可以被用于不同的使用场景下,比如动态主题建模。

BERTopic

1.文档嵌入

  • 假设有着相同主题的文档语义上非常相似。为了执行嵌入步骤,BERTopic使用 Sentence-BERT(SBERT)的架构。这个架构可以使得使用者将句子和段落采取预训练语言模型转换成密度向量表示。它在多个句子嵌入任务上都实现了SOTA的性能。
  • 这些嵌入,主要是用来对语义相似的文档进行聚类,并不是直接被用来产生主题。

2.文档聚类

  • 由于数据的维度不断提升,到最近的数据点的距离已经接近于到最远的数据点的距离。结果导致,在高维的空间中,空间位置的概念的定义很弱,距离的度量相差很小。
  • UMAP能够在更低的维度下,保持更多高维数据的局部和全局的特征。而且,由于它对于嵌入的维度没有计算限制,UMAP能够被在具有不同维度空间的语言模型之间中使用。本文使用UMAP来减少文档嵌入的维度。
  • 然后,降低维度的嵌入会被用HDBSCAN来进行聚类。它是DBSCAN的扩展,能够通过将DBSCAN转换成层级的聚类算法,来找到不同密度的簇。HDBSCAN模型使用一个软聚类(soft-clustering)的方法,从而使得噪声被建模成离群值。这能够防止无关的文档被分配到任何一个簇中,并提升主题的表示。

3.主题表示

  • 对每个主题,我们想知道,基于它在簇内的词的分布与其他的不同,怎么得到一个主题。
  • TF-IDF是一个表示一个文档中的一个词的重要度的方法,我们修改它,这样它就能够表示一个术语(term)对一个主题的重要性。
  • 经典的TF-IDF过程结合了两个统计量,词频和逆文档频:
    W t , d = t f t , d ⋅ l o g ( N d f t ) W_{t,d}=tf_{t,d}\cdot log(\frac{N}{df_{t}}) Wt,d=tft,dlog(dftN)
    逆文档频度量了一个词提供给一篇文档的信息,它的计算是 语料库中的总的文档数 N N N 除以 包含词 t t t 的总的文档数。
  • 我们将这一过程迁移到文档的簇中。首先,我们一个簇中的所有文档作为一个单一的文档,通过简单得将文档进行拼接。之后,TF-IDF被调整通过将文档转换成簇,来得到这一表示。
    W t , c = t f t , c ⋅ l o g ( 1 + A t f t ) W_{t,c}=tf_{t,c}\cdot log(1+\frac{A}{tf_{t}}) Wt,c=tft,clog(1+tftA)
    逆文档频被转换成逆类频,被用来度量一个词提供了多少信息给一个类别。它的计算是每个类别的平均词数 A A A ,除以词 t t t 在所有类别中的数目。为了只输出正值,我们增加了一在对数运算内。
  • 这样一来,这个基于类别的TF-IDF过程就建模了词在每个簇中的重要性,这使得我们能够产生每个簇的 主题词的分布。
  • 最后,通过迭代得合并最不普遍的话题的 c-TF-IDF 表示,我们可以将主题的数量减少到一个使用者特定的值。

4.动态主题建模

  • 传统的主题建模技术本质上是静态的,并且不允许序列性组织的文档来被建模。动态主题建模技术,作为LDA的扩展,它克服了这个缺点,通过建模主题如何随着时间进行演化。
  • 在BERTopic中,我们假设主题暂时的性质,并不影响全局的主题的产生。相同的主题可能在不同的时间出现,虽然很可能表示的不一样。BERTopic首次产生了一个主题的全局表示,不考虑它们的时序属性,在产生局部表示之前。
  • BERTopic首次被应用于整个语料库上,仿佛数据没有时序方面,以创建一个主题的全局表示。之后,我们能够创建一个每个主题的局部表示,通过简单得将时间步长 i i i 的词频和之前预先计算好的全局 IDF值进行相乘。
    W t , c , i = t f t , c , i ⋅ l o g ( 1 + A t f t ) W_{t,c,i}=tf_{t,c,i}\cdot log(1+\frac{A}{tf_{t}}) Wt,c,i=tft,c,ilog(1+tftA)

平滑

  • 对于每个主题和时间步长,c-TF-IDF向量被归一化,通过将向量除以L1范数。当比较向量时,这个归一化的过程防止文档大小造成的不均衡。
  • 对每个在时间步长 t t t的主题和表示,我们简单得算得在步长 t t t 和步长 t − 1 t-1 t1 的平均。

5.实验设置

评估

  • 主题一致性(topic coherence),采用标准化的逐点互信息(NPMI),这项一致性指标的公平性能已经能够赶得上人类的判断,取值范围[-1,1]。
  • 主题多样性(topic diversity),通过所有主题的唯一词的百分比进行定义,取值范围[0,1],0表示主题冗余,1表示更加多样的主题。

6.结果

性能

在这里插入图片描述

语言模型

在这里插入图片描述

动态主题建模

在这里插入图片描述

运行时间在这里插入图片描述

7.讨论

优势

  • 由于无论使用什么语言模型,BERTopic都可以保持竞争力,所以它的性能还有可能随着语言模型领域的新的发展而提升。
  • 通过将文档嵌入和主题表示两个过程分开,使得模型在使用和微调时更具有灵活性。

弱势

  • BERTopic假设每篇文档只包含一个单一主题,而事实可能包含多个主题。
GitHub 加速计划 / be / bert
8
2
下载
TensorFlow code and pre-trained models for BERT
最近提交(Master分支:3 个月前 )
eedf5716 Add links to 24 smaller BERT models. 4 年前
8028c045 - 4 年前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐