问这个问题可能很愚蠢,但我想知道是否应该执行传统的文本预处理步骤来训练其中一个转换器模型?
我记得在训练 Word2Vec 或 Glove 时,我们需要执行广泛的文本清理,例如:标记化、删除停用词、删除标点符号、词干或词形还原等等。然而,在过去的几天里,我快速进入了 Transformer 模型(顺便说一句很着迷),我注意到这些模型中的大多数都有一个内置的标记器(很酷),但是没有演示、示例或教程正在执行任何这些文本预处理步骤。例如,您可能会采用fast-bert,演示中不涉及文本预处理(也许它只是一个演示),但在推断时,整个句子在没有任何清理的情况下通过:
texts = ['I really love the Netflix original movies',
'this movie is not worth watching']
predictions = learner.predict_batch(texts)
HuggingFace的原始变压器也是如此。或者我看过的许多教程(拿这个或另一个)。我可以想象,根据任务的不同,这可能不是必需的,例如下一个工作预测或机器翻译等等。更重要的是,我认为这是这些模型提供的基于上下文的方法的一部分(可以说是创新),旨在保留大部分文本,我们可以获得每个标记的最小但仍然很好的表示(词汇表中的单词)。借自HuggingFace 的中篇文章:
Tokenisation BERT-Base, uncased 使用 30,522 个单词的词汇表。标记化过程涉及将输入文本拆分为词汇表中可用的标记列表。为了处理词汇表中不可用的单词,BERT 使用了一种称为 BPE based WordPiece tokenisation 的技术。在这种方法中,词汇表外的单词被逐步拆分为子词,然后该词由一组子词表示。由于子词是词汇表的一部分,我们已经学习了这些子词的上下文表示,而单词的上下文只是子词上下文的组合。
但这适用于多标签文本分类等任务吗?在我的用例中,文本充满了无用的停用词、标点符号、字符和缩写词,它是前面提到的多标签文本分类。而且实际上预测准确率并不好(经过几轮训练后使用fast-bert)。我在这里想念什么?