模型简介
模型特点
模型能力
使用案例
🚀 🙊 Detoxify
Detoxify是一个基于⚡ Pytorch Lightning和🤗 Transformers的有毒评论分类工具。它提供了训练好的模型和代码,可用于预测3个Jigsaw挑战中的有毒评论,包括有毒评论分类、有毒评论中的意外偏差以及多语言有毒评论分类。
🚀 快速开始
安装依赖
# 克隆项目
git clone https://github.com/unitaryai/detoxify
# 创建虚拟环境
python3 -m venv toxic-env
source toxic-env/bin/activate
# 安装项目
pip install -e detoxify
cd detoxify
# 训练所需依赖
pip install -r requirements.txt
快速预测
# 安装detoxify
pip install detoxify
from detoxify import Detoxify
# 每个模型可接受字符串或字符串列表作为输入
results = Detoxify('original').predict('example text')
results = Detoxify('unbiased').predict(['example text 1', 'example text 2'])
results = Detoxify('multilingual').predict(['example text', 'exemple de texte', 'texto de ejemplo', 'testo di esempio', 'texto de ejemplo', 'örnek metin', 'пример текста'])
# 可选:美观地显示结果(需要pip install pandas)
import pandas as pd
print(pd.DataFrame(results, index=input_text).round(5))
✨ 主要特性
- 多挑战支持:可用于3个Jigsaw挑战中的有毒评论预测,包括有毒评论分类、有毒评论中的意外偏差以及多语言有毒评论分类。
- 多语言支持:
multilingual
模型在7种不同语言上进行了训练,可用于英语、法语、西班牙语、意大利语、葡萄牙语、土耳其语和俄语的有毒评论预测。 - 多种模型:提供了不同的模型,如
original
、unbiased
和multilingual
,以满足不同的需求。
📦 安装指南
# 克隆项目
git clone https://github.com/unitaryai/detoxify
# 创建虚拟环境
python3 -m venv toxic-env
source toxic-env/bin/activate
# 安装项目
pip install -e detoxify
cd detoxify
# 训练所需依赖
pip install -r requirements.txt
💻 使用示例
基础用法
from detoxify import Detoxify
# 单个模型预测单个文本
results = Detoxify('original').predict('example text')
# 单个模型预测多个文本
results = Detoxify('unbiased').predict(['example text 1', 'example text 2'])
# 多语言模型预测多语言文本
results = Detoxify('multilingual').predict(['example text', 'exemple de texte', 'texto de ejemplo', 'testo di esempio', 'texto de ejemplo', 'örnek metin', 'пример текста'])
# 可选:美观地显示结果(需要pip install pandas)
import pandas as pd
print(pd.DataFrame(results, index=input_text).round(5))
高级用法
# 从torch.hub加载模型进行预测
python run_prediction.py --input 'example' --model_name original
# 从检查点路径加载模型进行预测
python run_prediction.py --input 'example' --from_ckpt_path model_path
# 将结果保存到.csv文件
python run_prediction.py --input test_set.txt --model_name original --save_to results.csv
# 查看使用说明
python run_prediction.py --help
📚 详细文档
挑战信息
挑战 | 年份 | 目标 | 原始数据源 | Detoxify模型名称 | Kaggle排行榜最高得分 | Detoxify得分 |
---|---|---|---|---|---|---|
有毒评论分类挑战 | 2018 | 构建一个多头部模型,能够检测不同类型的毒性,如威胁、淫秽、侮辱和基于身份的仇恨。 | 维基百科评论 | original |
0.98856 | 0.98636 |
Jigsaw有毒性分类中的意外偏差 | 2019 | 构建一个能够识别毒性并最小化与身份提及相关的意外偏差的模型。 | 公民评论 | unbiased |
0.94734 | 0.93639 |
Jigsaw多语言有毒评论分类 | 2020 | 构建有效的多语言模型 | 维基百科评论 + 公民评论 | multilingual |
0.9536 | 0.91655* |
*由于该得分是在提供的验证集上获得的,而非测试集,因此不可直接比较。待测试标签可用时将更新。
标签信息
所有挑战都有一个毒性标签。毒性标签代表了最多10名注释者的综合评分,根据以下模式:
- 非常有毒(非常仇恨、攻击性或不尊重的评论,很可能会让你离开讨论或放弃分享你的观点)
- 有毒(粗鲁、不尊重或不合理的评论,有点可能会让你离开讨论或放弃分享你的观点)
- 难说
- 无毒
更多关于标签模式的信息可以在这里找到。
有毒评论分类挑战
该挑战包括以下标签:
toxic
severe_toxic
obscene
threat
insult
identity_hate
Jigsaw有毒性分类中的意外偏差
该挑战有2种类型的标签:主要毒性标签和一些代表评论中提及的身份的额外身份标签。
只有在测试集(公共和私人组合)中有超过500个示例的身份才会在训练期间作为额外标签包含在内,并用于评估计算。
toxicity
severe_toxicity
obscene
threat
insult
identity_attack
sexual_explicit
使用的身份标签:
male
female
homosexual_gay_or_lesbian
christian
jewish
muslim
black
white
psychiatric_or_mental_illness
所有可用身份标签的完整列表可以在这里找到。
Jigsaw多语言有毒评论分类
由于该挑战结合了前两个挑战的数据,因此包括上述所有标签,但最终评估仅基于:
toxicity
🔧 技术细节
模型信息
属性 | 详情 |
---|---|
模型类型 | original :bert-base-uncased ;unbiased :roberta-base ;multilingual :xlm-roberta-base |
训练数据 | 有毒评论分类挑战、Jigsaw有毒性分类中的意外偏差、Jigsaw多语言有毒评论分类的数据 |
训练步骤
如果您还没有Kaggle账户:
- 您需要创建一个账户才能下载数据。
- 进入“我的账户”并点击“创建新API令牌” - 这将下载一个kaggle.json文件。
- 确保该文件位于
~/.kaggle
。
# 创建数据目录
mkdir jigsaw_data
cd jigsaw_data
# 下载数据
kaggle competitions download -c jigsaw-toxic-comment-classification-challenge
kaggle competitions download -c jigsaw-unintended-bias-in-toxicity-classification
kaggle competitions download -c jigsaw-multilingual-toxic-comment-classification
开始训练
有毒评论分类挑战
python create_val_set.py
python train.py --config configs/Toxic_comment_classification_BERT.json
Jigsaw有毒性分类中的意外偏差
python train.py --config configs/Unintended_bias_toxic_comment_classification_RoBERTa.json
Jigsaw多语言有毒评论分类
该模型分两个阶段训练。首先,在所有可用数据上训练,然后仅在第一个挑战的翻译版本上训练。
翻译数据可以从Kaggle下载法语、西班牙语、意大利语、葡萄牙语、土耳其语和俄语(测试集中可用的语言)。
# 阶段1
python train.py --config configs/Multilingual_toxic_comment_classification_XLMR.json
# 阶段2
python train.py --config configs/Multilingual_toxic_comment_classification_XLMR_stage2.json
监控训练进度
tensorboard --logdir=./saved
模型评估
有毒评论分类挑战
该挑战基于所有标签的平均AUC得分进行评估。
python evaluate.py --checkpoint saved/lightning_logs/checkpoints/example_checkpoint.pth --test_csv test.csv
Jigsaw有毒性分类中的意外偏差
该挑战基于一种新的偏差指标进行评估,该指标结合了不同的AUC得分以平衡整体性能。有关此指标的更多信息这里。
python evaluate.py --checkpoint saved/lightning_logs/checkpoints/example_checkpoint.pth --test_csv test.csv
# 获取最终偏差指标
python model_eval/compute_bias_metric.py
Jigsaw多语言有毒评论分类
该挑战基于主要毒性标签的AUC得分进行评估。
python evaluate.py --checkpoint saved/lightning_logs/checkpoints/example_checkpoint.pth --test_csv test.csv
📄 许可证
本项目采用Apache-2.0许可证。
引用
@misc{Detoxify,
title={Detoxify},
author={Hanu, Laura and {Unitary team}},
howpublished={Github. https://github.com/unitaryai/detoxify},
year={2020}
}
注意事项
⚠️ 重要提示
Hugging Face模型目前给出的结果与
detoxify
库不同(见此处的问题)。为了获得最新的模型,我们建议使用来自https://github.com/unitaryai/detoxify的模型。
💡 使用建议
multilingual
模型在7种不同语言上进行了训练,因此应仅在英语、法语、西班牙语、意大利语、葡萄牙语、土耳其语或俄语上进行测试。








