###前提・実現したいこと
指定したテキストファイルからTF-IDF値が一定値以上の単語を印字したい
###発生している問題・エラーメッセージ
TF-IDF値が一定値以上を超えた単語のTF-IDF値自体を印字させることはできたが、
条件を満たした単語を印字させるにはどのようなすれば良いのかが分かりません。
可能であれば単語のインデックスとTF-IDF値を一つの構造体としてまとめたいのですが、
とりあえずは単語の表示をさせたいと思っています。
エラーメッセージ
###該当のソースコード # -*- coding: utf-8 -*- #TF-IDF計算(一定値以上に絞り込み可能) #指定したテキストファイル(日本語は分かち書きされたもののみ)に対応 import numpy as np from sklearn.feature_extraction.text import CountVectorizer from sklearn.feature_extraction.text import TfidfTransformer #CountVectorizer():文書ごとの単語の出現頻度を取得 count = CountVectorizer() #文書を指定 docs = input('select file(ex,○○.txt):') docs_name = docs f = open(docs, encoding = 'utf-8') docs = f.readlines() f.close() #絞り込みの基準を設定 level = float(input('set level(0.0 < level < 1.0):')) #文書を表示 print('\n%s = %s\n' %(docs_name, docs)) #N種類の文字列を0からN-1までの整数に置き換える bag = count.fit_transform(docs) TF = bag.toarray() #ディクショナリを表示 dic = count.get_feature_names() print('dictionary = %s\n' %dic) #各単語のインデックスを表示 idx = count.vocabulary_ print('%s内の各単語のインデックス\n%s\n' %(docs_name, idx)) #各文書内の各単語の出現回数(TF)を表示(0番の回数→1番の回数→…) print('%s内のTF =\n%s\n' %(docs_name, TF)) #TfidfTransformer:(文書内の)TF-IDFを計算 tfidf = TfidfTransformer(use_idf = True, norm = 'l2', smooth_idf = True) np.set_printoptions(precision = 2) TF_IDF = tfidf.fit_transform(bag).toarray() #一定値以上のTF-IDF値のみに絞り込む TF_IDF_sel = TF_IDF[np.where(level <= TF_IDF)] #一定値以上のTF-IDF値の単語のみに絞り込む #TF-IDFを表示 print('%s内のTF-IDF(%s以上) =\n%s' %(docs_name, level, TF_IDF_sel))
###試したこと
課題に対してアプローチしたことを記載してください
###補足情報(言語/FW/ツール等のバージョンなど)
Pythonに慣れていないので見づらいコードで申し訳ありません
ソースコードの前後行に ``` を追加してソースが正しく見えるようにしてもらえないでしょうか。 https://teratail.com/help
回答1件
あなたの回答
tips
プレビュー