回答編集履歴
11
test
CHANGED
@@ -24,7 +24,7 @@
|
|
24
24
|
実は2つ目(bow)は、1つ目の token の、3つの文章における出現回数を表しています。
|
25
25
|
|
26
26
|
整理すると下記のような表になります。
|
27
|
-
|
27
|
+
|
28
28
|
|token(キー)|私|は|の|こと|が|好き|な|あなた|です|ラーメン|富士山|日本一|高い|山|
|
29
29
|
|:---|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|
|
30
30
|
|インデックス(値)|0|1|2|3|4|5|6|7|8|9|10|11|12|13|
|
10
test
CHANGED
@@ -24,9 +24,10 @@
|
|
24
24
|
実は2つ目(bow)は、1つ目の token の、3つの文章における出現回数を表しています。
|
25
25
|
|
26
26
|
整理すると下記のような表になります。
|
27
|
+
vocabulary(辞書):
|
27
|
-
|token|私|は|の|こと|が|好き|な|あなた|です|ラーメン|富士山|日本一|高い|山|
|
28
|
+
|token(キー)|私|は|の|こと|が|好き|な|あなた|です|ラーメン|富士山|日本一|高い|山|
|
28
29
|
|:---|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|
|
29
|
-
|インデックス|0|1|2|3|4|5|6|7|8|9|10|11|12|13|
|
30
|
+
|インデックス(値)|0|1|2|3|4|5|6|7|8|9|10|11|12|13|
|
30
31
|
|文章1|2|1|1|1|2|2|1|1|1|0|0|0|0|0|
|
31
32
|
|文章2|1|1|0|0|1|1|0|0|1|1|0|0|0|0|
|
32
33
|
|文章3|0|1|0|0|0|0|0|0|1|0|1|1|1|1|
|
@@ -54,10 +55,10 @@
|
|
54
55
|
if token not in vocabulary:
|
55
56
|
vocabulary[token] = len(vocabulary)#(1)
|
56
57
|
```
|
57
|
-
見てお分かりの通り、
|
58
|
+
見てお分かりの通り、token(形態素)をキーとする辞書として vocabulary を作成しています。
|
58
59
|
|
59
|
-
新しいtokenが見つかる度、その時点のvocablaryの長さを、tokenの値として設定しています。
|
60
|
+
新しい token が見つかる度、その時点の vocablary の長さを、token の値として設定しています。
|
60
|
-
キーが追加されるたび、辞書vocablaryの長さは1ずつ増えていきます。
|
61
|
+
キーが追加されるたび、辞書 vocablary の長さは1ずつ増えていきます。
|
61
62
|
つまりこの部分は、**tokenに一意のindexを付番している**ということです。
|
62
63
|
|
63
64
|
|
@@ -111,4 +112,4 @@
|
|
111
112
|
|[1]|1|1|0|0|1|1|0|0|1|1|0|0|0|0|
|
112
113
|
|[2]|0|1|0|0|0|0|0|0|1|0|1|1|1|1|
|
113
114
|
|
114
|
-
※インデックスとtokenの関係は、辞書vocabularyによって保持され
|
115
|
+
※インデックスとtokenの関係は、辞書vocabularyによって保持されています。
|
9
test
CHANGED
@@ -87,7 +87,7 @@
|
|
87
87
|
これにより、14列×3行の2次元配列が作られます。(冒頭の[0]は初期化する値ですので、中身がゼロで初期化された2次元配列になっています)
|
88
88
|
|
89
89
|
作成直後のbow(初期化された2次元配列):
|
90
|
-
|インデックス|
|
90
|
+
|インデックス|0|1|2|3|4|5|6|7|8|9|10|11|12|13|
|
91
91
|
|:---|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|
|
92
92
|
|[0]|0|0|0|0|0|0|0|0|0|0|0|0|0|0|
|
93
93
|
|[1]|0|0|0|0|0|0|0|0|0|0|0|0|0|0|
|
@@ -105,7 +105,7 @@
|
|
105
105
|
|
106
106
|
|
107
107
|
処理後のbow:
|
108
|
-
|インデックス|
|
108
|
+
|インデックス|0|1|2|3|4|5|6|7|8|9|10|11|12|13|
|
109
109
|
|:---|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|
|
110
110
|
|[0]|2|1|1|1|2|2|1|1|1|0|0|0|0|0|
|
111
111
|
|[1]|1|1|0|0|1|1|0|0|1|1|0|0|0|0|
|
8
test
CHANGED
@@ -29,13 +29,13 @@
|
|
29
29
|
|インデックス|0|1|2|3|4|5|6|7|8|9|10|11|12|13|
|
30
30
|
|文章1|2|1|1|1|2|2|1|1|1|0|0|0|0|0|
|
31
31
|
|文章2|1|1|0|0|1|1|0|0|1|1|0|0|0|0|
|
32
|
-
|文章3|0|1|0|0|0|0|0|0|1|0|1|1|1|1
|
32
|
+
|文章3|0|1|0|0|0|0|0|0|1|0|1|1|1|1|
|
33
33
|
|
34
34
|
・2行目は、各 token に対して、(数字がかぶらないように)割り振った一意のID番号のようなものです。
|
35
35
|
・3行目以降は、各文章における各 token の出現回数を表しています。
|
36
36
|
|
37
37
|
---
|
38
|
-
質問文のコードは、言ってしまえば結局上の表を作る処理に過ぎません。
|
38
|
+
質問文のコードは、言ってしまえば結局上のような表を作る処理に過ぎません。
|
39
39
|
|
40
40
|
ではなぜこのように整理するか=長期的な目的はなにかというと、
|
41
41
|
・各文章を特徴づけている単語を抽出し、文書の類似度を比較可能にする
|
@@ -84,8 +84,16 @@
|
|
84
84
|
これによって
|
85
85
|
bow = [[0] * 14 for i in range(3)]
|
86
86
|
となります。
|
87
|
-
これにより、14列×3行の2次元配列が作ら
|
87
|
+
これにより、14列×3行の2次元配列が作られます。(冒頭の[0]は初期化する値ですので、中身がゼロで初期化された2次元配列になっています)
|
88
88
|
|
89
|
+
作成直後のbow(初期化された2次元配列):
|
90
|
+
|インデックス|[0]|[1]|[2]|[3]|[4]|[5]|[6]|[7]|[8]|[9]|[10]|[11]|[12]|[13]|
|
91
|
+
|:---|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|
|
92
|
+
|[0]|0|0|0|0|0|0|0|0|0|0|0|0|0|0|
|
93
|
+
|[1]|0|0|0|0|0|0|0|0|0|0|0|0|0|0|
|
94
|
+
|[2]|0|0|0|0|0|0|0|0|0|0|0|0|0|0|
|
95
|
+
|
96
|
+
|
89
97
|
あとは、直後の
|
90
98
|
```
|
91
99
|
for i,tokenized_text in enumerate(tokenized_texts):
|
@@ -95,3 +103,12 @@
|
|
95
103
|
```
|
96
104
|
の部分で、各文章ごとに token の出現回数をカウントし、2次元配列に格納しています。
|
97
105
|
|
106
|
+
|
107
|
+
処理後のbow:
|
108
|
+
|インデックス|[0]|[1]|[2]|[3]|[4]|[5]|[6]|[7]|[8]|[9]|[10]|[11]|[12]|[13]|
|
109
|
+
|:---|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|
|
110
|
+
|[0]|2|1|1|1|2|2|1|1|1|0|0|0|0|0|
|
111
|
+
|[1]|1|1|0|0|1|1|0|0|1|1|0|0|0|0|
|
112
|
+
|[2]|0|1|0|0|0|0|0|0|1|0|1|1|1|1|
|
113
|
+
|
114
|
+
※インデックスとtokenの関係は、辞書vocabularyによって保持される。
|
7
test
CHANGED
@@ -84,7 +84,7 @@
|
|
84
84
|
これによって
|
85
85
|
bow = [[0] * 14 for i in range(3)]
|
86
86
|
となります。
|
87
|
-
|
87
|
+
これにより、14列×3行の2次元配列が作らてます。(中身がゼロで初期化された2次元配列になります。冒頭の[0]は初期化する値です)
|
88
88
|
|
89
89
|
あとは、直後の
|
90
90
|
```
|
@@ -93,5 +93,5 @@
|
|
93
93
|
index = vocabulary[token]
|
94
94
|
bow[i][index] += 1
|
95
95
|
```
|
96
|
-
の部分で、各文章ごとに token の出現回数をカウントしています。
|
96
|
+
の部分で、各文章ごとに token の出現回数をカウントし、2次元配列に格納しています。
|
97
97
|
|
6
test
CHANGED
@@ -35,7 +35,7 @@
|
|
35
35
|
・3行目以降は、各文章における各 token の出現回数を表しています。
|
36
36
|
|
37
37
|
---
|
38
|
-
質問文のコードは、言ってしまえば結局
|
38
|
+
質問文のコードは、言ってしまえば結局上の表を作る処理に過ぎません。
|
39
39
|
|
40
40
|
ではなぜこのように整理するか=長期的な目的はなにかというと、
|
41
41
|
・各文章を特徴づけている単語を抽出し、文書の類似度を比較可能にする
|
5
test
CHANGED
@@ -35,8 +35,9 @@
|
|
35
35
|
・3行目以降は、各文章における各 token の出現回数を表しています。
|
36
36
|
|
37
37
|
---
|
38
|
+
質問文のコードは、言ってしまえば結局↑の表を作る処理に過ぎません。
|
38
39
|
|
39
|
-
なぜこのように整理するか=長期的な目的はなにかというと、
|
40
|
+
ではなぜこのように整理するか=長期的な目的はなにかというと、
|
40
41
|
・各文章を特徴づけている単語を抽出し、文書の類似度を比較可能にする
|
41
42
|
といったようなことです。(TF-IDF等を利用)
|
42
43
|
|
4
test
CHANGED
@@ -62,7 +62,9 @@
|
|
62
62
|
|
63
63
|
> (2)コード全体の意味がわかりません。また [0] * n_vocabの意味が特に分かりません。
|
64
64
|
|
65
|
-
|
65
|
+
#2の部分は、内包表記を使用した、2次元配列の初期化処理です。
|
66
|
+
参照:
|
67
|
+
https://qiita.com/oyoshi0022/items/7475951f465d20ad4970#%E8%A7%A3%E6%B1%BA%E6%B3%95
|
66
68
|
|
67
69
|
```
|
68
70
|
#単語の出現回数をカウントするためのループ
|
3
test
CHANGED
@@ -38,7 +38,7 @@
|
|
38
38
|
|
39
39
|
なぜこのように整理するか=長期的な目的はなにかというと、
|
40
40
|
・各文章を特徴づけている単語を抽出し、文書の類似度を比較可能にする
|
41
|
-
といったようなことです。
|
41
|
+
といったようなことです。(TF-IDF等を利用)
|
42
42
|
|
43
43
|
この目的のため、**文書の集合/文書/形態素を、一定のルールでもって、計算しやすいように数値化し整理している**、ということです(ベクトル化)
|
44
44
|
|
2
test
CHANGED
@@ -81,7 +81,7 @@
|
|
81
81
|
これによって
|
82
82
|
bow = [[0] * 14 for i in range(3)]
|
83
83
|
となります。
|
84
|
-
つまり、要素0で初期化された、14列、3行の2次元配列
|
84
|
+
つまり、要素0で初期化された、14列、3行の2次元配列を作っています。
|
85
85
|
|
86
86
|
あとは、直後の
|
87
87
|
```
|
@@ -90,5 +90,5 @@
|
|
90
90
|
index = vocabulary[token]
|
91
91
|
bow[i][index] += 1
|
92
92
|
```
|
93
|
-
で各文章ごとに token の出現回数を
|
93
|
+
の部分で、各文章ごとに token の出現回数をカウントしています。
|
94
94
|
|
1
test
CHANGED
@@ -53,7 +53,7 @@
|
|
53
53
|
if token not in vocabulary:
|
54
54
|
vocabulary[token] = len(vocabulary)#(1)
|
55
55
|
```
|
56
|
-
見てお分かり
|
56
|
+
見てお分かりの通り、vocabulary=token(形態素)をキーとする辞書として作成しています。
|
57
57
|
|
58
58
|
新しいtokenが見つかる度、その時点のvocablaryの長さを、tokenの値として設定しています。
|
59
59
|
キーが追加されるたび、辞書vocablaryの長さは1ずつ増えていきます。
|