前提・実現したいこと
形態素解析のTF値、IDF値、TF-IDF値の求める方法を教えていただきたいです。
テキストから形態素解析をし、「テキストの文章のそれぞれの品詞を振り分けること」、「出現した名詞の個数」を出力できるのですが、TF値、IDF値、TF-IDF値の求める方法には至りませんでした。
どなたかご教授よろしくお願いします。
発生している問題・エラーメッセージ
ソースコードからTF値、IDF値、TF-IDF値の求める方法には至りませんでした。
該当のソースコード
python
1# python解析器janomeをインポート - 1 2from janome.tokenizer import Tokenizer 3 4# 形態素解析用オブジェクトの生成 - 2 5text = Tokenizer() 6 7# txtファイルからデータの読み込み - 3 8text_file = open("text_1.txt",encoding="utf-8") 9# "test1.txt"の部分で読み込みたいテキストファイルを書く。 10bindata = text_file.read() 11txt = bindata 12 13# txtから読み込んだデータを形態素解析 - 4 14lines = txt.split("\r\n") 15for i in lines: 16 print(i) 17 print("\n") 18 text_c = text.tokenize(i) 19 for j in text_c: 20 print(j) 21 22print("\n") 23 24# テキストを一行ごとに処理 - 5 25word_dic = {} 26lines_1 = txt.split("\r\n") 27print(lines_1) 28print("\n") 29for line in lines_1: 30 malist = text.tokenize(line) 31 for w in malist: 32 word = w.surface 33 ps = w.part_of_speech # 品詞 - 6 34 if ps.find("名詞") < 0: continue # 名詞だけをカウント - 7 35 if not word in word_dic: 36 word_dic[word] = 0 37 word_dic[word] += 1 38 39# よく使われる単語を表示 - 8 40keys = sorted(word_dic.items(), key=lambda x:x[1], reverse=True) 41for word, cnt in keys[:50]: 42 print("{0}({1})".format(word,cnt), end="") 43 44##text_1.txt 45#私の名前は太郎です。自然言語処理を行っています。
試したこと
結果は以下のように出力されました。
(サンプルコードの下から2行をいじってみましたが、うまくいきませんでした。)
私の名前は太郎です。自然言語処理を行っています。
私 名詞,代名詞,一般,,,,私,ワタシ,ワタシ
の 助詞,連体化,,,,,の,ノ,ノ
名前 名詞,一般,,,,,名前,ナマエ,ナマエ
は 助詞,係助詞,,,,,は,ハ,ワ
太郎 名詞,固有名詞,地域,一般,,,太郎,タロウ,タロー
です 助動詞,,,,特殊・デス,基本形,です,デス,デス
。 記号,句点,,,,,。,。,。
自然 名詞,形容動詞語幹,,,,,自然,シゼン,シゼン
言語 名詞,一般,,,,,言語,ゲンゴ,ゲンゴ
処理 名詞,サ変接続,,,,,処理,ショリ,ショリ
を 助詞,格助詞,一般,,,,を,ヲ,ヲ
行っ 動詞,自立,,,五段・ワ行促音便,連用タ接続,行う,オコナッ,オコナッ
て 助詞,接続助詞,,,,,て,テ,テ
い 動詞,非自立,,,一段,連用形,いる,イ,イ
ます 助動詞,,,,特殊・マス,基本形,ます,マス,マス
。 記号,句点,,,,,。,。,。
['私の名前は太郎です。自然言語処理を行っています。\n']
私(1)名前(1)太郎(1)自然(1)言語(1)処理(1)
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。