• TOP
  • ブログ
  • 大規模日本語SNSコーパスによる文分散表現モデルの公開 : hottoSNS-BERTの配布

ホットリンク 公式ブログ

データから見えてくる注目のトピックスをとりあげます。

テック

大規模日本語SNSコーパスによる文分散表現モデルの公開 : hottoSNS-BERTの配布

R&D部の榊・水木・郡司です。

前回に引き続き、当社のR&D部で共有しているリソースの公開第二弾です。と同時に、学会でのスポンサーブース出展の告知です。

当社のR&D部では、研究開発上で利用する様々な様々なリソースを部内で共有しています。 今回、そのうちの一つである大規模日本語SNSコーパスによるBERTモデル[1]を社外の方にも利用可能な形で配布することにしました。 本ブログでは、それについてご説明したいと思います。

前回のブログでは、「単語分散表現モデルの配布は大変今更感がある」と述べましたが、今回公開するBERTモデルは、数少ない日本語に特化した文分散表現のPretrained Model※であり、それを今のタイミングで公開することには大きな価値があると考えています。 特にTwitterデータを対象としたdownstreamタスクを解きたい場合、今回公開したhottoSNS-BERTを用いることで、既存のモデルよりも高い性能が得られることが想定されます。

なお、今回の公開するBERTモデルに関する詳細は3月12日〜15日に名古屋大学で開催される言語処理学会第25回年次大会のホットリンク社スポンサーブースおよびスポンサーイブニングで詳細に説明する予定です(ブログでは言及していない、よりTwitterに特化した工夫の模索も紹介します)。ご興味がある方はぜひお越し下さい。

※公開されている日本語の文分散表現

公開のねらい

前回のブログ末尾でも触れましたが、今回の資源が活用されることで、特ににTwitterデータを対象とした自然言語処理研究が盛り上がることを期待しています。

もちろん、弊社としてのメリットもあります。Twitterデータを対象とした新たな技術が開発されれば、それが弊社の既存サービスの改良や、新規サービス開発に役立つかもしれません。また、Twitterデータ活用の認知度が高まれば、それだけ弊社の持つTwitterデータの価値が高まります。 そのような意味で、本言語資源が幅広く活用され、様々な成果が出ることを期待しております。

配布方法

※基本的にhottoSNS-w2vの配布と同様の方法です。

今回公開する分散表現のモデルの取得方法は、こちらのgithubリポジトリからお願いします。

リンク先にある利用規約を読み、そちらに同意して頂ける方は、 Webフォームから氏名、所属、連絡先などを送信してください。 追って、分散表現のダウンロードリンクをお送りします。

利用規約には色々と書いてありますが、重要なのは下記の5点です。

  • 本言語資源は、大学・公的研究機関・民間企業どなたでも利用できますが、あくまで研究目的の利用のみ(商用利用不可)でお願いします。
  • 氏名、所属、連絡先などこちらが指定する情報を登録して頂いた方のみに本言語資源の利用を許諾します。ただし、研究室内・所属部署内での共同利用は問題ありません。
  • 利用期間は1年間です。継続的に利用したい場合は、再度登録申請を行って下さい。
  • 本言語資源を使った研究成果を発表する際は、書誌情報と電子的コピーを送って下さい(研究成果の発表は制限いたしません)。
  • 本言語資源の利用を停止した後、または利用申請者が卒業・退職・異動される場合は、本言語資源自体は削除してください。ただし、本言語資源を用いて作られた派生物については削除する必要はありません。

それでは、以下では、今回公開する言語資源hottoSNS-BERTの構築方法を含めた特徴について説明します。 なお、すでにいくつかの記事[2,3]で詳しく解説されているので、 本記事ではBERT自体の仕組みについては説明しません。

本言語資源の特徴

今回は、ツイートに対する言語処理に特化した文分散表現を構築したかったので、その目的に合わせて様々な工夫を行っています。それがそのままhottoSNS-BERTの構築方法の特徴となっています。

大きく分けると以下の3点です。

  • 大規模日本語SNSコーパスによる学習
  • 日本語ツイートに適した前処理・分かち書きの適用
  • 日本語ツイートに適した事前学習タスクの調整

