【问题标题】:Emojis are regarded as unknown(UNK) in BERT表情符号在 BERT 中被视为未知(UNK)
【发布时间】:2021-11-26 15:17:56
【问题描述】:

我的研究兴趣是表情符号在文本中的作用。我正在尝试对文本中的讽刺推文进行分类。一个月前,我使用了一个数据集,在其中添加了令牌:

tokenizer.add_tokens('表情符号列表')。

所以当我测试时,BERT 模型已经成功添加了令牌。但是两天前,当我对另一个数据集做同样的事情时,BERT 模型将其归类为“UNK”标记。我的问题是,BERT 模型最近有变化吗?我已经用下面的分词器试过了,

BertTokenizer.from_pretrained('bert-base-uncased')

distilbert 也是如此。尽管明确添加了表情符号,但它无法识别它们。起初我在某处读到不需要在标记器中添加它们,因为 BERT 或 distilbert 已经在 30000 个标记中拥有那些表情符号,但我都尝试了。通过添加和不添加。对于这两种情况,它都无法识别表情符号。

我能做些什么来解决这个问题。我们将不胜感激您对此的想法。

【问题讨论】:

    标签: python nlp sentiment-analysis


    【解决方案1】:

    您可能需要区分 BERT 模型(架构)和预训练的 BERT 模型。前者绝对可以支持emoji;后者只有在用于创建 WordPiece 分词器的数据中才会为它们保留代码点。

    这里是an analysis of the 119,547 WordPiece vocab used in the HuggingFace multilingual model 它没有提到表情符号。请注意,119K 对于一个词汇来说是非常大的;更正常的是8K、16K或32K。词汇的大小对模型大小有相当大的影响:Transformer(例如 BERT)模型的第一层和最后一层的权重比任何其他层之间的权重都要大。

    我刚刚浏览了Time to Take Emoji Seriously: They Vastly Improve Casual Conversational Models 的论文是如何处理它的。他们将 3267 个表情符号附加到词汇表的末尾。然后在一些带有表情符号的数据上训练它,这样它就可以尝试学习如何处理这些新字符。

    顺便说一句,对 HuggingFace github 存储库的搜索发现他们正在使用from emoji import demojize。这听起来像是他们将表情符号转换为文本。根据您正在执行的操作,您可能需要禁用它,或者相反,您可能需要在管道中使用它。

    【讨论】:

      猜你喜欢
      • 2020-05-28
      • 1970-01-01
      • 2021-07-25
      • 2021-12-12
      • 2017-02-09
      • 2021-11-07
      • 2018-11-18
      • 2018-09-02
      • 1970-01-01
      相关资源
      最近更新 更多