海/が/汚染/さ/れる/ぞ/!
ゲーム内文章を対象にしたテキストマイニングの試み

2017年8月14日
著者:へほくん
Twitter: @bakobepe_ami
 このページは、スクウェアのソフト「ガンハザード」の文章を対象にテキストマイニングを行ってみたという、論文風のWebページです。どこかに投稿したものではありません。この技術に関して著者は素人で、「テキストマイニングでどんなことができるんだろう」と思って手探りで調べながら進めたので、研究半分覚え書き半分といった内容です。ただし、生半可ながら一定の成果は得られたのと、この種の挑戦はまだ誰もやっていないようなので、ここにその結果を公表します。なお、注と参考文献は省いています。正式な論文ではないので。あと、ゲーム内の固有名詞について一切説明がなく、ガンハザードについて知っていることが前提となっている点も異質ですが、その点もご了承ください。
  1. はじめに
  2. 分析の準備
  3. 外部変数を用いた分析
  4. コーディングを用いた分析
  5. 結論

1.はじめに

1-1.テキストマイニングとは

 テキストマイニングとはデータ分析の一手法である。「マイニング」は「採鉱」を意味しており、データの山の中から貴重な情報を発見するイメージからこの名がつけられている。計量テキスト分析とも呼ばれることもあるが、これはテキストの量的な分析ということである。より広義の概念として「データマイニング」という用語もある。どちらも大量のデータを分析し、何らかの発見を行うことを目的としているが、データマイニングが解釈の幅が狭い定量的な数値などを扱うのに対して、テキストマイニングはテキストそのものを対象にするため、対象のもつ意味の多様性が大きい。またテキストをデータ化するためには、何らかの方法で元となる文章を要素に分解する必要がある。
 そうした要素の分解のための手段が、自然言語処理である。テキストマイニングにおいては自然言語処理によってテキストを形態素に分解し、分析可能なデータを取り出す。そのデータに対してはデータマイニングを行うが、結果は図や表など何らかの形で視覚化を行う必要がある。つまり、自然言語処理・データマイニング・視覚化を組み合わせたものがテキストマイニングの過程である。今回用いるKH Coderは、1つでこのすべてを行うことができる。

1-2.テキストマイニングは何に役立てられるのか

 テキストマイニングはどんなデータに用いても等しく効果を上げられるわけではなく、そこには向き不向きが存在する。テキストマイニングが最も効力を発揮する対象は、大まかに言って「大量にあって、何が書いてあるのかわからない文章」である。『テキストマイニングを使う技術/作る技術』では、「休日の過ごし方に関する自由記述のアンケート」「企業のコールセンターの対応の記録」が実例として取り上げられている。これらはまさに上記の条件を満たすものである。
 しかし、これに限らずテキストマイニングには幅広い応用の余地がある。テキストマイニングがどんな文章に用いられているのかを調べるために、KH Coder開発者サイトの「KH Coderを用いた研究事例」を見てみると、多彩な研究が紹介されている。目立ったものを取り上げて分類するならば、「自由記述式アンケート」「口コミ・レビュー」「演説・議事録」「新聞記事」「インターネット掲示板・ツイッター上の発言」「論文」「小説」「漫画」「歌の歌詞」などが対象となっている。本研究ではゲーム内のテキストを創作物として取り上げるので、この中でも小説や漫画、歌の歌詞と対象が近いことになり、これらの研究事例が参考になる。またこの他にも、言語研究の一環として特定の言語の文章を多数集積した「コーパス」を対象とする研究もあり、「コーパス言語学」と呼ばれている。
 これらの対象は、すでにデジタルデータ化されているものとされていないものがある。例えば、インターネット上の口コミや新聞記事、論文などはテキストデータとして始めから利用可能であるが、漫画のセリフに関してはそうではない。テキストデータの存在しない対象の場合は、予め自ら文章を入力する必要があるが、本研究の対象もこれに属する。

