TF-IDF

2022/04/13

AI

TF-IDFとは

TF-IDFは、TF(Term Frequency)とIDF(Inverse Document Frequency)を用いて単語を重み付けする手法。

TFは同じ文章内での出現頻度が高い単語ほど重みが大きくなるように、IDFは他の文章中での出現頻度が低い単語ほど重み大きくなるように調整する役割を担う。

TF-IDFによる各文章dd中の単語ttの重みは、以下の式で表される。

tfidf(t,d)=tf(t,d)×idf(t)\rm{tfidf}(t,d) = \rm{tf}(t,d) \times \rm{idf}(t)

tf(t,d)\rm{tf}(t,d)は文章ddの内の単語ttの出現率、idf(t)\rm{idf}(t)は単語ttが出現する文章の割合の逆数であり、以下の式で表される。

tf(t,d)=nt,dsdns,d\rm{tf}(t, d) = \frac{n_{t,d}}{\sum_{s \in d} n_{s,d}}
idf(t)=logNdf(t)\rm{idf}(t) = log \frac{N}{\rm{df}(t)}

nt,dn_{t,d}:文章dd内での単語ttの出現回数

sdns,d\sum_{s \in d} n_{s,d}:文章dd内のすべての単語の出現回数の和

NN:全文章数

df(t)\rm{df}(t):単語ttが出現する文章の数

なお、scikit-learnでのidf(t)\rm{idf}(t)の定義は若干異なっている。

smooth_idf=Falseの場合、

idf(t)=logNdf(t)+1\rm{idf}(t) = log \frac{N}{\rm{df}(t)} + 1

smooth_idf=Trueの場合、

idf(t)=logN+1df(t)+1+1\rm{idf}(t) = log \frac{N+1}{\rm{df}(t)+1} + 1

著者画像

ゆうき

2018/04からITエンジニアとして活動、2021/11から独立。主な使用言語はPython, TypeScript, SAS, etc.