トピックモデルの理論と実装

機械学習技術 自然言語技術 人工知能技術 デジタルトランスフォーメーション技術 マルコフ連鎖モンテカルロ法 深層学習技術 確率生成モデル 本ブログのナビ

トピックモデルとは

トピックモデルとは、文書集合から潜在的なトピックを抽出し、文書の内容を理解するための確率的生成モデルとなる。トピックモデルを使うことである文書において、どのようなトピックが扱われているかを推定することができ、大規模なテキストデータ解析に適用すると、例えば大量のニュース記事やブログ記事などから、どのような話題が取り上げられているか、どのような傾向があるかを把握することができる。

このトピックモデルベースとなるモデルは”ユニグラムモデル“や”混合ユニグラムモデル“となる。これが拡張されて”Latent Dirichlet Allocation (LDA)“や”Probabilistic Latent Semantic Analysis (PLSA)”、また無次元への拡張として、”中華料理店過程(Chinese Restarant Process:CRP)“や”棒折過程(Stick Breaking Process:SBP)“、”階層ディリクレ過程(Hierarchical Direchlet Process:HDP)“等になる。

これらのモデルのアルゴリズムは”確率生成モデルについて“で述べている確率分布をベースとした機械学習モデルにより構築されている。

またトピックモデルは、テキスト分析だけでなく、音楽や画像、動画、バイオインフォマティクスなど多様な分野に応用される。

トピックモデルを用いることで以下のような応用に用いることができる、

  1. ニュース記事の分析: ニュース記事のテキストデータをトピックモデルにかけることで、どのような話題が取り上げられているかを把握することができる。例えば、特定の時期にどのようなトピックが多かったのか、どのような政治家や企業が取り上げられたのかを分析することができまる。
  2. ソーシャルメディアの分析: TwitterやFacebookなどのソーシャルメディアの投稿データをトピックモデルにかけることで、どのような話題が人気があるか、どのような感情表現が多いかを把握することができる。また、トピックモデルを用いて、特定のキーワードに関連する投稿を抽出することもできる。
  3. レコメンデーション: トピックモデルを用いて、ユーザーが興味を持つトピックを推定することで、商品やコンテンツのレコメンデーションを行うことができる。例えば、ユーザーが読んだ本の内容から、どのようなジャンルの本に興味があるかを推定して、レコメンデーションを行うことができる。
  4. 画像分類: トピックモデルを用いて、画像の特徴量から潜在的なトピックを抽出し、画像を分類することができる。例えば、顔画像から潜在的な特徴を抽出し、顔の表情を分類することができる。
  5. 音楽ジャンル分類: トピックモデルを用いて、音楽の波形から潜在的なトピックを抽出し、音楽のジャンル分類を行うことができる。例えば、曲のリズムパターンや音の高低から、どのようなジャンルの曲であるかを分類することができる。

本ブログではこのトピックモデルに対して以下に詳細を述べている。

実装

トピックモデルは、大量のテキストデータからトピック(テーマやカテゴリ)を自動的に抽出するための統計的モデルとなる。ここでのテキストデータの例としては、ニュース記事、ブログ記事、ツイート、顧客レビューなどがある。トピックモデルは、データ内の単語の出現パターンを分析し、トピックの存在と各単語のトピックへの関連性を推定する原理となる。

ここではこのトピックモデルの概要と、主にpythonのライブラリを利用した様々な実装(ドキュメントからのトピックの抽出、ソーシャルメディアの分析、レコメンデーション、画像情報のトピック抽出、音楽情報からのトピックの抽出)について述べている。

変分法(Variational Methods)は、関数や確率分布の中で最適解を求めるために用いられ、機械学習や統計学などで広く使われる最適化手法の一つであり、特に、確率的生成モデルや変分自己符号化器(Variational Autoencoder, VAE)などの機械学習モデルにおいて重要な役割を果たしている手法となる。

変分ベイズ学習(Variational Bayesian Inference)は、ベイズ統計学における確率的モデリングの手法の一つであり、事後分布を解析的に求めることが難しい場合や計算コストが高い場合に利用されるものとなる。