上記3点について説明します。 処理の詳細な中身については、githubを確認してください。

なお、BERT自体の学習のパラメータは、比較しやすいように、既存2つのモデル(BERT MultiLingual、 BERT 日本語Wikipedia)と同一にしています。

大規模日本語SNSコーパスによる学習

社内で大規模日本語SNSコーパス※1を構築しました。コーパスに含まれる文の多様性が大きくなるように工夫しています。具体的には、bot投稿・リツイートの除外、重複ツイート文の除外といった工夫を施しています。

ツイートは、2017年〜2018年に投稿されたツイートの一部を抽出しました。

構築したコーパスの統計量は下記の通りです。

  • コーパス全体※2
metric value
n_post 85,925,384
n_token 1,441,078,317


※1 データの性質上、本コーパスを配布することは差し控えます。

※2 本家BERTが用いたコーパス(=En Wikipedia + BookCorpus)と比較すると、35%程度の大きさです

日本語ツイートに適した前処理・分かち書きの適用

前処理

前処理としては、以下の4つを適用しています。

  • 文字フィルタ:ReTweet記号(RT)・省略記号(...)の除外
  • 正規化:NFKC正規化,小文字化
  • 特殊トークン化:mention, url
  • 除外:正規化された本文が重複するツイートを削除

前処理後のサンプルデータは下記の通り。

ゆめさんが、ファボしてくるあたり、世代だなって思いました( ̇- ̇ )笑
 <mention> 90秒に250円かけるかどうかは、まぁ個人の自由だしね()
 <mention> それでは聞いてください rainy <url>

分かち書き

前述の菊田遥平さんが書かれたCookpadブログ他のブログでも指摘されている通り、本家BERTのMultilingual Modelにおいては、日本語に適した分かち書きになっていません。

そこで今回は分かち書きにsetencepieceを適用しました。 また語彙および分かち書きモデルは、上述のコーパスで学習しました。語彙数は32,000です。

  • 分かち書き後のサンプルデータは以下の通り
ゆめ さんが 、 ファボ してくる あたり 、 世代 だ なって思いました ( ▁̇ - ▁̇ ▁ ) 笑 
<mention> ▁ 90 秒 に 250 円 かける かどうかは 、 まぁ 個人の 自由 だしね ()
<mention> ▁ それでは 聞いてください ▁ rain y ▁ <url>

日本語ツイートに適した事前学習の採用

本家BERTでは、事前学習にMasked Language ModelとNext Sentence Predictionが使われています。

Masked Language Modelは入力系列のうちの一部(15%)を[MASK]トークンに置き換えて、そのMASKされた単語を予測するという事前学習です。この事前学習は、どんなテキストにも適用することができます。

Next Sentence Predictionは、2つの文章を与え、それらが前後関係にあるか(隣り合っているかを)予測するという事前学習です。この事前学習は、入力文の多くがが2文以上で構成されることを想定としています。しかし、ツイートの場合、1文で表されることが多いため、Next Sentence Predictionを事前学習として適用するのは難しいです。

そこで、今回は、ツイートの特性に合わせて、Masked Language Modelのみを事前学習をとして採用しました。

downstreamタスクによる定量評価

文分散表現の場合、単語分散表現の類似語性判定のようにわかりやすい直接的な定量評価が難しいです。また、そもそも文分散表現は、downstreamタスクでFine-Tuningを行った上で利用することが想定されています。

今回は、ツイート評判分析をdownstreamタスクとして、構築したBERTモデルの評価を行いました。

評判分析タスク

  • 評判分析タスクは、2種類のデータセットを用いて評価します。
    1. Twitter日本語評判分析データセット[4]
    2. ホットリンク社内製のデータセット;Twitter大規模トピックコーパス

統計量は以下の通り。

データセット名 トピック positive negative neutral total
Twitter大規模トピックコーパス 指定なし 4,162 3,031 4,807 12,000
Twitter日本語評判分析データセット 家電・携帯端末 10,249 15,920 134,928 161,097

評価するPre-trained Model

今回は、以下3つのPre-trained Modelを比較します。

