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

TensorFlow Textを使ってPythonでUTF-8文字列を分割する方法

UTF-8文字列はTensorFlow Textを使って分割できます。これには「UnicodeScriptTokenizer」を利用します。まず「UnicodeScriptTokenizer」のインスタンスを作成し、その後、このトークナイザーが持つ「tokenize」メソッドを対象の文字列に対して呼び出します。

前提知識:KerasとTensorFlowの関係

ここではKerasのSequential APIを使用します。Sequential APIは、層を単純に積み重ねたモデルを構築する際に便利で、各層は必ず1つの入力テンソルと1つの出力テンソルを持ちます。

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

TensorFlow Textとは

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

実行環境について

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

トークン化(Tokenization)とは

トークン化とは、文字列を「トークン」と呼ばれる小さな単位へ分解する処理のことです。トークンには単語、数値、句読点などが含まれます。

重要なインターフェースとして「Tokenizer」と「TokenizerWithOffsets」の2つがあり、それぞれ「tokenize」「tokenize_with_offsets」というメソッドを1つずつ持ちます。複数のトークナイザーが用意されており、その多くはTokenizerクラスを拡張したTokenizerWithOffsetsを実装しています。これにより、元の文字列内におけるバイトオフセットを取得できるため、各トークンが元の文字列のどの部分(バイト範囲)から生成されたのかを正確に把握できます。

すべてのトークナイザーは、最も内側の次元が個々の元の文字列に対応するトークンとなっているRaggedTensorを返します。そのため、結果の形状のランクは1つ増加します。

サンプルコード

print("Unicode script tokenizer is being called")
tokenizer = text.UnicodeScriptTokenizer()
tokens = tokenizer.tokenize(['everything not saved will be lost.', u'Sad☹'.encode('UTF-8')])
print("The tokenized data is converted to a list")
print(tokens.to_list())

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

出力結果

Unicode script tokenizer is being called
The tokenized data is converted to a list
[[b'everything', b'not', b'saved', b'will', b'be', b'lost', b'.'], [b'Sad', b'\xe2\x98\xb9']]

解説

  • このトークナイザーは、Unicodeスクリプトの境界に基づいてUTF-8文字列を分割します。

  • スクリプトコードは、International Components for Unicode(ICU)のUScriptCode値に対応しています。

  • WhitespaceTokenizerと動作は似ていますが、決定的な違いとして、句読点(USCRIPT_COMMON)を言語テキストから分離するだけでなく、異なる言語のテキスト同士も互いに分割します。

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

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

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

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