お知らせ

ただいま、シンタックスハイライターの設定を見直しております。
プログラムが見にくくなっているページがありますが、ご容赦ください。

高校でTF-IDF(1)

テキストマイニング

カウンター

今回はTF-IDFです。今回はTF-IDFです。今回はTF-IDFです。大事なことなので3回書きました。Repeat after me! TF-IDF.

出だしで少しふざけましたが、前回の形態素解析を用いて文章内での単語の重み付けについての話になります。高校での授業で工夫した点も含めたいと思います。形態素を基に考えるのですが、やはり形態素というよりは単語という方が馴染みやすいので、ここからは便宜上単語と表現します。

TF-IDFとは

TFという値とIDFという値の積です。2つの値を基に、文章での単語の重みを数値化するといった感じです。かなり思い切ってざっくり言ってしまうと、単語の重要度を数値として表現するものといえるでしょう。今回はTFについて整理したいと思います。書籍やWebを見ると、大文字表記も小文字表記もあり、どっちが正しいのかはよくわかりません。今回は大文字表記を採用します。

TFとは

TFはTerm Frequencyの略で、直訳してしまうと語出現頻度といった感じでしょうか。とりあえず定義式です。

$$\rm{tf}(t,d)=\frac{n_{t,d}}{\sum_{s\in{d}}{n_{s,d}}}$$

ここで、

\(n_{t,d}\)は文書\(d\)内での単語\(t\)の出現回数

\(\sum_{s\in{d}}{n_{s,d}}\)は文書\(d\)内のすべての単語の出現回数の和

です。といっても何のことやら…もう少し簡略化した表現に直してしまいましょう。

$$単語tの\rm{tf}=\frac{文章d内での単語tの出現回数}{文章d内のすべての単語の出現回数}$$

とするとどうでしょうか。

ある単語\(t\)について\(\rm{tf}\)という値は次のようなことがいえます。

  • 文章\(d\)内での単語\(t\)の出現回数は分子にあるので、繰り返し単語\(t\)が出現すると\(tf\)の値は大きくなる
  • 単に回数だけの比較をすると、文章の長さが長い方が値が大きくなる。文章の長さが異なっても比較できるよう、文章内の出現割合となるように文章\(d\)内のすべての単語の出現回数を分母とする

ここまでの説明で数式からイメージできる人にとっては十分かもしれません。数式が主張していることが読み取れない人もいるので、実際に値を求めてみることも大切です。

TFを求めてみる

授業で例として使ったのは次のようなものです。

例)いちごの特徴を表す文として次のものがあります。単語の数を数えてTFを求めましょう。

いちごの文章:[ 果物 | ケーキ | ビタミン | ケーキ | 赤い ]

というものです。わかりやすいように表として整理しました。

まず、この文章には全部でのべ5つの単語が出現しています。これが「いちごの文章」の分母になります。

次に単語の種類としては4種類あるので、それぞれのTFを求めましょう。

 出現回数TF
果物1回\(1/5\)
ケーキ2回\(2/5\)
ビタミン1回\(1/5\)
赤い1回\(1/5\)

というように求めます。そして、値を出しっぱなしにしないで、この中で重要と考えられる単語はTFの値が大きい「ケーキ」ということまでまとめておきます。

そんなに長くないですが、数値がいろいろ出てくるとややこしくなるので、今回はこれでおしまいにします。続きは次回。それではまた。

この記事を書いた人
春日井 優

高校で情報科という教科を担当しています。以前は数学科も担当していました。(今でも数学科の教員免許状は有効です。)プログラムを覚えたのは、「ゲームセンターあらし」という漫画のキャラクターがBASICを解説する「こんにちはマイコン」を読んだことがきっかけでした。

Posted by kasugai