###前提・実現したいこと
テキストデータからtf-idf値が一定値以上の単語を抜き出し、そのデータをデータセットとして機械学習モデルに渡し、ジャンルを出力させるプログラムを作成したいと思っています。
現在、そのためのデータセットを準備しようとしている段階で、プログラム起動時にテキストファイル名と単語を絞り込むための数値を入力し、「文書(1つの文の)番号、単語、tf-idf値」を表示させることしかできていません。
これを[単語,tf-idf値]のリストを作成するように変更して機械学習させたいのですが、このようなデータセットの作成方法が正しいのか意見をいただきたいです。
また、現在のプログラムではテキストファイルを「全文書」、1つの文を「1つの文書」とみなして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#from janome.tokenizer import Tokenizer 9 10#CountVectorizer():文書ごとの単語の出現頻度を取得 11count = CountVectorizer() 12 13#文書を指定 14doc = input('select file(ex,○○.txt):') 15doc_name = doc 16f = open(doc, encoding = 'utf-8') 17doc = f.readlines() 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 = [] 43w_cnt = 0 44 45#keywordを表示 46for idx, word, in zip(*np.where(level <= TF_IDF)): 47 print('doc_num:%s, keyword:%s, TF-IDF:%s' %(idx, dic[word], TF_IDF[(idx, word)])) 48 my_dic = list([(dic[word], TF_IDF[(idx, word)])]) #エラーは出ない 49 my_dic[w_cnt] = list([(dic[word], TF_IDF[(idx, word)])]) #エラーが出る 50 w_cnt += 1 51 52print('word count:%s'%w_cnt) 53 54#データセットを表示 55print(my_dic) 56
###補足情報
説明不足なところがあると思うので、不明なところがあれば質問をしていただけるとありがたいです。

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2017/07/26 06:59
退会済みユーザー
2017/07/26 07:18
2017/07/26 07:19
退会済みユーザー
2017/07/26 07:26
2017/07/26 07:33
退会済みユーザー
2017/07/26 07:40
退会済みユーザー
2017/07/26 07:56