前提・実現したいこと
形態素解析のIDF値の求める方法を教えていただきたいです。
テキストから形態素解析をし、「テキストの文章のそれぞれの品詞を振り分けること」、「出現した名詞の個数」、「TF値」を出力できるのですが、IDF値の求める方法には至りませんでした。
どなたかご教授よろしくお願いします。
また、TF値、IDF値とはどのようなものか存じ上げていますが、pythonをはじめて日が浅いためIDF値の求め方がわかりませんでした。
発生している問題・エラーメッセージ
ソースコードからIDF値の求める方法には至りませんでした。
該当のソースコード
# text-mining.py # coding: shift_jis # python解析器janomeをインポート - 1 from janome.tokenizer import Tokenizer # 形態素解析用オブジェクトの生成 - 2 text = Tokenizer() # txtファイルからデータの読み込み - 3 text_file = open("./src/text_1.txt",encoding="shift_jis") # encoding="utf-8"を加えることで、読み込めるようになった。 # "test1.txt"の部分で読み込みたいテキストファイルを書く。 bindata = text_file.read() txt = bindata # txtから読み込んだデータを形態素解析 - 4 lines = txt.split("\r\n") for i in lines: print(i) print("\n") text_c = text.tokenize(i) for j in text_c: print(j) print("\n") # テキストを一行ごとに処理 - 5 word_dic = {} lines_1 = txt.split("\r\n") print(lines_1) print("\n") for line in lines_1: malist = text.tokenize(line) for w in malist: word = w.surface ps = w.part_of_speech # 品詞 - 6 if ps.find("名詞") < 0: continue # 名詞だけをカウント - 7 if not word in word_dic: word_dic[word] = 0 word_dic[word] += 1 count = [] wordlist = [] # よく使われる単語を表示 - 8 keys = sorted(word_dic.items(), key=lambda x:x[1], reverse=True) for word, cnt in keys[:50]: print("{0}({1})".format(word,cnt), end="") wordlist.append(word) count.append(cnt) print("\n") sum_count = sum(count) # TF値 for keyword , keyword_num in zip(wordlist,count): print(keyword,keyword_num) print(keyword_num/sum_count) ##text_1.txt 私の名前は太郎です。 自然言語処理を行っています。 自然言語処理は難しいです。 私はプログラミング初心者ですが、頑張りたいと思います。 自然言語処理の中でも、形態素解析を最初に学んでます。
試したこと
TF値は配列などを用いて、求めることができたのですが、IDF値の求めることができませんでした。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。