您如何将SMOTE应用于文本分类?


13

综合少数族裔过采样技术(SMOTE)是用于不平衡数据集问题的过采样技术。到目前为止,我已经知道如何将其应用于通用的结构化数据。但是可以将其应用于文本分类问题吗?您需要对数据的哪一部分进行超采样?已经有另一个问题,但是没有答案。我在哪里可以学习入门呢?

Answers:


11

实际上,由于许多文本分类任务处理不平衡问题(例如垃圾邮件过滤,侮辱性评论检测,文章分类等),因此NLP是最常见的需要数据重采样的领域之一。但是出于某些原因,SMOTE在这里似乎有问题:

  • SMOTE在要素空间中工作。这意味着SMOTE的输出不是合成数据,它不能真正代表其特征空间内的文本。
  • 一方面,SMOTE与KNN协同工作,另一方面,用于NLP问题的特征空间极大。在这些庞大的规模中,KNN很容易失败。

因此,我可以为您提出两种方法:

  1. 我认为应该没关系,不必在乎新合成样本的真实文本表示。您需要平衡分类器的分布,而不是文本数据的阅读器。因此,将SMOTE应用为传统方法(但是我通常在下面使用解决方案2,因此我不保证结果!),并执行一些降维步骤。

1)假设您要使用3-NN将次要类的数据样本加倍。忽略主要班级,仅保留次要班级样本。

2)为特征空间中的每个采样点选择5个最近的邻居。然后随机选择3个(不是很复杂吗?如果我不想解释原始算法,我会说选择3个邻居!)

3)对于每个维度,计算样本与邻居之间的距离,并将其乘以0-1之间的随机数,并将其与该维度中样本的原始值相加。(这个复杂的段落只是意味着对于每个维度,请在原始样本和该邻居之间选择一个随机值!)

  1. 但是我通常会在文本上进行另一个过采样(这样更加直观),并且有点过时。

ķ=2

ñ

ñķķ


感谢您的回答,但是如果使用单热编码表示样本,可以将SMOTE应用于样本吗?还是应该以其他方式代表他们?
adnanmuttaleb

嗨,Kasra,您能否分享一些与您提到的步骤有关的实现
Payal Bhatia

2

如果要添加更多文本/句子转换数据,则可以使用预训练的词嵌入。像这样的预训练模型可以提供每个字典单词的单词矢量表示。它还提供“ most_smiliar”字样。

您可以简单地使用示例句子并通过对每个单词中与TOP_N个相似度最高的单词进行置换来生成新的示例。

例如,如果句子中有3个单词,并且每个单词选择3个最相似的单词,则可以上采样27次。


嗨Yashodhan,如果它是特定于域的,我们如何使用此过程?谢谢
Payal Bhatia
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.