ここでは、この変分ベイズ学習の様々なアルゴリズムの概要と、トピックモデル、ベイズ回帰、混合モデル、ベイズニューラルネットワークでのpythonの実装について述べている。

理論

言葉を扱う学問は古典的には言語学であり、そこでは言語学者の経験と主観によって生み出された仮説を積み重ね、また反例を挙げて新説を生み出すことで研究が蓄積されきた。これに対し、言語を統計的に考える分野は統計言語学、または工学的な立場からは自然言語処理と呼ばれており、最近の電子テキストの増大とその処理の必要性によって、急速に研究が進んでいる分野となる。この分野は言語学の一部とも言えるが、純粋に客観的なデータから、統計的・数学的なモデル化と大規模な実験的検証を行う点が従来の言語学とは異なっている。言語を統計的に捉えることで、仏雑で膨大な言語現象を計算機で自動的にモデル化できると共に、規則ではとらえきれない曖昧性や例外、文脈構造を数学的に扱うことが可能となる。

言語処理の多くの分野では言語モデルというものが登場し、これが言語を処理する要諦になっている。この「言語モデル」とは教科書的な表現では「文字x∈Σの列からなる集合Σ*の部分集合Lを言語という」というような数学的な表現から始まるものがある。もう少し具体的なイメージでいうと、言語モデルとはことばを話すすべての人の中にあり、それを無意識に使い続けているような身近なものでもある。

客観的に見ると、言語とは記号列だと考えることができる。細かく見るとそれは文字からなっているが、ここでは英語の様に、言葉は単語からなっているとして話を進める。

言語の単語列を見てすぐにきづくことは、単語の頻度には大きな偏りがあるというものになる。ここで、単語の順位と頻度が反比例関係にあることはZipfの法則といわれ、1930年台に発見された基本的事実の一つとなる。これは近年では言語を超えて、自然界の多くの離散的現象に共通する冪乗法則として知られる様になっている。

この様な不確定性を表現するには、p自体の場所についての確率分布が必要になる。その最も簡単なものとして以下の式の様なディリクレ分布がある。

「気づく」とは、何かを注意深く観察したり、認識したりすることを指し、また、人が状況や物事に対して気付くということは、その人がある情報や現象を認識し、それに関する気持ちや理解を持つことを意味する。気づくことは、外界の変化や出来事に注意を払うことによって、新たな情報を得たり、理解を深めたりする重要な過程となる。今回は、この気づきとそれらに対する人工知能技術の適用について述べてみたいと思う。

トピックモデルは、文書のための確率モデルとなる。確率モデルの考え方を理解するために、ここでは最も単純な文書のための確率モデルであるユニグラムモデルについて述べる。また、ユニグラムモデルを題材にして、確率モデルを推定する方法についても述べる。

今回はユニグラムモデルにトピックを導入した混合ユニグラムモデルについて述べる。

混合ユニグラムモデルでは一つの文書が一つのトピックを持つと仮定する。しかし、実際には一つの文書が複数のトピックを持つ場合もある。たとえば「医療に関する法案の国会での審議」に関する新聞記事は「医療」と「政治」の2つのトピックを持つ。また「オリンピックの経済効果」に関する新聞記事は「スポーツ」と「経済」の2つのトピックを持つ。このようなトピックの組み合わせを混合ユニグラムモデルで表現しようとすると、「医療+政治」、「スポーツ+経済」というトピックの組み合わせすべての単語分布を用意する必要がある。このとき推定すべき単語分布が膨大な数にになり、適切に推定できなくなるという問題が起こる。

この問題を解決するのが、一つの文書が複数のトピックを持つと仮定するトピックモデル(topic model)となる。混合ユニグラムモデルでは文書集合全体で一つのトピックモデルがあったのに対し、トピックモデルでは文書ごとにトピック分布θd=(θd1,…,θdK)がある。

