言語処理学会 第21回年次大会 発表論文集 (2015年3月)

既存小説に依存しない小説の自動生成に関する一考察
福田 清人

松本 啓之亮森 直樹

大阪府立大学 工学研究科{fukuda@ss., mori@, matsu@}cs.osakafu-u.ac.jp

1

はじめに化したものを小説と定義し, 小説のうち, 状態変化を行動で言語化したものをストーリーと定義する.

近年, 絵画や音楽, 小説といった人間の感性に基づく創作物を計算機で自動生成することが人工知能の分野で重要な課題となっている. その中で, 星新一らしい小説を自動生成することを目指した「気まぐれ人工知能プロジェクト『作家ですのよ』」[1] が 2012 年にスタートするなど, 小説の自動生成は自然言語処理や人工知能の多岐にわたる技術を必要とするチャレンジングな問題として注目を集めており, 今後その重要性はますます高まると思われる.
現在, 小説の自動生成に関する研究は既存の小説のストーリーを利用した研究が主流となっており, 既存の小説から抽出したストーリーとなる文章を一部変更することで小説を自動生成する研究 [2] や, プロップの文学理論を利用した物語の自動生成システムの研究[3] が存在する. しかしながら, これらの研究では利用した小説のストーリーに大きく依存してしまっていることが問題点として挙げられる.
以上の点より, 既存の小説を利用しない小説の自動生成を最終目的とする. その前段階として, Agent-Basedsimulation (ABS) により生成したログデータを用いてストーリーを半自動生成する手法を提案し, 生成されたストーリーから人手で生成した小説を解析することで既存の小説を利用しない小説の自動生成に必要な要素について考察する.
以下に本研究の構成を示す. 第 2 章で提案手法について説明し, 第 3 章で動作実験について結果と考察を示す. 最後に第 4 章でまとめと今後の課題について述べる.

2

提案手法

本研究では計算機が創発的にストーリーを生成することを目標として, 計算機で得られるログデータを用いたストーリーの半自動生成手法を提案する. ここで,各登場人物に関する一連の状態変化を多様な文で言語

2.1

提案手法の流れ以下に提案手法のアルゴリズムを示す. それぞれ 1.
〜 3. については 2.2 〜 2.4 に詳述する.

1. ログデータ生成 Agent-Based Simulation (ABS)によってログデータを生成する.
2. イベント生成 得られたログデータからストーリーを構成するイベントを生成する.
3. ストーリーベクトル生成 得られたイベントからストーリーをベクトル形式で表したストーリーベクトルを生成する.
4. ストーリー生成 生成されたストーリーベクトルから人手でストーリーを生成する.

2.2

ログデータの生成

本研究では ABS によってログデータを生成する.
ABS には提案手法のために実装したものを用いる.

2.2.1

ログデータの種類

ABS によってゲームログとステータスログという2 種類のログデータを生成する.
ゲームログ ABS においてエージェントが特定の行動をするたびに, ターン, シーン, 主体となるエー
ジェント名, 客体となるエージェント名, 行動の種類, 行動による友好度の変化量, 行動による感情の変化量 という 7 種類のデータをゲームログとして取得する.
ステータスログ 各ターンの終了時にターンと全エージェントの全パラメータをステータスログとして取得する.

― 992 ―

Copyright(C) 2015 The Association for Natural Language Processing.
All Rights Reserved.

2.2.2

ABS のアルゴリズム

理的な影響を表現するためである.

以下に実装した ABS のアルゴリズムについて示す.
ここで, 平均が µ, 分散が σ 2 の正規乱数を N (µ, σ 2 )とする.

eit

