はじめに
いま話題の Jev で何ができるのか、具体的に試してみた記事です。(詳細な検証記事ではありません)
Jev の詳しい仕組みは他の記事に譲りますが、簡単にいうと「判断に特化したAI」です。
判断の対象と判断の基準を渡すと、判断結果を確率付きで返してくれます。
今回は、livedoorニュースコーパスの記事のカテゴリ分類を Jev にやらせてみました。
公式ドキュメントには「主な学習言語は英語で、日本語を含む CJK は同等の精度ではない」と書かれています。実際どのくらい差が出るのかを見るため、同じ記事を Claude Opus 5.5 にも分類させて比較しています。
やったこと
1. データ
livedoorニュースコーパスを使いました。
livedoor ニュースが配信していた記事を9カテゴリに分けて収録した、日本語テキスト分類の定番データセットです(CC BY-ND 2.1)。正解ラベルが最初から付いているので、精度をそのまま測れると思い選びました。
9カテゴリ、7,367記事から、各カテゴリ30件をランダムに選び、計270件を使いました。
各記事ファイルは「1行目 URL、2行目 日付、3行目 タイトル、4行目以降 本文」という形式なので、タイトルと本文を空行でつないだものを Jev に渡しています。
2. 接続
TypeSafe の新規登録が混み合っているのか API キーが取得できなかったので、Vercel AI Gateway の TypeSafe 互換 API を使いました。
Gateway の API キーを作り、クレジットカードを登録すればすぐ呼べます(試した時点では Jev は無料期間中でした)。
- エンドポイント:
https://ai-gateway.vercel.sh/typesafe/v1/systemone - モデル:
typesafe-ai/jev(Gateway 経由ではバージョンを指定できませんでした)
3. リクエスト
質問は Choice(選択式)を1問だけにしました。
stateには判断の対象になるニュース記事の内容を入れます。
instructionsはJevへの質問(判断してほしい事項)として、ニュース記事のカテゴリを判定してほしい旨を記述しました。
criteria に、9カテゴリそれぞれの日本語の説明を書いています。この説明が Jev にとっての「判断基準」になります。
{
"model": "typesafe-ai/jev",
"state": "(タイトル)\n\n(本文)",
"questions": {
"category": {
"type": "choice",
"instructions": "このニュース記事が掲載されたカテゴリ",
"criteria": {
"dokujo-tsushin": "独身の働く女性向けのコラム。恋愛、結婚、職場の人間関係、30代女性の生き方や本音",
"it-life-hack": "IT製品やソフトウェア、Webサービスの紹介と、仕事や生活での活用術",
"kaden-channel": "家電やデジタル機器の新製品、ネット上で話題のガジェットやIT業界の出来事",
"livedoor-homme": "大人の男性向けライフスタイル。キャリア、ビジネス、ファッション、グルメ、趣味",
"movie-enter": "映画の作品紹介、公開情報、俳優や監督のインタビュー、試写会や舞台挨拶",
"peachy": "女性向けのエンタメとライフスタイル。恋愛、美容、グルメ、ファッション、海外セレブ",
"smax": "スマートフォンや携帯電話の新機種、Android、通信キャリアのサービスや料金",
"sports-watch": "スポーツ全般。プロ野球、サッカー、格闘技などの選手や試合、スポーツ界の話題",
"topic-news": "社会、芸能、ネットで話題になっている時事ニュースやゴシップ"
}
}
}
}
レスポンスはこんな形で返ってきます(実際のレスポンスから抜粋)。
{
"answers": {
"category": {
"type": "choice",
"choice": "it-life-hack",
"confidence": 0.49,
"probabilities": {
"it-life-hack": 0.55, "smax": 0.41, "kaden-channel": 0.04,
"dokujo-tsushin": 0, "livedoor-homme": 0, "movie-enter": 0,
"peachy": 0, "sports-watch": 0, "topic-news": 0
}
}
}
}
選ばれたカテゴリだけでなく、全カテゴリの確率と、確率分布の尖り具合から求めた confidence が返ってきます。
4. 実行と集計
Pythonのスクリプトで、1記事ごとに file / label / pred / confidence / probabilities を JSONL に書き出しました。
集計では、正解率に加えて「返ってくる確率がどのくらい当てになるか」も見ています。
最大確率を 0.1 刻みのグループに分け、グループごとの実際の正解率と比べました。たとえば「確率 0.9 台を付けた記事」の正解率が実際に 9 割前後なら、確率は信用できる(校正されている)ことになります。
そのズレを件数で重み付けして平均した値が ECE(Expected Calibration Error)で、0 に近いほど確率が当てになります。
5. Claude Opus 5.5 にも同じことをさせる
比較用に、Claude Code 上で Claude Opus 5.5 に同じ270件を分類させました。
- 答えが漏れないよう、記事をシャッフルして
a001.txt〜a270.txtという名前にし、別のディレクトリに置いた - そのディレクトリの
CLAUDE.mdに Jev と同じカテゴリ説明を書き、「各カテゴリの確率を JSONL で出力」と指示した - 出てきた確率から、Jev と同じ定義で
pred(最大確率のカテゴリ)とconfidenceを計算し、同じ集計にかけた
結果
| Jev | Claude Opus 5.5 | |
|---|---|---|
| 正解率 | 72.2%(195/270) | 89.6%(242/270) |
| ECE(最大確率) | 0.150 | 0.121 |
| 確率の出方 | 実際の正解率より高め | 実際の正解率より低め |
カテゴリ別の正解数(各30件中)は次のとおりです。
| カテゴリ | Jev | Claude Opus 5.5 |
|---|---|---|
| dokujo-tsushin | 20 | 28 |
| it-life-hack | 10 | 21 |
| kaden-channel | 16 | 29 |
| livedoor-homme | 19 | 27 |
| movie-enter | 27 | 24 |
| peachy | 23 | 27 |
| smax | 27 | 30 |
| sports-watch | 28 | 30 |
| topic-news | 25 | 26 |
- 一番多かった取り違えは、どちらも it-life-hack → kaden-channel でした(Jev 16件、Claude Opus 5.5 8件)。kaden-channel の criteria に「ネット上で話題のガジェットやIT業界の出来事」と書いたことで、IT 系の記事が kaden-channel に吸われたと見ています
- Jev は、最大確率 0.9 以上を付けた記事でも正解率は 85% でした。「0.9 以上なら自動処理」のようなしきい値運用は、そのまま運用するのは危ういかもしれません
- Claude Opus 5.5 の確率は 0.5、0.6、0.85、0.95 のようなキリのいい値が多く、控えめに出る傾向でした
条件の違いについて
Jev と Claude Opus 5.5 の条件は完全にはそろっていません。
- Claude Opus 5.5 は、記事を30〜50件ずつまとめて冒頭の数百文字だけを表示し、それを読んで判定していました(こちらで指示したわけではありません)。Jev には全文を渡しています
- Jev は1記事ずつ独立に判定していますが、Claude Opus 5.5 は1つのセッションで続けて処理しています
- Jev の確率はモデルの出力そのものですが、Claude Opus 5.5 の確率は文章として自己申告させた値です。ECE の比較はその前提で読んでください
- livedoorニュースコーパスは有名なデータセットなので、学習時に見ている可能性があります。これは Claude Opus 5.5 だけでなく、学習データが非公開の Jev にも言えます
おわりに
日本語のニュース分類では、Jev の正解率は 72.2%、Claude Opus 5.5 は 89.6% でした。
ただし、criteria の書き方ひとつで精度が変わる可能性もあるため、どこまで改善するかを試してみるのも面白いかもしれません。