Ahogrammer

Deep Dive Into NLP, ML and Cloud

低リソースかつノイジーなテキストに対する固有表現認識

ACL 2019より以下の論文を紹介。

この論文は、昔のドイツ語(1700年〜1900年くらい)に対する固有表現認識を行った論文。「昔のドイツ語の固有表現認識になんか興味ねーよ」と思うかもしれないが、要するに低リソースかつノイジーなテキストに対する固有表現認識を上手くやるための方法だと考えればいい。手法としては言語モデルを事前学習して、それを使って固有表現認識するというもの。時代の異なる2つのデータセットに対して検証したところ、従来手法より良い結果となった。

昔のドイツ語に対する固有表現認識には3つの課題がある。一つはリソースの量が少ない点。現在よく使われているCoNLL 2003のデータセットと比べると、タグの付いたデータ量が少なく、その分難しくなっている。2つ目はテキストがノイジーな点。これは、元のテキストを得る際に新聞記事からOCRを行っているので、その認識エラーが含まれていることによる。そして3つ目が言語が混じっている点。使われているデータセットには昔のドイツ語だけではなく、オーストリア語も混じっているので難易度が上がっている。

課題を解決するために、言語モデルを事前学習して良い表現を学習させている。検証している言語モデルは3つある。一つは多言語BERT。次はAkbikの言語モデルで、固有表現認識でかなり良い性能を出していることで知られている。以下に図を示した。そして3つ目が、Synthetic Masked Language Modeling(SMLM)と呼ばれるモデル。このモデルではターゲットのドメイン(昔のドイツ語)の語彙でソースドメイン(現代ドイツ語)の語彙を置き換えて学習させる。これにより、OCRの認識エラーやスペルミスをエミュレートできるとしている。

f:id:Hironsan:20190830082840p:plain
Akbikの言語モデル

実験は3つの設定で行われている。一つは、異なる単語分散表現を使った場合の性能の変化を検証している。2つ目は、異なるデータソースを使って言語モデルを学習させたときの性能の変化を検証している。そして3つ目が、SMLMを使って事前学習させた時の性能を検証している。固有表現認識のデータセットとしてはLFTとONBを使っている。LFTは1926年、ONBは1710~1873年のテキストから作成されている。これに対して、言語モデルWikipedia(現代)、HHA(1888 - 1945)、WZ(1703 - 1875)を使って学習させている。つまり、言語モデルを学習させるテキストの年代を変えることによる性能変化を検証している。以下にデータセットの期間に対するオーバーラップを示した。

f:id:Hironsan:20190830084046p:plain
データセットの期間のオーバーラップ

以下に実験結果を示す。結果を見ると、言語モデルを学習させるテキストの年代と固有表現認識のデータセットの年代を合わせる方が性能が良いことがわかる。たとえば、LFTはHHA、ONBはWZで学習させるほうが性能が良くなっている。一方、SMLMの結果は一見するとそれほどでもないように見える。ただ、学習に使っているコーパスWikipediaであり、昔のテキストを一切見ていないことを考えると、BERTなどと比べても注目に値する結果となっている。

f:id:Hironsan:20190830085526p:plain
実験結果

感想としては、昔のテキストに対する固有表現認識以外にもSMLMは使えるのではないかと感じた。たとえば、医療分野で固有表現認識をしたい場合に、リソース量が少ないのを補うためにSMLMを医療分野以外のテキストで学習させて使うというような方法はあり得るかもしれない。ただ、現段階だと実験結果を見るに、該当分野のテキストで事前学習させた言語モデルを使ったほうが良い性能が出ると思われるので、今後の発展が期待される。