模型简介
模型特点
模型能力
使用案例
🚀 🙊 Detoxify
Detoxify是一个用于预测有毒评论的工具,它基于⚡ Pytorch Lightning和🤗 Transformers构建,可处理3个Jigsaw挑战中的有毒评论分类任务,助力阻止网络有害内容传播。
⚠️ 重要提示
Hugging Face模型目前给出的结果与detoxify库不同(详见此处问题)。为获取最新模型,建议使用来自https://github.com/unitaryai/detoxify的模型。
✨ 主要特性
- 提供训练好的模型和代码,可对3个Jigsaw挑战中的有毒评论进行预测,包括有毒评论分类、有毒评论中的意外偏差、多语言有毒评论分类。
- 支持多种模型,如
original
、unbiased
、multilingual
,以适应不同的任务需求。 - 模型训练使用了不同的Transformer架构,如
bert-base-uncased
、roberta-base
、xlm-roberta-base
。
📦 安装指南
安装detoxify
pip install detoxify
克隆项目并创建虚拟环境
# 克隆项目
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', 'пример текста'])
# 可选:美观地显示结果(需安装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
检查点下载
检查点可从最新版本下载,或通过Pytorch hub API使用以下名称下载:
toxic_bert
unbiased_toxic_roberta
multilingual_toxic_xlm_r
model = torch.hub.load('unitaryai/detoxify', 'toxic_bert')
📚 详细文档
模型信息
属性 | 详情 |
---|---|
模型类型 | original :bert-base-uncased ;unbiased :roberta-base ;multilingual :xlm-roberta-base |
训练数据 | original :Toxic Comment Classification Challenge;unbiased :Unintended Bias in Toxicity Classification;multilingual :Multilingual Toxic Comment Classification |
标签信息
通用标签
所有挑战都有一个毒性标签,毒性标签代表最多10名标注者的综合评级,具体如下:
- 非常有毒(非常仇恨、攻击性或不尊重的评论,很可能让你离开讨论或放弃分享观点)
- 有毒(粗鲁、不尊重或不合理的评论,有点可能让你离开讨论或放弃分享观点)
- 难以判断
- 无毒
更多标签模式信息可查看此处。
各挑战特定标签
挑战名称 | 标签 |
---|---|
Toxic Comment Classification Challenge | toxic 、severe_toxic 、obscene 、threat 、insult 、identity_hate |
Jigsaw Unintended Bias in Toxicity Classification | 主要毒性标签: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 Multilingual Toxic Comment Classification | 包含上述所有标签,但最终评估仅针对toxicity |
训练说明
数据下载
若没有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
开始训练
Toxic Comment Classification Challenge
python create_val_set.py
python train.py --config configs/Toxic_comment_classification_BERT.json
Unintended Bias in Toxicicity Challenge
python train.py --config configs/Unintended_bias_toxic_comment_classification_RoBERTa.json
Multilingual Toxic Comment Classification
该挑战分两个阶段训练。第一阶段在所有可用数据上训练,第二阶段仅在第一个挑战的翻译版本上训练。翻译数据可从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
模型评估
Toxic Comment Classification Challenge
该挑战根据所有标签的平均AUC分数进行评估。
python evaluate.py --checkpoint saved/lightning_logs/checkpoints/example_checkpoint.pth --test_csv test.csv
Unintended Bias in Toxicicity Challenge
该挑战根据一种新的偏差指标进行评估,该指标结合了不同的AUC分数以平衡整体性能。更多关于该指标的信息可查看此处。
python evaluate.py --checkpoint saved/lightning_logs/checkpoints/example_checkpoint.pth --test_csv test.csv
# 获取最终偏差指标
python model_eval/compute_bias_metric.py
Multilingual Toxic Comment Classification
该挑战根据主要毒性标签的AUC分数进行评估。
python evaluate.py --checkpoint saved/lightning_logs/checkpoints/example_checkpoint.pth --test_csv test.csv
🔧 技术细节
局限性和伦理考量
如果评论中包含与咒骂、侮辱或亵渎相关的词汇,无论作者的语气或意图(如幽默/自嘲)如何,该评论很可能会被分类为有毒。这可能会对已经处于弱势的少数群体产生一些偏见。
本库的预期用途是用于研究目的,在精心构建的反映现实世界人口统计数据的数据集上进行微调,和/或帮助内容审核人员更快地标记有害内容。
相关资源
以下是一些关于毒性或仇恨言论检测中不同偏差风险的有用资源:
- The Risk of Racial Bias in Hate Speech Detection
- Automated Hate Speech Detection and the Problem of Offensive Language
- Racial Bias in Hate Speech and Abusive Language Detection Datasets
注意事项
multilingual
模型在7种不同语言上进行了训练,因此只能在以下语言上进行测试:english
、french
、spanish
、italian
、portuguese
、turkish
、russian
。
📄 许可证
本项目使用Apache-2.0许可证。
引用
@misc{Detoxify,
title={Detoxify},
author={Hanu, Laura and {Unitary team}},
howpublished={Github. https://github.com/unitaryai/detoxify},
year={2020}
}