1-3.先行研究

 本研究はゲーム内の文章を対象とするが、国内においては同様の対象を用いた先行研究は見られない。これは、ゲーム内の文章のデータを抽出するのが困難であることが理由として考えられる。本研究ではすでに扱うゲームの全セリフを入力済みであるため、これを扱うことが可能となった。また、インターネット上には有志が作成したゲームの「セリフ集」が他にも存在するので、これらを用いれば同様の研究が可能と思われる。
 他方でゲーム研究一般においては、少ないながらテキストマイニングを用いた事例が見られる。吉永大祐の「『四八ショック』とは何だったのか ―インターネット上のゲームユーザーコミュニティにおける『クソゲー』概念とその変容―」では、インターネット掲示板の文章を分析し、「クソゲー」概念の変化を追っている。同著者の「ゲームレビュー集積サイト『Metacritic』のテキストマイニングの試み」においても、ゲームレビューを対象とした特徴語の抽出などが試みられている。こうしたゲームレビューや掲示板の文章はとりわけテキストマイニングが効力を発揮する対象だと思われる。

2.分析の準備

2-1.研究の対象と方法

 本研究では、スクウェアより1996年3月22日に発売されたスーパーファミコン用ソフト「フロントミッションシリーズ ガンハザード」内の文章を対象にテキストマイニングを行う。その際にはデータとして、著者が作成した「フロントミッションシリーズ ガンハザード セリフ集」を用いた。このデータはわずかな漏れはあるものの、ゲーム開始から終了までのストーリー上の文章を網羅的に記載したものであり、当作品のテキストデータとして適切なものといえる。このデータを、立命館大学の樋口耕一氏によって開発されたKH Coderを用いて分析を行った。

2-2.テキストデータの整形

 より分析の精度を上げるため、テキストデータには以下の加工を施した。加工の際にはテキストエディタ「K2Editor」の正規表現による置換を用いることによって、効率的に作業を進めることができた。
  1. ステージ名を表す「ー」に囲まれた文章、音楽を表す「#」以下の文章、画面上の演出を表す「<>」「()」に囲まれた文章を削除する。
  2. オープニングとエンディングに存在するナレーションを削除する。
  3. 各キャラクターの発言から改行を除き、文字送り記号の「▼」の代わりに改行を挿入する。
  4. 各シーンごとに文章を分類するため、それぞれのシーンの冒頭に「エミンゲン」などの名称を与え、h1タグで囲む。タグを集計から除外するために名称の頭に*の文字を付加する。
  5. 発言者ごとに文章を分類するため、発言者の後の「:」を削除し、発言者名をh2タグで囲む。タグを集計から除外するために頭に*の文字を付加。
  6. 以上の加工を施したテキストデータを、1つのファイルに統合する。
これらの加工により、キャラクターの発言のみがデータとして収録される。文章は▼記号の単位で改行されており、発言者とシーンにはhタグが付されている。ただし、文字が自動送りになる場面では▼記号が存在しないので、その箇所には適宜改行を付加した。

2-3.抽出語の調整

「前処理」を実行する前に、形態素解析の誤りが少なくなるよう、「語の取捨選択」から強制抽出の単語を登録した。これらは「アルベルト」「カーネルライト協会」「赤ザメ」「ブロンテス」など主にゲーム内の人物名や組織名、機体名が登録されている。同時に、タグとして追加した「*」を含むシーン名と発言者に関する文字列は、強制抽出する語と使用しない語の双方に登録した。これにより、タグが集計に含まれることがなくなる。
 「前処理の実行」の結果、KH Coderが用いている茶筌による形態素解析は概ね正常に行われていることが判明した。例として、「そんなことをすれば海が汚染されるぞ!」という文章は、「語の抽出結果を確認」を行うと「そんな/こと/を/すれ/ば/海/が/汚染/さ/れる/ぞ/!」と分解されていることがわかる。助詞や助動詞を除く総抽出語数は19,129、異なり語数は3,163であった。当作品のテキストは句読点を含まないものであり、改行も頻繁なため文章構造の解析には不安があったが、形態素の抽出に関しては他の文章と同様の結果が得られるようである。

