テキストマイニングとは、分析したいテキストデータから、役立つ情報を抽出することです。
テキストマイニングとひとことで言っても、様々な手法があり、目的に応じて選択する必要があります。
そこで本記事では、
テキストマイニングをやりたい初学者の方向けに、
テキストマイニングの手法をサクッまとめます。
本記事を読むことで、
- テキストマイニングの手法の概要をつかめる
- 目的に応じた手法の選択を出来るようになる
- 自分の業務に活かすテキストマイニング手法を見つけれる
といったメリットがあります。
本記事の概要 [表示]
テキストマイニングの手法とは?概要をつかみ、手法の選択ができ、自分の業務に活かしたいあなたはこちらをどうぞ
テキストマイニングの手法には、
- 統計的手法
- データマイニング・機械学習の手法
- テキストマイニングに固有の方法
といったものがあります。
以下でそれぞれについて、サクッと解説していきます。
テキストマイニングでは、テキストデータを扱いますが、
テキストデータも数値データと同じように、「統計的に分析」することができます。
テキストマイニングの手法(1)統計分析
テキストマイニングでは、数値データと同じように、
テキストデータに対して、「平均」や「分散」、「中央値(メジアン)」「最頻値(モード)」などの統計量を計算することができます。
やり方・使い方としては以下のような感じです。
例えば、文書全体について、文ごとに文字数を計算し、得られた文字数の平均値や分散などの統計量を計算します。
この結果を使い、文書全体の中で、序盤と終盤で1文の文字数が変わっていたり、変わっていなかったりといったことを調べることができます。
これは文書の特徴の1つと考えることができます。
他にも、1つの文書だけでなく、様々な文書ごとに同様に計算して比較することもできます。
すると、同じ著者では文字数の傾向が似ているけど、別の著者ではぜんぜん違う傾向がある、
のように、著者の特徴の1つ、を見出すことができる可能性もあります。
これらの結果は、「ヒストグラム」や「四分位範囲」などを図にして可視化することで、わかりやすく伝えることができるようになります。
この他にも、
- 2つの変数の関係を調べる「回帰分析」や「相関分析」
- 多次元のデータの関係を調べる「多変量解析」
といった手法をテキストマイニングにも使うことができます。
ちなみに「多変量解析」に関係する記事はこちらにまとめています↓
テキストデータも数値データと同じように、
「データマイニング」や「機械学習」の手法を使うことができます。
テキストマイニングの手法(2)データマイニング・機械学習
データマイニングでは、多次元のデータを分析対象として、様々な手法があります。
テキストマイニングにもデータマイニングの手法を適用することができます。
クラスター分析
データだけからグループわけをして、
それぞれのデータはどのグループに属するかを決めることができる方法です。
詳しくはこちらのシリーズでまとめています↓
第1回『「クラスター分析」とは?膨大な情報の内容を、ラク〜にサクッと理解したいあなたはこちらをどうぞ』
主成分分析
主成分分析は、多次元データについて、
元々の変数を結合して新しい変数を作り、
より少ない次元でデータの特徴をできるだけ残したまま表現しなおす方法の1つです。
次元が減るので「次元圧縮」の手法の1つです。
複雑なデータがあったとしても、
主成分分析を行うことで2次元や3次元に圧縮できたら、
図示したりすることで、直感的にも理解しやすくなる
といったメリットがあります。
こちらの記事もどうぞ↓
『「主成分分析」を学びたいあなたにチェックしてほしい良書、12冊はこちらです』
この他にも、機械学習の手法としてよく知られている
「サポートベクトルマシン」や「決定木」
などのアルゴリズムもテキストマイニングに適用可能な手法となっています。
機械学習についてはこちらの記事がございます↓
『「機械学習」に入門したいあなたにチェックしてほしい良書、10冊はこちらです』
ここからは、テキストマイニングに独特の手法をご紹介します。
テキストマイニングの手法(3)固有の方法
テキストマイニングでのみ使われる手法があります。
逆文書頻度(TF-IDF)
語彙や上位・下位概念(WordNet)
Nグラム(N-gram)
共起(コロケーション)
文の構造からの意味(構文解析、係り受け解析)
感情分析(センチメント分析)・ネガポジ分析・評価分析
1), 逆文書頻度(TF-IDF)
逆文書頻度は、その文章にとって重要な単語を調べる方法です。
文や文書の中で、よく使われる文字や単語は、
その文や文書の内容について重要だと考えます。
例えば、テキストマイニングの文書だったら、
「テキスト」や「マイニング」などの単語が多く出現するはずです。
なので、文書を文字や単語に分割して、
それらの頻度を数えればいいわけです。
これが、逆文書頻度のうち
「頻度(TF: Term Frequent¥cy)」
の部分の考え方になります。
しかし、文書には、どんな文書にも多く出現する単語があります。
例えば、「私は」の「は」などの助詞や、
「こと」「もの」などの単語は、
文書の意味には重要ではないけど、
どの文書でもよく使われることが多いです。
ただ単に文字や単語の頻度を数えると、
意味に重要でない文字や単語を重要だと判断してしまいます。
これを修正するための処理を加えます。
それが「逆文書(IDF : Inverse Document Frequency)」になります。
逆文書では、様々な文書を調べて、よく出ている単語の頻度の逆数(の対数)を使います。
TFとIDFをかけ算することで、TF-IDFができます。
つまりTF-IDFは、
- よく出てくる単語を調べる
- 調べている文書のみでよく出てくる単語の重要度を上げ、多くの文書でよく出てくる単語の重要度は下げる
という特徴を持っています。
TF-IDFは、重要語を判断するための指数として使うことができるわけです。
2), 語彙や上位・下位概念(WordNet)
1)のTF-IDFを使うことで、
文章中の重要な単語が抽出できるようになりました。
しかし、私たちが文章を書く時は、同じ意味を持つ違う表記の単語を使う場合があります。
例えば、スパイのことを、間者といったり、犬と言ったりします。
これらは文脈の中では、同じ意味を表していると考えれます。
このように、TF-IDFのように、
単語の文字そのものに基づいた分析に加えて、
類義語を考えて分析したりすることも重要だとわかります。
じゃあ、どうすればいいの?
というところですが、
私たちは普段わからない単語があったら、辞書をひきますよね。
それと同じことをプログラムを書いて行うことができます。
その辞書に対応するのが「WordNet」です。
WordNetは、単語を類義語でひとまとめにしてた語彙の辞書で、単語を概念グループに分類していると言えます。
さらに、概念同士の関係についても記述されており、
- 上位概念
- 下位概念
- 部分関係
- 論理的帰結(entailment)
などの関係が収められています(概念ツリー)。
「上位概念」というのは、
例えば、りんごだったら、上位概念の1つは果物
のように、より抽象的な名称という感じです。
「下位概念」は、
例えば、りんごだったら、サンフジ、紅玉、ジョナゴールド・・・のように、いろいろな品種がありますが、
そのような、より具体的な名称のことを指します。
「部分関係」は、
例えば、アメリカだったらニューヨーク、のように、何かの1部分を表しているような関係のことを指します。
「論理的帰結」は、
例えば、”晴れだから、遠足に行ける” や ”晴れ、当然遠足は開催される”のように、
- AだからB
- A, 当然B
のようなAとBの関係のことを言います。
WordNetなどの概念辞書を使うことで、
同義語や概念の近さや遠さを測定することでき、
それらの情報をテキストマイニングの手法に活かすことができます。
このように、WordNetの活用は、同義語や概念のつながりなど、
テキストデータの字面には現れない情報を補うことができる
テキストマイニングの手法と言えます。
WordNetの扱い方は、こちらの書籍にございます↓
3), Nグラム(N-gram)
文は単語の集まりでできています。
単語は文字の集まりでできています。
文の中には、隣り合う単語や文字があるわけです。
私たちは、文字や単語を適切に隣り合わせることで、意味を作ります。
なので、文字や単語の隣りあい方には、特徴があるはずです。
「Nグラム(N-gram)」は、文字や単語の隣りあいの特徴を表現するテキストマイニングの手法です。
連なるN個の文字や単語のかたまりの事を「Nグラム」と言います。
隣り合う文字や単語には、
- 隣り合う文字や単語同士のつながりは「2グラム」
- 3つの文字や単語同士のつながりは「3グラム」
- ・・・
- N個の文字や単語同士のつながりは「Nグラム」
のように、様々なものがあります。
Nグラムはどのように使われているの?
と思われるかもしれません。
以下でまとめますね。
N-gramの使い方1:文書検索
様々な文書を、例えば3グラムに処理すれば、
すでに3グラムに処理して保存されている
大量の他の文書と素早くマッチングさせて「文書検索」に使うことができます。
N-gramの使い方2:著者特定
この他にも、文字単位のNグラムを使うことで、
「文章の書き手の特徴を表現」することができます。
例えば、文章すべての文について、文の最初や最後のN文字をNグラムとして保存します。
これら文頭や文尾のNグラムパターンについて、
どのパターンが何%くらいあるかの分布(出現頻度)を調べます。
この出現頻度は文章の指紋と言われるように、
著者ごとに違うので、
誰が書いたものかを調べることができます。
例えば、以下の書籍などがあります↓
N-gramの使い方3:文章生成
さらに、単語単位のNグラムを使うことで、文章生成に使うことができます。
既存の大量の文章を2グラムや3グラムなどに処理し、
それぞれのパターンについて出現頻度分布を作成しておきます。
その分布に従って、ランダムに次の後を選ぶことを繰り返すことで、文章の生成をすることができます。
4), 共起(コロケーション)
Nグラムでは、隣り合う文字や単語の特徴を調べる手法でした。
隣り合わないような、数語離れた単語同士にも関係性があります。
これは文中や段落中、文章中などで、
「ともに出現する頻度」
として数値化することができます。
これを「共起(コロケーション)」と言います。
共起とは、例えば、
”明日は晴れてほしいので、遠足のためにてるてる坊主を作った”
という文では、
「明日」「晴れ」「遠足」
のような単語があります。
これらのペア
- (明日、晴れ)
- (晴れ、遠足)
- (明日、遠足)
には、何らかの意味的なつながり(関係)があると考えます。
「晴れ」の単語が多い文や文章では、晴れに関係する文脈
「遠足」の単語が多い文や文章は、遠足に関係する文脈
だとわかります。
「晴れ」と「遠足」を同時に多く含む文や文章では、
晴れと遠足が同じ文脈の中で使われている可能性が高い
と考えることができます。
つまり、明日の遠足について話をしているのだろうと考えることができます。
共起グラフ
共起の分析では、文字や単語の共起をグラフで表現することで、視覚的に理解しやすくなります。
このグラフのことを「共起グラフ」と言います。
グラフの中で、
(1), 多くの文字や単語とのつながりが多いものが「話題の中心」
(2), グラフのかたまりごとに、「話題をグループ分け」できる
といった分析をすることができます。
グラフについては以下の教科書がございます↓
5), 文の構造からの意味(構文解析、係り受け解析)
例えば、以下の2文をみてください。
- 人間は魚を食べる
- 魚は人間を食べる
これを単語の意味だけで分析すると、
どちらも「人間」「魚」「食べる」となり、
違いがないことになります。
しかし、私たちは主語と述語やや目的語などの係り受けの関係を知っています。
なので、これら2文の意味の違いを理解できます。
文の構造や係り受け構造から導かれる意味があるわけです。
つまり、文の意味を理解するには、
文の構造も合わせて理解することが重要になります。
これをコンピュータに行わせるのが
「構文解析」や「係り受け解析」
になります。
文の構文解析をすると、
- 主語が動詞と結びついて何をする
- その対象物(目的語)はなんである
のように、語の役割(主語・述語・目的語など)から意味を抽出することができます。
文を構文構造を表現した構造に書き換えることができます。
書き換えたものは木構造(ツリー構造)をしていますので、「構文木」と呼ばれたりします。
文から構文木を導出する手続きを「パース、パーシング」と言います。
またこの手続きを実装したプログラムのことを「パーサー」と呼びます。
構文解析は英語では特に有効ですが、日本語の場合は少し勝手が違います。
日本語では構文構造が厳密ではないからです。
日本語の場合には、構文木を作るというよりは、語と語の係り受け関係(依存関係)で、語の役割が決まり、それにより意味が理解できます。
また、係り受け関係を理解することで、余分な修飾を取り除いて文の骨格部分を抽出することができます。
係り受け関係を解析するには、例えば、CaboCha のようなプログラムがあります。
CaboCha作者の工藤拓さんの書籍もございます↓
6), 潜在的意味論による意味分析
(統計的)潜在的意味論は、”意味”を数学的に表現するための考え方の1つです。
同じ文脈で出現する語は、同じような意味を持つ
という仮説を前提にしており、
「意味」は、文脈の中での「共起」として測定することが可能
と考えます。
え?どういうこと?
と思われるかもしれません。どういうことか説明しますね。
例えば、野球選手という単語と、具体的な選手の名前が沢山ある文書があったとします。
この文書から野球選手という単語を取り除いても、
(野球好きの方なら)多くの名前の共通項から、
この文書は野球選手についてのものだ
と隠れた共通点(トピック)について想起できるはずです。
この隠れた共通点のことを「潜在的トピック」と言います。
または単に「トピック」とも言います。
今の例はあからさまでしたが、一般的な文書にも同じように、
トピックを想起させる共起する単語のパターンがある
と考えます。
つまり、
文書の意味は、単語の共起性から想起される
と考えて以下の数式化を行っていきます。
具体的なテキストデータに適用するには、以下の手順で行います。
まず文書(文脈)ごとに、単語の頻度分布をベクトル形式に表現した共起ベクトルを作成します。
この共起ベクトルは、文書(文脈)の特徴を表していると考えられます。
しかし、多くの単語はその頻度が0である疎なベクトルです。
そこで次に、多くの文書(文脈)について求めた共起ベクトルを結合して、共起行列を作成します。
そして共起行列を特異値分解することで、情報圧縮を行います。
圧縮後の共起ベクトルを使うことで、
- より良いトピックを見つけたり、
- より良い意味の類似度を表現する
といった使い方ができます。
潜在的意味解析や数学的な側面の理解には、以下の書籍がおすすめです↓
7), ネガポジ分析・感情分析(センチメント分析)・評価分析
アンケート結果や、レビューの結果、SNSでのコメントなどでは、文書に感情がともなっていることがあります。
この感情の分析を行うテキストマイニングの手法が「ネガポジ分析」です。
気分が良い・悪いは、それぞれの単語ごとにある程度決まっています。
例えば、”うれしい”なら、気分がいい文脈である確率が高く
”悲しい”なら、気分が悪い文脈である確率が高いはずです。
あらかじめ単語ごとにネガポジの感情値を登録しておき、
それを元に、文や文章の感情を評価する手法になります。
ネガポジ分析の例
ネガポジの度合いが重要となるのは、書いた人の気持ちが重要な場合になります。
例えば、ネガポジ分析は、以下のもので威力を発揮します。
- 商品やサービスのアンケート
- コールセンターへのコメント
- 商品やサービスへのSNSのコメント
他にも、多くの文書を幅広く分析することで、
- 世の中の感情
を知ることもできます。
世の中の感情を知ることで、株価の値動きの予測に生かしたりするこ応用例などがあります。
というわけで、本記事では、
テキストマイニングをやりたい初学者の方向けに、
テキストマイニングの手法をまとめました。
こちらもございます↓
こちらの記事もございます↓
『「テキストマイニング」を学びたいあなたにチェックしてほしい良書、12冊はこちらです』
『「コレスポンデンス分析」を学びたいあなたにチェックしてほしい良書、9冊はこちらです』
『「クローリング」や「スクレイピング」を学びたいあなたにおすすめの本、8冊+α はこちらです』