Ahogrammer

Deep Dive Into NLP, ML and Cloud

文字ベース固有表現認識の手法たち

固有表現認識(NER: Named Entity Recognition)とは、テキストに出現する人名や地名などの固有名詞や、日付や時間などの数値表現を認識する技術です。NERはエンティティリンキングや関係抽出、イベント抽出、共参照解決といった自然言語処理タスクの要素技術として使われるため、常にある程度の研究が行われている分野となっています。

最近よく使われる手法としては、テキストを単語の系列に分解し、それをRNNとCRFを接続したネットワークに入力する手法があります。そういった手法は数多く存在するため個別には紹介しませんが、以前に以下の記事でそのうちの一つの手法について実装しています。

hironsan.hatenablog.com

単語分割を前提とした手法は、単語の切れ目が明示されている言語以外では扱いにくいという問題点があります。たとえば、英語であるなら単語の切れ目は空白で区切られていますが、日本語や中国語にはそのような区切りは存在しません。その結果、NERの性能が単語分割の結果に左右されてしまいます。

そういうわけで、単語分割に依存しない手法が求められるわけです。そういった手法の一つに文字ベースでNERを行うというやり方があるのですが、今回の記事では、いくつかの論文を参照しながらその手法について簡単に紹介したいと思います。

CAN-NER: Convolutional Attention Network for Chinese Named Entity Recognition

この論文では中国語のNERに対する文字ベースのアプローチを提案している。論文で取り上げている中国語のNERの課題として、NERの前段階でWord Segmentationを行うため、Segmentation ErrorとOOV(Out of Vocabulary)が生じる問題を取り上げている。

Segumentation Errorというのは単語分割の誤りのことを指している。日本語の例でいうと、前にニュースのNERをやったときに「米中2カ国」を「米」と「中2」に分割されたことがあった。こういう分割をされると、この時点で「中」を地名として認識することが難しくなる。

また、OOVの問題についてはTwitterやニュースのテキストでNERする際に特に問題になる。新語というのは日々追加されており、NERでもこれらを上手く認識したいのだが、既存の固有表現認識の手法だとOOVに対する認識性能がOOVでない場合と比べてかなり落ちることがわかっている。文字ベースの場合はOOVは単語と比べると少ないため、新語に対しても上手く働くことを期待できる。

モデルとしては、以下のように局所アテンション付きの文字ベースCNNとグローバルアテンション付きのGRUを使ったモデルを構築している。

f:id:Hironsan:20190508084211p:plain
モデルのアーキテクチャ

Neural Chinese Named Entity Recognition via CNN-LSTM-CRF and Joint Training with Word Segmentation

こちらの論文は中国語のNERとWord Segmentationを同時に学習する論文。さきほどの課題に加えて、マルチタスクラーニングにより、NERのデータ量の少なさをカバーする狙いがある。アーキテクチャとしては以下のようになっている。NERの方はよく使われるCNN-BiLSTM-CRFを採用しており、Word Segmentationの方はCNN-CRFとなっている。後者がCNN-BiLSTM-CRFになっていないのが少し不思議な感じがするアーキテクチャ

f:id:Hironsan:20190513131307p:plain

アーキテクチャ以外の工夫としては、データの水増しがある。この論文では、同カテゴリの固有表現を入れ替えて(安倍首相は〜 → 岸田首相は〜)データを水増ししている。それによって性能が上がることが報告されている。かなり簡単なテクニックの割に効果的なので、日本語でやる場合も採用してもいいかもしれない。

Distantly Supervised NER with Partial Annotation Learning and Reinforcement Learning

こちらの論文は、Distant Supervisionを作って作った固有表現のデータを使って固有表現認識するためのモデルを提案している。

Distant Supervisionを使って固有表現認識用のデータを作るには固有表現の辞書を用意しておく必要がある。手法としては用意しておいた固有表現辞書を使って、テキスト中のマッチした部分に自動的にラベル付をするというやり方になる。

Distant Supervisionを使って作った固有表現認識用のデータには、2つの問題がある。一つはデータが不完全(付けるべきところにラベルが付いていない)であるという問題、もう一つはデータがノイジー(付けるべきでないところにラベルが付いている)という問題。論文中だと以下の例を挙げている。要するに、不完全というのは「皮帯」のように付けるべき箇所にラベルを付けられていないという問題で、ノイジーというのは「工装蛙」ではなく「工装」にラベルが付いてしまっているということ。

f:id:Hironsan:20190513132406p:plain

モデルのアーキテクチャについては以下のようになっている。不完全なデータに対してはCRFを拡張することで対応し、ノイジーなデータに対しては、強化学習を使ってノイズを除去することで対応している。

f:id:Hironsan:20190513132725p:plain

Character-based Bidirectional LSTM-CRF with words and characters for Japanese Named Entity Recognition

こちらの論文は、日本語NERに対する文字ベース手法について提案している。手法的には、文字単位で入出力を行いつつ、文字に対応する単語を入力として加えている。たとえば、「東京で〜」というテキストを入力する場合、「東」と「京」に加えて「東京」という単語も入力する。こうすることで、単語分割の問題を緩和、単語の情報も利用する狙いがあるようだ。

f:id:Hironsan:20190513133127p:plain

気になるところもいくつかあるのだが、まず形態素解析のN-BEST解を使った場合にどうなるのかは興味がある。1-BESTだけを使うと結局のところ単語境界の問題から逃れられていない感じがするので、それをさらに緩和するためにN-BESTを使うのはありかもしれない。もう一つ気になるのは、形態素解析の辞書を変更した場合にどうなるか。たとえば、固有表現を多く含むNEologdのような辞書を使ったら結果がどう変化するのかには興味がある。

Character-Based LSTM-CRF with Radical-Level Features for Chinese Named Entity Recognition

こちらの論文も、中国語の固有表現認識に対する文字ベース手法を提案している論文。面白いのは、漢字をその構成要素に分類して、文字分散表現を構築している点。よくあるNERの手法では、単語分散表現を単語分散表現と文字レベルの表現を組み合わせて構築していたが、この論文ではそこでの単語を文字に、文字を漢字の構成要素に分解したと考えられる。中国語や日本語ならではの手法と言えるのではないか。

f:id:Hironsan:20190513134254p:plain