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

TensorFlowとPythonで文中のすべての単語のコードポイントを取得する方法

文中のすべての単語のコードポイントを取得するには、まずその位置が単語の始まりかどうかを判定します。次に、文字のインデックスが、全文章から平坦化された文字リスト内の特定の単語の開始位置と一致しているかどうかを確認します。これらの検証が完了したら、後述のメソッドを使って、各単語に含まれるすべての文字のコードポイントを取得できます。

スクリプト識別子(script identifiers)は、単語の境界を決定し、区切りを追加すべき位置を特定する際に役立ちます。単語境界は、文の先頭、および直前の文字とスクリプトが異なる各文字の位置に追加されます。こうして得られた開始オフセット(start offsets)を利用するとRaggedTensorを構築でき、このRaggedTensorには全バッチの単語リストが格納されます。

Unicode文字列の表現と操作

まず、PythonでUnicode文字列をどのように表現し、Unicode対応の操作でそれらを扱うかを理解しましょう。標準的な文字列操作に相当するUnicode版のオペレーションを使用し、スクリプト検出に基づいてUnicode文字列をトークンに分割します。

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

print("Check if sentence is the start of the word")
sentence_char_starts_word = tf.concat(
   [tf.fill([sentence_char_script.nrows(), 1], True),
    tf.not_equal(sentence_char_script[:, 1:], sentence_char_script[:, :-1])],
   axis=1)
print("Check if index of character starts from specific index of word in flattened list of characters from all sentences")
word_starts = tf.squeeze(tf.where(sentence_char_starts_word.values), axis=1)
print(word_starts)
print("Get the code point of every character in every word")
word_char_codepoint = tf.RaggedTensor.from_row_starts(
   values=sentence_char_codepoint.values,
   row_starts=word_starts)
print(word_char_codepoint)

コード出典:https://www.tensorflow.org/tutorials/load_data/unicode

出力結果

Check if sentence is the start of the word
Check if index of character starts from specific index of word in flattened list of characters from all sentences
tf.Tensor([ 0   5   7 12 13 15], shape=(6,), dtype=int64)
Get the code point of every character in every word
<tf.RaggedTensor [[72, 101, 108, 108, 111], [44, 32], [116, 104, 101, 114, 101], [46], [19990, 30028], [12371, 12435, 12395, 12385, 12399]]>

処理の流れと解説

  • スクリプト識別子を利用することで、単語の境界をどこに追加すべきかを判断できます。
  • 単語境界は、すべての文の先頭、および直前の文字とスクリプトが異なる各文字の位置に追加されます。
  • 続いて、これらの開始オフセットをもとにRaggedTensorを構築します。
  • このRaggedTensorには、全バッチに含まれる単語のリストが格納されます。
  1. TensorFlowとPythonを使ってモデルをトレーニングする方法

    TensorFlowでは、fitメソッドを使ってモデルをトレーニングできます。このメソッドには、エポック数(データセット全体を何回繰り返して学習させるかを示す数値)とトレーニング用データを指定します。実行環境について本記事のコードはGoogle Colaboratory(Google Colab)で実行しています。Google Colabはブラウザ上でPythonコードを実行できるサービスで、面倒な環境構築が不要なうえ、GPU(グラフィックス処理ユニット)を無料で利用できるのが大きな特徴です。ColaboratoryはJupyter Notebookをベースに構築されています。モデルのトレーニ

  2. Kerasでコールバックを作成し、Pythonを使ってモデルの重みを保存する方法

    TensorFlowは、Googleが提供する機械学習フレームワークです。オープンソースとして公開されており、Pythonと組み合わせてアルゴリズムやディープラーニングアプリケーションなどを実装するために広く利用されています。研究用途から本番環境まで対応しており、複雑な数学的演算を高速に処理するための最適化技術を備えているのが特徴です。これは内部でNumPyと多次元配列を使用しているためで、この多次元配列は「テンソル」と呼ばれます。Windows環境では、以下のコマンドで「tensorflow」パッケージをインストールできます。pip install tensorflowテンソルはTensor