今回は、情報抽出の一つである“固有表現抽出(Named Entity Recognition; NER)”の概要について解説したいと思います。
今回は主に以下の本を参考にしています。
情報抽出・固有表現抽出のための基礎知識 (実践・自然言語処理シリーズ)非常に分かりやすいので固有表現抽出や情報抽出を基礎から理解したい方にオススメです。
固有表現抽出とは
まず、地名・人名・組織名といった固有名詞に数量や日付、時間などを加えたものを“固有表現”と呼びます。
そして、固有表現抽出は与えられたテキストから固有表現を抜き出すタスクのことを言います。
固有表現抽出は、テキスト中の特定の情報を抜き出すことから、“情報抽出(Information Extraction)”の一つとされています。
また、単語の列に対してラベルの列を推定する“系列ラベリング”と呼ばれるタスクの一つでもあります(その場合は固有表現認識と呼ばれるのかもしれませんが、厳密な名前の定義はわかりません)。
ヤフーの川辺健太郎社長は12日、ZOZOを子会社化すると発表した。
この文章だと、ヤフー、ZOZOは組織名、川辺健太郎は人名、12日は日付ということを認識します。
この固有表現抽出により、例えば、文章から自動的に会社名を抜き出し、どの会社のことを言っているのか?などを自動で判定することも可能になり、実務に応用することが可能です。
または、それをさらに処理して、どのような会社にどんなイベントがあったか?などを自動的に推定するタスクと組み合わせたりすることも可能です。
固有表現の種類
以下は、情報抽出・情報検索のワークショップであるIREX(Information Retrieval and Extraction Exercise)で定義されている固有表現の種類です。
こちらは典型的な固有表現ですが、固有表現は自分が必要なタスクによってそれぞれ定義されます。
BIOモデル
BIOモデル(IOB表記)とは、テキスト中の固有表現を開始(Beginning)、内部(Inside)、外部(Outside)を使って表現する表記方法です。
右の表がBIOモデルによるラベルの例です。
例えば、人物名が「川辺 健太郎」であれば、人物名の最初にB-PERを、続くI-PERを付けます(PERはPERSONを表す)。
そして、固有表現以外の単語には“O”を振ります。
これにより、どこからどこまでがどの固有表現に当たるかというのを表現することができます。
ここでわかるように、例えば、文章の一番最初の単語にI-PERやI-LOCが来ることはありませんし、B-PERのあとにI-LOCが来ることもありません。
こういった制約を考慮しながら固有表現抽出を行うことで、精度を向上させることが可能です。
単語列 | 固有表現 | BIOラベル列 |
---|---|---|
ヤフー | 組織名 | B-ORG |
の | O | |
川辺 | 人名 | B-PER |
健太郎 | 人名 | I-PER |
社長 | O | |
は | O | |
12 | 日付 | B-DAT |
日 | 日付 | B-DAT |
ZOZO | 組織名 | B-ORG |
を | O | |
子会社化 | O | |
する | O | |
と | O | |
発表 | O | |
した | O |
(参考) 固有表現の表現方法
上記の固有表現の表現方法はIBO2と呼ばれています。
他にもIOB1、IOE1、IOE2、BIEOSといった表現方法もあります。
例えば、IOB2ではB、I、Oの3つのタグを使っていましたが、BIEOSではS、B、I、E、Oの5つのタグを使います。
Sは1つの単語で固有表現になっている場合、Bは複数の単語で固有表現になっている場合の先頭の単語、Eは複数の単語で固有表現になっている場合の最後の単語、Iは3つ以上の単語で固有表現になっている場合の間の単語を表します。OはIOB2と同じように固有表現以外を表します。
固有表現抽出の手法
固有表現抽出の手法は大きく分けて、以下の3つがあります。
辞書による手法
例えば、この単語は人物、この単語は地名と辞書に予め登録しておき、固有表現抽出の際は、その辞書を参照して抽出するものです。
問題点
問題点は、辞書を使った場合だと、人名と地名はよく重複するということです。
例えば、「大原」という単語は「大原さん」という人名であったり、「大原」という地名であったりします。
また、辞書をどこまで登録するか、特に、数値に関しては、1つ1つすべての数値を辞書に登録するわけにはいかないという問題もあります。
ルールベースによる手法
一定の規則をあらかじめ定めておいて、その規則をもとに固有表現を抽出するものです。
先ほどの例では、「大原 さん」など「さん」の前に来る名詞は人物名である、それ以外は地名である、などといった規則をあらかじめ定めて抽出します。
それにより、「大原 さん」の場合は人物名、「大原 で 生まれ」などであれば地名と判断されます。
ですので、あらかじめ各単語に品詞を振っておき、前後の単語と品詞によってルールを定めることが一般的です。
もちろん、ルールはこんなに単純ではありませんので、非常に多くのルールが作成されることになります。
機械学習による手法
大量の文章とラベルデータを用いて、機械学習を適用する方法です。
近年では、大規模データの取得が比較的容易になっているので、この手法が主流になっています。
例えば、自分自身と前後3つの単語とそれらの品詞を特徴量(素性と言います)として、自分自身の単語が固有表現かどうかというラベルをもとに学習したりします。
それ以外にも、より発展的なものでは、LSTM(Long Short-TermMemory)と呼ばれる時系列データを扱う再帰的ネットワークなどを使って、文章を単語の時系列データとして学習するものもあります。
近年ではBERTと呼ばれるGoogleの自然言語処理モデルが出てきたり、非常に進歩してきている分野です。
これらのモデルを使ってどうやって固有表現抽出を行うかについては、深く解説しませんが、別途詳細の解説をしたいと思います。
そういえば最近、BERTに関する書籍が発売されました(Amazonではすぐに売り切れて買えなくなってしまうほどの売れ行きだったようですね)。
BERTによる自然言語処理入門 ―Transformersを使った実践プログラミング―
こちらは、日本語のBERTを使って固有表現抽出を行う方法についてが解説されています。
この本の内容を真似することで固有表現抽出もBERTの使い方も理解できるようになります。
まとめ
今回は、情報抽出分野の一つである固有表現抽出について概要を解説しました。
固有表現抽出は、イベント情報抽出や関係抽出といったタスクを行う上でも、まず必要になってくる重要な技術です。
詳細についてはまた解説したいと思います。
参考書籍
より詳しく知りたい方向けに、今回参考にした2つの書籍を挙げておきます。
固有表現抽出に関しては1つめの方が詳しく書かれていますが、2つめは形態素解析の話や自然言語処理の歴史の話などもあり、一度は読んでおいて損はないと思います。
他にも自然言語処理を勉強するにあたって、おすすめの本をご紹介していますので、ご参考にどうぞ!