テキストマイニングの根本技術を3種類紹介!形態素解析、構文解析、辞書作成!

こんにちは!
IT企業に勤めて、約2年間でデータサイエンティストになったごぼちゃん(@XB37q)です!

このコラムでは、テキストのデータを分析する技術である「テキストマイニング」の原理を紹介します。
テキストマイニングの概要については、他のコラム「簡単にわかるテキストマイニングとは」をご覧ください。

テキストマイニングの原理

テキストマイニングの方法
テキストマイニングの方法

テキストマイニングは、文章から何か意味のある情報を引き出す分析手法の総称です。
ではどのようにしてAIは文章から情報を引き出しているのでしょうか?

AIは文章ではなく、文章を構成している単語をベースに、様々な情報を引き出します。
例えば、「私はIT会社員です」といった文章から、「私」や「IT会社員」という単語を引き出します。
つまり、文章全てを一度に把握しているわけではなく、部分的に把握していくのです。

それでは、どのように文章を構成している単語を判断しているのでしょうか?
次の章ではそれらの技術について紹介していきます。

形態素解析

形態素解析
形態素解析

形態素解析とは、文章を単語ごとに分割し、単語ごとに品詞を割り当てる技術のことです。

単語を分割する

上の例では、「私はIT会社員です。」といった文章を「私 / は / IT / 会社員 / です。」のように文章を単語へ分割することができます。
このように単語ごとヘ分割することにより、コンピュータの集計が使える点が、テキストマイニングでは重要なポイントです。

品詞を判定する

また、文章を単語へ分割するだけでなく、品詞を判定することも行います。
「私」は名詞、「は」は助詞など品詞を判定します。
同じ単語でも品詞が違う場合、テキストマイニングでは違う単語として区別をします。

テキストマイニングでは、該当する品詞の単語だけを抽出することもあります。
例えば、助詞や形容詞より、名詞のみを抽出することにより、どのような名詞が出現しているかといった把握を容易にします。
そのため、この品詞の判定も非常に重要なポイントです。

形態素解析の精度が重要

形態素解析の精度がよくない場合、テキストマイニングをした結果が意味のないものになってしまうことも多いため、形態素解析は非常に重要な技術だと思います。
この形態素解析は基本的にはプログラミング言語であるpython(MeCabやjanomeなど)やパッケージ化されているテキストマイニングツールが自動的に行ってくれます。
そして、この形態素解析の精度が1番良いものが、ツールとしてよいものと判断して良いと思います。
なぜならば、この形態素解析の精度がよくない場合、テキストマイニングをした結果が意味のないものになってしまうことも多いからです。

日本語のテキストデータの場合は形態素解析が重要になりますが、英語のテキストデータの場合は単語と単語の間にスペースが入っているため、単語ごとに分割する技術は不要になります。

構文解析

構文解析
構文解析

次に構文解析です。これは単語と単語のつながりを判定するための技術です。

先ほどの「私 / は / IT / 会社員 / です。」の場合、ITは会社員にかかっています。
このように単語と単語のつながりを判定することで、1単語だけでは分からなかった情報を、IT会社員だという風に判断することができます。
これはいわゆる係り受けとも呼ばれることがあります。

日本語のテキストデータの場合、どの単語がどの単語につながっているかは非常に判断が難しくなります。
例えば、以下のような例を考えてみてください。
「望遠鏡で泳ぐ彼女を見た。」
この文章は2通りの解釈が可能です。
①望遠鏡で泳いでいる / 彼女を見た。(彼女は、望遠鏡という道具を使って泳いでいる)
②望遠鏡で / 泳いでいる彼女を見た。(泳いでいる彼女を望遠鏡で見た)

このように、自然言語には「言葉の曖昧性」が存在します。
私たちが使っている自然言語には、このような曖昧性を持っていますが、人は過去の経験からその意味かを解釈しています。
しかし、コンピュータは与えられたデータのみで判断する必要があります。
そのため、この構文解析も非常に重要な技術になってきます。

また、英語のテキストデータの場合も同様に判断が難しくなります。
1つの単語が入るだけで、単語と単語のつながりが変わってしまうことがあるからです。

このように、構文解析は言語の特性によって難しさが異なってくることがポイントです。

辞書作成

辞書作成
辞書作成

前の章では、形態素解析と構文解析の技術を紹介しました。
しかし、形態素解析と構文解析の精度だけでは、人間が書いたテキストデータをミスなく分析することは不可能です。

なぜならば、人間が書いた文章には、その人それぞれの表現のゆらぎが必ず存在するからです。
例えば、コンピュータをCPと書く人もいれば、コンピューターと書く人もいます。

また、その会社やその業界特有の単語が存在します。
例えば、データサイエンティストは最近作られた単語です。

このような表現のゆらぎを無くすためや、特有の単語を統一するために必要なのが、辞書と呼ばれるものです。
辞書は分析者が作成するものであり、テキストマイニングの精度を向上させる技術です。

同じ意味の単語を統一した表記に変換する

例①:人工知能 ⇒ AI
例②:Artificial Intelligence ⇒ AI

専門用語などを形態素解析によって分割させないようにする

例①:IT / 会社員 ⇒ IT会社員
例②:データ / サイエンティスト ⇒ データサイエンティスト

テキストによって意味のない単語を除外する

表現のゆらぎ以外にも、除外したい単語を指定することも可能です。

例①:もしもし~ ⇒ 除外
例②:~と思いました ⇒ 除外

まとめ

  • テキストマイニングには形態素解析、構文解析を行って文章を認識できる形へ変換する
  • 精度を向上させるために、辞書作成を行いテキストデータを加工する作業が存在する
  • テキストマイニングはテキストデータを数値として集計可能な単語へ分割して、分析を行う分析手法

参考図書