模型概述
模型特點
模型能力
使用案例
🚀 🙊 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種不同語言上進行了訓練,因此應僅在英語、法語、西班牙語、意大利語、葡萄牙語、土耳其語或俄語上進行測試。








