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

回答編集履歴

2

修正

2018/12/06 12:40

投稿

hayataka2049
hayataka2049

スコア30939

answer CHANGED
@@ -16,7 +16,7 @@
16
16
  """
17
17
  ```
18
18
 
19
- 余談ですが、tfidfの計算もsklearnで楽に行なえます。分かち書きされたテキストのリストを渡せば良いです。
19
+ 余談ですが、tfidfの計算もsklearnで楽に行なえます。分かち書きされた文字列のリストを渡せば良いです。日本語でちゃんと動かすには、`analyzer`を自分で定義するなどする必要があります。
20
20
 
21
21
  https://scikit-learn.org/stable/modules/generated/sklearn.feature_extraction.text.TfidfVectorizer.html
22
22
 
@@ -28,16 +28,16 @@
28
28
  "電車 が 空い た",
29
29
  "りんご が いっぱい"]
30
30
 
31
- tfidf = TfidfVectorizer()
31
+ tfidf = TfidfVectorizer(analyzer=lambda s:s.split())
32
32
  vectors = tfidf.fit_transform(data).toarray()
33
33
  print(tfidf.get_feature_names())
34
34
  print(vectors)
35
35
  """ =>
36
- ['いっぱい', 'お腹', 'りんご', '空い', '電車']
36
+ ['いっぱい', 'お腹', 'が', 'た', 'りんご', '空い', '電車']
37
- [[0. 0.70710678 0. 0.70710678 0. ]
37
+ [[0. 0.53931298 0.35696573 0.53931298 0. 0.53931298 0. ]
38
- [0.70710678 0.70710678 0. 0. 0. ]
38
+ [0.64043405 0.64043405 0.42389674 0. 0. 0. 0. ]
39
- [0. 0. 0. 0.6191303 0.78528828]
40
- [0.6191303 0. 0.78528828 0. 0. ]]
39
+ [0. 0. 0.32902288 0.4970962 0. 0.4970962 0.6305035 ]
40
+ [0.5728925 0. 0.37919167 0. 0.72664149 0. 0. ]]
41
41
  """
42
42
  ```
43
43
 

1

追記

2018/12/06 12:40

投稿

hayataka2049
hayataka2049

スコア30939

answer CHANGED
@@ -14,4 +14,31 @@
14
14
  [0.44631947 0. 0.1162559 ]
15
15
  [0.14469177 0.1162559 0. ]]
16
16
  """
17
- ```
17
+ ```
18
+
19
+ 余談ですが、tfidfの計算もsklearnで楽に行なえます。分かち書きされたテキストのリストを渡せば良いです。
20
+
21
+ https://scikit-learn.org/stable/modules/generated/sklearn.feature_extraction.text.TfidfVectorizer.html
22
+
23
+ ```python
24
+ from sklearn.feature_extraction.text import TfidfVectorizer
25
+
26
+ data = ["お腹 が 空い た",
27
+ "お腹 が いっぱい",
28
+ "電車 が 空い た",
29
+ "りんご が いっぱい"]
30
+
31
+ tfidf = TfidfVectorizer()
32
+ vectors = tfidf.fit_transform(data).toarray()
33
+ print(tfidf.get_feature_names())
34
+ print(vectors)
35
+ """ =>
36
+ ['いっぱい', 'お腹', 'りんご', '空い', '電車']
37
+ [[0. 0.70710678 0. 0.70710678 0. ]
38
+ [0.70710678 0.70710678 0. 0. 0. ]
39
+ [0. 0. 0. 0.6191303 0.78528828]
40
+ [0.6191303 0. 0.78528828 0. 0. ]]
41
+ """
42
+ ```
43
+
44
+ 特別な理由がなければ自分で書く必要はありません。