BERT 上的特征工程

问题描述 投票:0回答:1

我正在尝试使用 BERT 模型开发推文分类器(

bert-base-uncased
BertForSequenceClassification
)。在数据集的预处理过程中,我的老师告诉我,如果我提取一些特征特征,比如推文的长度、表情符号和脏话的数量等,那就更好了

因此,我将一些有用的功能收集到数据框中,例如:

脏话 积极_表情符号 负面_表情符号 推文长度
2 1 0 123
0 0 1 52
1 0 1 87

但是,我在文档中没有找到任何方法将这些值输入到模型中进行微调。有什么办法可以实现这一点吗?还是我在这里遗漏了一些要点?

nlp bert-language-model feature-engineering
1个回答
0
投票

BERT(Bidirection Encoder Representations From Transformers)是一种模型,顾名思义,它的效果很好,因为它以无监督的方式学习输入序列的上下文表示。当针对特定任务(例如基于训练数据的文本分类(监督学习))微调和使用该模型时,所做的是这些表示,然后将模型输出用作一个或几个简单层的输入,这些层学习这些表示如何模型内部语义表示连接到您想要预测的类。 这意味着 BERT 会进行自己的表示和特征学习。

你的老师描述的更多的是传统的机器学习方法,其中输入序列的特征是手工制作的,因此表示不是由模型本身学习而是硬编码的。

这两种方法通常不会一起应用,我个人怀疑像 BERT 这样强大的 LLM 的性能是否会通过添加手工制作的功能而得到很大的提高(尽管你必须尝试真正找出答案)。通常导致良好 BERT 性能的是大量高质量(明确)训练数据、标准 BERT 的更大变体或更现代、更强大的变体(例如 ALBERT 或 DeBERTaV3)。所以总的来说,这是我建议您集中精力的地方。

如果您坚持以简单的方式将手工制作的特征添加到决策中,那么最好的办法可能就是采用 BERT 输出并将它们与您的简单特征相结合。我不知道你想要预测的目标输出类是什么样的(二进制、分类、数值?),但你可以微调 BERT 来生成该预测,如果不是,则将其转换为整数或浮点数然后将其与简单特征连接成一个新的特征向量,然后可以在简单的分类器中使用(例如 scikit-learn 中的小型全连接神经网络)。或者,您不必对任务进行微调 BERT,只需使用 BERT 对输入进行编码,它会生成通常为 768 维的表示向量,并将其与您的简单特征相结合。

© www.soinside.com 2019 - 2024. All rights reserved.