去除停用词对文本分类转换器的影响

数据挖掘 nlp 预处理 迁移学习 变压器 文本分类
2021-09-16 15:55:38

这里的领域本质上是主题分类,因此不一定是停用词对分析有影响的问题(与结构可以影响意义的情感分析相反)。

关于 Transformer 语言模型中的位置编码机制,当使用预训练的 LM 时,如果 LM 是在它们所在的语料库上训练的,那么作为预处理步骤的停用词去除是否会产生积极的危害?我仍在努力完全理解该机制,但我觉得删除停用词会影响用于构建任何给定单词对之间的上下文的波长,而它们之间有停用词,这反过来会影响编码。

或者,这是否无关紧要,因为训练时的回归是从一致处理的输入中计算出来的?我觉得这应该很重要,但无法找到有关该主题的任何内容。

2个回答

非常有趣的问题。

  • 简单,但可能是懒惰的答案

使用预训练模型时,始终建议向其提供与训练时类似的数据。基本上,如果重要,不要删除它们,如果不重要,保留它们并没有什么坏处。显然,如果可以的话,尝试使用或不使用停用词,看看什么最适合你的问题.

  • 更长的答案

实际上,您有两种方法可以“删除”您的停用词。要么将它们从输入序列中完全删除。或者,您可以将它们替换为掩码标记(即<#UNKNOWN> 或<#MASK>)。

在后一种情况下,转换器会隐式猜测这些掩码是什么,您将实现去除停用词的最初目标:确保它们不会影响预测结果。确实,请看以下句子:

“我喜欢有观众的篮球”和“我喜欢没有观众的篮球”

这两个句子都是关于篮球的,你不希望有/没有让你的模型认为这些句子是关于不同主题的。通过使用和不使用屏蔽,您都“删除”了停用词,并且您不会混淆预训练模型没有使用没有停用词的数据这一事实。

现在,如果你将一个“不完整”的句子输入到转换器会发生什么。位置编码将保留某些单词在彼此之前或之后的概念,这就是您想要的。但是如果你删除停用词,一些词可能会显得“太接近”彼此。但这有关系吗?我不这么认为。

如果你的转换器为“word1 <#Mask> word2”输出的向量与“word1 word2”的向量有很大不同,这一定意味着掩码标记对句子的整体含义至关重要,这也表明它一开始不应该是停用词。

  • 最终答案

我建议掩盖停用词而不是删除它们。但是,如果性能如此重要以至于您需要提供较小的序列,我认为您会没事的。

删除停用词或保留它们是一个经验问题。效果会因语料库和任务而异。事实上,停用词的定义取决于语料库和任务。

一种方法是通过针对特定场景的交叉验证来衡量停用词的效果。