前述までは文書に含まれる単語の情報のみが与えられた状況を想定したが、他の情報が与えられる場合もある。たとえば商品のレビュー記事には、商品カテゴリや評価点などの情報がついてくる。また学術論文には、著者や論文誌名、発行年などの情報がついてくる。このような単語以外の情報を補助情報(side information)と呼ぶ。ここでは補助情報がついて文書集合の生成モデルについて述べる。

補助情報がついて文書のトピックモデルとして結合トピックモデル(joint topic model)がある。結合トピックモデルでは、トピックごとに固有の補助情報分布があり、トピックに応じて補助情報が生成されると仮定する。

対応トピックモデルでは単語を生成したトピックを用いて補助情報が生成されていた。しかし、内容(単語)に関係ない補助情報がつけられている場合もある。特にウェブ上で自由にタグ(補助情報)をつけ共有することができるソーシャルブックマークの場合、「後で読む」というリマインダとして用いられるタグは、政治に関する記事にでも、芸能に関する記事にもつけられる。主観的な評価を示すタグ「これはすごい」や「***(星三つ)」もトピックに関係なくつけられる。また写真共有サービスの場合、写真に写っている物に関係なく「ニコン」や「キャノン」のような撮ったカメラの機種名が付けられたりする。

そこで内容に関係のない補助情報も扱えるトピックモデルとして、ノイズあり対応トピックモデル(nosiy correspondence topic model)がある。ノイズあり対応トピックモデルは対応トピックモデルの拡張となる。ノイズあり対応トピックモデルを用いることにより、内容と補助情報が関係あるかないかを自動的に判定でき、補助情報予測の精度向上や、補助情報を利用した検索の精度向上が期待できる。

さまざまなタスクを考える上で、トピックに相関がある場合が考えられる。たとえば新聞記事の場合、政治と経済の2つのトピックを持つ記事は多いが、政治と芸能の2つのトピックを持つ記事は少ない。通常のトピックモデルではこのようなトピック間の相関を扱えないが、相関トピックモデル(correlated topic model)は相関を扱うことができる。

相関トピックでは共分散行列を用いて2つのトピックの間の相関をモデル化した。パチンコ配分モデル(pachinko allocation model)は、トピックに階層構造を導入することによって、トピック間の関係をモデル化する。

トピックモデルを用いて文書やトピックを可視化するためのトピックモデルを確率的潜在意味可視化(probabilistic latent semantic visualization;PLSV)と呼ぶ。PSLVはトピックの似ている文書が近くに配置されるように可視化する。可視化によって、大規模データの全体像を把握できるようになり、また直感的な検索が可能になる。

文種以外でもBOW表現されているデータであればトピックモデルは適用できる。たとえば購買履歴の場合、ユーザーを文書、商品を語彙とみなせば、文書と同様に扱える。また画像のようにもともとBOW表現されていないデータであっても、BOW表現に変換することにより適用できるようになったり、ネットワークデータに関しても適用が可能となる。

ベクトル量子化(vector quantization)を用いることで、さまざまなベクトルの集まりをBOW表現に変換でき、トピックモデルが適用できるようになる。ベクトル量子化では、クラスタリング手法を用いてすべてのベクトルをクラスタリングし、ベクトルをクラスタラベルで書き換えることにより、BOW表現に変換する。

ネットワークの代表的確率モデルである確率的ブロックモデル(stochastic block model)について述べる。ネットワークはノード集合とノードの間にあるリンク集合からなる。ソーシャルネットワークの場合、人がノードで表され、友人関係がある場合に2つのノードがリンクで結ばれる。確率的ブロックモデルでは、それぞれのノードが一つのトピックを持ち、ノードのトピックに依存してリンクの有無が決まる。たとえばソーシャルネットワークの場合、各人が一つのグループに属し、ほかの人との友人関係は、どのグループに属しているかによって決まると考えるモデルとなる。

混合モデルのトピック数を推定するには、ディリクレ過程(Dirichlet process,DP)を用いることで行われる。ディリクレ過程は、基底分布(base distribution)Hと集中パラメータ(concentration parameter)αによって規定される。

