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

TensorFlowを使ってPythonで文字列の部分文字列(サブストリング)を操作する方法

TensorFlowでは、「strings」モジュールに用意されている「substr」メソッドを使うことで、文字列の部分文字列(サブストリング)を簡単に扱うことができます。処理結果はNumPy配列に変換したうえで表示されます。

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

本記事では、PythonでUnicode文字列を表現する方法と、Unicode対応の操作を使ってそれらを加工する方法を学びます。まず、標準的な文字列操作に相当するUnicode版の関数を活用し、文字体系(スクリプト)の検出に基づいてUnicode文字列をトークン単位に分割していきます。

なお、以下のコードはGoogle Colaboratory上で実行しています。Google Colab(Colaboratory)を利用すれば、ブラウザ上でPythonコードを実行でき、事前の環境構築は一切不要です。さらに、GPU(Graphics Processing Unit)へも無料でアクセスできます。ColaboratoryはJupyter Notebookをベースに構築されたサービスです。

print("The default unit is byte")
print("When len is 1, a single byte is returned")
tf.strings.substr(thanks, pos=7, len=1).numpy()
print("The unit is specified as UTF8_CHAR")
print("It takes up 4 bytes")
print(tf.strings.substr(thanks, pos=7, len=1, unit='UTF8_CHAR').numpy())

コード引用元:https://www.tensorflow.org/tutorials/load_data/unicode

出力結果

The default unit is byte
When len is 1, a single byte is returned
The unit is specified as UTF8_CHAR
It takes up 4 bytes
b''

解説

  • tf.strings.substr演算は「unit」パラメータを受け取ります。
  • この「unit」パラメータによって、「pos」(開始位置)や「len」(長さ)といった引数が、バイト単位のオフセットとして解釈されるのか、文字単位のオフセットとして解釈されるのかが決まります。
  • デフォルトでは単位はバイトに設定されているため、マルチバイト文字を含むUnicode文字列を扱う場合は「unit='UTF8_CHAR'」を明示的に指定することで、意図した通りの切り出しが可能になります。
  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に