LoginSignup
0

More than 1 year has passed since last update.

posted at

続・tf-idf関数を使わずに重みづけ

前回の記事では、読み込んだテキストデータを形態素解析して頻出単語を抽出しました。
これはtf値の前段階ぐらいまでにあたります。

↓こちら
Markdown: 形態素解析して頻出単語を出す

そして今回行ったこと
・tfの計算
式:ある単語aの文書内での出現回数 / 文書内のすべての単語の出現回数の和
・idfの計算
式:#idf計算する:ある単語の出現する単語数(count_list) / 全文書数
・tf-idfの計算
・パンダスを利用して表の形にしてみる
・テキストに出力

aa.py
#TFの計算
#ある単語aの文書内での出現回数 / 文書内のすべての単語の出現回数の和

def tf(t):
    tf_num = t / count_all
    return  tf_num

#idf計算する:ある単語の出現する単語数(count_list)/全文書数
#全単語
count_all_2 = len(a)

def idf(m):
    idf_num = m / count_all_2
    return idf_num

def tf_idf(x,y):
    z = x*y
    return z

tf_list = []
idf_list = []

for i in range(len(count_list)):
    tf_list.append(tf(count_list[i]))
    idf_list.append(idf(count_list[i]))

tfidf_list = []
for i in range(len(tf_list)):
    tfidf_list.append(float(tf_idf(tf_list[i],idf_list[i])))


#パンダスで表にした   
df1 = pd.DataFrame(f_list)
df1[1] = (tf_list)
df1[2] = (idf_list)
df1[3] = (tfidf_list)

df1.rename(columns={0:'名詞',1:'tf値',2:"idf値",3:"tf-idf値"})

#print(df1)

df1.to_csv('to_csv_out.tsv', sep='\t')

参考にさせていただいたサイト
Markdown: 自然言語処理の基礎であるTF-IDFの計算方法とPythonによる実装方法を解説

【反省点】
・何回かに分けて作ったのでリストの名前や変数名を毎回適当にしすぎた。後でめちゃくちゃ見づらいです。ただ、いちいち説明を入れていたのでブロックごとに何をしているかは見やすかった。gj
・tf-idfを関数を利用して計算していたサイトをそのままコピペしたところパンダスの利用の仕方がイマイチわからず挫折したのですが、最後の出力として挑戦してみました。ちゃんと見れるようにできたので良かったです。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
0