Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
キャラクターらしさ学習AI:多数のキャラクターの個性や違いの可視化による シナリオライティング...
Search
Cygames
September 08, 2017
Technology
4
8.2k
キャラクターらしさ学習AI:多数のキャラクターの個性や違いの可視化による シナリオライティング支援システム事例
2017/09/01 CEDEC2017
Cygames
September 08, 2017
Tweet
Share
More Decks by Cygames
See All by Cygames
『GRANBLUE FANTASY Relink』キャラクターの魅力を支えるリグ・シミュレーション制作事例
cygames
0
410
『GRANBLUE FANTASY: Relink』最高の「没入感」を実現するカットシーン制作手法とそれを支える技術
cygames
1
340
『GRANBLUE FANTASY Relink』ソフトウェアラスタライザによる実践的なオクルージョンカリング
cygames
0
320
高品質なフォトグラメトリデータを取得するためのハードウェア&ソフトウェア開発
cygames
0
1.1k
AIを活用した柔軟かつ効率的な社内リソース検索への取り組み
cygames
0
990
『GRANBLUE FANTASY: Relink』開発からリリースまでを支えたCI/CDの取り組み
cygames
0
250
『GRANBLUE FANTASY: Relink』専任エンジニアチームで回す大規模開発QAサイクル
cygames
0
260
『GRANBLUE FANTASY: Relink』クオリティと物量の両立に挑戦したフェイシャルアニメーション事例 ~カットシーンからランタイムまで~
cygames
0
300
『GRANBLUE FANTASY: Relink』キャラクターの個性にlinkした効果音表現
cygames
0
130
Other Decks in Technology
See All in Technology
iOS/Androidで同じUI体験をネ イティブで作成する際に気をつ けたい落とし穴
fumiyasac0921
1
110
New Relicを活用したSREの最初のステップ / NRUG OKINAWA VOL.3
isaoshimizu
3
640
OS 標準のデザインシステムを超えて - より柔軟な Flutter テーマ管理 | FlutterKaigi 2024
ronnnnn
1
300
B2B SaaSから見た最近のC#/.NETの進化
sansantech
PRO
0
930
アジャイルチームがらしさを発揮するための目標づくり / Making the goal and enabling the team
kakehashi
3
160
開発生産性を上げながらビジネスも30倍成長させてきたチームの姿
kamina_zzz
2
1.7k
組織成長を加速させるオンボーディングの取り組み
sudoakiy
2
220
TypeScript、上達の瞬間
sadnessojisan
47
14k
SDNという名のデータプレーンプログラミングの歴史
ebiken
PRO
2
120
プロダクト活用度で見えた真実 ホリゾンタルSaaSでの顧客解像度の高め方
tadaken3
0
210
Exadata Database Service on Dedicated Infrastructure(ExaDB-D) UI スクリーン・キャプチャ集
oracle4engineer
PRO
2
3.2k
Lambda10周年!Lambdaは何をもたらしたか
smt7174
2
130
Featured
See All Featured
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
232
17k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
47
5k
Into the Great Unknown - MozCon
thekraken
32
1.5k
The Straight Up "How To Draw Better" Workshop
denniskardys
232
140k
Happy Clients
brianwarren
98
6.7k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
28
2k
Building an army of robots
kneath
302
43k
Side Projects
sachag
452
42k
How GitHub (no longer) Works
holman
310
140k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
229
52k
Build The Right Thing And Hit Your Dates
maggiecrowley
33
2.4k
Teambox: Starting and Learning
jrom
133
8.8k
Transcript
None
サマリ シナリオ執筆者 チーム シナリオ監修者 (熟練執筆者) 監 修 依 頼 の
負 荷 が 集 中 負荷が集中するため、 改善のサイクルが遅延 シナリオ執筆者 チーム シナリオ監修者 (熟練執筆者) キャラ毎の 「らしさ」判定AI AI AI AI AI 人 工 知 能 を 中 間 評 価 者 と し て 用 い た 高 速 な イ テ レ ー シ ョ ン (ほぼ)最終 稿を監修 AIによる 執筆支援 監修者は、最終的な成果物 のクオリティに集中できる 既存の膨大なキャラセリフのテキストから、その特定の「キャラクターら しさ」を学習して自動判定するAIを用いて、新規セリフを自動チェックす ることにより、監修者への負荷を減らし、チーム全体でのクオリティと開 発スピードの向上を実現 2/28
None
キャラクターの「らしさ」を計量するAIと シナリオ作成タスクのかかわり 多人数で継続的にシナリオ(セリフ)を執筆するときに、キャラクター の性格、興味、口調、などの、テキスト上に現れる「らしさ」の一貫性 を、チームとして保証していくことが、監修タスクの大きな課題 「キャラクター」という仮想的な存在の個性を学習し、テキストがその 個性を示すセリフとして適しているか評価する技術が必要 従来のテキスト チェッカーや、機械 学習を含む自然言語
処理技術は、キャラ クターの個性の学習 には適さない。 キャラ毎の個性 を学習した行列 話す「口調」と「内容」 の2つの側面から、各 キャラの、全登場キャラ 内における立ち位置を自 動計算するAIを実現 4/28
組織的シナリオライティングの問題点 キャラらしさに寄与 する要素の形式的記 述・伝達が困難 記号的なキャラの個 性が正しく表現され ているかのチェック コストが高い 既存の資源を利活用 する方法が少ない
5/28 台詞中に含まれるキャラ らしさを完璧に記述する こと、他人にキャラらし さとは何かを伝達するこ とは困難 人称や語尾など事前に決 定されたルールに従って いるかは、人手でチェッ クされておりチェック者 の負荷が大きい ア イ ス く れ る の ? ……ありがとう。マ マ も お い し い っ て 言ってた……。 【プレイヤーさん】ありが とう 【プレイヤー】ありがとう 既存タイトルのシナリオ テキストなど高品質な データを保有していても、 「読んでみる」以外で活 用できない
キャラクターらしさ学習AIの概要 6/28 どのデータを使って、 どの台詞を分析するか記述 結果表示 キャラクターの個性を生み出す要因を、入力データから学 習し、ユーザが指定した分析方法に従って可視化
シナリオ資源のAI用データとしての活用 7/28 CSV シナリオデータ (エクセル) 学習AIへの入力データは名前とセリフを縦に並べたシンプ ルな形式のため、少ない工数で既存の資源を活用可能 キャラ1,昨日はよく眠れたかい?ボクは最近寝付きが悪 くてね…。,"レアリティ=R,タイプ=闇" キャラ1,海を見ていると不思議な気持ちになるね…。,"
レアリティ=R,タイプ=闇" キャラ2,スポーツドリンクとかありませんか?喉乾い ちゃって。,"レアリティ=N,タイプ=炎" キャラ2,今日は天気が良かったので、ボク家から走って きちゃいました!,"レアリティ=N,タイプ=炎" キャラ3,…太陽…ちょっと眩しい…曇りの日の方が好き だな…,"レアリティ=R,タイプ=闇" 学習AI マクロなど で変換 入力
話し方・口癖:〜ね、!で終わる文 発話内容・好み:野球の話題 キャラクターらしさの要素 本システムではキャラクターの特徴を「話し方・口癖」と 「発話内容・好み」の二つの側面から抽出 天気がいいから野球に行こうよ! その後アイスも食べたいね! 野球の後のアイスって最高だね! アイスくれるの?……ありがとう。 ママもおいしいって言ってた……。
ママがお礼にって……。アイスあげる…。 話し方・口癖:……が多い 発話内容・好み:ママの話題 アイスの話題は2人とも言及しているので、 キャラらしさに寄与しない 8/28
発話内容・好み要素の抽出 名詞の使用頻度から各キャラクターの発話内容・好みの傾 向を表す行列を作成 9/28 天気がいいから野球に行こうよ! その後アイスも食べたいね! 野球の後のアイスって最高だね! アイスくれるの?……ありがとう。 ママもおいしいって言ってた……。 ママがお礼にって……。アイスあげる…。
発話回数 天気 野球 アイス 1 2 2 発話回数 ママ アイス 2 2 名詞の抽出 名詞の抽出 それぞれのキャラで野球・ママ・アイスの話題の発話回数が多いので、こ れらの単語はキャラの個性に寄与しているといえる
話し方・口癖要素の抽出 各キャラの話し方・口癖要素を網羅的に抽出するために、 セリフの部分文字列(N-gram)を使用 その後アイスも食べたいね! 野球の後のアイスって最高だね! <文頭>そ その の後 後ア …
いね ね! !<文末> <文頭>野 野球 球の の後 … だね ね! !<文末> 2-gram(2文字ずつ)に分解 各部分文字列の数え上げ 10/28 アイ, イス, の後, ね!, !<文末>は出現回数が多いのでこのキャラに特徴 的とみなす 発話回数 野球 アイ イス の後 … ね! !<文末> 1 2 2 2 2 2
話し方・内容を合わせた総合ランキングにおい て、「お嬢様」が1位になっており、2位との 差も大きいので、入力したセリフは総合的に 「お嬢様キャラ」らしいセリフだと判断できる。 ▪クエリ: Rank By "冷たい紅茶をお願いできるかしら? " From
“sample_narrative.csv” 執筆支援例:キャラらしい台詞の制作 シチュエーション:「お嬢様キャラ」の新しいセリフを作りたいが、 同じ タイトルの他のキャラに寄り過ぎていないか知りたい 分析したいセリフ セリフデータを分析対象に指定 11/28 キャラクターらしさ グラフが右に長いほ ど、入力したキャラ らしさが高い
執筆支援例:キャラらしい台詞の制作 内容・口調ともに分析対象の台詞は、同タイトルの他のキャラと差別化で きている「お嬢様らしい」台詞であると判断できる キャラクターらしさ(口調) 1位と2位の差が十分にある キャラクターらしさ(内容) 1位と2位の差が十分にある ▪クエリ: Rank By
"冷たい紅茶をお願いできるかしら? " From “sample_narrative.csv” シチュエーション:「お嬢様キャラ」の新しいセリフを考えたいが、 同じ タイトルの他のキャラに寄り過ぎていないか知りたい 分析したいセリフ 12/28 セリフデータを分析対象に指定
台詞データと一般常識の統合 13/28 台詞から抽出された特徴行列と異なるドメインのデータ統合を、 行列で外部知識を表現することで可能にし、特徴抽出精度を向上 単語 関連度 天 気 野 球
一 塁 天気 1 0 0 野球 0 1 0.5 一塁 0 0.5 1 一般度 天気 0.0017 野球 0.0061 一塁 0.0001 Wikipedia 記事 A 記事 C 記事 B 記事 D リンク構造に対して固有値 分解という処理を行うこと により、「他の記事の説明 に使用されるような一般的 な単語」度合いを測定 単語間の距離をリンク数 を測ることで単語間の関 連度を表す行列を作成 外部データとして、豊富な 情報量を持ち、単語の関連 をリンクとして保持する Wikipediaを使用 リンク 生成 生成
「言っていてもおかしくない単語」をキャラと関連づけるために、 単語関連度を用いて実発話していない単語の仮想発話回数を計算 単語関連度 紅茶 牛乳 レモンティー 紅茶 1 0 0.5
牛乳 0 1 0 レモン ティー 0.5 0 1 実際の 発話回数 紅茶 牛乳 レモンティー 2 0 0 仮想的な 発話回数 紅茶 牛乳 レモンティー 2 0 0 言及していないが関連する単語の検出 14/28 「レモンティー」と言及したことが なくても、関連単語である紅茶を2回 発 話 し て い る の で 、 「 レ モ ン ティー」も1回発話したものとみなす
天気がいいから野球に行こうよ! その後アイスも食べたいね! 野球の後のアイスって最高だね! 2-gramの 数え上げ 発話 回数 野球 アイ イス
… !<文末> 2 2 2 3 発話 回数 … !<文末> 3 一般的な単語を話し方の特徴量から除外することで、話し方と無 関係な文字列を取り除き、特徴抽出精度を向上 同一文字列の2重計上防止 一般的な単語(野球・アイ ス)に含まれる2-gramの除去 15/28 野球・アイスを取り除くことで、「野球」「アイス」が含まれる文におい てキャラらしさが不適切に高くなることを防ぐ。
差別化への寄与度の評価 寄与度は「要素の発話頻度」と「要素の発話者数」から決まる。 どのキャラ間を比較すべきかという分析者の視点を分析結果に反 映できる。 天気がいいから野球に行こうよ! その後アイスも食べたいね!野球 の後のアイスって最高だね! アイスくれるの?ママもおいし いって言ってた……。ママがお礼 にって……。アイスあげる…。
16/28 紅 茶 を 一 杯 い た だ け ま す こ と?ミルク1つお願いできる かしら? お 抹 茶 を お 願 い で き る か し ら?あなたといると不思議と 落ち着きますわ。 アイスの寄与度=0 アイスの寄与度=0.6 2キャラで比較 4キャラで比較
17 ▪クエリ: Rank By "冷たい紅茶をお願いできるかしら? " From “sample_narrative+other.csv” 執筆支援例:他タイトルとの被り検出 シチュエーション:「お嬢様キャラ」の新しいセリフを考えたいが、
他タ イトルの他のキャラと被っていないか知りたい 2タイトルのセリフを混ぜたデータを分析対象に指定 分析したいセリフ 「お嬢様」が1位になっているので、分析対 象の台詞は、他タイトルのキャラのと比較し ても総合的に差別化できていると判断できる。 17/28
▪クエリ: Rank By "冷たい紅茶をお願いできるかしら? " From “sample_narrative+other.csv” 執筆支援例:他タイトルとの被り検出 シチュエーション:「お嬢様キャラ」の新しいセリフを考えたいが、 他タ
イトルの他のキャラと被っていないか知りたい 2タイトルのセリフを混ぜたデータを分析対象に指定 分析したいセリフ キャラクターらしさ(口調) 「お嬢様」が2位に なっているので口調の 差別化が不十分である と判断できる キャラクターらしさ(内容) 「お嬢様」が1位で、2 位との差も大きいので、 内容面では差別化でき ていると判断可能 18/28
比較対象の動的選択 データ・キャラ選択基準をAI使用者の需要に合わせて変化させる ため、独自開発したスクリプト言語で記述された内容に従って分 析内容を動的に選択可能 19/28 Rank By ”アイス食べたいな! " From
“sample_narrative.csv” Grouping キャラ1 AS id:String == “キャラ1” Grouping キャラ2 AS id:String == “キャラ2” Rank By ”アイス食べたいな! " From “sample_narrative.csv” データに入っている キャラ全員と比較 2人だけを選択して比較
▪クエリ: Rank By “それは興味深い戦略だな” From “sample_narrative.csv” Grouping キャラA AS id:String
== “キャラA” Grouping キャラB AS id:String == “キャラB” 執筆支援例:キャラクター間の違いの発見 シチュエーション:新人ライターさんに2人の頭脳派キャラの違いがどこ にあるかを理解してもらいたい ▪クエリ: Rank By “それは興味深い実験だな” From “sample_narrative.csv” Grouping キャラA AS id:String == “戦略キャラ” Grouping キャラB AS id:String == “実験キャラ” 分析対象を二人に絞った上で様々なセリフ文をランキング表示させること で、2人のキャラクターの特徴の違いを理解してもらう。 キャラA キャラB キャラA キャラB キャラAは「戦略」に反応 するが、キャラBは無反応 キャラBは「実験」に反応 するが、キャラAは無反応 キャラクターらしさ(内容) キャラクターらしさ(内容) 2人だけを 取り出す 20/28
キャラらしさ学習AIのアーキテクチャ キャラらしさ学習AIのシステムは三層構造のアーキテクチャとし て設計。それぞれの層は独立しているので、開発効率が高い スクリプト 生成 21/28 エンジン スクリプト UI Rank
By “今日はいい天気ですね” From “sample_narrative.csv” 分析内容の 指示 結果返却 可視化 シナリオ 執筆者 サーバサイド エンジニア AI開発者 レイヤー 操作者
三層アーキテクチャの利点 現場からの需要に対して各レイヤーの担当者が独立して対応でき るため改修担当者の負荷が分散し、迅速に対応できる 22/28 エンジン スクリプト UI Rank By “今日はいい天気ですね”
From “sample_narrative.csv” Webエンジニア サーバサイドエンジニア AI開発者 ゲーム開発チームの要望 UIが 使いづらい! 新しい分析が したい! 結果が おかしい! UIが 使いづらい! 新しい分析が したい! 結果が おかしい! ゲーム開発チームの要望 学習AI 開発者 単一システムによる実装 三層アーキテクチャ 改 修 担 当 者 が 分 散 改 修 担 当 者 に 集 中 改善要望が集中するため、 全ての解決には時間がかかる 担当者が独立して改修可能 なため、要望に素早く対応可能
集合を定義 2つの集合を結合 2つの集合を分析対象ごとに比較 集合を分析単位に分割 分析 単位 集合 集合 集合 集合
分析 単位 分析 単位 セリフ データ エンジン部 キャラクター分析に必要な操作は、閉包性を持った4つのオペレータに集 約可能であり、これらの操作を組み合わせるだけで現場で必要とされる多 様な分析に対して汎用的に対応できる。 23/28
スクリプト処理部 24/28 スクリプト処理系を独自実装。パーサ・プランナ・エグゼキュー タの三層構造で設計することにより、各レイヤーの拡張性を担保 プランナで生成された 計画を元に分析を実行 プランナ Rank By ”アイス食べたいな!
" From “sample_narrative.csv” 分析方法, 使用データ, グループ定義を読込む パーサ エグゼキュータ 実行結果 クエリ クエリを効率的に分析 するための実行計画を 生成 実行 計画
まとめ キャラクター間の差別化要素を学習する、キャラらしさ学習AIの導入によ り、組織的シナリオライティングにおけるワークフローの効率化・品質向 上を実現 ライター自身による制作物の定量評 価を実現することで、監修者への負 荷集中を緩和 入力した台詞がキャラらしいセリフ になっているか、他キャラとの差別 化はなされているかを可視化
シナリオ執筆者 チーム シナリオ監修者 (熟練執筆者) キャラ毎の 「らしさ」判定AI AI AI AI AI 人 工 知 能 を 中 間 評 価 者 と し て 用 い た 高 速 な イ テ レ ー シ ョ ン (ほぼ)最終 稿を監修 キャラクターらしさ(内容) キャラクターらしさ(口調) 25/28
▪クエリ: Rank By "これ、あなたが作ったの? " From “sample_narrative.csv” 執筆支援例:表記ミスの検出 シチュエーション:プレイヤーのことを「アンタ」と呼ぶキャラの台詞で 人称の表記ミスが起きていないか知りたい
▪クエリ: Rank By "これ、アンタが作ったの? " From “sample_narrative.csv” 正しい呼称(アンタ)のランキングと誤った呼称(あなた)のランキングを比較する と、誤った呼称のときは、呼称の間違いを捉えてキャラクターらしさの値が小さく なっていることがわかる。 キャラらしさの値が小さい キャラらしさの値が大きい 26/28 キャラクターらしさ(口調) キャラクターらしさ(口調)
▪クエリ: Rank By “そんなこと言ったらいけないんだぞ☆” WITH SuffixWeight(“だぞ☆”, 1.2) From “sample_narrative.csv” 実装予定の分析①
語尾への重みづけ シチュエーション: 特徴的な語尾があることが分かっているキャラクター に対して、それを考慮したキャラらしさのランキング表示を行う “だぞ☆”という語尾に対して 正方向の重みを付ける 手動での分析結果のカスタマイズを実現することに より、「だぞ☆」という語尾を持つキャラの口調分 析において、現状の分析結果よりも、キャラの違い をより鮮明に反映し、判断の精度を向上させること が期待される。 27/28
▪クエリ: Rank By “sample_narrative.csv” From “another_title.csv” 実装予定の分析② 複数キャラの一括比較 シチュエーション:現在開発中のタイトルのキャラクターごとに、他の既 存タイトルのキャラクターと被っていないか一括でチェックしたい
今まで台詞テキストを入れていたと ころにファイル名を入力 … … キャラ1 キャラ2 キャラN キャラクターごとの一括比較を実現す ることで、他タイトルとの比較を容易 に行える。特に複数の競合タイトルを 意識しながら多数のキャラクターの設 計を一度に行う開発初期段階において、 有用であると考えられる。 28/28