BrainPad株式会社ブレインパッドのデータ活用に関する取り組みや製品・サービス開発の裏側、社員の日常などをご紹介します。自然言語処理の技術は近年、飛躍的に発展しており、検索エンジン、自動翻訳、チャットボットやスマートスピーカーの自動応答など、私たちの生活の中でも様々な場面で使われています。本ブログでは、自然言語処理の研究開発で得られた知見をもとに実施した、Doc2VecとDANを使って論文の質を予測するという取り組みについてご紹介します。イントロダクションこんにちは、アナリティクスサービス本部の金田です。現在私は、自然言語処理の研究開発チームにいます。直近では、文書間の類似度や文書クラスの判別について、最新の知見をキャッチアップして、社内に共有しています。一つであるDoc2VecとDANを使った論文の質の予測をご紹介します。今回は、私が大学で専攻した素粒子理論の論文データを使い、重要度クラスで分類しました。簡単化のために、対象の論文の著者は1人に絞り、評価は被引用論文数と発表年を元に作成したクラスを使用します。物理分野では、インターネットが使われだした初期から、論文投稿と同時に、arXivというプレプリントサーバー(未査読論文用サーバー)にも投稿して、論文の蓄積・配布を行っています。このarXivはコーネル大学図書館が運営するもので、現在は物理分野以外に、数学や統計学、コンピューターサイエンス等の未査読論文も蓄積・配布しています。今回は高エネルギー物理学に特化したプレプリントのオープンソースサーバーであるINSPIRE-HEPから論文の概要情報をクローリングし取得しました。INSPIRE-HEPではarXivに投稿された高エネルギー物理学の論文に、いくつかの背景情報を付与した上で、以下の概要情報を表示します。キーワード論文の重要さを測る指標は様々ですが、「被引用数」は重要な指標と考えています。著名な研究者が書いた論文はどうしても注目され、被引用数は伸びることが考えられます。そこで今回は、総論文数の多い特定の一人の研究者に関して分析しました。これによって著者の影響が出ないようにしました。Ellis氏の1,083本(2019年1月1日時点)でした。Bang」を例にとると、以下の図1のように赤く塗りつぶした部分を今回取得しています。INSPIRE-HEPのページ例。赤く塗りつぶしている箇所を今回クローリングしている。Ellis氏の総論文1,083本に対して、同様の概要情報をINSPIRE-HEPからクローリングしました。今回は、1ページ取得するごとに十分な時間(5秒間隔、参考[1])を空けて、データの取得を行いました。今回の取り組みでは、論文の重要度が予想できるかを確かめます。Ellis氏の論文をモデル作成用:評価用=9:1に分割し、モデル作成用データで特徴量を作成した上で、評価用にも適用します。モデル作成はLightGBMで行い、評価用データで評価します。論文の重要度は、引用元の評価や引用年を利用せず、2019年1月時点での引用数としました。評価指標は、昔の論文でも最近の論文でも、評価指標の分布が大きく変わらないようにするため、下記式を用いました。経過年数の長い論文の被引用数がどうしても伸びてしまうことを考慮して自然対数で割っています。本分析では、この4クラスを目的変数としています。被引用数と経過年数の関係。評価指標の高い順に「赤」「オレンジ」「緑」「青」でクラス分けしました。Ellis氏の個々の論文をプロットしています。ここで、過去の論文でも、最近の論文でも、評価値でおおよそ4分割出来ており、良さそうな指標となっています。今回作成した特徴量は以下です。ページ数アブストラクトの単語数キーワードアブストラクトでの、特徴的な単語の登場回数タイトルクラスタイトルに登場する単語分散表現の平均を、k-meansで10クラスタにクラスタリングして変数化。Vector)を適用します。このようにして取得した分散表現ベクトルを、k-meansで10クラスタにクラスタリングして変数化。以下では前処理の実施内容と、深層学習を使った自然言語処理であるDoc2VecとDANについて紹介します。前処理クローリングで取得してきたデータの前処理を行いました。具体的には以下の4つの前処理を行なっています。Ellis氏自身はタイトルやアブストラクトを書かないでしょう。Ellis氏は理論物理学者)、実験の論文は著者も被引用数も非常に多く、外れ値となります。そのため共著者数に上限を設けました。発表年の情報がない論文に関しても、分析の対象から除きました。この結果、分析対象は1,083件から1,007件になりました。ストップワードとは、a、the等の冠詞、at、of等の前置詞、I、He等の代名詞等、頻度が高い単語です。これも論文の特徴にはなり辛いため除外します。概要情報のソースはtexで書かれていますが、tex特有の記号も除外します。処理を複雑にしないためプロシーディングスとはいえ重要な論文は存在するという2つの観点から分析対象から除くことをしていません。1,007件のデータをモデルに学習させる訓練用のデータとモデルの精度を検証する評価用のデータに事前に分けました。それぞれのクラスのデータ数は以下の通りです。251以降の学習には全てモデル作成用データのみを使用しています。評価用データは学習済みモデルの評価のためだけに使用しています。データ分割は乱数を使っており、発表年などの情報に偏りがないことも確認しています。Vector)ここでは文・文章の分散表現を得るための著名な手法であるDoc2Vecを紹介します。Vectorと呼んでいます。Mikilov氏によって提案されたこともあり、基本的にはWord2Vecを文章単位に拡張した考え方から構成されています。vectors.と言ったような記述があります。論文中でDoc2Vecの学習方法には下記の2手法が提案されています。(PV-DBOW)今回は、PV-DMで英語版のwikipediaを学習させ、学習済みモデルから論文のアブストラクトの分散表現を得ました。分散表現をt-SNEとk-meansを用いて10クラスに分類して特徴量としました。今回の分析の対象とはしませんが、文章間の分散表現同士のコサイン類似度を測定し近い文章を抽出することが可能です。以下ではDoc2Vecのそれぞれの学習手法を説明します。(PV-DM)PV-DMでは、文書ベクトルと連続する単語ベクトルから、直後の単語を予測するように文書ベクトルを学習します。下記の様に学習ステップで4段階の学習を行い、推論ステップで新規文書に対する推論を行います。学習ステップは以下の通りです。下記図3を参照してください。単語分散表現の算出Word2Vec手法により、単語の分散表現を算出します。分散表現の算出手法はskip-gramでもCBoWでも構いませんが、gensimの内部ロジックはskip-gramとなっています。単語全ての分散表現が行列Wで表現され、単語を指定した際にはベクトルとなります。文章ベクトル(=文章タグのベクトル)と単語ベクトルから中間層を作ります。単語ベクトルですが、ベクトルはステップ1で既に学習済です。文章から連続する一定個数の単語をサンプリングして、平均化もしくは連結します。次に文章ベクトルですが、このベクトルは学習が必要です。文章ベクトルは単語ベクトルと平均化もしくは連結しますが、一般には単語ベクトルと異なる長さを持ち、連結となります。全文章の文章ベクトルは行列Dで表しますが、文章を特定するとベクトルとなります。単語の予測サンプルした単語に続く次の単語をを予測します。学習が進むまで、手順2と3を繰り返します。PV-DMの学習手順。上記の手順で学習をする。新規の文書については、単語の分散表現と中間層→出力層の重みを固定した上で、文書ベクトルを最適化します。含む文章から"私/は/ロボット"の部分をサンプリングして、続く"です"を予測しています。中間層を作る際には、文章ベクトルを連結もしくは平均化して予測を行います。予測の精度を上げるように、文章ベクトルと中間層→出力層の重みを更新します。(PV-DBOW)PV-DBOWでは、語順を無視した上で、文章に含まれる単語を当てるように文章ベクトルを学習します。この手法での文の分散表現化は、PV-DMよりも簡単ですが、精度は劣ると紹介されています。次の3ステップで分散表現化の学習を行い、これを4ステップ目で新規文章に適用します。同一文章から任意の個数の単語をサンプルしてくるサンプルした単語を予測するように文章ベクトルと中間層→出力層の重みを最適化する。文章行列の全体は行列Dですが、文章を特定するとベクトルとなります。学習が進むまで2を繰り返す。新規の文に対して、中間層→出力層の重みを固定して、文章ベクトルを最適化します。学習の方法は下記図を参照してください。PV-DBOWの学習手順。上記の学習手順で学習をする。PV-DBOWはPV-DMに対して単語の分散表現行列Wを要しないため、少ないメモリで学習することができるメリットがあります。PV-DMで得たベクトルは様々なタスクに対応できるのに対して、PV-DBOWで得たベクトルのみでは良い精度を出せない様です。そのため、PV-DBOWベクトル単独ではなく、PV-DMのベクトルと連結して使用するように論文では推奨されています。Network)DANは深層学習を用いた自然言語処理モデルで、文もしくは文章に対する文章分類や質疑応答システムで高い性能を発揮します。文法的な知識を使わないモデルであり、そのため学習にかかる時間は短くなっています。このモデルは、隠れ層を用意することと、ドロップアウトを利用することで精度が高くなります。7]と比較して、構文的なばらつきが大きいデータでも高い精度となります。DANでは文法知識を使うモデルと同様な間違いをおかすことが分かっています。これは、DANは文法を考えていないモデルですが、文法情報と同等の情報を、単語分散表現と中間層から取り込んでいる、ということでしょう。分類タスクに対しては、モデルは図5の構成となります。下記の学習手順で学習をする。このモデルは、次の3ステップで機能します。入力文/文章の単語分散表現を平均化これにより文法的な知識を使わない、単語の順序や構文には依存しないモデルとなっています。少ない計算資源での学習が可能となります。中間層に通す1のステップで平均化されるため、ベクトル間の差は微小となります。その中から意味のある差を拡大します。最終層に対して分類を実施softmaxを適用して、分類します。今回の分析ではGloVeでの学習済み分散表現(リンク)を使用し、単語分散表現の平均化を行いました。gensimでは以下の変換が必要です。glove.840B.300d.w2vformat.txt変換した分散表現は非常に重く読み込みにも時間がかかるため、注意してください。本分析では、論文のタイトルとアブストラクトの単語を入力しています。その際、平均化のための単語数が多すぎると文・文章ごとの差が現れにくくなってしまいます。単語数が少なすぎても文・文章の特徴を捉えにくくなってしまいます。そのため本分析では平均化する単語数に上限を設けました。上限を超える単語数の文では、対象の文から乱数を用いて、利用する単語を決めました。本分析では4クラスの多値分類を行うため、DANの最終層はsoftmaxを利用してます。目的変数と特徴量の作成の章の通り、単純集計の結果以外に、単語分散表現や深層学習モデルを利用して特徴量を作成します。深層学習モデルの内DANについては、DANでの予測確率を最終的な学習器として用いるLightGBMの変数とします。式(1)で定義した評価指標のクラスを目的変数として多値分類を行います。本章ではDANの学習結果と最終的なLightGBMでの学習結果を紹介します。DANでの学習結果まず、DANモデルでの予測結果を紹介します。タイトルとアブストラクトの単語分散表現を平均化したベクトルを元に、3層の中間層を通して、softmaxで多値分類を行います。DANモデルのみで高い精度を出すことが出来ています。DANモデルのセットアップ今回モデルとしては以下のようなパラメータセットを使用しました。原論文で言及されているパラメータセットを参考に、一部調整しています。80モデルはkerasを使って構築しました。中間層は徐々に次元を小さく圧縮して、重要な情報のみを取り出せるよう工夫しています。model単語の分散表現を得るための関数を以下のように定義しました。ave_vecと定義して学習させました。このベクトル平均化の関数は、タイトルクラスを求める際のタイトル単語の平均化でも使用しています。今回構築したモデルでは、普段業務で使用しているノートパソコンで学習が10分弱しか掛かっていません。上記にもあるように、モデル構造が非常にシンプルで計算コストがかからない点が最大の長所であると思います。学習曲線は以下のようになりなりました。最小の時の重みを保存しているので720エポックの値をモデルとして採用しています。左図は損失関数の値とエポック数、右図は精度とエポック数DANのみでの学習では、評価用データの混同行列は以下のようになりました。19今回は4クラスに均等にデータを分配しているため、完全にランダムで予測すると正答率は25%のはずです。DANモデル単体では正答率が50%程度になりました。タイトルとアブストラクトの単語の情報のみ、かつノートパソコンによる10分程度の学習としては良い結果が得られたと考えています。今回、平均化する単語数の上限を80単語に限定しましたが、タイトルとアブストラクトは論文全体の情報が短い文にまとめられており、DANモデルに適したタスクでした。DANモデルでは、含まれる単語の分散表現を平均化するため、特徴は微小となります。そのため、長い文章(極端な例だと、1冊の本)はDANモデルに適さないと考えています。Ellis氏の1,084本目の論文が報告されました。確率を指し、最も評価用データの正答率も高い「秀」クラスの確率が最も高くなりました。今後どうなるのか楽しみです。LightGBMでの学習結果LightGBMに入力する特徴量は137個になりました。学習のための主要なパラメータは以下の表の通りです。200最終的なLightGBMを用いた学習での評価用データの混同行列は以下のようになりました。14DANモデルでは、タイトルとアブストラクトの単語分散表現の平均ベクトルのみを使ったのに対して、LightGBMのモデルでは独立な情報が追加されています。そのためDANモデルから精度の向上が見られます。accuracy)は0.5から0.54に改善しています。DANモデルで精度のあまり高くなかった『良』『優』クラスの精度が向上しているのがわかりました。今回の分析では、多値分類を行っているためmulticlassを利用しています。そのため、順序の効果は特に考慮されていません。間違った予想の場合でも隣り合うクラスが多く、『可』と『秀』の間での誤答はありませんでした(図7)。本ブログで紹介した論文の質の予測以外でも様々な活用方法があり、世の中の注目を集めています。WGでは、我が国の自然言語処理技術の現状が言及されています[8]。連携し、人工知能技術の研究開発を推進していくことが示されるとともに、様々な民間企業が、自然言語処理を含む様々なサービスを市場に投入・展開しつつある状況。下記のように自然言語処理技術の活用に言及があります。我が国ならではの社会課題の解決や社会貢献を目的とした自然言語処理アプリケーションの開発に取り組むことが有効と考えられ、本WGでは、特に医療、防災、対話や翻訳等の生活支援等の分野に着目した。現在、ブレインパッドの研究開発チームで研究を行なっている文書間の類似度も、病気の症例や裁判の判例、技術書類の検索などに活用することができると考えています。実際に、自然言語技術を使って質問者が知りたい内容を推測して候補となる症例や論文を提示する他社の事例もあります[9]。Ousia社)した自然言語処理技術はチャットボットなどにも応用されています[10]。まとめ今回の取り組みでは、論文の重要度が予想できるかを確かめました。Network)を説明しました。被引用論文数と発表年を元に作成した4クラスを予測しました。その結果、評価用データに対し0.54の精度を達成できました。一定の精度で論文の重要度を予測することはできたと考えています。今回は研究開発を通して得た知見を活かした個人的な取り組みをご紹介しましたが、弊社ではこのような積極的な課外活動が推奨されています。最近では「MSゴシック絶対許さないマン」や「オフトゥンフライングシステム」など面白い活動が生まれてきています。このような自分磨きの時間が推奨されていることは、データサイエンティストとして非常にありがたい環境だと感じています。本ブログに限らず、弊社には勉強会や社内プロジェクトなど、お客様への分析サービスの提供以外にも個人のスキルアップを支援する様々な活動があります。これらの取り組みに「面白いことができる会社なんだな」と思っていただけたら幸いです。OusiaのAIがクイズチャンピオン達と対戦し勝利ブレインパッドは、さまざまな取り組みを積極的に実施しています。...強化学習入門の第3弾。採用ページスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。