ディリクレ課程を用いた無限個の要素モデルを持つ混合モデルは無限混合モデル(infinite mixture model)、もしくはディリクレ過程混合モデル(Dirichlet process mixture model)と呼ばれる。

無限混合ユニグラムモデルを用いることにより、事前にトピック数を設定する必要がなく、データに適したトピック数を持つ混合ユニグラムモデルを推定できる。

無限混合モデルには無次元の混合比と無限個の要素モデルがあるが、中華料理店過程(Chinese restaurant process,CRP)を用いることにより、有限個の混合比、要素モデルを扱うだけで推定が可能となる。

トピックモデル(topic model)は主に自然言語で書かれた文書を解析するための生成モデルの総称であり、ここではその最もシンプルな例としてLatent Dirichlet allocation(LDA)について述べる。LDAでは、単語の羅列である文書に対して潜在的なトピック(政治、スポーツ、音楽など)が背後に存在していると考え、そのトピックに基づいて文書中の各単語が生成されていると仮定する。大量の文書データを使って学習されたトピックを利用することにより、ニュース記事の分類や推薦を行ったり、与えられた単語のクエリから意味的に関連の深い文書を検索することができるようになる。また近年ではLDAを自然言語処理だけではなく画像や遺伝子データに適用するような事例もある。

ここでLDAに対する崩壊型ギブスサンプリングについて述べる。混合モデルでは、確率モデルからパラメータを周辺化した新たなモデルを考え、潜在変数を一つずつサンプリングするという手法をとった。LDAにおいても全く同様の手続きでアルゴリズムを導くことができる。

実装

Java上で実装されたされるトピックモデルのOSSへのリンク。各種チュートリアルとさまざまな応用についての情報が記載されている。(Pythonで作業している場合は、AntoniakのLittle MalletWrapperを参照のこと)。Javaの言語および環境設定に関しては”汎用アプリケーション構築環境であるJavaとScalaとKoltlin“を参照のこと。

CRP (Chinese resturant process) は,ある特定のデータ生成過程を記述する確率過程である.数学的には,このデータ生成過程は,各ステップで,可能な整数の集合から新しい整数をサンプリングし,その特定の整数がこれまでにサンプリングされた回数に比例する確率で,これまで見たことのない新しい整数をサンプリングする一定の確率で,その整数をサンプリングするものとなる。

今回はこのCRPのClojureの確率的プログラミングのフレームワークであるAnglicanを用いた実装と混合ガウスモデルとの組み合わせについて述べる。

pythonでのトピックモデルのライブラリを集めたリンク。なおpythonの概要および環境設定に関しては”Pythonと機械学習“を参照のこと。

ここでは、トピックモデルのうち最も有名なLDA(潜在的ディリクレ配分法) について、簡単な概要とともにPythonを使ってどのように実装していくのかを紹介していきます。
また実装結果について、PyLDAvisやワードクラウドを使って可視化していきたいと思います。

トピックモデルは非常に難しい(と個人的に思う)手法ですが、Pythonではgensimというライブラリを使うことで簡単に使うことができます。この記事ではそんなgensimについて、その基本的な使い方をご紹介します

テキストマイニングの手法、トピックモデルを用いて文書の自動分類に挑戦します。
理論的な部分はこちらの本先人の拵えた偉大なパッケージ群を活用させてもらい、Rでの実装部分を中心に書いてみたいと思います。

なおR言語の概要と環境設定に関しては”R言語と機械学習“を参照のこと。

