スポンサーリンク

kerasのTokenizerでリストをndarrayで表現(ベクトル化)

参考:kerasのTokenizerでテキスト(文字列)リストをベクトル化

下記のようにリストを定義します。

listNum = [[1, 2, 3], [2, 3, 4, 5], [3, 4, 7]]  

Tokenizerをimportして、

from keras.preprocessing.text import Tokenizer

sequences_to_matrix()で、リストをndarrayで表現します。

tokenizer = Tokenizer(num_words=10)
tokenNum =  tokenizer.sequences_to_matrix(listNum, mode='binary')

tokenNumは下記のようなndarrayになります。

[[0. 1. 1. 1. 0. 0. 0. 0. 0. 0.]
 [0. 0. 1. 1. 1. 1. 0. 0. 0. 0.]
 [0. 0. 0. 1. 1. 0. 0. 1. 0. 0.]]
 

例えば、1行目の[[0. 1. 1. 1. 0. 0. 0. 0. 0. 0.]を見てみると、
[1, 2, 3]は、1と2と3が使われているので、1列目と2列目と3列目が、1となっています。
mode='binary'を指定しているので0 or 1 で表現されますね。

スポンサーリンク

サンプルコード

下記がサンプルコードになります。

$ cat sample2.py 
#!/usr/bin/env python3
# coding: UTF-8

from keras.preprocessing.text import Tokenizer

listNum = [[1, 2, 3], [2, 3, 4, 5], [3, 4, 7]]  

tokenizer = Tokenizer(num_words=10)
tokenNum =  tokenizer.sequences_to_matrix(listNum, mode='binary')

print(tokenNum)
print(type(tokenNum))

下記が実行結果になります。
$ ./sample2.py 
Using TensorFlow backend.
[[0. 1. 1. 1. 0. 0. 0. 0. 0. 0.]
 [0. 0. 1. 1. 1. 1. 0. 0. 0. 0.]
 [0. 0. 0. 1. 1. 0. 0. 1. 0. 0.]]
<class 'numpy.ndarray'>

スポンサーリンク