テキストマイニングなどのクラスター分析でも重要な「素性(そせい)ベクトル」を作るための3つのステップとは?

素性ベクトル 作成方法 文書 feature vector 特徴ベクトル クラスタリング クラスター分析 2 アルゴリズム

前回は、クラスター分析するときに必要になる「素性ベクトル(特徴ベクトル)」について、素性ベクトルとは?なぜ必要なの?をまとめました↓

第2回『テキストマイニングの「クラスター分析」でも必要な「素性ベクトル」とは?なぜ必要なの?

 

今回は、「素性ベクトルの作り方」について、3つのポイントでまとめました。

 

本記事の概要

素性ベクトルがなんだったか簡単に

第2回で素性ベクトルについて、

 

「素性ベクトル」とは、その文書に「特徴的な単語の情報を表現」したもの

 

と書きました。

 

たとえば、大量の文書をクラスター分析することを考えてみましょう。

それぞれの文書を、似ているもの・似ていないものとしてグループ分けします。

この似ている・似ていないの尺度を「類似度」というんですが、これが必要です。

 

どうやって類似度を求めよう?

 

ってことなんですが、文書の類似度を考えるときには、

文書そのもの同士の類似度でなく、

文書の特徴を抽出して、「特徴同士の類似度を考える」というのがミソになります。

 

どう、文書の特徴を表現するの?

 

と思われるかもしれませんが、(やり方はいろいろあるんですが)ここでは以下のように考えてみましょう。

 

各文書には、その文書だけに現れてる単語・他の文書では出にくい単語がありますよね。

それをその文書の特徴を表す単語と考えます。

そして、そういった単語を類似度を計算する際に重要視するわけです。

 

逆に、”です”・”ます”といったような、どの文書にも現れるような単語については、あまり重要視しない、という方針です。

 

この考え方を実践して、特徴的な単語を数値化したものが素性ベクトルだ、と理解してもらえればとりあえずはオッケーです^^

 

なるほどね~

  • コンピュータに関する文書なら、「Windows」、「人工知能」「アルゴリズム」・・・
  • 仕事に関する文書なら、「給与」「就職」「転職」・・・
  • 健康に関する文書なら、「健康法」「栄養」「運動」・・・

といった単語が出やすくなっているはずだから、そういう単語をみつけて整理・分類してやあろうって感じなんです。

 

でもこれ、どうやって見つけるの?

 

と思われる方もおられるかと思います。

 

というわけで、文書の特徴を表現する「素性ベクトル」の作り方を説明しますね。

 

 

 

 

 

素性ベクトルを作るための、3つのステップとは?

素性ベクトルは、各文書の特徴を表すベクトル、というのは理解していただけたかと思います。

文書の特徴となる単語を、コンピュータでも探せるように言い換えてみると、以下の3つの手順に分けることができます。

 

①、文書を単語ごとに分割する

②、各単語を整理する(文書の特徴となる単語を探す)

③、特徴を数値にして、ベクトル形式で保存する

 

という3つのステップからなっています。以下で説明していきますね。

 

①、文書を単語ごとに分割する

以下の2つの文書を例にしてみます。(Wikipediaの自然言語処理と人工知能の説明を改変したものです)

(文書1)自然言語処理は、人間が日常的に使っている自然言語をコンピュータに処理させる一連の技術であり、人工知能と言語学の一分野である。

 

(文書2)人工知能とは、人工的にコンピュータ上などで人間と同様の知能を実現させようという試み、或いはそのための一連の基礎技術を指す。

 

この2つの文書を単語に分割してみましょう

 

(文書1)、自然言語処理 / は /、 /人間 / が / 日常的に / 使っている / 自然言語 / を / コンピュータ / に / 処理させる / 一連 / の / 技術 / であり / 、 / 人工知能 / と / 言語学 / の / 一分野 / である / 。/

 

(文書2)、人工知能 / とは / 、 / 人工的 / に / コンピュータ / 上 / など / で / 人間 / と / 同様 / の / 知能 / を / 実現させよう / という / 試み / 、 / 或は / そのため / の / 一連 / の / 基礎技術 / を / 指す / 。 /

 

といった感じで、単語に分けることが可能です。

ちなみにこのような処理はコンピュータでも機械的にできるので、大量の文書があってもオッケーです。

 

 

 

 

 

 

②、各単語を整理する(文書の特徴となる単語を探す)

次は、その文書の特徴となる単語を探します。第2回の記事に書いたように、特徴となる単語は、「その文書に独特の単語」で「他の文書では見かけにくいもの」と書きました。

 

これを上の2つの文書で考えてみます。

(文書1)のみに含まれているものとしては、”自然言語処理” ”自然言語” ”言語学” といったものがあります。

(文書2)のみに含まれているものとしては、”人工的” ”知能” ”実現させよう” といったものがあります。

 

これらの単語たちを比べることで、2つの文書がどう違うのかがサクッと理解できますよね。

 

