文本数据集损坏;模型无关,并受现实世界损坏原因的启发。
项目描述
损坏文本:现实世界中的异常文本
一个Python库,用于生成异常文本数据集。具体来说,该库应用了 模型无关的、常见的损坏(不是针对特定模型的,最坏情况的对抗损坏)。因此,我们的目标是允许进行有关对 现实世界异常 的鲁棒性的基准研究。
实现的损坏
大多数损坏都是基于一组 常见单词,对这组单词进行损坏。这些 常见单词 可能是特定领域的,因此损坏器可以使用一个 基本数据集 进行拟合,从中提取最常见的单词。
然后,以下损坏将在每个单词上随机应用
- 错误的自动纠正 单词被替换为另一个与它具有较小Levenshtein距离的常见单词。这模仿了错误的自动纠正,例如由“智能”手机键盘执行。
- 错误的自动完成 单词被替换为另一个具有相同起始字母的常见单词。这模仿了错误的自动完成。如果没有找到至少有3个共同起始字母的常见单词,则尝试错误的自动纠正。
- 错误的同义词 单词被替换为同义词,根据从WordNet提取的简单、平坦映射,忽略上下文。这模仿了基于字典的翻译,这些翻译通常是不正确的。这假设您正在使用英语语言数据集。
- 拼写错误 将单个字母替换为随机选择的另一个字母。
对任何单词,最多只能应用一个损坏,即损坏不是叠加的。
严重程度 ]0, 1]
是一个参数,用于控制应应用多少损坏。它大致对应于应损坏的单词百分比(只 大致 估计,因为不是所有的错误自动完成尝试都是成功的,有时错误的同义词由多个单词组成,从而扩展了文本中的单词数量)。
用户可以选择为每种破坏类型定义权重,以控制其应用频率。
准确率
以下展示了常规简单变换器模型在IMDb情感分类数据集上的准确率。很明显,选择的破坏严重程度越高,模型准确率越低。
严重程度 | 0 (*) | 0.1 | 0.3 | 0.5 | 0.7 | 0.9 | 1(最大值!) |
---|---|---|---|---|---|---|---|
准确率 | .87 | .81 | .78 | .75 | .71 | 0.66 | 0.64 |
(*) 无破坏,原始测试集。
安装
安装非常简单,只需运行pip install corrupted-text
。
您需要Python >= 3.7。
使用方法
使用方法非常直接。以下展示了如何对IMDb情感分类数据集进行破坏的示例。
import corrupted_text # pip install corrupted-text
import logging
from datasets import load_dataset # pip install datasets
# Enable Detailed Logging
logging.basicConfig(level=logging.INFO)
# Load the dataset (we use huggingface-datasets, but any list of strings is fine).
nominal_train = load_dataset("imdb", split="train")["text"]
nominal_test = load_dataset("imdb", split="test")["text"]
# Fit a corruptor (we fit on the training and test set,
# but as this takes a while, you'd want to choose a smaller subset for larger datasets)
corruptor = corrupted_text.TextCorruptor(base_dataset=nominal_test + nominal_train,
cache_dir=".mycache")
# Corrupt the test set with severity 0.5. The result is again a list of corrupted strings.
imdb_corrupted = corruptor.corrupt(nominal_test, severity=0.5, seed=1)
引用
@inproceedings{Weiss2022SimpleTip,
title={Simple Techniques Work Surprisingly Well for Neural Network Test Prioritization and Active Learning (Replication Paper)},
author={Weiss, Michael and Paolo, Tonella},
booktitle={Proceedings of the 31st ACM SIGSOFT International Symposium on Software Testing and Analysis},
year={2022}
}
其他破坏数据集
- MNIST-C 由 Mu 和 Gilmer
- CIFAR-10-C 由 Hendrycks 和 Dietterich
- Imagenet-C 由 Hendrycks 和 Dietterich
- Fashion-MNIST-C 由 Weiss 和 Tonella(即,与
corrupted-text
相同)
项目详情
下载文件
下载适用于您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。
源分布
corrupted-text-0.2.0.tar.gz (12.9 kB 查看散列)
构建分布
corrupted_text-0.2.0-py3-none-any.whl (11.4 kB 查看散列)