--- license: mit datasets: - hotchpotch/fineweb-2-edu-japanese-scores - HuggingFaceFW/fineweb-2 language: - ja base_model: - hotchpotch/mMiniLMv2-L6-H384 --- # fineweb-2-edu-japanese-classifier ### fineweb-2 日本語データを用いた教育向け文章判の判定機 [fineweb-2](https://huggingface.co/datasets/HuggingFaceFW/fineweb-2) の日本語データセットを活用し、教育に役立つ文章か / それ以外を判定するための判定機です。以下の特徴があります。 * **2種類のモデル:** * **CPU版 (高速処理):** 大規模データ処理向け、高速な判定速度、2値分類 (教育的/それ以外) * **GPU版 (高精度):** Transformer モデルベース、GPU 対応、5段階スコア評価 (0〜4) * **用途に応じた選択:** * **CPU版:** 大量のテキストデータに対する高速な分類、教育関連情報の網羅的な抽出を重視する場合 * **GPU版:** より高い精度での判定、重要な判断が求められる場面 また [fineweb-2-edu-japanese](https://huggingface.co/datasets/hotchpotch/fineweb-2-edu-japanese) データセットのフィルタリングでは、この判定機(GPU版)を利用しています。 --- ## モデルの利用方法 ### 1. CPU 高速バージョン: 大規模データ処理に適した高速性 **特徴:** * **CPU ベースの高速動作:** [static-embeddings-japanese](https://huggingface.co/hotchpotch/static-embedding-japanese) と [LightGBM](https://github.com/microsoft/LightGBM) を採用 * **2値分類:** 文章を「教育的」または「それ以外」の2クラスに分類 * **高速推論:** 大規模テキストデータにおいても効率的な処理速度を実現 **推奨される利用場面:** * 大量のテキストデータを効率的に分類したい場合 * 処理速度を優先する場合 * 教育的なテキストを網羅的に検出したい場合 (高いリコールを重視) **利用手順:** * ダウンロードと実行例は [https://github.com/hotchpotch/fineweb-2-edu-japanese-classifier/blob/main/classifier_cpu_binary.py](https://github.com/hotchpotch/fineweb-2-edu-japanese-classifier/blob/main/classifier_cpu_binary.py) をご参照ください。 * ⚠️ 推論時にはユニコード正規化(NFKC)した文章を渡してください * ⚠️ macOS(Appleシリコン)環境では、PyTorch + LightGBM でOpenMP周りのスレッドに問題が発生することが多く、どちらかをシングルスレッドで実行する・[マルチスレッド周りの問題を解決する](https://github.com/microsoft/LightGBM/issues/6595#issuecomment-2351398026)必要があります。実行例では、LightGBMのスレッドを1にしていますが、速度がだいぶ遅くなります。 ### 2. GPU バージョン: 高精度な判定を志向する場合 **特徴:** * **Transformer モデル:** 小型 Transformer モデル (mMiniLMv2-L6H384) を利用 * **5段階スコア評価:** テキストを 0〜4 のスコアで多段階評価 * **高精度判定:** GPU 環境下で、より高精度な文章評価を実現 **推奨される利用場面:** * テキストの教育的度合いを詳細に評価したい場合 * CPU版よりも高い精度を求める場合 * GPU リソースが利用可能な環境 **利用手順:** * ダウンロードと実行例は [https://github.com/hotchpotch/fineweb-2-edu-japanese-classifier/blob/main/classifier_gpu_scorer.py](https://github.com/hotchpotch/fineweb-2-edu-japanese-classifier/blob/main/classifier_gpu_scorer.py) をご参照ください。 * ⚠️ 推論時にはユニコード正規化(NFKC)した文章を渡してください --- ## 注意事項 * **テキスト長:** CPU/GPU 両モデルとも、500文字以下のテキストで学習 * 長文テキストでは精度が低下する可能性があります。 * GPU版には最大トークン長 512 の制限があります。 * **学習データ:** [fineweb-2](https://huggingface.co/datasets/HuggingFaceFW/fineweb-2) 日本語データで学習 * LLM (DeepSeek) によりスコアリングされた [hotchpotch/fineweb-2-edu-japanese-scores](https://huggingface.co/datasets/hotchpotch/fineweb-2-edu-japanese-scores) を利用しています。そのため、スコアに DeepSeek 視点のバイアスが含まれる可能性があります。 * fineweb-2 以外の他のドメインや用途への適用では精度が低下する可能性があります。 --- ## モデル性能評価 **評価データ:** LLM (DeepSeek) によりスコアリングされた [hotchpotch/fineweb-2-edu-japanese-scores](https://huggingface.co/datasets/hotchpotch/fineweb-2-edu-japanese-scores) (学習データ 28万件、評価データ 3万件) **評価結果 (評価データセット 3万件):** | モデル                      | Precision | Recall | F1-score | Accuracy | 処理時間 (3万件) | 処理環境         | |---------------------------|-----------|--------|----------|----------|---------------|-----------------| | **CPU版** (StaticEmbeddings + LightGBM) | 0.5316    | 0.7668 | 0.6279   | 0.8382   | 1.98秒         | Ryzen 9 7950x   | | **GPU版** (mMiniLMv2-L6H384)        | 0.6432    | 0.7265 | 0.6823   | 0.8795   | 5.51秒        | RTX 4090         | **処理速度の比較:** * **CPU版:** 3万件のデータセットを約 1.98 秒で処理 (1テキストあたり約 0.066 ミリ秒) * **GPU版:** 3万件のデータセットを約 5.51 秒で処理 (1テキストあたり約 0.18 ミリ秒) **性能に関する考察:** * **CPU版:** * **利点:** 高速な処理速度、教育コンテンツの網羅的な取得 (高リコール) * **留意点:** GPU版に比べ精度はやや劣る * **推奨用途:** 大規模データにおけるスクリーニング、教育コンテンツの広範な収集 * **GPU版:** * **利点:** CPU版を上回る精度、より慎重な判定が求められるタスクへの適合性 * **留意点:** 処理速度は CPU版に劣る * **推奨用途:** 高精度な判定、重要なテキストの評価 **モデル選択の指針:** 処理速度と精度のバランスを考慮し、目的や要件に応じて適切なモデルを選択ください。 --- ## 学習と評価の詳細 ### CPU 用高速推論モデルの学習と評価 * **学習方法:** StaticEmbeddings と LightGBM の組み合わせ * fasttext による学習も試行したが、十分な精度が得られず * 当初は 0-4 スコアの回帰モデルを検討したが、2値分類 (教育的/それ以外) の方が高精度を実現 * **ラベル設計:** スコア 2 以下を 0 (それ以外)、3 以上を 1 (教育的) としてラベリング * **学習スクリプト:** [https://github.com/hotchpotch/fineweb-2-edu-japanese-classifier/blob/main/trainer_lightgbm_binary.py](https://github.com/hotchpotch/fineweb-2-edu-japanese-classifier/blob/main/trainer_lightgbm_binary.py) * **評価結果 (評価データセット 3万件):** | Class | Precision | Recall | F1-score | Support | |--------------------|-----------|--------|----------|---------| | 0 (それ以外) | 0.9441 | 0.8536 | 0.8966 | 24,658 | | 1 (教育的) | 0.5316 | 0.7668 | 0.6279 | 5,342 | | **Accuracy** | - | - | 0.8382 | 30,000 | | **Macro Avg** | 0.7379 | 0.8102 | 0.7622 | 30,000 | | **Weighted Avg** | 0.8707 | 0.8382 | 0.8487 | 30,000 | | Actual \ Predicted | 0 (それ以外) | 1 (教育的) | |--------------------|-------------|-----------| | 0 (それ以外) | 21,049 | 3,609 | | 1 (教育的) | 1,246 | 4,096 | | Metric | Value | |-----------|---------| | Precision | 0.5316 | | Recall | 0.7668 | | F1-score | 0.6279 | | Accuracy | 0.8382 | **分析:** * 教育的な文章 (Class 1) において**高いリコール (0.7668) を実現:** 教育コンテンツの見逃しを抑制 * **精度 (precision) は 0.5316:** 一定程度の誤判定は発生する --- ### GPU 推論用モデルの学習と評価 * **モデル:** [mMiniLMv2-L6H384](https://github.com/microsoft/unilm/tree/master/minilm) をベースに AutoModelForSequenceClassification を利用 * **分類:** テキストを 0〜4 の 5 段階で分類 * **学習スクリプト:** [https://github.com/hotchpotch/fineweb-2-edu-japanese-classifier/blob/main/trainer.py](https://github.com/hotchpotch/fineweb-2-edu-japanese-classifier/blob/main/trainer.py) * **評価結果 (評価データセット 3万件、多クラス分類):** | Class | Precision | Recall | F1-score | Support | |-----------|-----------|--------|----------|---------| | 0 | 0.9059 | 0.5673 | 0.6977 | 1,782 | | 1 | 0.7510 | 0.6548 | 0.6996 | 11,910 | | 2 | 0.5768 | 0.6637 | 0.6172 | 10,966 | | 3 | 0.5740 | 0.6942 | 0.6284 | 4,863 | | 4 | 0.0000 | 0.0000 | 0.0000 | 479 | | **Accuracy**| - | - | 0.6488 | 30,000 | | **Macro Avg**| 0.5615 | 0.5160 | 0.5286 | 30,000 | | **Weighted Avg**| 0.6558 | 0.6488 | 0.6467 | 30,000 | ## 混同行列 | Actual \ Predicted | 0 | 1 | 2 | 3 | 4 | |--------------------|------|------|------|------|-----| | 0 | 1011 | 733 | 35 | 3 | 0 | | 1 | 104 | 7799 | 3830 | 177 | 0 | | 2 | 1 | 1813 | 7278 | 1874 | 0 | | 3 | 0 | 40 | 1447 | 3376 | 0 | | 4 | 0 | 0 | 27 | 452 | 0 | ## 二値分類 (それ以外/教育的) に再集計 | Class | Precision | Recall | F1-score | Support | |--------------------|-----------|--------|----------|---------| | 0 (それ以外) | 0.9390 | 0.9127 | 0.9257 | 24,658 | | 1 (教育的) | 0.6432 | 0.7265 | 0.6823 | 5,342 | | **Accuracy** | - | - | 0.8795 | 30,000 | | **Macro Avg** | 0.7911 | 0.8196 | 0.8040 | 30,000 | | **Weighted Avg** | 0.8864 | 0.8795 | 0.8823 | 30,000 | ## 二値分類の混同行列 | Actual \ Predicted | 0 (それ以外) | 1 (教育的) | |--------------------|-----------------|-------------| | 0 (それ以外) | 22,505 | 2,153 | | 1 (教育的) | 1,461 | 3,881 | ## 主要な二値分類指標 | Metric | Value | |-----------|---------| | Precision | 0.6432 | | Recall | 0.7265 | | F1-score | 0.6823 | | Accuracy | 0.8795 | **分析:** * 二値分類においても**リコールは 0.7265 を維持:** 教育コンテンツの網羅性確保 * **精度 (precision) は 0.6432:** CPU版と比較して向上 ## まとめ 教育的な文章の効率的な抽出と分類を目的とした2種類のモデルを開発しました。CPU版 (StaticEmbeddings + LightGBM) は、大規模データに対する高速な推論能力を有し、特に教育コンテンツを広範に収集する用途に適しています。一方、GPU版 (mMiniLMv2-L6H384) は、処理速度はCPU版に劣るものの、より高い精度での判定が可能です。両モデルとも 500 文字までの日本語テキストを対象として学習されているため、長文や異なるドメインへの適用には留意が必要です。利用目的と計算資源に応じて、最適なモデルをご選択ください。 ## 参考情報 * https://huggingface.co/HuggingFaceFW/fineweb-edu-classifier ## ライセンス 本判定器は [MIT License](https://opensource.org/licenses/MIT) に基づき公開されています。