ちなみに、単語に分割すると、以下のようにどちらにも含まれる単語があることもわかります。ただ、これらは文書の特徴を調べる時には役に立ちません。

  • ”の” ”を” ”、” ”。” など、どんな文書にも含まれている単語
  • ”人工知能”、”人間”、”コンピュータ” など、比較したい文書に同時に含まれている単語

 

文書内には、文書の特徴として重要な単語とそうでない単語があることがわかります。

 

 

 

 

 

③、特徴を数値にして、ベクトル形式で保存する

素性ベクトルを作るには、コンピュータで扱いやすい数値にして、ベクトル形式で保存します。

 

どう数値にするかのやり方はいろいろあるんですが、ここでは、

 

「単語が何回現れたか?」(「出現頻度」といいます)

 

を使うことにします。

 

たくさん出てくる単語はその文書で重要な単語なんじゃないの?

 

という考え方に基づいています。

 

え?それは違うんじゃないの~

 

と思われる方もおられるかもしれません。

 

それはその通りで、完全に正しいわけではありませんが、まずはこう考えてみて、違う部分についてはあとで修正してみる、というやり方をとってみます。

 

出現頻度ですが、

例えば、上の例文の単語出現頻度は、以下のように調べることができます。

  • ”自然言語処理” は、文書1に1回、文書2に0回、全文書で合計1回出現。
  • ”コンピュータ” は、文書1に1回、文書2に1回、全文書で合計2回出現。
  • ”の” は、文書1に1に3回、文書2に3回、全文書で合計6回出現。

これをすべての単語について行います。(実際のシステムではすべての単語に行うわけではないのですが、ここではシンプルに考えてみましょう)

 

文書1、文書2の各単語は、文書1と文書2での出現頻度の二つの値をもちます。

これを「単語(文書1での出現頻度, 文書2での出現頻度)」といった形と表すとすると、

  • 自然言語処理(1, 0)
  • コンピュータ(1, 1)
  • の(3, 3)

と言った感じで表現できます。ベクトルのようになってます。

これを合体させると、

((1, 1, 3) , (0, 1, 3) )

というように2次元のベクトルで表現できるわけです。

(1, 1, 3)は、文書1についての、”自然言語処理” ”コンピュータ” ”の” のこの順での出現頻度で、文書1の特徴を表したベクトルです。

(0, 1, 3)は、文書2についての”自然言語処理” ”コンピュータ” ”の” のこの順での出現頻度で、文書2の特徴を表したベクトルなわけです。

 

このように、全文書の中から重複しない単語のリストをつくって、各文書ごとにその出現頻度を数えるわけです。

そして、出現頻度を規則的に並べていくと、それがベクトルになっています。

これで文書の特徴を表現したベクトルが(一応)作れたわけです。

 

こうして文書の特徴をベクトル表現できたら、あとはベクトルの演算で類似度を計算してクラスター分析、という感じでできそう!

 

というのがクラスター分析の大まかな流れなんですが、その前に、このやり方ではまずい点があるんで、そこを修正する必要があります。

 

まずいのは、シンプルに単語の出現頻度を数える、というところです。

 

なぜかというと、上でつくったベクトルには、たとえば ”の” ”です” ”ます” など、どの文書にも含まれる単語の情報も含まれています。

”の” ”です” ”ます” といった単語はどの文書にも出てくるので文書の特徴を現しにくいです。

にもかかわらず、それぞれの文書で出現頻度が高いので、類似度を計算するときに大きな影響をもってしまうことになります。

 

 

これはまずい!

 

なので、単語頻度を考えるという点で大筋ではオッケーなんですが、少し工夫する必要があって、それには改善するテクニックを知る必要があります。

 

というわけで次回は、素性ベクトルを作るときに必須のテクニック、についてまとめたいと思います。

第4回『テキストマイニングなどの「クラスター分析」で必要な「素性ベクトル」をつくりたいあなたが知らないと損をする必須のテクニックとは?

 

 

 

 

 

 

 

過去記事はこちらです↓

第2回『テキストマイニングの「クラスター分析」でも必要な「素性ベクトル」とは?なぜ必要なの?

 

第1回『「クラスター分析」とは?膨大な情報の内容を、ラク〜にサクッと理解したいあなたはこちらをどうぞ

 

 

 

こちらもございます↓

 

↓こちら無料で読めます

 

 

 

 

 

こちらの記事もございます

『「テキストマイニング」の記事まとめはこちらです

 

「多変量解析」の記事まとめはこちらです

 

「機械学習」に入門したいあなたにチェックしてほしい良書、10冊はこちらです

 

『「データマイニング」を勉強したいあなたにチェックしてほしい良書、10冊はこちらです』

 

「エクセル」で「データ分析」できるようになりたいあなたにチェックしてほしい良書10冊はこちらです

 

「データ分析」を活用したい!けど分からないことだらけの方、その悩みを解決する良書10冊はこちらです

 

「アンケート調査」をしたいあなたにチェックしてほしい良書、8冊はこちらです

 

 

本連載では、クラスター分析の記事を定期的に更新していきます。

Twitterなどフォローしてもらえると、更新情報が届くので便利です!