1. フィールドサイズを xmax × ymax , 最大ターン数を tmax , 参加エージェント数を n とする.
2. 環境エージェントを生成する. 環境エージェン
トは位置 x, y に対してシーン番号 sxy , 環境値
axy , bxy,t をパラメータとして持つ. ここで, 環境値 axy は -1 か 1 の二値であり, 環境値 bxy,t は−5 ≤ bxy,t ≤ 5 を満たす実数である. また, 環境
値の初期値 bxy,0 は −3 ≤ bxy,0 ≤ 3 を満たす実数と定める.
3. 参加エージェントを n 体生成する. 各エージェン
トは名前, 位置 xt , yt , 性別 m, 各エージェントに対する友好度 Ft = {f1,t , f2,t , ……, fn,t }, 各エージ
ェントに対する告白フラグ L = {ℓ1 , ℓ2 , ……, ℓn },感情 Et = {e1,t , e2,t } をパラメータとして持つ.
友好度 f ∈ F は 0 ≤ f ≤ 100 を, 感情 e ∈ E は −100 ≤ e ≤ 100 をそれぞれ満たす実数であり, 性別m および告白フラグ ℓ ∈ L は 0 か 1 の二値である. また, それぞれ 40 ≤ f0 ≤ 60, −10 ≤ e0 ≤ 10である. ここで, 参加エージェント集合を P とする.
4. ターン t = 0 とし, t における未行動のエージェン
ト集合を Pt , 行動済みのエージェント集合を P′tとする.
5. Pt = P, P′t = Φ とする.
6. Pt からランダムにエージェントを 1 体選択し, iとする. Pt = Pt \i とし, P′t = P′t ∪ i とする.
7. エージェント i をムーア近傍のいずれかに移動させる. エージェントはターンとシーン番号を要素とするスケジュールと目標位置を持ち, 目標位置まで移動すると, スケジュールからターンにおけるシーン番号を取得し, そのシーンの中からランダムに目標位置を再設定する. ここで, シーンとはあるシーン番号を与えられた場所の集合というふうに定義する.

i|N (0, 1)| × aixy (fj,t− 50)(1)200|N (0, 1)| × aixy eit(2)= eit −500

i= fj,t−ifj,t9. エージェント i のノイマン近傍に他のエージェン
トが存在すれば, その中からランダムにエージェントを選択して k とする. 存在しなければ 12 へ.
10. エージェント間の相互作用として, エージェントkk のエージェント i に対する友好度 fi,tおよびkk
感情 e1,t , e2,t を以下の式に従って更新する. エージェント間の相互作用に対してゲームログを保存する.
kfi,t+1k
k= fi,t+ ∆fi,t(3)ek1,t+1(4)(5)=

ek1,t + ∆ek1,tek2,t+1=

ek2,t + ∆ek2,tk∆fi,t= |N (0, 1)| × akxy dki,t + bki,tdki,t=ki2fi,t+ fk,t(6)ek1,t (ek2,t + 100)(7)

∆ek1,t+20
1500
k= |N (0, 1.5)| × ∆fi,t∆ek2,tk
N (0, 1.5) × |∆fi,t|(9)=(8)

k
11. 10 で得られた ∆fi,tまたは, エージェントを入れi替えた ∆fk,t が閾値 h を超えていれば, エージェ
ント i, k は自身以外のエージェントからランダムに 1 体選択し, そのエージェントに対する告白フラグを 1 ならば 0, 0 ならば 1 へと変化させる.
ここで, h は閾値である

12. Pt ̸= Φ であれば, 5 へ.
13. P′t からランダムにエージェントを 1 体選択し, pとする. エージェント p のノイマン近傍に他のエージェントが存在すればランダムに 1 体選択し, p′ とする. エージェント p のエージェント p′

8. 自身以外のエージェントからランダムに 1 体選択し, j とする. エージェント i のエージェントi
j に対する友好度 fj,tおよび感情 eit ∈ Eit を以下の式に従って更新する. これは時間経過による心― 993 ―|f p′ −50|,tに対する告白フラグ ℓpp′ が 1 であれば, p 100′の確率で p が p に告白する. 告白は以下の式で表される成功率 r で成功する. 告白すれば成功してもしなくてもゲームログを保存し 15 へ. 告白
しなければ P′t = P′t \p とする.
p′′+0.2α
 0.8fp,t(mp = mp )200(10)r =p′′+0.2α
 0.8fp,t(mp ̸= mp )100′α=′ep1,t × ep2,t100(11)Copyright(C) 2015 The Association for Natural Language Processing.
