#はじめに
以前、日本語のBERT事前学習済モデルの紹介記事を投稿しましたストックマークの森長です。
前回の記事を多くの皆様に読んでいただき、大変ありがたく思っております。
そこで、今回はBERTに続いて、ELMoの日本語学習済モデルを公開いたします。
#ELMoとは
ELMoは双方向LSTMを用いて学習させた言語モデルです。
ELMoによって、文脈を考慮した単語分散表現(単語ベクトル)を獲得できます。
自然言語処理では、文脈を考慮した単語ベクトルを用いることで、語義の曖昧性解消が見込めます。
例えば、以下の「人気」という単語のように、文脈によって意味が異なる単語でも、ELMoでは文脈を考慮して文脈ごとの「人気」の単語ベクトルを獲得可能です。
- あのキャラクターは人気がある。
- この道路は、夜に人気がなくて、危ない。
ELMoの単語ベクトルの具体的な利用方法としては、ELMoで獲得した単語ベクトルをfastText等の他の手法で獲得した単語ベクトルと連結した単語し、その単語ベクトルを用いてタスクを解くことで、精度の向上が見込めます。
弊社の検証用タスク(記事の分類タスク)では、「Bi-LSTM + Self-Attention」モデルの単語ベクトルにELMoの単語ベクトルを単純に連結するだけで、精度が88%→91%に向上しました。
ELMo学習済モデルの特徴
弊社のELMo学習済モデルの特徴としては、以前公開しましたBERTの事前学習済モデルと同様に学習用データを日本語ビジネスニュース記事としていることがあげられます。そのため、本モデルは、主にビジネスに関するドメインで効果を発揮します。
ELMo学習済モデルの詳細は以下の通りです。
今回公開する学習済モデルは2パターンあり、単語単位の埋め込みのみで学習したモデル、 文字単位・単語単位の埋め込みで学習したモデルの2つになります。
| 学習用データ | トークナイザー | 埋め込み |
|:--|:--|:--|:--|:--|:--|
|日本語ビジネスニュース記事(40万記事)| MeCab + NEologd | 単語単位埋め込み |
|日本語ビジネスニュース記事(40万記事)| MeCab + NEologd | 文字単位・単語単位埋め込み |
#ダウンロード
ダウンロードリンク
モデルの内訳は以下の通りです。
- 単語単位埋め込みモデル
- char.dic、 word.dic
- config.json
- configs/cnn_0_100_512_4096.json
- encoder.pkl
- token_embedder.pkl
- 文字単位・単語単位埋め込みモデル
- char.dic、 word.dic
- config.json
- configs/cnn_16_100_512_4096.json
- encoder.pkl
- token_embedder.pkl
#利用方法
AllenNLPというオープンソースの研究用ライブラリを継承した以下のコードを用いることで、ELMoによる単語ベクトルを生成できます。
https://github.com/HIT-SCIR/ELMoForManyLangs
以下コードのEmbedderクラスのmodel_dirにダウンロードしたモデルのディレクトリを指定することで、文脈に応じた単語ベクトルを取得できます。具体的なEmbedderクラスの利用方法は以下をご参照ください。
https://github.com/HIT-SCIR/ELMoForManyLangs#use-elmoformanylangs-programmatically
#まとめ
最後までお読みいただき、ありがとうございました。
BERTと同様に公開したELMo学習済モデルが、自然言語処理の盛り上がりに更なる貢献ができると大変嬉しいです。