スポンサーリンク
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.]]
スポンサーリンク