回答編集履歴

2

修正

2018/12/06 12:40

投稿

hayataka2049
hayataka2049

スコア30933

test CHANGED
@@ -34,7 +34,7 @@
34
34
 
35
35
 
36
36
 
37
- 余談ですが、tfidfの計算もsklearnで楽に行なえます。分かち書きされたテキストのリストを渡せば良いです。
37
+ 余談ですが、tfidfの計算もsklearnで楽に行なえます。分かち書きされた文字列のリストを渡せば良いです。日本語でちゃんと動かすには、`analyzer`を自分で定義するなどする必要があります。
38
38
 
39
39
 
40
40
 
@@ -58,7 +58,7 @@
58
58
 
59
59
 
60
60
 
61
- tfidf = TfidfVectorizer()
61
+ tfidf = TfidfVectorizer(analyzer=lambda s:s.split())
62
62
 
63
63
  vectors = tfidf.fit_transform(data).toarray()
64
64
 
@@ -68,15 +68,15 @@
68
68
 
69
69
  """ =>
70
70
 
71
- ['いっぱい', 'お腹', 'りんご', '空い', '電車']
71
+ ['いっぱい', 'お腹', 'が', 'た', 'りんご', '空い', '電車']
72
72
 
73
- [[0. 0.70710678 0. 0.70710678 0. ]
73
+ [[0. 0.53931298 0.35696573 0.53931298 0. 0.53931298 0. ]
74
74
 
75
- [0.70710678 0.70710678 0. 0. 0. ]
75
+ [0.64043405 0.64043405 0.42389674 0. 0. 0. 0. ]
76
76
 
77
- [0. 0. 0. 0.6191303 0.78528828]
77
+ [0. 0. 0.32902288 0.4970962 0. 0.4970962 0.6305035 ]
78
78
 
79
- [0.6191303 0. 0.78528828 0. 0. ]]
79
+ [0.5728925 0. 0.37919167 0. 0.72664149 0. 0. ]]
80
80
 
81
81
  """
82
82
 

1

追記

2018/12/06 12:40

投稿

hayataka2049
hayataka2049

スコア30933

test CHANGED
@@ -31,3 +31,57 @@
31
31
  """
32
32
 
33
33
  ```
34
+
35
+
36
+
37
+ 余談ですが、tfidfの計算もsklearnで楽に行なえます。分かち書きされたテキストのリストを渡せば良いです。
38
+
39
+
40
+
41
+ https://scikit-learn.org/stable/modules/generated/sklearn.feature_extraction.text.TfidfVectorizer.html
42
+
43
+
44
+
45
+ ```python
46
+
47
+ from sklearn.feature_extraction.text import TfidfVectorizer
48
+
49
+
50
+
51
+ data = ["お腹 が 空い た",
52
+
53
+ "お腹 が いっぱい",
54
+
55
+ "電車 が 空い た",
56
+
57
+ "りんご が いっぱい"]
58
+
59
+
60
+
61
+ tfidf = TfidfVectorizer()
62
+
63
+ vectors = tfidf.fit_transform(data).toarray()
64
+
65
+ print(tfidf.get_feature_names())
66
+
67
+ print(vectors)
68
+
69
+ """ =>
70
+
71
+ ['いっぱい', 'お腹', 'りんご', '空い', '電車']
72
+
73
+ [[0. 0.70710678 0. 0.70710678 0. ]
74
+
75
+ [0.70710678 0.70710678 0. 0. 0. ]
76
+
77
+ [0. 0. 0. 0.6191303 0.78528828]
78
+
79
+ [0.6191303 0. 0.78528828 0. 0. ]]
80
+
81
+ """
82
+
83
+ ```
84
+
85
+
86
+
87
+ 特別な理由がなければ自分で書く必要はありません。