Rainbow Engine

IT技術を分かりやすく簡潔にまとめることによる学習の効率化、また日常の気付きを記録に残すことを目指します。

機械学習 (Machine Learning)

KerasのTokenizerの用法(具体例付き)

投稿日:2022年11月10日 更新日:

 

<目次>

(1) KerasのTokenizerの使い方(具体例付き)
 KerasのTokenizerとは?
 主な機能とインスタンス生成
 (1-1) fit_on_texts の使い方
 (1-2) texts_to_sequences の使い方
 (1-3) texts_to_matrix(One-hot)の使い方
 (1-4) KerasのTokenizerの挙動確認(Python)

(1) KerasのTokenizerの使い方(具体例付き)

KerasのTokenizerとは?

・データ(文章など)をトークン化(悪用可能な意味や値を持たない非機密値)する処理。
・これが文章の統計分析やDeep Learningにも使える。

目次にもどる

主な機能とインスタンス生成

KerasのTokenizerの主な機能は以下の通りです。

  • fit_on_texts:複数の文(sentences)を入力にして「辞書」を作成します。
  • texts_to_sequences:「辞書」とテキストを突合して各単語のインデックス列へ変換します。
  • texts_to_matrix:突合結果を行列へ変換します(One-hotなど)。

インスタンス生成時の主な引数例は以下です(num_words は「word_index」の序列の何番目の単語まで保持するかを指定)。
⇒詳しくは Tokenizer(Keras API) を参照。

(図123)

(図124)7⇒5にすると「’you’: 6」や「’daughter’: 7」は処理「texts_to_sequences」の対象外になる。

目次にもどる

(1-1) fit_on_texts の使い方

STEP1-1:サンプル文から辞書を作成

メソッド「fit_on_texts」
・複数の文(sentences)を入力にして「辞書」を作ります。

(入力例)

sentences = [
    'i love my wife',
    'I, love my son',
    'You love my daughter!'
]

(処理例)
・内部的には登場回数の集計や、それに応じたインデックス付与(word_index)も行っています。
・それらの情報はTokenizerのメンバーである「word_index」や「word_docs」で取得可能

(出力例)

tk.word_index
⇒{'love': 1, 'my': 2, 'i': 3, 'wife': 4, 'son': 5, 'you': 6, 'daughter': 7}

tk.word\_docs
⇒defaultdict(\, {'love': 3, 'my': 3, 'wife': 1, 'i': 2, 'son': 1, 'you': 1, 'daughter': 1})

(図121)

目次にもどる

(1-2) texts_to_sequences の使い方

メソッド「texts_to_sequences」
・「辞書」と「テストデータ」を突合するメソッドです。
・基本的には「fit_on_texts」で作った辞書を入力にして使います。
・注意点として、引数は「リスト」形式のため [XXXXX] のように渡します。

(入力例)
・「fit_on_texts」の結果
sentences = ['i love my wife', 'I, love my son', 'You love my daughter!']

(処理例)
・各文(sentence)ごとに辞書のindexと突合したマップを作成

(図122)

(出力例)

tk.texts_to_sequences(sentences)
⇒[[3, 1, 2, 4], [3, 1, 2, 5], [6, 1, 2]]

目次にもどる

(1-3) texts_to_matrix(One-hot)の使い方

メソッド「texts_to_matrix」
・基本的には「fit_on_texts」で作った辞書を入力にして使います。
・突合結果として出来るマトリクスを「One-hot encoding」と呼びます。
・注意点として、引数は「リスト」形式のため [XXXXX] のように渡します。

(入力例)
・「fit_on_texts」の結果
sentences = ['i love my wife', 'I, love my son', 'You love my daughter!']

(処理例)
・各文(sentence)ごとに辞書のindexと突合したマップを作成

(図126)

(出力例)

tk.texts_to_matrix(sentences)
⇒[[0. 1. 1. 1. 1. 0. 0.]

(図125)(参考)公式ページの図はこんな感じ

目次にもどる

(1-4) KerasのTokenizerの挙動確認(Python)

from keras.preprocessing.text import Tokenizer

def main():

    sentences = [
        'i love my wife',
        'I, love my son',
        'You love my daughter!'
    ]

    # Tokenizerクラスのインスタンス生成
    tk = Tokenizer(num_words=7,
               filters='!"#$%&()*+,-./:;<=>?@[\\]^_`{"}~\t\n',
               lower=True,
               char_level=False,
               split=' ')

    print("==処理前== tk.document_count: ", tk.document_count)
    print("==処理前== tk.num_words: ", tk.num_words)
    print("==処理前== tk.word_index: ", tk.word_index)
    print("==処理前== tk.word_docs: ", tk.word_docs)

    # 複数の文(sentences)を入力にして「辞書」を作ります。
    tk.fit_on_texts(sentences)

    print("--------------------------------")
    print("==処理後== tk.document_count: ", tk.document_count)
    print("==処理後== tk.num_words: ", tk.num_words)
    print("==処理後== tk.word_index: ", tk.word_index)
    print("==処理後== tk.word_docs: ", tk.word_docs)

    # 「辞書」と「テストデータ」を突合するメソッドです。
    print("====== texts_to_sequences: ", tk.texts_to_sequences(sentences))

    print("====== texts_to_matrix: ", tk.texts_to_matrix(sentences))


if __name__ == "__main__":
    main()

(出力例)

==処理前== tk.document_count:  0
==処理前== tk.num_words:  7
==処理前== tk.word_index:  {}
==処理前== tk.word_docs:  defaultdict(<class 'int'>, {})
--------------------------------
==処理後== tk.document_count:  3
==処理後== tk.num_words:  7
==処理後== tk.word_index:  {'love': 1, 'my': 2, 'i': 3, 'wife': 4, 'son': 5, 'you': 6, 'daughter': 7}
==処理後== tk.word_docs:  defaultdict(<class 'int'>, {'wife': 1, 'i': 2, 'my': 3, 'love': 3, 'son': 1, 'you': 1, 'daughter': 1})
====== texts_to_sequences:  [[3, 1, 2, 4], [3, 1, 2, 5], [6, 1, 2]]

Adsense審査用広告コード


Adsense審査用広告コード


-機械学習 (Machine Learning)

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

no image

多層パーセプトロンをPythonで実装した例をご紹介

  <目次> 多層パーセプトロンをPythonで実装した例をご紹介  (1-1) 実装のフロー  (1-2) サンプルプログラム 多層パーセプトロンをPythonで実装した例をご紹介 多層パ …

Kerasで「AttributeError: ‘Sequential’ object has no attribute ‘XXX’」エラー原因・対処(+predict_classes関数やpredict_proba関数の解説)

  <目次> (1) Kerasで「AttributeError: ‘Sequential’ object has no attribute ‘XXX&# …

no image

Tensorflowにおけるplaceholderとは?v2.0以降での置き換え

  <目次> (1) Tensorflowにおけるplaceholderとは?v2.0以降での置き換え  (1-1) 「placeholder」とは  (1-2) サンプルプログラム  (1 …

no image

ディープラーニングのモデルの評価とは?実際のPythonプログラムもご紹介

<目次> ディープラーニングのモデルの評価とは?実際のPythonプログラムもご紹介  (1-1) モデルの評価の概要  (1-2) モデルの評価の指標  (1-3) モデルの評価の実装例①  (1- …

no image

TensorFlowで「AttributeError: module ‘tensorflow’ has no attribute ‘xxxxxx’」が出た時の原因と対策について

  <目次> (1) TensorFlowで「AttributeError: module ‘tensorflow’ has no attribute ‘xxxxx …

  • English (United States)
  • 日本語
Top