質問編集履歴
2
試したことの追記
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
タグの追記
title
CHANGED
File without changes
|
body
CHANGED
File without changes
|