1つ目はBERT MultiLingual 、 2つ目はBERT 日本語Wikipedia、 3つ目は弊社によるhottoSNS-BERTです。

モデル名 分かち書き・語彙 コーパス pre-training tasks(※)
BERT MultiLingual WordPiece Multilingual(Wiki) MLM+NSP
BERT 日本語Wikipedia SentencePiece(Wiki) Japanese(Wiki) MLM+NSP
hottoSNS-BERT SentencePiece(Twtr) Japanese(Twtr) MLM

※ MLM: Masked Language Model, NSP: Next Sentence Prediction

実験結果

実験結果は以下の通りです。

  Twitter大規模カテゴリコーパス     Twitter日本語評判分析データセット
 モデル名 accuracy F-value accuracy F-value
BERT MultiLingual 0.7019 0.7011 0.8776 0.7225
BERT 日本語Wikipedia 0.7237 0.7239 0.8790 0.7359
hottoSNS-BERT 0.7387 0.7396 0.8880 0.7503

つまり、下記のような結果であると言えます。

  • Twitter評判分析タスクに対する性能は以下のようになった。

    • Multilingual < 日本語Wikipedia < hottoSNS-BERT
  • BMultilingual < 日本語Wikipediaであることから、日本語を対象としたdownstreamタスクでは、日本語に特化した分かち書き方法および、日本語のコーパスを用いた事前学習の方が適していると考えられる。

  • 日本語Wikipedia < hottoSNS-BERT であることから、Twitterを対象としたdownstreamタスクでは、日本語Wikipediaよりもドメインに特化した大規模日本語SNSコーパスで学習したhottoSNS-BERTの方が良い性能が得られると考えられる。

なお、言語処理学会のポスターセッションでは、事前学習にTwitterユーザ単位での情報を活用する方法も模索しているので、興味がある人はスポンサーブースにいらしてください。

おまけ

今回、本家BERTと同じようにTPU(Tensor Processing Unit)を用いてBERTの学習を行いましたが、その速度に驚かされました。

今回利用したのは、Cloud TPU v2(8core)でしたが、それでもGPUを初めて使ったときのような感動がありました。 本家BERT論文で使われているのは32coreのv2-32 Cloud TPU v2 Podなので、単純計算で4倍の速度になると考えると、Deep Learningに使うにはかなり強力だなと思わされました。

なお、料金は1時間で$4.50 USDと割高ですが、かなり短い時間で学習を終えられることを考えると、そこまでお金はかからないかもしれません(実際、今回テスト的にパラメータを小さくしてBERTを学習させた際は8時間で学習を終えることができました)。

ただ、Cloud TPUはまだ提供されたばかりのサービスであり、社内にもウェブ上にもノウハウが少なく、結構ハマるところがありました。利用する際は注意が必要です。いずれ本ブログで利用方法についての記事を書くかも知れません。

引用文献

  • [1] Devlin, Jacob and Chang, Ming-Wei and Lee, Kenton and Toutanova, Kristina: "BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding", arXiv preprint arXiv:1810.04805,2018
  • [2] http://deeplearning.hatenablog.com/entry/menhera_chan
  • [3] https://qiita.com/Kosuke-Szk/items/4b74b5cce84f423b7125
  • [4] 芥子 育雄, 鈴木 優, 吉野 幸一郎, グラム ニュービッグ, 大原 一人, 向井 理朗, 中村 哲: 「単語意味ベクトル辞書を用いたTwitterからの日本語評判情報抽出」, 電子情報通信学会論文誌, Vol.J100-D, No.4, pp.530-543, 2017.4.

おわりに

今回は、弊社R&D部が利用している自然言語処理リソースの配布を開始しました。今回の資源が活用されることで、特にSNSデータを対象とした自然言語処理研究が盛り上がることを期待しています。今後も、可能な範囲で、日本語自然言語処理に役立つリソースを公開できればと考えています。

また、R&D部では、このような自社のための研究開発以外にも、学術イベントのスポンサー・大学との共同研究の遂行・研究成果の対外発表/論文誌への投稿など、学術コミュニティへの貢献を積極的に行っています。

■当社R&D部のアカデミックとの協力体制について
http://www.hottolink.co.jp/company/lab/