前提・実現したいこと
英語/日本語論文からPythonライブラリのgensimでTF-IDF値を求め、
重要度の高い単語上位5つ程度をキーワードとして抽出したいです。
とりあえずサンプル文章を使ってテストしています。
疑問
こちらのサイト様等参考にして、TF-IDF値を算出しましたが、その取扱いが分かりません。
TF-IDF値の結果を見ると(ソースコードをご参照ください)、
5つの文(texts)に重複して入っている単語は文ごとにTF-IDF値が出ています。
例えば、"b"という単語は5つの文のうち4つに入っており、それぞれ異なるTF-IDF値がでています。
その定義から、文ごとにTF-IDFが出るのは当然なのですが、こちらの結果を見ると、1つの単語に対して1つのTF-IDF値が一意に決まっているように見受けられます。
このようにTF-IDF値を1単語について一意に決めるにはどうすればよいでしょうか。
なにぶん初学者で見当違いのことをいっているかもしれませんが、よろしくお願いいたします。
該当のソースコード
python
1from gensim import corpora,models 2 3# サンプル文章 4texts = [['a', 'b', 'c', 'a'], 5 ['c', 'b', 'c'], 6 ['b', 'b', 'a'], 7 ['a', 'c', 'c'], 8 ['c', 'b', 'a']] 9 10dictionary = corpora.Dictionary(texts) 11corpus = [dictionary.doc2bow(text) for text in texts] 12 13tfidf = models.TfidfModel(corpus) 14corpus_tfidf = tfidf[corpus] 15 16texts_tfidf = [] # id -> 単語表示に変えた文書ごとのTF-IDF 17for doc in corpus_tfidf: 18 text_tfidf = [] 19 for word in doc: 20 text_tfidf.append([dictionary[word[0]],word[1]]) 21 texts_tfidf.append(text_tfidf) 22 23# 表示 24print('===結果表示===') 25for text in texts_tfidf: 26 print(text) 27 28##結果 29===結果表示=== 30[['a', 0.816496580927726], ['b', 0.408248290463863], ['c', 0.408248290463863]] 31[['b', 0.447213595499958], ['c', 0.894427190999916]] 32[['a', 0.447213595499958], ['b', 0.894427190999916]] 33[['a', 0.447213595499958], ['c', 0.894427190999916]] 34[['a', 0.5773502691896257], ['b', 0.5773502691896257], ['c', 0.5773502691896257]] 35
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/04/10 06:48
2020/04/10 07:00