見出し画像

日本ハンドボール選手権大会の戦評を自動生成してみた

これは「スポーツアナリティクス Advent Calendar 2020」11日目の投稿です。

けんざぶです。2年目の #spoana アドベントカレンダーですね。
昨年のアドベントカレンダーで、

先に述べたマッチレポートの下に戦況という欄がありますが、これは(個人的に)自動生成の対象ではないかなと思います。述べられていることを整理すると、スローオフチーム、時間ごとのスコア、点差が付いた時の得点者、シュート失敗/阻止、退場、タイムアウト。Play by Playなどでデータ化しやすい部分です。

と書きました。時は流れて今年12月上旬、ハンドボールの日本選手権を見ながらアドベントカレンダーのネタを考えていたときにこのことを思い出したので、今回はこれに手を付けてみようと思います。
ヘッダーは今年9月の日本リーグを見に行ったときのやつです。プレー中のは全然撮ってないですが。


ターゲットを決める

本題に戻ります。
とりあえず、どんな戦評を出したいかの前に、どんな戦評が出力されているかを知らなければいけません。先ほどの記事中でも若干触れていますが、JHA(日本ハンドボール協会)/JHL(日本ハンドボールリーグ)関係のサイトには試合ごとに、
- スコア詳細(スコアシート)
- 戦況
という2種類のPDFが掲載されています。
参考 (選手権ページ 、JHLページ )

この2種類を見て、
- Inputはスコアシート
- Outputは戦況(っぽいの)
と、方針を決めました(時間もないし)。

画像1

前述の選手権ページのスコア詳細PDFの一部。赤枠のところをInputにする。

分析

とりあえず、戦況文章をかき集めて、どんな文章が書かれているかを調べます。今回はInputがスコアシートと決めてしまっているので、かき集めをしながら「これならOutputできる」というものだけに絞ります。

今回のOutputできそうなものリストはこんな感じ。
- スローオフ
- (特に以下の)得点シーン
    - 先制
    - 連続で得点したとき
    - 点差に関する表現(同点、勝ち越し、…)
- タイムアウト
- 試合終了のスコア

生成

流れは以下。
- 試合やスコアシートを見てcsvをこしらえる。
  スコアシートの得点欄や結果欄を各種フラグ列として持つ
- 併せて、文のテンプレをつくる
- pythonくんにcsvを食わせる
- 得点などのフラグが立ってる行を見つけては対応するテンプレと照合。
  言葉の置き換えをして文にする
- 吐き出した文章を見てぼくがニッコリする

結果

こんなのとか(ニッコリ)、

画像2

こんなのが出せました(ニッコリ)。

画像3

課題

しかし、ただニッコリしてるだけにはいきません。
お気づきでしょうか。特に試合を見てた方、律儀に前述の選手権ページを開いてくださった方ならわかると思いますが、今回の対象試合は試合終了7秒前に豊田合成がついに逆転して勝利した、日本選手権の決勝です。
前述の戦況ページでは、

残り2分半の熾烈な攻防は残り7秒でバラスケスが豪快なミドルで勝ち越し、初のリードを奪う。大崎電気も最後の攻撃でノータイムフリースローを獲得するが、無情にも枠外に外れて涙を飲んだ。

と、ドラマチックな試合であったことが(当然キチンと)記述されています。

では、今回つくったやつをどう発展させればいいでしょうか。
まず1つ目の作戦としては、「超速報として出すから(ほぼ)このままでOK」でしょう。Inputをスコアシートと同レベルにしているので、入力さえクリアできれば、試合終了から時間を置かずに出力できるはずです。

もうひとつの作戦は、やはり「出力が濃くなるように頑張る」しかありません。正直言って、たとえば「念願の」や「うれしい」など、感情に関する言葉が出力できるかどうかについては(現時点では)期待していません。「この場面は誰がどう見ても『うれしい』に決まってんだろ!」と半ば強引にGOサインを出すなら別ですが。というわけでそのほかの(実現が可能そうな)「濃い出力」のために必要な要素を分解して挙げていこうと思います。

まずは、「入力の細分化」です。
これは「ミドル(シュート)」、「カットイン」などのアクションを1つずつ丁寧に入力すれば解決します。ただし、入力するためにアクションの判定ができることが必要で、入力にかかる時間が増えます。

そして、「競技に使われる言葉に対する理解度の強化と定義付け」がめちゃくちゃ重要です。
現時点でもすべての得点シーンの文を作ることは可能ですが、戦評としていくつかの場面を取り上げるなら、どの場面が重要かを決める必要があります。既に取り上げたように、「連続得点」や「逆転・勝ち越し」など、尺度もいくつかあり、どこに重みを持つかも検討する必要があります。しかも、同じ言葉でも野球、サッカー、ハンドボール、それぞれで重要度が異なってくるので個別に定義が必要になります。
当面のスコアシートベースの入力で考えると、入力した段階で最大点差をチェックしたり、任意の時間帯で区切ってその間に入った得点を並べてみたり、タイムアウト明けなどの得点以外のイベントに近い場面を取り上げてみたり、などなどの要素で取り上げて、それに対して定義を付けていく形になりそうです。

感想

というわけで、今回はハンドボールのスコアシートから文を出してみることをやってみました。以前から野球の戦評を自動生成することに取り組んでいましたが、改めて競技ごとの違いに触れて難しさと面白さを感じました。こうした戦評生成に関する取り組みをやって気づいたことは、自分は戦評などの文章データから「人間がスポーツのどんな場面に興味をもっているのか」が知りたいんだなということです。この疑問について、既にある程度明確だったり、別のアプローチがあったりするかもしれませんが、自分の興味をまた深めていければいいなと思います。

日本ハンドボール選手権大会は女子の部が今月23日~27日に開催されます。
(http://handball.or.jp/game/2020/nihon_senshuken_w.html )
この時までにもうちょっといい感じの生成ができるようになるかはぼく次第ですが(小声)、それ関係なしに面白い試合が見れると思いますので、是非YouTubeで配信を見てください!!!(大声)

この記事が気に入ったらサポートをしてみませんか?