Japan
サイト内の現在位置
AIは『羽生さん』を区別できるのか?
2021年1月8日
はじめに
NEC AI・アナリティクス事業部の長城です。2018年に入社以来、製造業やエネルギー業・鉄道業界など、複数の業界のお客様とデータ分析を伴う机上検証を担当しています。プライベートでは、藤井二冠の活躍を見て、将棋ニュースをチェックするようになりました。また、幼いころから親の影響でフィギュアスケートもよく見ており、各大会をTVで観戦しています。
将棋の世界でもフィギュアスケートの世界でも「羽生さん」が活躍しているように、現実世界では異なる意味でも同じ表記となる語句(同形異義語)が存在します。自然言語処理の手法は近年急速に発展していますが、このような同形異義語の区別は課題の1つとなっています。そこで、今回は2020年12月25日のツイートを分析して、羽生(はにゅう)結弦選手と、羽生(はぶ)善治九段を機械はどのように区別できるかを考えたいと思います。
(本記事での敬称は公開時期の2021年1月のものとなっています。)
2020年12月25日は何の日なのか
クリスマスで楽しいツイートを見たかったため…ではなく、この日は2人の羽生さんが活躍した日であったためです。羽生結弦選手は、全日本フィギュアスケート選手権2020のショートプログラムに出場し、1位となりました。羽生善治九段は、順位戦A級で豊島竜王と対戦を行いました。近年では将棋中継にてリアルタイムでAIが各棋士の勝率を推測するのですが、そのAIでは羽生善治九段の勝率が90%を超える中、羽生善治九段が投了するという、劇的な対戦でした。
このように、このお二方はまれに同一の日に話題となります。2018年2月17日には、平昌五輪にて羽生結弦選手が金メダルを取りましたが、同日に羽生善治九段は藤井聡太五段(当時)と公式戦初対局を行いました。この日のTwitterでは、「羽生さん」がトレンドとなり、宇野昌磨選手や藤井聡太二冠も含め、だれが強いのかというネタツイートも話題となりました。
そこで、本記事では、12月24日12:00~12月26日10:00に投稿された「羽生」を含むツイート約35,000件を、Twitter API[1]を用いて収集し、分析を行いました。
羽生くん?羽生さん?-敬称の差をチェックする
僭越ながら、私は羽生結弦選手のことを「羽生くん」(もしくは、結弦くん)、羽生善治九段のことを「羽生さん」と呼んでいます。このようにこのお二方は敬称の違いがあるのではないか、と考えました。
「図1 使用されている敬称上位10件」は、収集したツイートの本文から「羽生」に続く2文字を抽出し、その出現数を示しています。なお、「君」を用いている場合、その直後の1文字により結果が分散してしまうため、「羽生君」に集約をしています。

「図1 使用されている敬称上位10件」より、「羽生」には、「くん」「選手」「さん」「君」「先生」が敬称として使われているようです。個人の感覚では、「くん」「選手」「君」は羽生結弦選手に、「先生」「九段」は羽生善治九段に使用されていると考えます。(なお、「羽生社長」は、同一日に東京ヴェルディの社長が辞任しており、そのニュースに関するツイートでした。「羽生スピ」は同一日の羽生結弦選手のスピンが0点となったことに対するニュースのタイトルの一部でした。)
そこで、「羽生くん」「羽生結弦」「羽生選手」「羽生君」を含むツイートを『羽生結弦選手ツイート』とし、「羽生先生」「羽生九段」を含むツイートを『羽生善治九段ツイート』とし、それぞれのツイートに出現する単語をワードクラウドで示してみます。


ワードクラウドでの頻出語を見ると、確かに敬称でお二方が区別されていることが分かります。例えば、「図2 『羽生結弦選手ツイート』のワードクラウド」では、「全日本フィギュア」や「宇野昌磨」「ジャンプ」など、フィギュアスケートに関係する言葉が頻出しています。なお、「メッセージアプリ」や「画像」という言葉が多くあるのは、味の素さんのツイート企画にて、羽生結弦選手のメッセージ入り画像が届く企画が行われており、その関連のツイートが多くあったためだと分かりました。
比較して、「図3 『羽生善治九段ツイート』のワードクラウド」では、「順位戦」や「豊島将之」のように将棋に関する単語が見受けられます。「クリスマス」が含まれているのは、羽生善治九段がクリスマスに豊島竜王と過ごすということがネタになっていたためですかね。
さて、羽生結弦選手は「羽生くん」や「羽生選手」、羽生善治九段は「羽生先生」等と敬称で区別されている様子が分かりました。しかしながら「羽生さん」は双方で使用されているようです。人間はこの「羽生さん」について、同じツイート内で使われている単語等からいずれの(もしくは他の)羽生さんであるかを区別できます。機械は「羽生さん」を分類できるのでしょうか?区別する際にはどこを確認しているのでしょうか? BERTを用いて、確認したいと思います。
BERTとは?
BERTは、Googleが発表した自然言語処理の手法であり、Google検索等にも使用されています。従来の手法(特にディープラーニング)では、膨大な文書を解きたい問題に応じて学習させ、モデルを作成していました。一方でBERTは、膨大な文書で学習したpretrainモデルに対して、比較的少量のデータを用いて、解きたい問題に応じて追加学習することで、解きたい問題に対する高精度なモデルを作成することができます。
機械は「羽生さん」を区別できるか?
今回は『羽生結弦選手ツイート』と『羽生善治九段ツイート』を学習させ、「羽生さん」を含む『羽生さんツイート』を分類させてみます。

