質問編集履歴

4

変更

2020/01/12 09:32

投稿

hidemomo
hidemomo

スコア31

test CHANGED
File without changes
test CHANGED
@@ -54,7 +54,11 @@
54
54
 
55
55
  def tokenize(text):
56
56
 
57
+
58
+
57
-
59
+ node = mecab.parse(text).splitlines()
60
+
61
+
58
62
 
59
63
  stop_words = [
60
64
 
@@ -68,13 +72,7 @@
68
72
 
69
73
 
70
74
 
71
- node = mecab.parse(text).splitlines()
72
-
73
-
74
-
75
- wrds = []
76
-
77
-   temp = []
75
+ tokens = []
78
76
 
79
77
 
80
78
 
@@ -88,13 +86,11 @@
88
86
 
89
87
  if not (part in parts) or (word_tmp in stop_words): continue
90
88
 
91
- temp.append(word_tmp)
89
+ tokens.append(word_tmp)
92
90
 
93
- wrds.append(temp)
91
+
94
92
 
95
-
96
-
97
- return wrds
93
+ return tokens
98
94
 
99
95
 
100
96
 
@@ -112,15 +108,29 @@
112
108
 
113
109
 
114
110
 
115
- ※上記エラーが出ます。恐らく、形状が(5000,0)だからでしょうか?
111
+ ※上記エラーが出ます。
116
112
 
117
- ちなみ、tokenizeは機能していると思います。
113
+ 下記テキストの形状すると機能します。
118
114
 
119
115
 
120
116
 
121
- print(tokenize('スーパードライASAHI BREWERIES LIMITED春限定スペシャルパッケージ'))
117
+ texts = ['スーパードライASAHI BREWERIES LIMITED春限定スペシャルパッケージ',
122
118
 
123
- out[['スーパードライ', 'ASAHI', 'BREWERIES', 'LIMITED', '春', '限定', 'スペシャル', 'パッケージ']]
119
+ 'TaKaRa CAN CHU-HI直搾り限定出荷世界のフレーツ便カリブ海',
120
+
121
+ '焼き肉のたれこだわり食感のせて!巻いて!玉ねぎとガーリックの旨味']
122
+
123
+
124
+
125
+ train_vectorize = TfidfVectorizer(tokenizer = tokenize)
126
+
127
+ tfidf = train_vectorize.fit_transform(texts)
128
+
129
+ tfidf.toarray()
130
+
131
+
132
+
133
+ #out:tfidf値一覧 shape(3,28)
124
134
 
125
135
  ```
126
136
 

3

例文

2020/01/12 09:32

投稿

hidemomo
hidemomo

スコア31

test CHANGED
File without changes
test CHANGED
@@ -112,10 +112,18 @@
112
112
 
113
113
 
114
114
 
115
- ※上記エラーが出ます。恐らく、形状が(5000,0)だからだと推察ています。
115
+ ※上記エラーが出ます。恐らく、形状が(5000,0)だからょうか?
116
+
117
+ ※ちなみに、tokenizeは機能していると思います。
118
+
119
+
120
+
121
+ print(tokenize('スーパードライASAHI BREWERIES LIMITED春限定スペシャルパッケージ'))
122
+
123
+ out[['スーパードライ', 'ASAHI', 'BREWERIES', 'LIMITED', '春', '限定', 'スペシャル', 'パッケージ']]
116
124
 
117
125
  ```
118
126
 
119
- defがおかしいのかもしませんが、元の形状(5000,0)を保持したまま、あるいは後ほど元形状に戻す方法でも良いので行ごとにtfidf値を抽出する方法をご教示ください。
127
+ 元の形状(5000,0)を保持したまま、あるいは後ほど元形状に戻す方法でも良いので行ごとにtfidf値を抽出する方法をご教示ください。
120
128
 
121
129
  よろしくお願いします。

2

ミスの削除

2020/01/12 09:18

投稿

hidemomo
hidemomo

スコア31

test CHANGED
File without changes
test CHANGED
@@ -116,44 +116,6 @@
116
116
 
117
117
  ```
118
118
 
119
-
120
-
121
- ###他に試行したこと
122
-
123
- 上記形状を強引に(1,)にすると計算はできます。但し、元の形状を保持できず行ごとのtfidf値が抽出できない問題にあたります。
124
-
125
- ```python
126
-
127
- #test texts.shape(1,2)
128
-
129
- texts = [[スーパードライASAHI BREWERIES LIMITED春限定スペシャルパッケージ],
130
-
131
- [TaKaRa CAN CHU-HI直搾り限定出荷世界のフレーツ便カリブ海]
132
-
133
- ]
134
-
135
-
136
-
137
- tfidf_lst=[]
138
-
139
-
140
-
141
- for text in texts:
142
-
143
- train_vectorize = TfidfVectorizer(tokenizer = tokenize)
144
-
145
- tfidf = train_vectorize.fit_transform(text)
146
-
147
- tfidf_lst.append(tfidf)
148
-
149
-
150
-
151
- #out 数値は抽出される。
152
-
153
-
154
-
155
- ```
156
-
157
119
  defがおかしいのかもしませんが、元の形状(5000,0)を保持したまま、あるいは後ほど元形状に戻す方法でも良いので行ごとにtfidf値を抽出する方法をご教示ください。
158
120
 
159
121
  よろしくお願いします。

1

ミス修正

2020/01/12 08:54

投稿

hidemomo
hidemomo

スコア31

test CHANGED
File without changes
test CHANGED
@@ -94,7 +94,7 @@
94
94
 
95
95
 
96
96
 
97
- return text #wrdsだと計算できなくなります。
97
+ return wrds
98
98
 
99
99
 
100
100