All Rights Reserved.

14. P′t ̸= Φ であれば, 13 へ.
15. 環境エージェントの環境値 bxy,t を以下の式に従って更新する.
Xbxy,t+1からストーリーベクトル s を生成し, ストーリーベクトル s からストーリーを生成する. 以下にストーリーベクトルの生成アルゴリズムを示す.

1. 主体となるエージェントを i, 客体となるエージェ
ントを j とし, イベントからターン t, 友好度の変化量 ∆ft , 各感情の変化量 ∆et を取得する. また, ステータスログから t におけるエージェントjii, j の, エージェント j, i に対する友好度 fj,t, fi,tおよび感情 eit , ejt を取得する.

2(t + 1)π(12)500= bxy,0 + sin (aX) + cos (bX)(13)=

ここで, a, b はそれぞれ 0 ≤ a, b ≤ 500 を満たす定数である.

16. t = t + 1 としてステータスログを保存する. t ≥tmax ならば ABS を終了する. そうでなければ 5へ.

2.3

2. ストーリーベクトル s を以下のように定義する.
()
s =sij,t , sji,t , s∆ft , s∆et
(14)
()
iii
sij,t = vj,S, vj,M, vj,L
(15)
()
jj
j
sji,t =vi,S, vi,M, vi,L
(16)

イベントの取得得られたゲームログをそのまま用いてストーリーベクトルを生成してしまうと, 同一の行動を連続して行ってしまい, 不自然なストーリーになってしまう. そこで, ゲームログに対して何らかの操作を適用してゲームログからストーリーを構成するイベントを取得する.
今回ゲームログを圧縮することでイベントを取得する手法を用いる. 以下に圧縮によるイベントの取得アルゴリズムを示す.

2. G から, 連続した同一のシーンで取得されたゲームログを抽出し G′ とする.
3. G′ を客体となるエージェント名, 主体となるエー
ジェント名, 行動の種類が同一のゲームログ集合に分割する.

′

5. G = G\G とし, G ̸= Φ であれば 2 へ.
6. で得られたゲームログをイベントとして取得する.

2.4

取得したイベントを用いて直接ストーリーを生成することは困難であるため, イベントとステータスログ(vf,S , vf,L )

(17)

se=′′
(ve1 , ve2 ve1, ve2)

(18)

3

動作実験

3.1

実験条件

実験条件は実験 1, 実験 2 ともに同一の実験条件を用いた. 短編小説の執筆経験がある 20 代の女性 2 名(被験者 A, B) に対して実験した. 表 1 に実験条件を示す.

3.2

ストーリーベクトルの生成=

ここで, それぞれは以下のように求められる.
ii
 vj,S = 1 (fj,t ≤ 30)
