如何用Siamese和Dual BERT来做多源文本分类

发布时间:2021-12-09 17:05:11 作者:柒染
来源:亿速云 阅读:175

今天就跟大家聊聊有关如何用Siamese和Dual BERT来做多源文本分类,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

导读  

使用不同的方式来使用BERT模型。

在NLP中不断的研究产生了各种各样的预训练模型。对于各种任务,例如文本分类、无监督主题建模和问题回答等,不断的在刷新业界最佳。其中,最伟大的发现之一是在神经网络结构中采用了注意力机制。这种技术是所有称为transformers的网络的基础。他们应用注意力机制来提取关于给定单词上下文的信息,然后将其编码到一个学习到的向量中。

作为数据科学家,我们可以调用很多transformers架构,并使用它们对我们的任务进行预测或微调。在这篇文章中,我们喜欢读经典的BERT,但是同样的推理也适用于其他所有的transformer结构。我们使用了siamese结构,这是一个双路BERT,用于多文本输入的分类。

 

数据

我们从Kaggle上收集数据集。新闻类别数据集:https://www.kaggle.com/rmisra/news-category-dataset包含从HuffPost上获得的2012年至2018年的约20万条新闻标题。我们需要根据两种不同的文本来源对新闻文章进行分类:标题和简介。我们总共有40多种不同类型的新闻。为了简单起见,考虑到工作流的计算时间,我们只使用了8个类的一个子组。

我们不应用任何预处理和数据清洗,我们让BERT表演所有的魔法。我们的工作框架是TensorflowHuggingface的transformer库。更详细地说,我们使用了原始的Bert模型transformer,它的输出就是原始的隐藏状态,没有任何特定的头。它可以像Tensorflow模型的子类一样访问,并且可以很容易地在我们的网络架构中进行调优。

 

单个BERT

作为第一个竞争者,我们引入了单个BERT的结构。它只接收一个文本输入,这是两个文本源拼接的结果。这是正常操作:任何模型都可以接收拼接起来的特征作为输入。对于transformers,这个过程将输入与特殊tokens结合起来。

BERT期望输入数据以特定的格式:有特殊的tokens来标记句子/源文本的开头([CLS])和结尾([SEP])。与此同时,tokenization包括将输入文本拆分为词汇表中可用的tokens列表。对词汇表外的单词进行word-piece的处理,一个单词被逐步分解为子单词,这些子单词是词汇表的一部分。该过程可以通过预先训练好的Huggingface的Tokenizer轻松实现,我们只需要注意填充。

我们最后从源文本的输入中得到了三个矩阵(标记、掩码、序列id)。它们是我们的transformers的输入。在单个BERT的情况下,我们只有一个矩阵的元组。这是因为我们同时将两个文本序列传递给我们的tokenizer,这两个文本序列被自动拼接起来(使用[SEP] token)。

我们的模型结构非常简单:transformer直接与我们在上面构建的矩阵相连接。最后,通过平均池操作减少了transformer的最终隐藏状态。概率分数是由最终的dense层计算出来的。

如何用Siamese和Dual BERT来做多源文本分类

我们的简单BERT对测试数据的准确率达到83%。性能报告在下面的混淆矩阵中。

如何用Siamese和Dual BERT来做多源文本分类

 

双路BERT

我们的第二个结构可以定义为双路BERT,因为它使用了两个不同的transformers。他们有相同的组成,但训练用不同的输入。第一个接收新闻标题,另一个接收简介。输入被编码为两个矩阵元组(token, mask, sequence ids),每个输入一个。对于两个数据源,我们的transformers的最终隐藏状态都使用平均池来聚合。它们被拼接起来,并通过一个全连接层传递。

如何用Siamese和Dual BERT来做多源文本分类

通过这些设置,我们可以获得测试数据84%的准确度。

如何用Siamese和Dual BERT来做多源文本分类

 

SIAMESE BERT

我们最后的模型是一种Siamese的结构。可以这样定义它,因为两个不同的数据源是在同一个可训练的transformer结构中同时传递的。输入矩阵与Siamese BERT的情况相同。对于这两个数据源,transformer的最终隐藏状态是通过平均操作聚合的。产生的连接在一个全连接层中传递,该层将它们组合在一起并产生概率。

如何用Siamese和Dual BERT来做多源文本分类

我们的siamese结构在我们的测试数据上达到82%的准确度。

如何用Siamese和Dual BERT来做多源文本分类

 

我们应用BERT结构来执行一个多类分类任务。我们实验的附加价值是使用transformers 以不同的方式处理多个输入源。我们从只有一个源中的所有输入的经典拼接结构开始,并以为模型提供分开的文本输入作为结束。双路BERT和siamese BERT都能够实现良好的性能。由于这个原因,它们可以被认为是经典的单变压器结构的良好替代品。

看完上述内容,你们对如何用Siamese和Dual BERT来做多源文本分类有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注亿速云行业资讯频道,感谢大家的支持。

推荐阅读:
  1. 如何用DMA迁移数据库的schema
  2. FineReport报表和水晶报表的比较

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

siamese

上一篇:如何用jamovi做McNemar配对卡方检验

下一篇:6个IDEA 小技巧分别是什么

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》