コメント

  1. […] 確率的生成モデルの中で、ベイズモデルの統計的なアプローチについて述べられている岩波データサイエンスシリーズ「ベイズモデリングの世界」より。前回は状態空間モデルとシミュレーションの観点から全体モデルと局所モデルについて述べた。今回は自然言語の確率的モデリングの中でトピックモデルについて述べる。 […]

  2. […] トピックモデルとは […]

  3. […] 人工知能技術の中の自然言語処理技術の中での重要な要素技術となる確率生成モデルを用いたトピックモデルの参考図書 「機械学習プロフェッショナルシリーズ トピックモデル」より。前回はトピックモデルの最尤推定、変分ベイズ、ギブスサンプリングによる推定について述べた。今回はトピックモデルの拡張として他の情報を利用したものについて述べる。 […]

  4. […] 人工知能タスクに用いられる自然言語処理技術の一つであるトピックモデル技術の参考図書機である械学習プロフェッショナルシリーズ「トピックモデル」より。前回はユニグラムモデルについて述べた。今回はそれらを発展させた混合ユニグラムモデルについてのべる。 […]

  5. […] 人工知能技術サマリー 機械学習技術サマリー トピックモデルサマリー オントロジー技術サマリー Clojureサマリー Pythonサマリー […]

  6. […] 人工知能技術サマリー 機械学習技術サマリー トピックモデルサマリー オントロジー技術サマリー デジタルトランスフォーメーションサマリー  自然言語処理技術サマリー   知識情報処理サマリー   Pythonサマリー […]

  7. […] 人工知能技術サマリー 機械学習技術サマリー トピックモデルサマリー オントロジー技術サマリー デジタルトランスフォーメーションサマリー  自然言語処理技術サマリー   知識情報処理サマリー    […]

  8. […] 人工知能技術 機械学習技術 トピックモデル オントロジー技術 デジタルトランスフォーメーション  自然言語処理技術   知識情報処理  […]

  9. […] 人工知能技術 機械学習技術 トピックモデル オントロジー技術 デジタルトランスフォーメーション  自然言語処理技術   知識情報処理  […]

  10. […] 人工知能技術 機械学習技術 トピックモデル デジタルトランスフォーメーション  自然言語処理技術   知識情報処理   Python […]

  11. […] 機械学習技術 人工知能技術 デジタルトランスフォーメーション技術 自然言語処理技術 マルコフ連鎖モンテカルロ法  深層学習技術   確率生成モデル トピックモデル […]

  12. […] 機械学習技術サマリー 人工知能技術サマリー デジタルトランスフォーメーション技術サマリー 自然言語処理技術サマリー マルコフ連鎖モンテカルロ法サマリー  深層学習技術サマリー   確率生成モデルサマリー トピックモデルサマリー […]

  13. […] デジタルトランスフォーメーション 人工知能技術  機械学習技術 ユーザーインターフェース 地理空間情報処理  自然言語処理 トピックモデル […]

  14. […]   自然言語処理技術  トピックモデル オントロジー技術 デジタルトランスフォーメーション  […]

  15. […] 人工知能技術 機械学習技術 トピックモデル オントロジー技術 デジタルトランスフォーメーション  自然言語処理技術   知識情報処理  Clojureと関数型プログラミング  Pythonと機械学習、PHPとウェブフレームワーク  Prologと知識情報処理   LISPと人工知能技術  R言語と機械学習、C/C++と各種機械学習アルゴリズム  Javascriptによるフロントエンド開発  CSSによるウェブデザイン […]

  16. […] 確率的生成モデル サポートベクトルマシン スパースモデリング トピックモデル Python  プログラミング技術 深層学習 自然言語処理 ITシステム […]

  17. […] 文章からトピックを抽出する確率生成モデルであるトピックモデル | Deus Ex Machina より: 2023年6月1日 2:26 PM […]

  18. […] 文章からトピックを抽出する確率生成モデルであるトピックモデル | Deus Ex Machina より: 2021年12月17日 6:26 AM […]

  19. […] 文章からトピックを抽出する確率生成モデルであるトピックモデル | Deus Ex Machina より: 2022年1月31日 6:26 PM […]

  20. […] 文章からトピックを抽出する確率生成モデルであるトピックモデル | Deus Ex Machina より: 2021年12月28日 10:40 AM […]

  21. […] マルコフ連鎖モンテカルロ法 深層学習技術 確率生成モデル トピックモデル […]

タイトルとURLをコピーしました