データサイエンス

【連載】記述的多変量解析 – テキストマイニング

10.テキストマイニング

はじめに

シンプルには、形態素解析+MDSで行えます。形態素解析については本稿では触れません。MDSは広い意味で、ここでは、対応分析を使った例を見ます。具体的には、T-newsを見ていきます。

 

テキストマイニングとは

一般的には、日本語を処理する部分と、処理した日本語を分かり易く見せる部分の2つの部分からなります。

一つめ、日本語を処理する部分。言葉を、意味を成す出来るだけ小さい単位にばらす工程です。これは、特に日本語において、ずいぶんと厄介な部分です。英語だと、あまり深く考えなくても、とりあえずは出来ます。単語と単語はスペースで区切られているからです。ところが、日本語はそう簡単にいきません。

よく挙がる例として、「庭には二羽鳥がいます」。「庭には鶏がいます」「二羽、庭には鳥がいます」のような類。どのように区切るのが正解なのかは、文字だけ見てもなかなかわかりません。

これはこれで、「形態素解析」という一分野として、いろいろと考えられているようです。一般的には「辞書」を使うタイプが多いように感じますが、先述の通り、ここでは触れません。

後半部分。形態素解析でばらした日本語を、どう見せるか。意味のある言葉として再構成するか、です。

これは、広義でいうMDS、例えば対応分析を使う例が多いように思われます。分かち書かれた単語が、互いにどういう関係にあるのか、良く同じ文に登場するのか、別の文でしか使われないのか、といったことを見ます。

なぜ、こんな2度手間(一度ばらしてまた関係付ける)のようなことをするのかと言うと、文章は、人によりさまざま、言葉も、同じことを言っているようでも、表現はまちまち、あるいは、似たようなことを言っているようでも、否定なのか、肯定なのか、微妙だったりするのです。そこで、一度言葉をばらして、単語単位で復元する、という2度手間をかけます。

T-news

ここでは、一例を見てみましょう。例えば、下記は2015年3月31日にUPした、3/30のツイートデータに基づくテキストマイニングの結果です。

1図表1.map

これは、3/30、7時~29時台(3/31、6時まで)の間に、新聞各社のハッシュタグ付きで行われたツイートデータ、10,735件に基づいています。

まず、10,735件のツイートデータは、形態素解析によって、ばらばらの単語に分解されます。例えば、この日は、14,1052語が使われていたようです。品詞を無視して見ると(T-newsでは簡易的に品詞を無視しています)10,029語。1万件のつぶやきに、1万語しか使われていないのはおかしいと感じるかもしれません。これは、集計する単語を、品詞で絞り込んでいるからです(絞り込む際のみ品詞を見ています)。実際には、もっと多くの語が使われているのでしょうけれども、布置にあたっては、使う語の品詞を絞り込んでいます。例えば、「は」という助詞を布置しても、使われる文脈もさまざまで、意味をとれない、布置しても意味がないでしょう。こうした理由で、実際に布置に使う語は、形容詞や名詞など、一部に絞り込んでいます。

これを集計すると、その日多く使われた単語がわかります。

こうして、語単位で集計してみた結果が、例えば図表2.のようなものです。なお、実際には「未知語」も拾っています。列「cat」(カテゴリー)に「未知語」と入っている語は、形態素解析において、品詞をはっきり識別できなかった語です。新語など、形態素解析のソフトが使っている辞書作成時点では、登録されていなかった言葉がここに入ってきます。ただ、文節ではきちっと区切れているので、多くの場合、あらたな言葉や、特殊な言い回しの流行語などは「未知語」としてあらわれます。 テキストマイニングが流行り始めた2,000年前後には、各社が「うちは新語や流行語も十分に登録された辞書を使っています」と謳っていましたが、未知語を見れば、基本的には新語の登録は不要です。

図表2.で、4列目にある語が、実際の布置の計算に使った語です。新聞社のハッシュタグだったり、「RT」という文字列だったり、あまり布置しても意味がないであろう単語は、布置する語には含めていません。

なお、「社会」という語は、特定の記事というより、「社会記事」とか「社会面」とか、一般的な意味で使われることが多く、具体的な記事の情報としては、ほぼ意味をなさない場合が多いため、布置からは外しています。このような、経験に基づく判断も若干入っています。

2図表2.語の集計結果

こうして、出現頻度が高かった語を選び、これを、つぶやかれた時間ごとに集計します(図表3.)。一番左の列(表側)の数字が時間、表頭に語、のクロス表です(なお、対応分析一般の特性としても、周辺度数が他と著しく違う表側/表頭要素は使わないほうが良いでしょう)。

クロス表が出来てしまえば、あとは普通に対応分析を行えば、布置は得られます。

3図表3.時間ごと、出現頻度の集計

こうして得られたのが、図表1.のmapです。

文章の復元

日々のT-newsでは、こうして得られた布置をもとに、布置されている単語が、どういった記事の文章だったのか、復元して、コメントしています。例えば、この日は、下記のようなコメントを入れていました(若干見やすいように成形してあります)。

【新聞】各時間に多くツイッターで引用された記事

・一日を通じて多く引用された新聞記事

■08:50.


■09:20.


■10:00.


■13:10.


■17:50.


(※時間順)

・特定の時間に多く引用された新聞記事

■9時台


■10時台


例えば、布置上、左、第3象限のほうに、「10」という数字と「地震」という単語が見えます。数字は時間です。「10」時台。この時間帯に「地震」という語が高頻度で見られました(必ずしも、行要素と列要素は点間の距離関係で解釈できるとは限りません)。そこで、データに戻って、10,735件のツイートデータを見ます。このツイートデータのうち、まず、10時台のツイートだけにデータを絞り込みます。818件が該当します。次いで、「地震」という語を含むデータだけに絞り込みます。277件だけが該当します。この277件を単純集計してみましょう。すると、うち130件は、「RT @47news: 速報:パプアニューギニアの地震でパプアに1~3メートルの津波の恐れと警報。日本では30センチ以下の恐れ。」というツイートでした。

こうして、「■10時台→RT @47news: 速報:パプアニューギニアの地震でパプアに1~3メートルの津波の恐れと警報。日本では30センチ以下の恐れ。」というコメントに至っています。

とは言え、難しいことはともかくも、図(図表1.)を見れば、何時ごろ、何についてつぶやかれていたか、なんとなくは理解できるのではないでしょうか。

最後は、個々の記述的多変量解析法の解説とは少し離れましたが、実際にこんな風に使われているのだ、という紹介になればと思います。