本記事では、自然言語処理の手法である「BERT」を使い自然言語処理の代表的なタスクの一つである「固有表現抽出」を行った結果を紹介していきたいと思います。
固有表現抽出とは、テキストに出現する人名、地名などの固有名詞や日付や時間などの数値表現を抽出する技術手法です。
以下の文を例題に固有表現抽出を行います。
Taro is an employee of Insight Lab in Tokyo.
上記の文に対し固有表現抽出を行うと"Taro"が人名、"Insight Lab"が組織名、"Tokyo"が地名となります。
この技術を応用することで、上位概念での単語の検出などが可能になります。
今回利用するデータセットは「CoNLL 2003 shared task (NER) data」というデータセットを利用します。
こちらのデータセットは、多くの英文に対し「地名(LOC)」「組織名(ORG)」「人名(PER)」「その他(MISC)」の四つのラベルが付与されたデータセットになります。
ラベルに関しては、以下の様に単語毎に付与されています。
今回BERTに解かせる問題としては、トークン毎の多クラス分類問題となります。
Taro | is | an | employee | of | Insight | Lab | in | Tokyo | . |
PER | - | - | - | - | ORG | ORG | - | LOC | - |
データ数に関しては、下記のとおりとなります。
LOC単語数 | ORG単語数 | PER単語数 | MISC単語数 | 総単語数 | 文数 | |
学習データ | 8,297 | 10,025 | 11,128 | 4,593 | 204,566 | 14,985 |
テストデータ | 1,925 | 2,496 | 2,773 | 918 | 46,665 | 3,683 |
学習データ :モデル作成時に学習に利用するデータ
テストデータ:モデル評価時に利用するデータ
上記のデータを使いBERTモデルを作成、評価を行いました。
結果としては、以下の通りです。
ラベル | Recall(再現率) | Precision(精度) | F1 Score |
LOC(地名) | 93.5% | 92.5% | 93.0% |
ORG(組織) | 91.6% | 90.1% | 90.9% |
PER(人名) | 97.9% | 98.5% | 98.2% |
MISC(その他) | 83.0% | 78.4% | 80.6% |
Recall(再現率):テストデータに存在するとあるラベルのうちモデルが正しく判定した割合
Precision(精度):とあるラベルと予測したうち実際にそのラベルが当たっていた割合
F1 Score:RecallとPrecisionの調和平均
F1 Scoreで判定した場合、全体的に90~80%のスコアを叩き出しました。
この結果からうまく学習ができている様です。
MISCについては他のラベルに比べて学習データでの割合が少なかった事から他のラベルよりスコアが落ちている様です。
今回は固有表現抽出タスクをCoNLL 2003というデータセットを使いBERTで行いました。
さすが自然言語処理のブレイクスルーとなったモデルだけに好成績を出してくれました。
また、固有表現抽出に関しては、ラベルをオリジナルのものに置き換えることにより、オリジナルの概念で文章から自動タグ付け出来たりと文章解析の幅を広げることが可能です。
もちろん、日本語への対応も可能ですので日本語への適応例も紹介できたらと思います。