teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

2

試したことの追記

2018/09/05 22:27

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -1,5 +1,6 @@
1
1
  ### 前提・実現したいこと
2
2
  [TF-IDFを使ってFAQに回答する](http://tadaoyamaoka.hatenablog.com/entry/2017/04/25/224748)という記事を読みながら実装を進めています。
3
+ TF-IDF値が高い順に出力を得ることを実現したいです。
3
4
 
4
5
  ### 発生している問題・エラーメッセージ
5
6
  以下のコードのコメントアウトされている部分のvectorizer.vocabulary_.items()が何を指しているのか理解できません。何を指しているのか教えていただきたいです。
@@ -58,6 +59,43 @@
58
59
  print()
59
60
  ```
60
61
 
62
+ ### 試したこと
63
+ [類似するコードが載っていた記事](http://ailaby.com/tfidf/)を使って、vectorizer.vocabulary_.items()の振る舞いを確認しようとしましたが、
64
+ sortを行うとあいうえお順に出力され、sortをしないとただ分かち書きされた単語が順番に出力されるだけだったので、TF-IDF値が高い順に並べることはできないのでしょうか。
65
+ ```python
66
+ import numpy as np
67
+ from sklearn.feature_extraction.text import TfidfVectorizer
68
+
69
+ np.set_printoptions(precision=2)
70
+
71
+ docs = np.array([
72
+ 'みぞれ とは 何ですか?', # 文書1
73
+ '台風 と ハリケーン の 違いは?', # 文書2
74
+ '異常気象 に ついて'
75
+ ])
76
+
77
+ vectorizer = TfidfVectorizer(use_idf=True)
78
+ vecs = vectorizer.fit_transform(docs)
79
+
80
+ print (vecs.toarray())
81
+ for k,v in sorted(vectorizer.vocabulary_.items(), key=lambda x:x[1]):
82
+ print (k)
83
+ ```
84
+
85
+ ```
86
+ [[ 0. 0.58 0.58 0. 0.58 0. 0. 0. ]
87
+ [ 0. 0. 0. 0.58 0. 0.58 0. 0.58]
88
+ [ 0.71 0. 0. 0. 0. 0. 0.71 0. ]]
89
+ ついて
90
+ とは
91
+ みぞれ
92
+ ハリケーン
93
+ 何ですか
94
+ 台風
95
+ 異常気象
96
+ 違いは
97
+ ```
98
+
61
99
  ### 補足情報(FW/ツールのバージョンなど)
62
100
 
63
101
  Python 3.6.0 :: Anaconda 4.3.0

1

タグの追記

2018/09/05 22:27

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
File without changes