Python
 Computer >> コンピューター >  >> プログラミング >> Python

TensorFlow TextをPythonのWhitespaceTokenizer(空白文字トークナイザー)で使う方法

TensorFlow Textは、WhitespaceTokenizerを呼び出すことで空白文字トークナイザーとして利用できます。このトークナイザーを作成した後、文字列に対してtokenizeメソッドを使うことで、テキストをトークンに分割できます。

関連記事: TensorFlowとは何か?KerasがTensorFlowと連携してニューラルネットワークを構築する仕組み

前提知識:Keras Sequential APIについて

本記事ではKerasのSequential APIを使用します。このAPIは、層を単純に積み重ねたシーケンシャルモデルを構築するのに便利です。Sequentialモデルでは、すべての層が入力テンソルを1つ、出力テンソルを1つだけ持ちます。

なお、少なくとも1つの畳み込み層(Convolutional Layer)を含むニューラルネットワークは「畳み込みニューラルネットワーク(CNN)」と呼ばれ、学習モデルの構築に広く活用されています。

TensorFlow Textとは

TensorFlow Textは、TensorFlow 2.0と組み合わせて使用できる、テキスト関連のクラスやオペレーションのコレクションです。系列モデリング(Sequence Modeling)のための前処理などに活用できます。

本記事のコードはGoogle Colaboratory上で実行しています。Google Colab(Colaboratory)はブラウザ上でPythonコードを実行できるサービスで、環境構築は不要、GPUへのアクセスも無料で提供されています。ColaboratoryはJupyter Notebookをベースに構築されています。

トークン化(Tokenization)の基礎

トークン化とは、文字列をトークンと呼ばれる単位に分解する処理です。トークンには単語、数値、句読点などが含まれます。主要なインターフェースとしてTokenizerTokenizerWithOffsetsがあり、それぞれtokenizeメソッドとtokenize_with_offsetsメソッドを持ちます。

多くのトークナイザーはTokenizerWithOffsetsTokenizerクラスを拡張したもの)を実装しており、元の文字列内でのバイトオフセットを取得するオプションも用意されています。これにより、各トークンが元の文字列のどの部分から生成されたのかを把握できます。

N-gram(Nグラム)について

N-gramとは、サイズnのスライディングウィンドウを適用した際に得られる連続する単語の列のことです。トークンを結合する際には、3つの還元(リダクション)方式がサポートされています。テキスト処理ではReduction.STRING_JOINを使用でき、これは文字列同士を連結します。デフォルトの区切り文字はスペースですが、string_separator引数で変更することも可能です。

その他の還元方式であるReduction.SUMReduction.MEANは、数値データに対して使用されます。

実装例

print("Whitespace tokenizer is being called")
tokenizer = text.WhitespaceTokenizer()
tokens = tokenizer.tokenize(['Everything not saved will be lost.', u'Sad☹'.encode('UTF-8')])
print("Here, n is 2, hence it is bigram")
bigrams = text.ngrams(tokens, 2, reduction_type=text.Reduction.STRING_JOIN)
print("The bigrams are converted to a list")
print(bigrams.to_list())

出力結果

Whitespace tokenizer is being called
Here, n is 2, hence it is bigram
The bigrams are converted to a list
[[b'Everything not', b'not saved', b'saved will', b'will be', b'be lost.'], []]

コードの解説

  • まず、空白文字トークナイザー(WhitespaceTokenizer)を呼び出します。
  • nの値を2に設定しているため、この処理はバイグラム(bigram)と呼ばれます。
  • 生成されたトークンはリストに格納され、コンソールに出力されます。
  1. Kerasで新しいコールバックを使ってモデルをトレーニングする方法【Python入門】

    TensorFlowとKerasとはTensorFlowは、Googleが提供する機械学習フレームワークです。オープンソースとして公開されており、Pythonと組み合わせて使用することで、アルゴリズムの実装やディープラーニングアプリケーションの開発など、幅広い用途に活用できます。研究目的から本番環境まで対応しており、複雑な数値計算を高速に実行するための最適化技術も備えています。Windowsに「tensorflow」パッケージをインストールするには、以下のコマンドを実行します。pip install tensorflowテンソル(Tensor)は、TensorFlowで使われる基本的なデータ構

  2. PythonとTensorFlowで2つの行列を乗算する方法を解説

    TensorFlowは、Googleが提供する機械学習フレームワークです。オープンソースとして公開されており、Pythonと組み合わせてアルゴリズムやディープラーニングアプリケーションなどを実装するために利用されています。研究用途から本番運用まで幅広く使われており、複雑な数学的演算を高速に処理できる最適化技術を備えているのが特長です。 その理由の一つは、NumPyと多次元配列を基盤としている点にあります。この多次元配列は「テンソル」と呼ばれます。TensorFlowは深層ニューラルネットワークの構築をサポートし、高いスケーラビリティを持ち、人気のデータセットが多数付属しています。また、GPUに