ブログ

火事と喧嘩は江戸の花だが – 下町ディープラーニング #2

みなさんこんにちは。dottの清水です。

前回の記事「人工知能の3尺3寸」では災害や事故などの「危機管理情報」を扱うニュースを判定する「NewsPic」というシステムの概要について説明しました。

元々あった自動化の仕組みの課題を解決するため、株式会社レスキューナウ(以下、RSQ社)様と一緒に新しい自分たちだけのAIを作ろうという試みが始まり、ルールベースでは難しく、機械学習・ディープラーニングを利用するという方針が決まったのが前回までのお話です。

最終的にこれまで約77%だった正解率(危機管理情報とそうでないものを、正しく判定できた割合)を約85%に改善することができたのですが、今日はルールベースでなぜうまくいかないかという話をしたいと思います。

文章分類ゲーム

唐突ですが、まず以下の「二つの文章を分類するルール」を作るゲームをやってみてください。プログラムの知識がなくてもできるので、なぜルールベースでの文章分類が難しいのかを体感してもらえればと思います。

A「15日未明、​​新浜市港北ニュータウンで大規模な火事があり、少なくとも50人以上が重症、20名以上が火傷などの軽い怪我を負っています」
B「新浜市議会議員選挙には、現職・新人合わせて30名の候補者が出馬しました」

Aは負傷者数の情報があるニュースなのでNewsPicでは危機管理情報として判定したいもので、反対にBは死傷者や建物等の被害もないため不要なニュースです。

みなさんは何に注目してAだけを抽出するルールを作りますか?

自分で考えてみると…

まず単純に考えて「火事」などの災害に関するものと「怪我」「重体」という被害の種類に関連するキーワードがあれば危機管理情報として扱うというルールを思いつきました。これなら少なくともAとBのニュースを選別することができそうです。

火事か被害か

では以下の文はどう分類されるでしょうか?

C「昨日発生し、多くの怪我人を出した新浜市港北ニュータウンでの大規模な火事について、新浜市長は記者会見を開きました」

Cは火災が発生した後で記者会見が行われたことを伝えるだけのニュースなので、不要な情報としたいところですが、先ほど考えた「火事」や「怪我」というキーワードでニュースを抽出するルールでは、このCのニュースも抽出されてしまいます。

苦肉の策として「記者会見」という単語があった場合ニュースを除外するというルールを作成したとしても、Cの文章の後に「記者会見によると、死者は53名、負傷者は83名、約100棟が全焼したとのことです」といった文章が続けばまたルールが破綻します。

NewsPicで抽出したいニュースはあくまで「人や建物にどれだけ被害があったのか」という情報を持っているニュースなので、「火事について書かれているか」という観点だけではなく、「火事による被害の内容について書かれているか」という基準で取捨選択する必要があります。

このことがゲームを複雑にしている原因であり、RSQ社に必要なAIにオーダーメイドが必要だという理由そのものです。

ハウルの動く城

このシンプルなゲームでも、ルールベースで文章を分類しようとすると、複雑で膨大な量の計画と定義が必要になりそうだということがわかります。キーワードマッチだけではなく、もう少し高度な、例えば「係り受け解析」などをしたとしても同じことが言えます。

もしそれを開発できたとしても「ハウルの動く城」のように複雑で大きなものを運用することは明らかなアンチパターンだと思いますし、他の方法を考える必要がありました。

それが機械学習・ディープラーニングによる自然言語処理です。

機械学習での文章分類

機械学習を利用した文章分類では「ルールを人間が決めない」ということが、ルールベースなどと比較して最も異なるところです。

ディープラーニングでの自然言語処理をする場合、研究開発の初期に用いた「Word2Vec」や「Doc2Vec」、そして現在運用状態にある「BERT」などの仕組みを使うことが多いと思います。それぞれ仕組みは細かく見れば違いますが、どれも基本的な流れは以下のようになっています。

  1. データに正解のラベルを付ける、またはラベルがある
  2. データを学習させ、モデルを作成する
  3. モデルを使って、新しいデータを分類する

もちろん性能の良いモデルを作るために試行錯誤しますが、ルールについて人間が作成することはありません。

前半にも書いた通り、これまで約77%だった正解率を約85%に改善することができたので、機械学習・ディープラーニングを利用した自然言語処理の分野がいかに進歩したかがわかります。

ただし、モデルの評価を測る際や実際に使う時に大切なのは「正解率」だけではありません。

その話はまた、次回の記事で。