科学・技術
アニメにおける職業
Anime Professions (github.com)
要約
このプロジェクトは、21,988件のアニメを分析し、実世界の職業がどれだけ頻繁に登場するかをカウントするものです。教師が最も多く言及される職業ですが、2020年代にはショップ店員がそれを上回りました。また、アニメでは決して名前が挙がらない17の職業が存在することも発見されました。この分析は、LLM(Claude Haiku)を用いて職業の言及を分類し、詳細なデータを提供しています。
全文翻訳
アニメにおける職業
実世界の仕事のうち、アニメでは実際に何が描かれているのでしょうか?このプロジェクトは、21,988件のアニメをスキャンし、各職業がどれくらいの頻度で登場するかをカウントします。これは、国連/ILOの標準職業分類であるISCO-08に対応した、完全なルックアップテーブルです。
最も注目すべき発見は、アニメが全く名前を挙げない職業のリストです。🔎ライブエクスプローラー: https://elmiram.github.io/anime-professions/ · 任意の職業を検索し、どの Сアニメに登場するか、そして年代ごとのトレンドを確認できます。📊デック: 調査結果を巡る12スライドの楽しいツアー(PDF)。
見つかったことのいくつか:
教師は最も多く名前が挙がる職業です(約1,370件のアニメ、7.6%)。アニメは学校が舞台であることが多いのです。2020年代には、異世界転生/日常系ブームを背景に、ショップ店員が教師を抜いて1位になりました。ファンタジーの役割を含めると、王族(1,792タイトル)は実際の実務職よりも多く登場します。
キャラクターが plausibly(もっともらしく)名前を挙げられる可能性のある約150の職業のうち、アニメでは17の職業が全く名前を挙げられません。これは、何百万行ものセリフがあってもです。例えば、金融アナリスト、システムアナリスト、運転教官、印刷工、ファストフード店員、船の機関士…これらはバックオフィスやサービス業の末端に位置する職種です。(以下の職業リストを参照してください。)
ニッチな職業の定量化: ソフトウェア開発者 41件、保険販売員 18件(『トライガン』の主人公は文字通り保険外交員です)、薬剤師 15件、路面電車/バス運転手 5件。
これは何なのか
これは趣味のデータプロジェクトです。職業の分類体系を構築し、アニメでの言及を検出し、LLMで各言及を分類し、職業ごとのカウント、年代ごとの内訳、精度/再現率の推定値、および3つのCSVファイルを作成します。小規模なローカル/静的Webアプリで結果を探索できます。
実際の実務職は、ファンタジーストラタム(忍者、魔法使い、冒険者、王族、侍…)から厳密に分離されています。架空の役割はカウントされますが、実際の実務職の合計には含まれません。
仕組み
職業リスト — 436件を約150件に絞り込みました。職業は、国連/ILOの436の公式職業コードリストであるISCO-08に対して分類されます。これらのほとんどは物語の中で名前を挙げることができません。「鉱物処理プラントオペレーターです」と誰も発表しないからです。そのため、それらにゼロを割り当てても、アニメに関する何も語らないことになります。したがって、リストは約150件の、キャラクターが plausibly(もっともらしく)特定されうる職業(「レンダリング可能」なセット)に絞り込まれます。残りの約286件はテスト不能として報告され、欠落とはみなされません。アニメは150件中133件の名前を挙げています — 名前が全く挙がらない17件がヘッドラインの発見です。なぜなら、それらは plausibly(もっともらしく)登場する可能性があるにもかかわらず、登場しないからです。(すべての Сアニメは、約150件すべてについてスキャンされます。絞り込みは職業カテゴリの絞り込みであり、タイトルではありません。)
検出自体は、テキストファーストで、3つのレイヤーで行われます:
コーパス + 主人公 — 各アニメのプロット概要(AniList経由)。
脇役 — AniListのキャラクタープロフィール、役割フィールド(メイン/脇役/背景)付きなので、6エピソードに登場する医師でも、代表としてカウントされます。
セリフ — 約128,000件の日本語字幕ファイル(コミュニティミラーから)。そのため、通りすがりに言及された職業も捕捉されます。
検出は2段階のパイプラインです:
ステージ1 — 高い再現率。キーワード辞書(英語+日本語の表面的な形式をISCOコードにマッピング)がテキスト全体に広範囲に適用され、偽陽性を受け入れます。
ステージ2 — 精度。曖昧な候補文はすべて、LLM(Claude Haiku)によって文脈で判断されます。キャラクターは本当にその職に就いているのか?これは、否定(「私は医者ではありません」)、仮説(「もし私がパイロットだったら」)、多義性(「オフィサー」、「バンド」)、およびファンタジーの同音異義語(メカパイロットは航空会社のパイロットではない)といった古典的なトラップを排除します。
より強力なモデル(Claude Opus)が、確認されたヒットの層化されたサンプルを評価し、職業ごとの精度を推定します。AniListタグは再現率のベンチマークを提供します。精度が一定の基準を下回る職業は、事実として報告されるのではなく、出力で信頼性が低いとフラグ付けされます。
数値の読み方(重要な注意点)
名前が挙がったもの、表示されたものではない。テキストで名前が挙げられた職業を検出します。画面に表示された職業でも、フレーム内に立っているだけで名前がラベル付けされていない — 例えば、祭りの屋台、ホテルの受付係 — は、この手法では見えません。「名前が全く挙がらない」リストは、まさにその通りです。名前が全く挙がりません。
信頼性フラグは本物です。測定された職業の約4分の1が信頼性がないとフラグ付けされています(例:「航空機パイロット」はほとんどがメカパイロットです) — これらのカウントは上限値として扱ってください。
フランチャイズ vs エントリ。カウントはデフォルトでフランチャイズごとに重複排除されます(『名探偵コナン』の約28作品 = 1)。しかし、各エントリは独自の行として保持されるため、展開または折りたたむことができます。
分母は、各パーセンテージの横に表示されます(スキャン可能なテキストを持つ約18,127タイトル中)。
データソースと倫理
アニメのメタデータ、タイトル、キャラクタープロフィール、タグ: AniList (GraphQL API)。
職業分類体系: ISCO-08 (国際労働機関)。
セリフ: 日本のアニメ字幕のコミュニティアーカイブ。
字幕は著作物です。このプロジェクトは、カウントとロケーターのみを派生させます — 字幕テキストを保存または再配布することはありません。エクスポートされたデータセットとWebアプリには、派生統計、タイトル、AniList IDが含まれています。字幕テキストや生のAniListの説明さえも含まれていません。
非営利のファンプロジェクト。
エクスプローラー
同じUIを実行する2つの方法:
python ap.py web # ローカルサーバー http://127.0.0.1:8000
python ap.py export-static # GitHub Pages用の静的 ./site を事前計算(バックエンドなし)
静的ビルドは、各API応答をJSONに変換し、クライアントサイドで同じ呼び出しに応答するため、プレーンファイルとしてどこにでもホストできます。
パイプラインを自分で実行する
Python 3.11+とAnthropic APIキー(LLMステージ用)が必要です。
python3 -m venv .venv && ./.venv/bin/pip install -r requirements.txt
echo "sk-ant-..." > api_key.txt # または export ANTHROPIC_API_KEY
python ap.py collect # AniListコーパス + キャラクター + タグ(無料、約15分)
python ap.py franchise # フランチャイズをクラスタリング
python ap.py extract # ステージ1 辞書候補(無料)
python ap.py estimate # 正確な候補カウント + 予測バッチコスト(無料)
python ap.py adjudicate # ステージ2 Claude Haiku via Batch API(費用発生)
python ap.py measure # 精度/再現率(Claude Opusゴールド + タグ再現率)
python ap.py analyse # カバレッジレポート + ゼロメンションリスト
python ap.py export # occupation_counts.csv, title_occupation.csv, evidence.csv
オプションレイヤーC — 字幕セリフ:
python ap.py subtitles-prep # 字幕ミラーをクローン + 推定
python ap.py subtitles-match # 字幕フォルダ -> AniList IDをマッチング
python ap.py subtitles-scan # 候補を抽出(テキストは保存されない)
python ap.py adjudicate # 新しい字幕候補を裁定
コスト/スケール参照: 完全な実行では、21,988件のアニメと128,000件の字幕ファイルを分析し、約101,000件のClaude Haikuによる判定(+約2,000件のOpusによるスポットチェック)を行い、総費用は約34ドルで、約1日かけてほとんど自動でバッチ処理されました。コレクションは再開可能(チェックポイント済み)であり、レート制限を尊重します。
リポジトリレイアウト
ap/
パッケージ
taxonomy.py ISCO-08階層(436ユニットグループ)+ renderable/fantasyオーバーレイ
lexicon.py 各職業の英語表面形式 + 曖昧さフラグ
jp_lexicon.py 日本語表面形式(レイヤーC)
db.py SQLiteスキーマ + 再開可能なチェックポイント
anilist.py AniList GraphQLクライアント
collect.py コーパス + キャラクター + タグ + フランチャイズクラスタリング
extract.py ステージ1 辞書候補生成
adjudicate.py ステージ2 Claude Haiku / Batch API + 無料コスト推定
measure.py 精度/再現率(Claude Opusゴールド + タグ再現率)
layerc.py 字幕スキャン(スマートミドル; テキストは保存されない)
analyse.py コンソールカバレッジレポート + ゼロメンションリスト
export.py 3つのCSV
webapp.py ローカルエクスプローラー(stdlibサーバー + JSON API)
export_static.py 静的サイトを事前計算
ap.py CLIエントリーポイント
web/index.html エクスプローラーフロントエンド(バニラJS、インラインSVGチャート)
クレジットとライセンス
Claude APIで構築。データ © 各プロバイダー(AniList; ISCO-08はILO)。コードは参照用に公開されています。表示されるデータは派生であり、非営利です。AniList、MyAnimeList、またはどのスタジオとも提携していません。