###前提・実現したいこと
テキストデータからtf-idf値が一定値以上の単語を抜き出し、そのデータをデータセットとして機械学習モデルに渡し、ジャンルを出力させるプログラムを作成したいと思っています。
現在、そのためのデータセットを準備しようとしている段階で、プログラム起動時にテキストファイル名と単語を絞り込むための数値を入力し、入力された数値以上のtf-idf値をもつ単語を[単語,tf-idf値]のリストとして作成するところまで実装ができました。
このデータセットを用いて機械学習のモデルを作成したいのですが、どのように作成すればよいのかが、身近に機械学習をじっそうしたことのある人がいないため、1からアドバイスをいただきたいです。
###作成途中のコード
python
1# -*- coding: utf-8 -*- 2#keywordリスト作成 3#指定したテキストファイル(日本語は分かち書きされたもののみ)に対応 4 5import numpy as np 6from sklearn.feature_extraction.text import CountVectorizer 7from sklearn.feature_extraction.text import TfidfTransformer 8 9#CountVectorizer():文書ごとの単語の出現頻度を取得 10count = CountVectorizer() 11 12#文書を指定 13doc = input('select file(ex,○○.txt):') 14doc_name = doc 15with open(doc, encoding = 'utf-8') as f: 16 #改行文字を空白に置き換える 17 doc = [f.read().replace('\n', ' ')] 18f.close() 19 20#絞り込みの基準を設定 21level = float(input('set level(0.0 <= level <= 1.0):')) 22 23#文書を表示 24print('\n%s:%s\n' %(doc_name, doc)) 25 26#N種類の文字列を0からN-1までの整数に置き換える 27bag = count.fit_transform(doc) 28TF = bag.toarray() 29 30#ディクショナリを表示 31dic = count.get_feature_names() 32print('dictionary:%s\n' %dic) 33 34#各単語のインデックスを表示 35print('index:%s\n' %count.vocabulary_) 36 37#TfidfTransformer:(文書内の)TF-IDFを計算 38tfidf = TfidfTransformer(use_idf = True, norm = 'l2', smooth_idf = True) 39np.set_printoptions(precision = 2) 40TF_IDF = tfidf.fit_transform(bag).toarray() 41 42my_dic = [] 43 44#keywordを表示 45for idx, word, in zip(*np.where(level <= TF_IDF)): 46 print('keyword:%s, TF-IDF:%s'%(dic[word], TF_IDF[(idx, word)])) 47 my_dic.append(list([(dic[word], TF_IDF[(idx, word)])])) 48 49#データセットを表示 50print(my_dic) 51
###補足情報
説明不足なところがあると思うので、不明なところがあれば質問をしていただけるとありがたいです。
私にはtf-idf関係の話はできませんので、teratailで助けてもらうためのヘルプを書きます。 全くゼロでここまできたわけではなく、今まで何かしらのWEBサイトや文献を読まれたのではないでしょうか?それをここで見せて、「ここまでは自力で覚えて、ここまではわかるようになった。その上でこう説明してあるけれども、ここの部分が(どのように)わからないので教えてほしい」「こういうサンプル(実例を表示)があるけれども、期待通りに動かないのがどういう理由か教えてほしい(現状と理想のアウトプットイメージを並べる)」というような内容のほうが良いと思います。>1からアドバイスをいただきたいです。 恐らく、皆様は「1から」ではなく、「せめて2や3まで自力で覚えた(または覚える努力をしている)」、という部分を期待しているのだ、と思います。
質問を消さないで自分の間違いを認めたらどうですか?間違いを認められない人ほど見ていられないものはないですよ