今夏の第100回全国高等学校野球選手権記念大会は、いつにも増して大きな話題となりましたね! 私ももちろんTVでワクワクしながら観戦していましたが、そんな試合の結果以上に私の関心を強く引きつけたのは、その試合の戦評記事を自動生成していたAI記者「おーとりぃ」でした(関連記事『AI記者が高校野球の選評記事を自動生成 - 朝日新聞とみんかぶ』)。

AI記者であるおーとりぃは、スコアブックを読み込むことにより、戦評記事を一瞬で生成することができるそうです。しかも、試合の流れを淡々と説明するのではなく、勝敗が決まったシーンを特定し、注目すべきプレイや選手を特定して文章を作成しているため、短文にも関わらず要点を押さえた明快な文章となっています。

おーとりぃが書いた戦評記事は2018年9月現在、まだ公開されているので、ぜひ一度読んでみてください。

おーとりぃの仕組みについては、「戦評記事とイニングを組み合わせたデータを約8万通り学習させた」と説明されていますが、具体的な学習方法までは公開されていません。そこで今回は、どのようにすればAIでこうした戦評記事を作成できるのか、想像を交えながら考えてみたいと思います。

おーとりぃの戦評で注目すべきは、決して長くない記事のなかに、「総評」「イニングに対する戦評」「注目選手に対するコメント」のようなさまざまな情報が盛り込まれていることです。しかし、異なる情報を組み合わせ、目的の異なる文を一度に生成しようとすると処理が難しくなります。現実的なのは、情報の種類ごとに文を生成する方法でしょう。

今回は、「総評」と「イニングに対する戦評」の2種類について考えてみたいと思います。なお、ここで説明するのはあくまで考え得る手法の一例で、実際におーとりぃで使われているものとは異なる点にご留意ください。

戦評記事を生成するための「データの準備」

試合の総評とは、1試合の結果を丸ごと表現する”一言”です。例えば「〇〇選手の好投により〇〇を0点に押さえ、〇〇が快勝!」というような文がそれに当たります。

おーとりぃでは約8万通りの戦評記事とイニングを組み合わせたデータを使っているということなので、私たちもこのデータは自由に活用できるものと想定して考えていきましょう。

まず、イニングごとではなく、各試合のスコアブックごとに戦評記事(のデータ)を付与しておきます。次に、戦評記事を書きたい試合のスコアブックと過去のスコアブックを照らし合わせ、最も似ていると思われるスコアブックを推定します。そして、推定されたスコアブックに付与された戦評記事から総評部分を抽出し、それを基にもうひと工夫することで、今回の試合に合った総評を作成できそうです。

準備したデータを元に、記事を書きたい試合のスコアブックと過去のスコアブックを比較して似ているものを探し出す

例えば、抽出してきた総評が「[A]選手の好投により[チーム名1]を0点に押さえ、[チーム名2]が快勝!」であった場合、総評の中のチーム名や選手名のような固有名詞を変更しなければなりません。この変換まで自動で行うには、「チーム名1」には勝ったほうのチーム名を入れるのか、負けたほうのチーム名を入れるのかを判定したり、選手名「A」にはどちらのチームの、どの選手の名前を入れるのかを判定したり、といった別の判定機構も必要になります。

少々工夫は必要なものの、こうしたやり方で総評を作成することは可能です。しかし、この方法では「決勝に駒を進めた」というような、そのときの状況を踏まえた文は出力することができません。そういった部分については、ある程度ルールで記述しておかなければならないでしょう。

また、もしそもそも戦評記事とイニングを組み合わせたデータを持っていないのであれば、それを作成するところから始める必要があります。

イニングに対する戦評

次に、イニングに対する戦評を出力する方法を考えてみましょう。ここでは課題を次の2つに分解して考えます。

  1. 戦評を出力するイニングを特定
  2. イニングに対する戦評を生成

まずは、どのイニングに対して戦評を出力するべきかを推定します。

もし、約8万の戦評記事とイニングを組み合わせたデータに対し、各イニングがどのくらい盛り上がったかもデータとして付与されていれば、それをそのままコンピュータに学習させればよさそうです。

そこでイニングごとに、盛り上がったかどうかを示すフラグとして、盛り上がっていれば「1」、盛り上がっていなければ「0」を付与しておきます。このデータを機械学習でコンピュータに学習させるわけです。これは、各イニングを「盛り上がっている」か「盛り上がっていない」かの2つに分類する問題だと考えることもできます。

入力はイニングで、出力は盛り上がっているかどうかの確率値となります。例えば出力が「0.7」ならばそこそこ盛り上がっていると考えられますし、「0.3」ならばそんなに盛り上がっていないと考えることができるでしょう。こうすることで、どんなイニングの状況なら、どのくらい盛り上がっているかを推定することができるようになります。

「各イニングが盛り上がっているかどうかのフラグを立てたデータ」を学習したモデルを作成/利用することで、判定したいイニングの盛り上がり度を推定できるようになる

これで、盛り上がっているイニングを判定できるようになりました。次は、各イニングに対する戦評を生成する方法を考えましょう。

ここでまた、約8万通りの戦評記事とイニングを組み合わせたデータを用います。今度はイニングごとに戦評を生成するためのデータが必要です。そこで、「イニング開始時のスコア」と「イニング終了後のスコア」、そして「イニングの状況」に対して、そのイニングに関する戦評を結びつけておきます。

こうしたデータを準備することができれば、例えばディープラーニングを用いて、該当のイニングに対する「イニング開始時のスコア」「イニング終了後のスコア」「イニングの状況」から戦評を自動で生成するように学習することが可能になります。

* * *

今回は、野球の試合の戦評記事を自動生成するためのアイデアをいくつか出してみましたが、どれも「戦評記事とイニングを組み合わせた約8万通りのデータ」があることが前提です。お気づきのように、AIを開発するために最も大切なものはデータです。AIで記事を生成するためのアイデアはたくさん出せますが、そもそも元となるデータがなければ何もできません。

昔は何に使えるのかわからなかったようなデータも、現在は非常に価値のあるものになっている可能性があります。ぜひ一度、身近にあるデータを見直してみてください。今まで見向きもしていなかったデータから、とても役立つAIを開発できるかもしれません。

著者紹介


株式会社NTTドコモ
R&Dイノベーション本部 サービスイノベーション部
大西可奈子

2012年お茶の水女子大学大学院博士後期課程修了。博士(理学)。同年、NTTドコモに入社。2016年から国立研究開発法人 情報通信研究機構 研究員(出向)。2018年より現職。一貫して自然言語処理、特に対話に関する研究開発に従事。人工知能(主に対話技術)に関する講演や記事執筆も行う。
著書に『いちばんやさしいAI〈人工知能〉超入門』(マイナビ出版)。
twitter:@WHotChocolate