toxicfilter-v3
短文日本語向け10 ラベルの有害コメント分類モデルです。
ラベル
toxicity, harassment(中傷・嫌がらせ), obscene(性的), discrimination(差別), threat(脅し), spoiler(ネタバレ), instruction(※定義を記入), pigeon(※定義を記入), self_promotion(宣伝), spam
使い方
import torch, unicodedata
from transformers import AutoTokenizer, AutoModelForSequenceClassification
repo = "j-llm/toxic_v3"
tok = AutoTokenizer.from_pretrained(repo)
model = AutoModelForSequenceClassification.from_pretrained(repo).eval()
def predict(text):
text = unicodedata.normalize("NFKC", text)
x = tok(text, return_tensors="pt", truncation=True, max_length=128)
with torch.no_grad():
p = torch.sigmoid(model(**x).logits)[0]
return {model.config.id2label[i]: float(v) for i, v in enumerate(p)}
OpenVINO int8 版
openvino_int8/ に、OpenVINO の int8 量子化版(max_len 64)があります。fp16 (PyTorch, max_len 128) と比べた判断の食い違いは、実チャット 21,542 件で 0.24%、検証用チャット 11,052 件で 0.05% でした。
古いモデルとの比較
| 評価 | v2 | v3(unfinetune) | v3 |
|---|---|---|---|
| 無害な文の誤検出率 | 3.9% | 1.9% | 1.0% |
| 紛らわしい有害な文の検出率 | 71.3% | 73.6% | 83.1% |
| 紛らわしい文の誤検出率 | 8.7% | 14.5% | 5.8% |
| 有害な文の検出率 | 89.3% | 89.3% | 91.1% |
しきい値について
- しきい値(K=9) は「誤ブロックを抑える」設定で、見逃しが増えます。厳しくしたい場合は
thresholds.jsonを下げてください。
学習データ
複数の公開データセットと、自作の合成データ・紛らわしい文の追加データを混ぜています(総数は約 45 万件)。
- LLM-jp Toxicity / Nemotron 系(プロンプト・応答)/ RTP-LX / MTD などの公開データ
- sensai(有害コメント)
- 自作の合成データ・紛らわしい文(悪口に見える愛情表現、無害な性的語、宣伝に見える挨拶、ネタバレを避けた発言 など)