#はじめに
昨年、Google社から自然言語汎用言語モデル「BERT」が公開(※1)されてから、自然言語処理分野でのさらなる盛り上がりを感じているストックマークの森長です。
※1) https://github.com/google-research/bert
上記ページでは、BERTの事前学習済モデルやサンプルスクリプトが公開されていますので、気軽にBERTを利用することができ、大変ありがたいです!
しかし、日本語で利用してみたい場合、以下のハードルがあります。
- Google社から公開されている事前学習済モデルには、日本語専用モデルがなく、104言語で学習されたMultilingual(多言語)モデルを利用しなければならない。
- Multilingualモデルは、多言語対応のためかtokenizerがあまり日本語に適しているとは言えず、日本語文をトークン化した場合、トークンが文字単位ぐらいまで分割されてしまう。
そのため、上記ハードルをクリアするため、以下の方々がtokenizerを変更し、日本語に特化したBERTの事前学習モデルを公開してくれています。ありがとうございます!
このように公開していただくことで、日本語自然言語処理の知見が日本全体で高まっていくと思います。そこで、弊社でも日本語向けのBERT事前学習済モデルを作成しておりますので、公開します。
#事前学習済モデルの特徴
弊社の事前学習済モデルの特徴としては、事前学習用データを日本語ビジネスニュース記事としていることがあげられます。そのため、ビジネスニュース特有の文章表現を事前学習しており、本モデルは、主にビジネスに関するドメインで効果を発揮します。
また、弊社では、tokenizerにMeCab + NEologdを利用して、文章をトークン化しています。MeCabを利用することで形態素として正しく分割されますので、単語単位の分析を行う固有表現抽出等のFine-tuning時の学習が容易になります。
事前学習済モデルの詳細は以下の通りです。
| 事前学習用データ | トークナイザー | 語彙数 |
|:--|:--|:--|:--|:--|:--|
|日本語ビジネスニュース記事(300万記事)| MeCab + NEologd | 32,000語(CLS、SEP、UNK等除く) |
#ダウンロード
公式(TensorFlow)とPyTorch版で利用可能なモデルを公開します。
ダウンロードリンク
モデルの内訳は以下の通りです。
- TensorFLow版
- bert_model.ckpt.meta、 bert_model.ckpt.index、 bert_model.ckpt.data-00000-of-00001
- bert_config.json
- vocab.txt
- PyTorch版
- pytorch_model.bin
- bert_config.json
- vocab.txt
#利用方法
事前学習済モデルの使用にあたっては、TensorFlow版及びPyTorch版で公開されているサンプルスクリプトをどちらも利用可能ですが、ソースを以下のように修正してください。
- TokenizerのtokenizeメソッドをMeCab+NEologdでわかちした単語リストを返すように修正(もしくはクラスを継承して、tokenizeメソッドをオーバーライド)
- MeCabのみ(subword及びsentencepieceを未利用)のため、convert_tokens_to_ids関数(もしくはメソッド)にて、未知語があった場合は未知語に対して[UNK]のidである1を返すように修正
#まとめ
最後までお読みいただき、ありがとうございました。
公開したビジネスニュース向けのBERT事前学習済モデルが、自然言語処理の盛り上がりに更なる貢献ができると大変嬉しいです。
※弊社ではELMoの日本語事前学習済モデル(50万記事のビジネスニュースで学習)も公開しておりますので、ご興味があれば、以下ページをご覧ください。
https://stockmark.ai/2019/01/25/783