スポンサーリンク

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

下記の記事では、数字のリストをベクトル化しました。
参考:kerasのTokenizerでリストをNumPy配列ndarrayで表現

今回は、テキストのリストをベクトル化してみます。

まずは、Tokenizerをimportします。

from keras.preprocessing.text import Tokenizer

下記のように、3つのテキストをリストで定義します。

sentences = ["This is a Television.", "This is a PC.", "That is a PC."]

tokenizer.fit_on_texts()で単語に分割して、それぞれの単語に対してインデックスを振ります。

tokenizer = Tokenizer()
tokenizer.fit_on_texts(sentences)
print(tokenizer.word_index)

今回、インデックスは下記のように振られました。

{'is': 1, 'a': 2, 'this': 3, 'pc': 4, 'television': 5, 'that': 6}

mode='binary'を設定して、tokenizer.texts_to_matrix()でベクトル化します。

tokenNum =  tokenizer.texts_to_matrix(sentences, mode='binary')
print(tokenNum)

下記がベクトル化した結果です。

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

例えば、一行目の[[0. 1. 1. 1. 0. 1. 0.]は"This is a Television."を表しています。
television': 5なので、5列目を見ていると確かに1となっています。

スポンサーリンク

サンプルコード

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

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

from keras.preprocessing.text import Tokenizer

sentences = ["This is a Television.", "This is a PC.", "That is a PC."]

print(sentences)

tokenizer = Tokenizer()
tokenizer.fit_on_texts(sentences)
print(tokenizer.word_index)

tokenNum =  tokenizer.texts_to_matrix(sentences, mode='binary')
print(tokenNum)

下記が実行結果になります。
$ ./sample.py 
Using TensorFlow backend.
['This is a Television.', 'This is a PC.', 'That is a PC.']
{'is': 1, 'a': 2, 'this': 3, 'pc': 4, 'television': 5, 'that': 6}
[[0. 1. 1. 1. 0. 1. 0.]
 [0. 1. 1. 1. 1. 0. 0.]
 [0. 1. 1. 0. 1. 0. 1.]]
 

スポンサーリンク