2-4.抽出語の集計

 まずは、ゲーム内全テキストを対象に、抽出された語を分析した。「抽出語リスト」から「品詞別」「出現回数」を選択し、頻度表を作成した。品詞別頻度表においてはひらがなからなる語は「名詞B」など別で集計されるが、使える漢字に制限がありひらがなが多いというSFCゲームのテキストの性質を鑑みて、これらも同じ品詞としてリストに統合した。漢字一文字の語が分類される「名詞C」についても同様の統合を行った。その結果得られた上位30語の品詞別頻度表は以下の通りである。
表1 名詞・固有名詞・動詞・形容詞・形容動詞の頻度表
表1
 さらに、固有名詞を人名・組織名・兵器名・地名に分類し、発言に含まれる数を集計した。それぞれ数の少ないものは除外してある。なお組織名の「ARS」は「ARS紅海連合軍」が正式名称だが、「ARS軍」と呼ばれるケースが多いので、この名称で登録している。また「(荷電)粒子砲」は「マイクロウェーブ砲」の別名で呼ばれることもあるので、その数も加算した。
表2 固有名詞の種類別の頻度表
表2

2-5.共起ネットワークの作成

 分析の手始めとして、まず文章全体の共起ネットワークを作成してみる。「共起ネットワーク」を選択、最小出現数を30として実行したのが以下の図である。
図1 抽出語すべての間の共起ネットワーク
図1
ここで気づくのが、左下にある「ま」「え」の繋がりである。これは何らかの抽出ミスを意味していると推測できるので、「KWICコンコーダンス」で検索すると、「〜したまえ」「まてっ」という文が多く見つかった。そこで例外的だが強制抽出の語にこれらを加え、結果の修正を図った。その他、このデータにはひらがなや口語的な表現が多いので、抽出語リストの「未知語」に分類されている中から「ぐわ」「ぐっ」「へひゃひゃひゃ」「だいじょうぶ」などを見つけ出し登録した。こうした語の抽出は、とりわけ後で行う口ぐせの発見の際に必要である。
 このように、抽出語リストと共起ネットワークによって、形態素解析で判別しきれなかった語を特定することができた。他方で、この段階で有意味な情報が得られているかというのは疑わしい。上述の共起ネットワークからは「基地」は「攻撃」するもの、「ソサエティ」は重要な単語といったことがわかり、リスト上の単語からもこの作品はどうやら兵器を用いた戦争に関するものらしいということは読み取れる。こうしたことは「作品内容の推定」と呼べるが、そのような情報はこの作品をプレイすれば明らかなことである。小説の場合を考えてみれば、あらすじや用語の手軽な把握は読む際には役立つかもしれないが、それは文学研究としては不十分だろう。そのため、内容の推定を目的にしたテキストマイニングから得るものは少ないように思われる。
 このことは決して、共起ネットワークは有用ではないとか、テキストマイニングの技術には欠陥があるといったことを意味するわけではない。すでに述べたように、テキストマイニングが最も有効なのは「大量にあって、何が書いてあるのかわからない文章」であるが、小説やゲーム内のテキストをというのはその性質上、「何が書いてあるか」については把握がなされていることがほとんどである。つまり、本研究の対象がそのような適切なデータの範囲から外れていることに主な原因がある。ここで必要なのは、データの性質に従って分析方法を工夫することである。そこで以下ではさらなる情報のために、「外部変数」を用いた分析を試みる。

3.外部変数を用いた分析

3-1.外部変数1「シーン」

 上述の通り、hタグで囲んで設定した外部変数は発言のシーン名と、発言者である。物語上で訪れるそれぞれの地域を表すこの「シーン」の語は、公式ガイドブックである『フロントミッションシリーズ ガンハザード ミリタリーガイド』に基づいている。シーンごとに分類することによって、ストーリーの進行に伴う語の変化が見えてくる。まずは、シーンごとの特徴語を抽出する。「外部変数と見出し」から「見出し1」を選択、「特徴語」のボタンから一覧形式で表示した。
表3 シーンごとの特徴語
表3