ii
(19)
< 70)
vj,M= 1 (30 < fj,t iivj,L = 1 (fj,t≥ 70){
vf,S = a (0 < |∆ft | < 20)(20)
vf,L = a (|∆ft | ≥ 20){
1 (∆ft ≥ 0)
a=(21)−1 (∆ft < 0)j
 2 (eki,t ≥ 5)
vek =(22)1 (ejki,t ≤ −5)j0 (−5 < eki,t < 5)j
 2 (eki,t + ∆ek,t ≥ 5)j′vek =(23)
1 (eki,t + ∆ek,t ≤ −5)j
0 (−5 < eki,t + ∆ek,t < 5)

1. 得られたゲームログ集合を G とする.

4. 分割したゲームログ集合から 1 つずつゲームログを取得し, 前後のゲームログでターンの差が 50未満であるすべてのゲームログから新たなゲームログを生成する. 生成されたゲームログにおいて,ターンおよびシーンはターンの値が小さいゲー
ムログのものとし, 友好度の変化量および感情の変化量は生成に用いるすべてのゲームログの和とする.

s∆ft

実験 1

提案手法を用いて生成されたストーリーベクトルからストーリーを生成してもらった. ストーリーの生成― 994 ―Copyright(C) 2015 The Association for Natural Language Processing.
All Rights Reserved.

図 1: 生成されたストーリーベクトルの例が考えたストーリーに沿って小説を生成することは, 人間にとってそれほど困難ではないと考えられる. 生成方法に関しては, 聞き取り調査からストーリーの前後関係を補完するために文を追加したり, ストーリーに対して理由づけを付加することで文章全体の繋がりを強化していることが分かった. また, 文の前後関係に合わせて使用する動詞や表現方法を適当に変化させていることも分かった.

表 1: 実験条件

xmax × ymax
エージェント数 nエージェント名性別
最大ターン数 tmax
閾値 h120 × 120
3ヒロ, カナ, ユウ
男, 女, 男6000
15

に関して, 被験者には 1 つのストーリーベクトルからストーリーとなる文を 1 文生成するよう制限した. また, 被験者の負担軽減のため, ストーリーベクトルの生成数が 10 以下の結果を, 人間が理解しやすいように変換し利用した. 実験は 2 回行った. 図 1 に提案手法を用いて生成されたストーリーベクトルの例を示す.
結果と考察 実験後の聞き取り調査において, ストー
リー生成の難易度を 1 (易しい) から 5 (難しい)の 5 段階で評価してもらった結果の平均はそれぞれ A が 3.5, B が 4.0 であった. このことから,提案手法を用いたストーリー生成は短編小説を書いたことがある人間にとっても困難であることが分かった. その原因については, ストーリーベク
トルに各登場人物の性格や小説における役割, 登場人物間の関係性について明示されていなかったためだと考えられる. これは, 聞き取り調査において登場人物のキャラ設定や関係性を把握してからストーリーを生成するという意見を得ていることからも確かである.

3.3

実験 2

実験 1 で生成してもらったストーリーを用いて実際に小説を書いてもらった. 小説の生成に関して, 必要最低限の要素で小説を書いてもらうためにストーリー
1 文に対して 140 字以下という制限を与えた. 実験 1と同様, 実験は 2 回行った.
結果と考察 実験 1 と同様に小説生成の難易度を 5 段階で評価してもらった結果, それぞれの平均が, Aが 1.5, B が 2.0 であった. このことから, 自身

4

まとめと今後の課題

本研究では既存の小説を利用しない小説の自動生成を最終目標として, 既存の小説を利用しないストーリーの半自動生成手法を提案した. また, 実際に提案手法を用いて人手で生成した小説を解析することで小説の自動生成に必要な要素を考察した.
今後の課題として, 執筆経験がある人間のみだけでなく, 執筆経験のない人間を含めた多数の被験者に実験し, 小説の生成手法に対する更なる知見を得ることが挙げられる.
なお，本研究は一部，日本学術振興会科学研究補助
金基盤研究 (C) (課題番号 26330282) の補助を得て行われたものである．

参考文献[1] 松原仁, 佐藤理史, 赤石美奈, 角薫, 迎山和司, 中島秀之, 瀬名秀明, 村井源, 大塚裕子: コンピュー
タに星新一のようなショートショートを創作させる試み, 第 27 回人工知能学会全国大会, 2D1-1(2013)[2] 香山卓, 角薫: 星新一の物語を利用したユーモアのある物語生成システムの考察, 第 28 回人工知能学会全国大会, 1C2-OS-14a-4 (2014)[3] 今渕祥平, 小方孝: プロップ理論を包括するストーリー生成機構の開発の現状と課題, 第 28 回人工知能学会全国大会, 2F4-OS-01a-3 (2014)― 995 ―

Copyright(C) 2015 The Association for Natural Language Processing.
All Rights Reserved.