質問編集履歴
4
変更
title
CHANGED
File without changes
|
body
CHANGED
@@ -26,27 +26,25 @@
|
|
26
26
|
mecab.parse('')
|
27
27
|
|
28
28
|
def tokenize(text):
|
29
|
+
|
29
|
-
|
30
|
+
node = mecab.parse(text).splitlines()
|
31
|
+
|
30
32
|
stop_words = [
|
31
33
|
'%','%','g','g','*','?','?','.','.','ー','*****','/','/','ml','(','(',')',')',
|
32
34
|
'-','一']
|
33
35
|
|
34
36
|
parts = ['名詞','形容詞','動詞','副詞']
|
35
37
|
|
36
|
-
node = mecab.parse(text).splitlines()
|
37
|
-
|
38
|
-
wrds = []
|
39
|
-
|
38
|
+
tokens = []
|
40
39
|
|
41
40
|
for i in node:
|
42
41
|
if i == 'EOS' or i == '': continue
|
43
42
|
word_tmp = i.split()[0]
|
44
43
|
part = i.split()[1].split(',')[0] #品詞
|
45
44
|
if not (part in parts) or (word_tmp in stop_words): continue
|
46
|
-
|
45
|
+
tokens.append(word_tmp)
|
47
|
-
|
46
|
+
|
48
|
-
|
49
|
-
return
|
47
|
+
return tokens
|
50
48
|
|
51
49
|
tfidf_lst=[]
|
52
50
|
|
@@ -55,11 +53,18 @@
|
|
55
53
|
tfidf = train_vectorize.fit_transform(text)
|
56
54
|
tfidf_lst.append(tfidf)
|
57
55
|
|
58
|
-
※上記エラーが出ます。
|
56
|
+
※上記エラーが出ます。
|
59
|
-
※
|
57
|
+
※下記テキストの形状にすると機能します。
|
60
58
|
|
61
|
-
|
59
|
+
texts = ['スーパードライASAHI BREWERIES LIMITED春限定スペシャルパッケージ',
|
62
|
-
|
60
|
+
'TaKaRa CAN CHU-HI直搾り限定出荷世界のフレーツ便カリブ海',
|
61
|
+
'焼き肉のたれこだわり食感のせて!巻いて!玉ねぎとガーリックの旨味']
|
62
|
+
|
63
|
+
train_vectorize = TfidfVectorizer(tokenizer = tokenize)
|
64
|
+
tfidf = train_vectorize.fit_transform(texts)
|
65
|
+
tfidf.toarray()
|
66
|
+
|
67
|
+
#out:tfidf値一覧 shape(3,28)
|
63
68
|
```
|
64
69
|
元の形状(5000,0)を保持したまま、あるいは後ほど元形状に戻す方法でも良いので行ごとにtfidf値を抽出する方法をご教示ください。
|
65
70
|
よろしくお願いします。
|
3
例文
title
CHANGED
File without changes
|
body
CHANGED
@@ -55,7 +55,11 @@
|
|
55
55
|
tfidf = train_vectorize.fit_transform(text)
|
56
56
|
tfidf_lst.append(tfidf)
|
57
57
|
|
58
|
-
※上記エラーが出ます。恐らく、形状が(5000,0)だから
|
58
|
+
※上記エラーが出ます。恐らく、形状が(5000,0)だからでしょうか?
|
59
|
+
※ちなみに、tokenizeは機能していると思います。
|
60
|
+
|
61
|
+
print(tokenize('スーパードライASAHI BREWERIES LIMITED春限定スペシャルパッケージ'))
|
62
|
+
out[['スーパードライ', 'ASAHI', 'BREWERIES', 'LIMITED', '春', '限定', 'スペシャル', 'パッケージ']]
|
59
63
|
```
|
60
|
-
|
64
|
+
元の形状(5000,0)を保持したまま、あるいは後ほど元形状に戻す方法でも良いので行ごとにtfidf値を抽出する方法をご教示ください。
|
61
65
|
よろしくお願いします。
|
2
ミスの削除
title
CHANGED
File without changes
|
body
CHANGED
@@ -57,24 +57,5 @@
|
|
57
57
|
|
58
58
|
※上記エラーが出ます。恐らく、形状が(5000,0)だからだと推察しています。
|
59
59
|
```
|
60
|
-
|
61
|
-
###他に試行したこと
|
62
|
-
上記形状を強引に(1,)にすると計算はできます。但し、元の形状を保持できず行ごとのtfidf値が抽出できない問題にあたります。
|
63
|
-
```python
|
64
|
-
#test texts.shape(1,2)
|
65
|
-
texts = [[スーパードライASAHI BREWERIES LIMITED春限定スペシャルパッケージ],
|
66
|
-
[TaKaRa CAN CHU-HI直搾り限定出荷世界のフレーツ便カリブ海]
|
67
|
-
]
|
68
|
-
|
69
|
-
tfidf_lst=[]
|
70
|
-
|
71
|
-
for text in texts:
|
72
|
-
train_vectorize = TfidfVectorizer(tokenizer = tokenize)
|
73
|
-
tfidf = train_vectorize.fit_transform(text)
|
74
|
-
tfidf_lst.append(tfidf)
|
75
|
-
|
76
|
-
#out 数値は抽出される。
|
77
|
-
|
78
|
-
```
|
79
60
|
defがおかしいのかもしませんが、元の形状(5000,0)を保持したまま、あるいは後ほど元形状に戻す方法でも良いので行ごとにtfidf値を抽出する方法をご教示ください。
|
80
61
|
よろしくお願いします。
|
1
ミス修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -46,7 +46,7 @@
|
|
46
46
|
temp.append(word_tmp)
|
47
47
|
wrds.append(temp)
|
48
48
|
|
49
|
-
return
|
49
|
+
return wrds
|
50
50
|
|
51
51
|
tfidf_lst=[]
|
52
52
|
|