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

Pythonのunicode_split()を使ってTensorFlow Textで文字列を文字単位に分割する方法

TensorFlow Textでは、「unicode_split」メソッドを使って文字列を文字単位に分割できます。手順としては、まず分割対象の文字列をエンコードし、その関数呼び出しの結果を変数に代入します。この変数に関数呼び出しの結果が格納されます。

関連記事:TensorFlowとは何か?KerasがどのようにTensorFlowと連携してニューラルネットワークを構築するのか?

本記事ではKeras Sequential APIを使用します。これは、各レイヤーが正確に1つの入力テンソルと1つの出力テンソルを持つ、シンプルなレイヤーのスタックからなる逐次モデルを構築する際に役立つAPIです。

少なくとも1つの畳み込み層(Convolutional Layer)を含むニューラルネットワークは、畳み込みニューラルネットワーク(CNN)と呼ばれます。CNNを活用することで学習モデルを構築できます。

TensorFlow Textは、TensorFlow 2.0で使用できるテキスト関連のクラスやオペレーションのコレクションです。系列モデリングの前処理などに幅広く活用できます。

以下のコードはGoogle Colaboratory上で実行しています。Google Colab(Colaboratory)はブラウザ上でPythonコードを実行できる環境であり、事前設定は一切不要で、GPU(グラフィックス処理装置)にも無料でアクセス可能です。ColaboratoryはJupyter Notebookをベースに構築されています。

トークン化(Tokenization)とは、文字列を「トークン」と呼ばれる単位に分解する手法のことです。トークンには、単語、数字、句読点などが該当します。

重要なインターフェースとして「Tokenizer」と「TokenizerWithOffsets」があり、それぞれ「tokenize」「tokenize_with_offsets」という単一のメソッドを持っています。複数の種類のトークナイザーが用意されており、その多くはTokenizerWithOffsets(Tokenizerクラスを拡張したもの)を実装しています。これにより、元の文字列内でのバイトオフセットを取得するオプションも利用でき、トークンが元の文字列のどの部分から生成されたのかを把握できるようになります。

実行例

print("エンコードされた文字を分割します")
tokens = tf.strings.unicode_split([u"仅今年前".encode('UTF-8')], 'UTF-8')
print("トークン化されたデータをリストに変換します")
print(tokens.to_list())

コード引用元 − https://www.tensorflow.org/tutorials/tensorflow_text/intro

出力結果

エンコードされた文字を分割します
トークン化されたデータをリストに変換します
[[b'\xe4\xbb\x85', b'\xe4\xbb\x8a', b'\xe5\xb9\xb4', b'\xe5\x89\x8d']]

解説

  • すべてのトークナイザーはRaggedTensorを返します。最も内側の次元にあるトークンは、元の個々の文字列にマッピングされます。

  • 結果として得られる形状のランクは1つ増加します。

  • 空白によって単語を区切らない言語をトークン化する場合、文字単位で分割するのが一般的です。

  • このような分割は、TensorFlowコアに組み込まれているunicode_splitオペレーションを使用することで実現できます。

  • unicode_splitを呼び出した後、トークン化されたデータがリストに追加されます。

  1. PythonとKerasを使ってモデル全体を保存・再利用する方法を徹底解説

    TensorFlowとKerasとはTensorFlowは、Googleが提供する機械学習フレームワークです。オープンソースとして公開されており、Pythonと組み合わせて使用することで、各種アルゴリズムやディープラーニングアプリケーションの実装が可能になります。研究用途から本番環境まで幅広く活用されています。KerasはPythonで書かれたディープラーニングAPIです。高水準APIとして設計されており、生産性の高いインターフェースによって機械学習の問題を効率的に解決できます。TensorFlowフレームワーク上で動作し、素早い実験・試行を支援するために開発されました。高いスケーラビリティと

  2. Kerasを使ってPythonでモデルをプロットする方法をわかりやすく解説

    TensorFlowとはTensorFlowは、Googleが提供している機械学習フレームワークです。オープンソースとして公開されており、Pythonと組み合わせて使用することで、アルゴリズムの実装やディープラーニングアプリケーションの開発など、幅広い用途に活用できます。研究目的から本番環境での運用まで対応しており、複雑な数値計算を高速に実行するための最適化技術が数多く組み込まれています。TensorFlowにおける「テンソル(Tensor)」は、データを扱うための基本的なデータ構造です。テンソルは多次元配列(またはリスト)であり、データフローグラフと呼ばれる計算グラフのノード同士をエッジでつ