模型概述
模型特點
模型能力
使用案例
🚀 🙊 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}
}








