ブログ

京の夢 大阪の夢 – 下町ディープラーニング #13

下町ディープラーニング

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

 前回までは「認知症ちえのわnet」のお話しでしたが、今回は初回から第4回まで続いた「NewsPic」のお話の続きにあたるもので、ニュース記事の分類だけではなく、その文章の中の内容(固有表現)を解析して、より深く知識を獲得するためのAIのお話です。

 以前の「NewsPic」のお話では「BERTによるニュース記事の自動分類」という内容の開発を行なっていました。これは「クラス分類」英語では「Classification」と言って、動物の画像判定であれば、入力された画像が犬なのか猫なのかという問題を解くものです。

 しかしこれだけでは、その内容に何が書かれているのかというところまでを把握することはできません。そのためには別の問題を解く必要があります。

なんだとはなんだ

 まず「文章に何が書いてあるか」ということを考える前に、ここで言う「何」とは何かを考える必要があります。

 例えばみなさんが朝ニュース記事を見て、その内容を話せと言われたらどんなことを考えるでしょうか。ちょっとそれらしい2種類の文章を例に見てみましょう。

A『もっとも人的被害が大きかったのは福島県で、死者は30名となった。』 引用 Wikipedia 令和元年東日本台風

B『フェルスタッペンは現行のポイントシステムで最大の34ポイントを獲得した』 引用 Wikipedia 2022年エミリア・ロマーニャグランプリ

 さて、これらの文章を見たときに「何が書かれているか」と言う情報をどのように切り出せば良いでしょうか。どちらも何かの結果として、数字が出てくる文章という意味で似ています。

文章から要素を抽出する

 Aの文章から「何が書かれているか」を抽出しようとすると、以下の要素がメインになると思います。単語と種類を書き出してみます。

  1. 福島県 => 場所
  2. 死者 => 結果の種類
  3. 30名 => 結果の規模

 Bの文章からはどのようなことを取り出せばいいでしょうか。

  1. フェルスタッペン => 人名
  2. 34ポイント => 結果の規模
  3. 獲得 => 結果の種類

 あくまで二つの文章から似たような要素を取り出すようにしてみましたが、「ニュースには何が書いてあったの?」と聞かれてこれらの内容を伝えれば十分だと思います。

固有表現とは Named Entity

 このように文章から抽出できる「人名」などのカテゴリーは「固有表現」英語では「Named Entity」と呼ばれていて、例えば「Google Natural Language API」を使うと以下のように文章の解析が行われます。

 図の中では「PERSON」や「NUMBER」、「OTHER」にあたるものが固有表現と言えます。汎用的な文章解析を用いても、現在ではとても高度な解析ができるようになっているのがわかりますね。

 一般的には「組織名」「人名」「地名」「日付表現」「時間表現」「金額表現」「割合表現」「固有物名」が文章の中に出てくる「固有表現」とされます。

 このように文章から「固有表現」を抽出することを(そのまんまですが)「固有表現抽出」と言い、英語では「Named Entity Recognition」というので「NER」と略します。

何が必要かは場合によりけり

 災害情報とスポーツニュースでは、抽出したい内容が異なります。

 例えば災害情報では「どこで起きたのか」ということはとても重要な要素ですが、スポーツニュースでは試合会場の立地などは、勝敗の結果やスコアに比べると重要ではないことが多いと思います。

 例に挙げたBの文章は、イタリアのイモラという街で行われたF1のレースの結果ですが、4戦目であるドライバーが勝ったということに比べれば、どの街で行われたレースかは(ファン以外には)あまり重要ではないことです。

 しかしAの文章では福島県の死者について言及しており、災害情報の場合は特に読む人の生活に関係している、つまり住んでいるところに関係しているものですから「どこで起きたのか」という視点がとても重要です。

NERのラスト1メートル

 AIで情報収集を自動化する場合、標準的な固有表現を抽出するだけでは特定の目的に必要な情報を得ることが難しいと考えています。

 作りたいものはスポーツの結果を収集するものなのか災害情報なのか、はたまた他の別のものなのか。収集内容によっては感度を上げなくてはいけない単語のグループが出てきます。

 災害情報だとすると、Aの例文では「死者」のような被害の種類に関する情報がとても重要です。しかし一般的な解析を用いると、それが希望に沿った形で抽出されるとは限りません。京には京の、大阪には大阪の夢があります。

 下の画像は、GoogleのAPIを用いて解析を行なったサンプルです。

 「死者」は「PERSON」として抽出されてしまっているため、災害情報を収集するためには少し扱いづらい結果となってしまいました。

 それではどうやってこの問題を解決するのか、それはまた、次回の記事で。