ブログ

餅は餅屋がよし – 下町ディープラーニング #16

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

 さて、前回に引き続き、今回も固有表現抽出(NER)の話で、これでこの話も最後です。

 「風林火山」では文章から情報を抽出する際に、汎用的な仕組みを使って抽出することには限りがあり、自分たちで必要な情報に合わせてNERを行う仕組みを作ることが良い場合があるという話をしました。

 今回は自分たちで作成したAIモデルを使って抽出した情報の欠片を、どのようにして価値のある状態にまとめるのかというお話です。機械学習という技術は使いようで、複雑な理解の問題をシンプルな構造の問題に落とし込むところまでを任せ、その後は従来のロジックで処理する方法が、特にデータが少ないような下町の現場では効率的だというお話です。

 前回に引き続き、今回の記事にも2019年の台風19号の被害に関する文章を例に用いています。この台風ではdottの郡山オフィスがある福島県郡山市をはじめ、東日本のさまざまな地域に大きな被害をもたらしました。被害に遭われた皆様に、謹んでお見舞い申し上げます。

欠片だけでは意味がない

 図のように被害の種類と規模を抽出できるようになっても、 まだまだ人間の脳みそがやっている処理は高度だというのが前回までの話でした。

 例文はシンプルな構造をしているため、救助は4名、死亡が7名、行方不明が1名だという情報を読み取ることができます。

  では「負傷者と死者は3人と1人」という文章ではどうでしょうか?

頭は無意識に処理をする

 種類と規模が交互に出てきますが、人間の脳はとてもよくできていて「負傷者が3人、死者は1人」とこの場合でもほぼ苦労なく理解できることがわかります。

 もう少し見てみましょう。「負傷者と死者はそれぞれ3人」という文章はどうでしょうか?

 この場合は「それぞれ」という言葉がとても便利な役割を果たしていて「3人」が負傷者と死者に掛かっているということがわかります。この場合は文章から「負傷者が3人、死者も3人」という情報を得ることができます。

 最後にもう一つだけ「負傷者と死者は合わせて3人」という例を挙げてみます。

 もうみなさんお分かりかと思いますが、この場合「3人」が負傷者と死者に掛かっているのは同じですが、掛かり方が違います。この場合は「負傷者と死者を合計して3人で、内訳は不明」という情報を得ることができます。

人生色々、数も色々

 文章の中から、被害の種類と規模を示す単語がわかったとしても、それを情報として解釈するためには、その他の単語から当該情報を結びつける作業が必要です。

 一般的にはこの問題を解くために「掛かり受け解析」と言って、単語と単語がどのように関係しているかということを自然言語処理の仕組みを使って得ることができる仕組みがあるので、その方法を利用してこれは「それぞれ」の数字なのか「合わせて」の数字なのか、はたまは通常の数字なのかを紐解いていくことができます。下の図は「Google Natural Language API」を使用して掛かり受け解析を行ったものです。

 しかし固有表現抽出(NER)を行うAIモデルを自分たちで作る場合「どのような固有表現をどのようにカテゴライズするか」はこちらで自由に決めることができますので、情報抽出に必要なそれぞれの役割ごとに被害規模を表す数字を、それぞれのカテゴリーとしてラベルをつけて学習を行います。

固有表現抽出は単語分類?

 文書分類のことを「Sequence Classification」つまり「一連の文章のクラス分類」と呼び、NERは「Token Classification」つまり「単語(Token)のクラス分類」と呼びます。つまり、文章分類の方は文章全体のカテゴライズを学習するものですが、NERは単語のカテゴライズを学習するものであるとも言えます。

 dottで採用している方法では、BERTを用いてNER向けのモデルを作成するため、BERTの長所である単語と単語の前後関係などを加味した上で単語のカテゴリーを学ぶことができます。

 そのため「合わせて3人(Total)」なのか「それぞれ3人(Each)」なのか、数字の前後を把握した上でカテゴリーを判別するということができるわけです。

それぞれの技術を効率よく生かす

 ここまで機械学習の力を使って、従来複雑な文章の解析問題をシンプルな構造と値の解析問題に落とし込むことができました。

 このようにある程度シンプルな状態になれば、その先はルールベースで処理を行うようにしたとしても、多くの例外処理が必要になるわけではありませんし、むしろ従来のロジックが得意とする分野だと思います。

 僕たち下町の町工場では、巨大なデータセットもなければ湯水のように使える予算もありません。

 しかしその中でも技術が持っているそれぞれの特徴を活かし、現実的で、そして効率の良いものを作ることを目指しています。餅は餅屋ということですね。

 さて、今回で固有表現抽出(NER)のお話は終わりです。

 さて次はどんなことを話しましょうか。これまでは下町の工場としての戦略というか、研究開発の方針と解決方法について話してきましたが、今度は実際にどうやって動かしているのか、下町ならではのインフラ事情についてでもお話ししましょうか。

 どんな話になるのかはまた、次回の記事で。