自然言語処理には固有表現抽出と呼ばれるタスクがあります。
機械学習の授業や自然言語処理の研究を始めたばかりのかた、仕事で自然言語処理を必要としている方なら一度は聞いたことがあるかもしれません。
この記事では、固有表現抽出というタスクの内容と一般的な解かれ方、その応用先についてご紹介します。
固有表現を抽出するタスク
固有表現抽出は、その名の通り文に含まれる固有表現を抽出するタスクです。
英語ではNamed Entity Recognition と表記されるため、自然言語処理に携わる多くの人は「NER」と呼ぶことが多いです。
固有表現(Named Entity)は、固有の名前を持つ語句を指しており、一般的には特に名詞に限定した固有名詞を指します。
たとえば「東京」のような地名や「鬼滅の刃」のような作品名などが固有名詞の例として挙げられます。
固有表現抽出では、与えられた文に含まれるこのような固有表現を抜き出すことを目的としたタスクです。
例えば以下の文が与えられたとします。
『成田空港でイチローを見かけた』
固有表現抽出では、この文から「成田空港」という地名と「イチロー」という人名をそれぞれ抽出することが目的です。
固有表現抽出は応用先が多い!
固有表現抽出は、実際のサービスとして活躍する場面が非常に多いタスクです。
例えば、上で例示した「成田空港でイチローを見かけた」というツイートに対して、「成田空港」を適切に場所であると自動で認識することができれば、このツイートの投稿者が成田空港に居ることを検知することができます。
また、あるユーザーが投稿したツイートに含まれるテレビ番組名などを適切に検出することができれば、そのユーザーの年齢や性別も自動で認識することができます。
このようにSNSなどであれば、固有表現はユーザーの活動地域や年齢などを特定する足掛かりになる非常に有益な情報になるのです。
固有表現抽出は、こうした情報をもとに、ユーザーに応じた広告の表示を行えるようになるなど、実益に直結する技術と言えます。
また、固有表現が個人情報に直結するという性質を逆手に取り、個人情報の自動マスキングを行うためにも固有表現抽出が使用されます。
例えば社外に公開する文書に機密情報が含まれていないか、あるいは顧客の住所などの個人情報が含まれていないかなどを自動で識別することで、セキュリティを高める技術としても使われているのです。
固有表現抽出は系列ラベリング
それでは、固有表現抽出はどのように解かれているのでしょうか。
一般的に固有表現抽出は、「系列ラベリング」と呼ばれる機械学習のテクニックで解かれています。
系列ラベリングとは、入力された系列の各要素に対して分類問題を解く方法です。
上記の例であれば以下のように、入力された文字ごとに固有表現であるか否かのラベルを当てていきます。
成 地名B
田 地名I
空 地名I
港 地名I
で O
イ 人名B
チ 人名I
ロ 人名I
ー 人名I
を O
見 O
か O
け O
た O
ここで地名や人名は固有表現の種類で、BとIはそれぞれ固有表現の始点(Begin)とそれ以降(Intermediate)であることを示すタグです。
また、Oは固有表現ではない、すなわちOtherを表すタグです。
このように、固有表現の種類ごとにBIタグと、その他を表すOタグを使う形式はBIOタグ付けと呼ばれます。
例を見ての通り、系列の入力である各文字に対して、{地名B、地名I、人名B、人名I、O}の五種類のタグを付与する分類問題として解くことができ、機械学習の問題として定式化しやすいために系列ラベリングという方法が広く用いられています。