この表では、シーンと特定のごとの共起関係の強さが表されている。「ツェルネンコ」や「粒子砲」など名詞の場合はそのシーンの目標や主題を示していると考えることができ、動詞からはそのシーンの出来事が読み取れる。たとえばアルハリでは「思う」が多いが、これは当シーンで謎が提示され、それについて慎重に考えていることが受け取れる。
 次に、各シーン間の語の関連を見てみよう。「対応分析」から集計単位を「H1」に設定、最小出現数を20、差異が顕著な語のうち上位50語を表示して、グラフを作成した。
図2 シーンを集計単位とした対応分析
図2
このグラフにより、各シーンに固有の単語が把握できるとともに、それぞれのシーン間での語の関連も見て取ることができる。エミンゲンの1回目と2回目では大統領やアークという共通項があり、マチュピチュ以降のシーンではソサエティ関連の語が多数登場するため、1つのかたまりになっている。他方でサンクトリヒ、アルハリ、シビルスカでは目立ったテーマはないことがわかる。

3-2.外部変数2「発言者」

 今度は、発言者を表す外部変数を使って分析してみよう。「外部変数と見出し」で「見出し2」を選び、値ごとに表示される度数から、各キャラクターの発言回数を得ることができる。以下ではレロスとカゲミツを除いた名前のあるキャラクターの発言回数(タグの数)を集計している。
表4 発言者ごとの発言回数の一覧
表4
ルヴェンの発言数が仲間キャラクターではブレンダに次いで多い、ボンゴ村長がビショップより多く発言しているなど、すでにここから発見できることはあるが、さらにキャラクターごとの特徴語を抽出し、「口ぐせ」を調べた。「外部変数と見出し」で「見出し2」を選び、「特徴語」を表形式で出力した。発言数が少ないと結果が偏るので主要キャラクターに絞った結果、特徴語はこのようになった。
表5 発言者ごとの特徴語
表5
ここで右側のJaccard係数の高いものは、「口ぐせ」とみなすことができるであろう。たとえば係数0.102のリチャードの「仕事」は、55発言中の17回に含まれている。レジネフ大統領の「たまえ」であれば41発言で6回である。名詞を除くと、他にもジェノスの「フッ」および「甘い」、ルヴェンの「思う」、ビショップの「ケッ」などは特徴的である。
 次にシーンと同様対応分析を行いたいが、各キャラクターの発言にその都度タグがついている現状のデータで実行すると、発言が別々にカウントされ、膨大なタグ数になってしまう。そこで一旦、キャラクターの全発言を一箇所にまとめたファイルを作成し、それぞれに1つだけh1タグをつけることで、さらなる分析を可能にした。この別ファイルでは選択するキャラクターは上記16人のみとしたので、全体の語数も減り、抽出語15,066、異なり語2,748となった。集計単位を「H1」に設定、最小出現数を20、差異が顕著な語のうち上位50語として作成したグラフが図3である。
図3 発言者を集計単位とした対応分析
図3
このグラフでは、「ジェノス様」「ロイス様」を繰り返すルークのためにグラフが極端な形になっているので、彼の発言を除外して再度対応分析を行ってみよう。
図3-2 ルーク以外の発言者を集計単位とした対応分析
図3-2
より見やすいグラフとなったと思われる。口調が独特なキャラクターは原点から離れた座標に位置している。主人公のアルベルトよりも、その他のキャラクターの方が平均的な発言内容という点にも着目したい。

4.コーディングを用いた分析

4-1.コーディング・ルールの作成

 ここまでの分析においても、ガンハザードの文章に関する多くの発見が得られたが、以下ではさらなる成果を求めて、「コーディング」を用いることとする。コーディングとは、複数の単語を1つの概念の下にまとめて分析に用いることである。例としては、「亡くなる」「殺す」「死」という単語を「死」というコードにまとめるなどがある。この例からわかるように、コードはその文章の「テーマ」を選択するといいように思われる。また、KH Coderではコーディングのためのルールは単に複数単語を統合するだけではなく、単語の後に「〜してほしい」という語があった場合は要望を表すコードにするといった条件指定が可能で、幅広い目的に用いることができるようである。
 今回は頻出単語表とストーリー展開を参考に、3種類のコーディングルールを作成した。