分析の全体の流れは、「図4 モデル作成と推測の流れ」のようになります。学習データは以下のように作成しました。まず、ラベル付けを行います。今回は、「羽生善治九段」であることを判別するモデルを作成しようと思いますので、『羽生善治九段ツイート』のラベルを1、『羽生結弦選手ツイート』のラベルを0としました。次に、ノイズを除去します。今回は同一ツイートに両方のラベルが付与されてしまうツイートが存在したため、それらを削除しました。(「羽生結弦選手と羽生善治九段が「羽生さん」としてトレンドになっている」などの意のツイートなどです。)最後に、『羽生結弦選手ツイート』が25,954件、『羽生善治九段ツイート』が894件と、件数に大きく差があったため補正します。(想定外に、羽生九段に関するツイートが少なかったです…。)今回は単純に『羽生結弦選手ツイート』からランダムに894件を抽出し、件数を揃えました。このように件数を揃えることで、精度向上を期待します。このようにして作成した学習データ1,788件を用いて分類モデルを構築します。そして、構築されたモデルを用いて、「羽生さん」を含むツイート4,706件に対し、各ラベルである確率を推測してみます。

推測した結果のスコアのヒストグラムを「図5 スコアのヒストグラム」に示します。このスコアが1に近いほど「羽生善治九段ツイート」である確率が高く、0に近いほど「羽生結弦選手ツイート」である確率が高いということになります。そこで、スコアによりツイートを分割し、分割したツイートの頻出語をワードクラウドで表現することで、この推測が適切か否かを検証したいと思います。


「図6 スコア0.8~1.0であるツイートのワードクラウド」を見ると、「将棋」や「順位戦」が頻出しており将棋に関するツイートが多くあるようです。ただし、「上杉謙信」や「天と地と」など、羽生結弦選手に関する語句も含まれています。これは、収集したのが12月25日のショートプログラムの日であったため、羽生結弦選手に関するツイートの多くがショートプログラムに関するツイートであり、フリープログラムに関するツイートはうまく学習できていないのかもしれません。(「上杉謙信」は、羽生結弦選手のフリープログラム利用曲が「上杉謙信」をテーマにした大河ドラマ「天と地と」であったために出てきた語句と考えられます。)対して、「図7 スコア0.0~0.2であるツイートのワードクラウド」では、「衣装」や「演技」「ジャッジ」などフィギュアスケートに関する語句が頻出しています。このワードクラウドから、BERTでも「羽生さん」の区別ができているのではないかと考えます。

次に精度の評価を行います。簡易的に正解データを作成するため、将棋に関する語句(将棋、棋士、先手、後手、AI診断、A級、abema、順位戦、豊島、竜王)を含むツイート148件を「羽生善治九段ツイート」の正解データとしました。この時のROC曲線を「図8 ROC曲線」に示します。ROC曲線とは、縦軸に真陽性率(True positive rate。正しく1と判定した割合)、横軸に偽陽性率(False positive rate。誤って1と判定した割合)を、真偽を判定する閾値毎にプロットしたものであり、左上であるほど良い精度と言えます。この時のAUC(曲線より下の面積。最大が1であり数値が大きいほど精度が高い)は0.928であり、今回構築したモデルは、精度が高いモデルであると言えます。実際にスコア上位のツイートを見てみると、順位戦の中継を見ているツイートが多く含まれておりました。中には「自分は将棋では羽生さんに勝てる」という意味のツイートや、佐藤天彦九段との名人戦を思い出しているツイート等、順位戦には直接関係のないツイートであっても「羽生善治九段ツイート」と判定しており、機械でも「羽生さん」の区別ができていると考えられます。

最後に、BERTの判定にどの語句が使用されているのかを可視化してみます。「図9 「羽生善治九段ツイート」推測でBERTが着目したトークン上位10件」では、BERTが推測で各トークン(語句)に着目した度合いを示したものです。「竜王」や「治」(「羽生善治九段」の一部と思われます)等、直接将棋を示しているものや、「残留」という順位戦に関する語句に着目するなど、人間と同じような語句に着目して「羽生さん」を区別していることが分かります。

また、「図10 各ツイートの注目スコア可視化結果(一部抜粋)」では、各ツイートに対して、着目スコアが高い語句ほど濃い赤で示した可視化結果を示します。「順位戦」や「豊島」などはもちろんですが、「手数」や「飛車」「8七歩」など将棋に関する語句に着目していることが分かります。
おわりに
今回は、2020年12月25日のツイートを基に、BERTで「羽生結弦選手」と「羽生善治九段」が区別できるのか?区別する際にどこに着目しているのか?を分析してみました。その結果、BERTでも将棋に関する語句に着目して「羽生さん」を区別できることが分かりました。このように同形異義語にも着目することで、より文章の意味を考慮することができ、応用手法(例えば、チャットボットなど)の精度向上にもつながると考えます。自然言語処理技術のさらなる発展に期待ですね。併せて、「羽生さん」のご活躍も期待しています。
参考文献・サイト
執筆者プロフィール

長城 沙樹(ながき さき)
AI・アナリティクス事業部 データサイエンス部
2018年NEC入社。現在はエネルギー業や製造業、鉄道関係のお客様を対象したデータ分析業務及び提案活動に従事。プライベートではライブ参加とボードゲームが趣味。最近では将棋とフィギュアスケートのネットニュースは見逃さないにわかファン。