こんにちは、レバレジーズSEOチームです。
以前の記事「【SEO×自然言語処理】 SEOに使えるテキストマイニングの最新手法」に引き続き、
今回は、テキストマイニング手法として有名な確率的潜在的意味解析(probabilistic Latent Semantic Analysis:pLSA)を用いた分析をお伝えしたいと思います。
・分析のモチベーション
2013年における検索アルゴリズムの大きな変更点の一つとしてHummingbirdアルゴリズムが挙げられます。Hummingbirdアルゴリズムは文脈・コンテンツの意図を判断することに特化したアルゴリズムとされています。(注1)
検索エンジンはあくまでも機械ですから、文章の理解をするとしてもテキストマイニングの手法に従う可能性はあると思われます。現に、SEOMOZのRand FishkinやSEO by the SeaのBill Slawskiは自然言語処理に関心を持ち、その可能性を示唆しています。(注2)
検索エンジンがコンテンツを理解する際のキーが何かを断言はできませんが、共起単語というものが、重要な手がかりになるのではないかと考えています。
実際、searchmetrics社の2014 Ranking Factors Study(注3) においても、アメリカの検索結果に関して、共起単語と高い順位とが相関関係があると示されていました。相関関係と因果関係は必ずしも繋がりませんが、共起単語にアプローチすることは新しい発見に繋がるかもしれません。
当然ながら、検索エンジンが共起単語を捉えていくアルゴリズムの中身はわからないですが、自然言語処理における共起単語の推定方法は存在します。この記事では、共起単語の推定を自然言語処理のプロシージャであるpLSA(probabilistic Latent Semantic Analysis)で行う例を紹介したいと思います。
・pLSA(probabilistic Latent Semantic Analysis:以下pLSA)とは
検索エンジン工学において、文書情報の圧縮技術として用いられているLSA(Latent Semantic Analysis)の欠点とされる確率的な基礎づけの欠如を、ベイズの定理を用いることで補った機械学習手法です。文書圧縮の結果、その文書の意味や概念に繋がる単語を抽出することができるとされています。(注4)
ただし、1999年に提唱された手法で決して新しさはなく、その改良型であるLDA(Latent Dirichlet Allocation)も2003年に登場しています。pLSAは与えられたサンプル文書に対する過学習の欠点があり、その点をLDAは克服しているのでpLSAをあえて扱うことに抵抗はありますが、Rに関して日本語に対応したコードがなかったことから、あえてpLSAを扱うことをご了承下さい。ただ、pLSAはLDAの特殊系と見なすこともできるので(注5) 、問題ないものとして扱っていきます。
・計算方法
今回分析を行った環境は以下の通りです。
・Windows7
・R 3.0.3 64-bit
・MeCab 0.996
・RMeCab 0.9994
加えて、今回用いたコーパスは「カモノハシペリー」でGoogle検索した際の上位100位までのサイトの文章のみを抽出したものとなっています。文書数は100となります。
まず、2009年にTakaaki Tokudaさんが記されたブログ
(http://wg-stein.blogspot.jp/2009/11/probabilistic-latent-semantic-analysis.html)に、pLSAをRで実行するためのコードがあったため、そのコードを拝借させていただきます。(今回はこちらのアルゴリズムの詳細やコードの説明を行いません。)
pLSAを計算する関数のコードは以上です。
なお、上述の関数には引数があるので、以下のように初期条件としてアルゴリズムのパラメータやトピックの数などを指定します。
トピックのクラス数に関しては、文書集合に対する潜在的なトピックスの数を意味します。これに関しては、教師なし学習であるクラスター分析の
K-mean法のようにアドホックに決めてしまいます。TEMの温度に関するパラメータは、今回のpLSAの解析において尤度関数を最適化させるためのアルゴリズムとして
EMアルゴリズムを用いており、そのアルゴリズムのパラメータのことを指しています。パラメータ設定如何によって、結果が変わってきます。
続いて、分析用のデータを作成するために、
RMeCabを用います。
RMeCabとは、
形態素解析エンジンである、
MeCabをR上で実行することができるパッケージで、石田基広さんが開発を進められています。(インストール方法などは今回扱いませんがリンクを参考文献に載せておきます。)
ここから、単語-文書行列を作成するために、RMeCabの
docMatrix関数を用います。
docMatrix関数では、引数(pos=c(“名詞”))において、形態素解析結果の品詞を指定して行列形式に抽出することができます。今回の分析では、名詞に限って扱うこととします。これらを実行することにより、単語-文書行列を生成することができます。
単語-文書行列を、先ほどのplsiの関数に代入して実行すれば、pLSAは完了します。
今回のケースでは、14回試行して収束しました。以下より、対数尤度の値やパラメータの変遷が確認できます。
しかしながら、このままでデータを出力しても知見が得られにくいので、以下のように出力させます。
このようにすることで、単語ごとの、トピックに属する確率が見やすくなります。
・計算結果とその解釈
各トピック毎に、含まれる確率の高い単語を分析結果から抽出すると、以下のようになります。オレンジ色は共通してカモノハシペリーを特徴付けている単語、淡い青色は各トピック毎に特徴的な単語を指しています。ただし、判断は主観によります。
私見ですが、トピック1は「入荷」「価格」「商品」「送料」「オークション」など、カモノハシペリーに関するグッズ関連の検索意図を示したキーワード群なのではないかと思います。トピック2は「放送」「番組」「ドゥーフェンシュマーツ」「キャンディス」「アニメ」などディズニーのアニメである『フィニアスとファーブ』の番組に関心がある検索意図を示したキーワード群と考えられます。最後に、トピック3は「動画」「投稿」「再生」「レビュー」「タグ」「お気に入り」などカモノハシペリーの動画に関する検索意図を示したキーワード群のように思われます。
以上から、勝手な解釈ですが、
カモノハシペリーと検索する人には3つのタイプがあって、「グッズが欲しい人」、「アニメについて知りたい人」、「動画を見たい人」などに分類されるのではないかと考えられます。このところの評価を客観的に行いたいですが、自然言語処理系の研究報告会などではトピックに対して、研究者の主観が許されているようなので、特に問題はないのかもしれません。
【結論】
pLSAを用いることで、特定キーワードの共起表現を確率による数学的基礎づけのもとで抽出でき、その結果得られた単語は自然言語的に違和感の無い共起単語であることが明らかになりました。そして、得られたトピックの裏にある潜在的な意図も違和感はあまりありませんでした。そのため、Hummingbirdアルゴリズムによる検索エンジンの意味解析の重要度が増す中で、このアルゴリズムに向き合うツールとしてpLSAを用いることも選択肢の一つになるかもしれません。次回はpLSAの進化系であるLDA(Latent Dirichlet Allocation)について扱い、コーパスの規模を大きくさせる予定です。
【注釈】
1.「ハミングバードは、クエリ内の各ワードに注目して、特定のワードではなく、クエリ全体 – 文全体、会話、または、意味 – を考慮する。」
Googleの最新アルゴリズム「ハミングバード」徹底解剖
http://www.seojapan.com/blog/humming-bird
2. SEOmoz対SEO Book、トップ検索マーケッター2人のトークバトル
http://www.seojapan.com/blog/seomoz-vs-seobook
Illustrated Guide to Advanced On-Page Topic Targeting for SEO
http://moz.com/blog/on-page-topic-seo
3. 2014 Ranking Factors Study
http://www.searchmetrics.com/knowledge-base/ranking-factors/
4. 北・津田・獅々堀(2002)『情報検索アルゴリズム』共立出版 p66
5. “On an Equivalence between PLSI and LDA”
http://www.cs.bham.ac.uk/~axk/sigir2003_mgak.pdf
【参考文献】
■pLSA関連
Probabilistic Latent Semantic Analysis
http://cs.brown.edu/~th/papers/Hofmann-UAI99.pdf
■RMeCabをインストールされたい方
RMeCab
http://rmecab.jp/wiki/index.php?RMeCab