4-2.コーディングによるクロス集計

 以上のコードを用いて分析を進めよう。まずはコード群1に対し、シーンごとに「クロス集計」を行い、バブルで表示したのが以下の図である。
図4 コード群1のシーンごとの出現頻度の集計
図4
シーンが進むにつれて徐々にソサエティ関係者が現れ、「ソサエティ」の語も見られるようになってくるのがわかるだろう。コードの頻出箇所から、マチュピチュ以降にストーリーの「ヤマ」が設けられているということも読み取れる。他方でコード群1の発言者別の集計は顕著な差異が見られなかったため省略するので、次の図はコード群2とシーンのクロス集計結果である。
図5 コード群2のシーンごとの出現頻度の集計
図5
この図からは、どの場所で戦争が行われているか、危険が存在していたか、人が亡くなったかなどが視覚的に把握できる。アルハリが戦争が最も激しく行われており、他方で民間人への被害は、ボルクタとシビルスカに顕著などである。また、「攻撃的行為」をシーンごとに見ると、目立つシーンとそうでないシーンがほぼ交互に登場することがわかる。これは、シーンごとに主人公の行動を変化させ、展開にメリハリがつけられていることを意味すると解釈できる。
 続けてコード群3をシーンで集計してみよう。
図6 コード群3のシーンごとの出現頻度の集計
図6
見ての通り、ザンボラに印象的なセリフが集中していることがわかる。ではその発言者についてはどうだろうか。次の図の集計には先ほど作成した別のテキストファイルを用いている。
図7 コード群3の発言者ごとの出現頻度の集計
図7

全体的な割合は少ないが、発言者はビショップなど特定の人物に限られることがわかる。「うぐわっ!」とその類似表現は本編中に13回登場するが、断末魔という性質上アークを除けば発言するのは一般兵に限られるため、ここには現れていない。

5.結論

 以上が、本研究で実施したガンハザードのテキストマイニングの結果である。最後に、今回の発見をまとめ、テキストマイニングは何を明らかにすることができるのかということについて考察したい。
 第一に判明したのは、解析結果に対して、何らかの比較の対象を設けないと意味のあるデータは得られないということである。単語の頻度表はすぐに作成できるが、これだけでは何がどのくらい多いのかということは言うことはできず、そのためには他のゲームの分析結果と比較する必要がある。同様に共起ネットワークを用いてもある程度のストーリー予測しかできない。
1つの作品のデータしか用意できない場合、必要なのはそのデータを分類することによって比較の対象を設けることである。今回は、セリフが発せられるシーンと発言者という、2種類の分類を考案した。前者を用いることによって、ストーリーが進展するにつれてどのような変化が起こるのか、どこに転機があるのかということを読み取ることができた。後者はさらに有用な成果をもたらすもので、各キャラクターの発言回数をはじめとして、「口ぐせ」や口調の差異など、他の手段では入手できないデータを得られたといえるだろう。
 これらに加え、コーディングを行うことによってテーマに沿った作品分析が可能となった。ストーリーに関するコードでは、どこに盛り上がりが用意されているのか、展開にメリハリはあるのかといったことを手早く把握できた。同様に登場人物や敵の配置についてや、印象的なセリフの発言者についても理解が容易である。
 この他にも、語の集計で特定の表現が本編中に何回登場したのかを調べたり、発言者ごとにセリフを集約することができる点も、本作品についてのさらなる情報をもたらしてくれるものであった。また総じて、数値だけではなく結果をグラフなどの画像で表示することができる点も、データ内容のより迅速な理解のために大いに役立つと思われる。
 このように、ゲーム文章の解析によっても、テキストマイニングにより得られることは多いというのが結論である。この解析を他作品にも行えば、さらなる比較可能なデータが得られるだろう。その上、ゲームレビューや紹介記事など、別領域のゲーム関係のテキストに対象を広げることもでき、そこでも新たな発見があることが予想される。


もどる