モデルカード: JTF (Japanese Toxic Filter) v3
配信チャットのコメントを 10 ラベルで判定する日本語の分類モデルです。 ベースモデル: ku-nlp/deberta-v3-base-japanese
概要
| 項目 | 内容 |
|---|---|
| タスク | マルチラベル分類 (1 つのコメントに複数のラベルが付く) |
| 入力 | 日本語のコメント 1 件 (NFKC 正規化して使う。学習は最大 128 トークン、NPU 版は 64 トークン固定) |
| 出力 | 10 ラベルそれぞれのスコア (0〜1) |
| パラメータ数 | 約 1.6 億 |
| 想定用途 | 配信のチャット欄で、表示・読み上げ・AI 返答の前に有害なコメントを判定する |
ラベル
| ラベル | 意味 |
|---|---|
| toxicity | 下記のどれかに当てはまる、テキスト全体 |
| harassment | 罵倒・誹謗中傷・煽り |
| obscene | 性的・わいせつ |
| discrimination | 差別。政治的な発言は中立的なものも含める (配信で政治の話題を禁止する方針のため) |
| threat | 脅迫・殺害予告 |
| spoiler | ネタバレ・先の展開への言及 |
| instruction | 指示厨 (頼まれていない攻略・操作の指示) |
| pigeon | 鳩 (他の配信者・事務所の話題を持ち込む) |
| self_promotion | 宣伝・誘導 |
| spam | 連投・荒らし・意味のない文字列 |
toxicity は罵倒に限らず、どれかの理由で配信に出したくないテキスト全体のスコアです。
指示厨・ネタバレ・宣伝・連投も含むので、「罵倒だけ」を見たいときは harassment / threat / discrimination / obscene を使う (後述)。
ファイル
| 場所 | 中身 |
|---|---|
out/ |
PyTorch (fp32, 613 MB)。GPU 推論・再変換の元 |
out/npu/ |
OpenVINO int8 (207 MB)。CPU / Intel NPU 用。入力は [1, 64] 固定 |
out/thresholds.json |
ラベルごとのしきい値 (検証データで F1 が最大になる値) |
server.py / run_server.bat |
HTTP 判定サーバー (POST /judge) |
post.py |
サーバーを使った判定の例 |
学習
| 項目 | 内容 |
|---|---|
| ベース | ku-nlp/deberta-v3-base-japanese (fp16 保存のため fp32 に変換して学習) |
| 設定 | 3 エポック、バッチ 64、lr 3e-5、最大 128 トークン、混合精度 (fp16 autocast)、seed 42 |
| 学習時間 | 約 95 分 (RTX 5060 Ti 16GB) |
| データ | 重複統合後 473,110 件 → 見直しで除外 (exclude.csv 1,157 件 + review.csv 1,593 件) → 学習 446,842 件 / 検証 23,518 件 (5%、有害/無害で層化) |
| 有害率 | 学習 43.5% / 検証 43.5% |
データの出どころ (統合前の件数)
| ソース | 件数 | 中身 |
|---|---|---|
| 独自データ | 228,435 | |
| sensai | 66,407 | YouTube で削除された VTuber チャット (Gemma で理由を付与) |
| 合成データ | 61,644 | Gemma で生成した配信チャット風の文 |
| llm-jp-AC-inst / llm-jp-AC | 32,629 / 3,389 | AnswerCarefully の質問・回答 |
| mining/kakolog | 27,409 | ニコニコ実況から掘り出した文 (政治的発言が多い) |
| labeled_public | 24,620 | Nemotron-Safety-Guard / 裁判例 / RTP-LX |
| LLM-jp-Toxicity | 20,398 | Web 文書を文に分けて再判定 |
| MTD | 8,691 | textdetox 日本語 |
| japanese-toxic-dataset | 437 | inspection-ai |
| 追加安全 | 686 | 誤検出しやすい語 (胸・切り替え・死ぬ・爆弾・撃つ・脱 など) の無害な文。手書き 196 文 + 呼びかけ・語尾の組み合わせ |
ラベルの多くは LLM (Gemma) による自動付与。推定した有害ラベルの誤りは約 7〜11% (無害ラベルの誤りはほぼなし)。
評価 (検証データ 23,518 件、しきい値は検証データで調整)
検証データは有害率 43.5% で、実際の配信チャット (有害率 1〜5%) よりずっと高いです。本番ではこの表より誤検出の割合が目立ちます。 そのため複数のラベルのスコアを合算して判定することをおすすめします。
| ラベル | AUC | F1 | しきい値 | 正例数 | チャット系 AUC / F1 |
|---|---|---|---|---|---|
| toxicity | 0.9915 | 0.9466 | 0.58 | 10,234 | 0.9929 / 0.9469 |
| harassment | 0.9696 | 0.7252 | 0.47 | 2,150 | 0.9738 / 0.7435 |
| obscene | 0.9905 | 0.8659 | 0.52 | 1,578 | 0.9923 / 0.8679 |
| discrimination | 0.9929 | 0.8969 | 0.49 | 2,541 | 0.9955 / 0.9123 |
| threat | 0.9919 | 0.8665 | 0.54 | 1,515 | 0.9956 / 0.8630 |
| spoiler | 0.9899 | 0.8626 | 0.79 | 283 | 0.9925 / 0.8642 |
| instruction | 0.9870 | 0.7684 | 0.66 | 516 | 0.9878 / 0.7774 |
| pigeon | 0.9887 | 0.7678 | 0.40 | 440 | 0.9883 / 0.7705 |
| self_promotion | 0.9944 | 0.8747 | 0.67 | 506 | 0.9951 / 0.9093 |
| spam | 0.9883 | 0.8388 | 0.47 | 1,351 | 0.9917 / 0.8661 |
| macro F1 | 0.8413 | 0.8521 |
判定ルールの例 (post.py)
toxicity だけで判定すると、攻略アドバイスなども NG になるため、用途によって理由ラベルで分けるのをおすすめします。
- 常に消す: harassment / threat / discrimination / obscene (0.6 以上)、spoiler / self_promotion / spam (0.7 以上)
- instruction (0.7 以上): 指示禁止の配信だけ消す (
--advice-ban) - toxicity が 0.9 以上なのに理由ラベルが立たないもの: 「要確認」
制限・注意
- 単語への過敏反応が残っています。 「胸はっていけ!」は NG のまま (検証データにあり学習には使っていない)。表記違いの「胸張って進もう」「胸熱の展開だった」は OK。追加の無害文で改善したが、完全ではない
- 遠回しな煽りに弱い。 「ゲーム向いてないよ」「本当に頭悪いな」は harassment のスコアが低く (toxicity は高い)、理由ラベルでは拾えない
- 攻略アドバイスは instruction に引っかかる。 学習データでは頼まれていない攻略指示を指示厨 (有害) として扱っているため。丁寧なアドバイスと命令口調の指示は分けていない
- 同じ文字の連打 (「wwwwwww」) は toxicity が 0.8 前後になる (spam 寄り)
- 弱いラベル: harassment (F1 0.73)、instruction・pigeon (0.77)。件数が少ない spoiler / pigeon / instruction はデータの追加余地がある
- 脅迫データが少ない。 チャットらしい脅しは約 2,000 件
- 政治的な発言は中立的でも discrimination になる。 配信での政治の話題の禁止という運用方針に合わせた意図的な設計です。政治を許可する用途には向かない
- ドメイン: 配信チャット向けのデータが多いため、それ以外の文章 (ニュース・長文・敬語の問い合わせなど) では精度が落ちる可能性がある
- 言語: 日本語のみで、他言語は想定していません。
ライセンス・データの扱い
- ベースモデル (ku-nlp/deberta-v3-base-japanese) のライセンスに従う
- 学習データのライセンスは混在している (裁判例 worker_1 は CC BY-NC、LLM-jp-Toxicity は CC BY 4.0 など)。公開・商用利用する場合は各データセットのライセンスを確認すること
- 学習データには有害な発言・わいせつな文章・危険な依頼文が含まれる (データ自体は配布物に含めない想定)