社内コミュニティの宣伝や個人攻撃を見つけたい。ただし、問題の投稿を引用して報告した人まで止めたくない。そんな境界を試せる小型モデル、が公開されました。
PolicyLMは、文章と自分で書いた規則を読み、複数のカテゴリへ0〜1のスコアを返します。編集部では英語の規則を2つ決め、架空の日本語投稿12件を手元のMacで試しました。今回は12投稿すべてで、両カテゴリの判定が事前の期待値と一致しました。 自動削除には接続せず、人が確認する候補を選べるかを検収しています。
確認日は2026年10月7日、対象はPolicyLM-1.7Bの公開版です。日本語を含む19言語のメッセージが公式評価の対象ですが、規則自体の評価は英語のみです。本試験でも規則は英語に固定し、日本語の規則への追随を試したことにはしません。公式の言語条件と限界
1. Jevのような判断モデルでも、得意な仕事が違う
に続き、文章を書かずに判断を返すモデルが増えています。PolicyLMの中心はコンテンツの確認です。カテゴリを「宣伝」「個人攻撃」のように定義して、それぞれに該当するかを同時に調べます。「経理か情シスか」のように担当を必ず1つ選ぶ使い方とは、出力の読み方が違います。
| 返り方 | 例 | 読み方 |
|---|---|---|
| 1つだけ選ぶ分類 | 経理/情シス/総務 | 候補の中から担当を選ぶ |
| PolicyLMの複数ラベル | 宣伝/個人攻撃 | 両方が該当、片方だけ、両方とも対象外がある |
Musubiは10月6日付で公式発表を掲載しました。確認したv1.2の配布コミットは日本時間10月6日7時21分です。翌朝のHN紹介時刻とは分けています。ダウンロード可能なコードと重みを固定して確認できる点が、今回取り上げた理由です。固定した配布版
「どんな社内規程でも読み込めば、そのまま正確に運用できる」という製品ではありません。まずは短いカテゴリと例外を決め、実際に通したい文と拾いたい文を用意します。画像、会話履歴を含めた判断、判断理由の文章生成は今回のモデルの対象ではありません。
2. 規則と正解を先に決める
教材は、架空の社内コミュニティを想定しました。宣伝は有料商品・サービスへの勧誘を対象とし、会社承認済みの無料勉強会は対象外にします。個人攻撃は特定のメンバー本人を貶める発言を対象とし、提案の費用や手順への具体的な批評は対象外です。
どちらの規則にも、引用による報告と注意喚起の例外を入れました。例えば「この勧誘を見つけたので運営へ報告します」は、投稿者自身の勧誘ではありません。この区別を入力に書いたうえで、実際に守れるかを確認します。
| 投稿の構成 | 件数 | 期待する分類 |
|---|---|---|
| 有料講座や紹介料付きサービスへの勧誘 | 2 | 宣伝だけ |
| 特定メンバーへの侮辱 | 2 | 個人攻撃だけ |
| 侮辱に加えて有料商品へ勧誘 | 1 | 両方 |
| 承認済み無料案内、提案への批評、設備予約 | 3 | 両方とも対象外 |
| 勧誘・侮辱を引用した報告や注意喚起 | 4 | 両方とも対象外 |
入力と期待値は7時6分に固定し、実行用の設定も推論前に保存しました。期待値は別ファイルに置き、モデルには英語の規則と1件の日本語投稿だけを渡しています。12件とも架空で、実在する社員や顧客の投稿は使っていません。
英語の規則では、対象、対象外、例外を分けました。公式ヘルパーの Category には violation_rule、not_violation_rule、exception_override があり、この3項目へ教材の文を対応付けています。読み手向けの日本語訳は説明用で、モデルに追加していません。公式ヘルパーの入力定義
3. 両方のラベルと、引用の対象外を確認できた
12件の応答に実行エラーはありませんでした。宣伝と個人攻撃を別々に数えた24判定も、期待値にすべて一致しました。注意を付けるべき6判定は拾い、対象外の18判定には注意を付けませんでした。
| 検収項目 | 結果 |
|---|---|
| 両カテゴリとも期待どおりだった投稿 | 12/12件 |
| カテゴリ単位の一致 | 24/24判定 |
| 対象の見逃し | 0判定 |
| 対象外への過剰な注意 | 0判定 |
| 引用報告・注意喚起4投稿の完全一致 | 4/4件 |
例えば、有料講座の購入をDMで勧めるP01は宣伝だけに該当しました。一方、有料講座への勧誘文を引用し、「私は申し込みを勧めていません。規則違反か確認をお願いします」と書いたP09は、両方とも対象外になりました。
| 入力 | 宣伝スコア | 個人攻撃スコア | 返されたラベル |
|---|---|---|---|
| P01:自分の有料講座を購入するよう勧誘 | 0.9890 | 0.0055 | 宣伝 |
| P05:個人を侮辱し、有料商品へ勧誘 | 0.9884 | 0.9948 | 宣伝・個人攻撃 |
| P09:勧誘文を引用して運営へ報告 | 0.0015 | 0.0001 | なし |
| P11:侮辱を引用し、賛同せずに報告 | 0.0001 | 0.0009 | なし |
値は生の応答を小数第4位へ丸めています。P05で両方を返し、P09やP11で両方を外せたことは、今回の規則と入力に対する観測です。引用すれば必ず外せる、引用の悪用にも強い、といった広い結論にはできません。
今回の12件では誤りを観測しませんでしたが、「日本語精度100%」とは言えません。 対象と例外を明瞭に書いた少数の架空例です。皮肉、婉曲な攻撃、前後の会話が必要な投稿、規則の変更後は試していません。結果を見てから難しい例を追加した場合は、今回と別の試験として記録する必要があります。
4. スコアは「正しい確率」として使わない
各カテゴリのスコアは0〜1ですが、合計が1になる必要はありません。宣伝も個人攻撃も高くなることがあり、両方とも低くなることもあります。最大のカテゴリだけを残すと、複数の問題を含む投稿の情報を落としてしまいます。
今回は公式の既定設定 precision を使い、独自規則のモードでは0.335以上を注意候補としました。これは編集部が日本語データで最適化した境界ではありません。balanced という別設定もありますが、結果を見て切り替えたり、都合のよい値を探したりはしていません。閾値を配布重みへ結び付けた公式定義
# 仕組みを説明する架空の数値。製品の実測出力ではありませんscores = {"promotion": 0.72, "attack": 0.61}cutoff = 0.335attention_labels = [name for name, score in scores.items() if score >= cutoff]print(attention_labels) # ['promotion', 'attack']公式ヘルパーは、カテゴリの規則や組合せによってスコアが動くと説明しています。別カテゴリを追加しただけでも、元のカテゴリの値が変わり得ます。機材や数値の計算形式も影響するため、「0.8なら80%正しい」と読み替えず、業務側の期待値と合わせて確認します。
値の定義と実際の正しさを分ける考え方は、DoubtBenchの採点を再計算した記事にもつながります。PolicyLMのスコアを、別製品の confidence と同じ数値だと扱わないことが大切です。
5. 無料のローカル試用で確認できた範囲
試用したのはApple M2 Ultra・メモリ192GiB・macOS 27.0です。で動かし、計算形式はfloat32、8スレッドに固定しました。同じ端末で別のCPU検証も進行していたため、今回は処理時間を速さの評価には使っていません。
| 項目 | 試用条件 |
|---|---|
| 公開モデル | PolicyLM-1.7B、配布v1.2の固定コミット 4e5a98c… |
| Python環境 | Python 3.12.10、torch 2.14.1、transformers 4.57.6 |
| 判定設定 | precision、境界0.335、前処理あり、2カテゴリを同時に読む |
| 試行 | 12投稿を各1回、予熱なし、規則・期待値・境界の事後変更なし |
| 初回取得量 | モデル関連約3.49GB。依存ライブラリと実行時メモリは別 |
| 利用条件 | コード・重みはApache-2.0。今回の試用に追加API料金なし |
公式の導入条件はPython 3.10以上ですが、transformersは4.57.6指定で、5系には対応していません。ダウンロードできることと、どの小容量PCでも動くことは別です。今回の大容量Macでの成功から最低メモリ量を推定していません。公式の依存条件、ライセンス
公式には短文を高速に処理した測定がありますが、使用GPUやカテゴリ数を含む条件付きです。今回のMacの結果から、その数値を追試したことにはしません。また、発表記事にある1日100万件以上を扱う運用例は、個別に調整した版の説明です。公開モデルカードは実トラフィックでは未試験としており、配布版が同じ運用実績を持つとは書けません。
教材ZIPをダウンロードすると、入力・期待値・実際の応答・設定を確認できます。モデル本体は含みません。まず展開先で次を実行すれば、追加のライブラリやモデルなしで、編集部の結果を再集計できます。
python3 -B run_local.pypython3 -B -m unittest test_fixture.py -vpython3 -B evaluate_results.py observed自分の端末で動かす場合は、同梱の RUNNING.md に従って新しい仮想環境と固定版モデルを用意します。初回の取得にはネット接続が必要です。準備後の推論は、次のように明示的に指定した場合だけ実行します。保存先は新しい名前にし、前の結果を上書きしません。
.venv/bin/python -B run_local.py --run --model-dir model --output-dir my-results.venv/bin/python -B evaluate_results.py my-results --save教材はローカルの固定ファイルを照合し、推論時のオフライン設定を有効にします。編集部はさらにOS側で通信を拒否して試しました。上の一般用コマンドにはOS側の拒否は含まれません。モデルが返したラベルを使って、投稿を削除したり、人物へ処分を行ったりする機能もありません。
6. 実務へ持ち込むなら、まず確認担当者の候補一覧にする
最初は、注意候補の投稿に規則名とスコアを添え、人が確認する一覧にします。モデルが高い値を返した理由は文章では示されないので、引用や文脈の読み違いがないかは原文と規則を照合します。低い値だった投稿も一部確認し、見逃しが増えていないかを見ます。
規則の変更時には、問題なく通っていた文も含めて再検収します。例外を増やして過剰な注意が減っても、本来拾うべき勧誘を通すようになれば、別の失敗を作ってしまいます。検収用の少数例に合わせ切るのではなく、別の投稿で確認する段階を残してください。
汎用の担当振り分けを検討している場合は、Jiwoの日本語・英語問い合わせ試験と用途を分けると選びやすくなります。本記事の12件は、投稿確認の規則を検収する出発点です。