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

TensorFlowとPythonで扱うUnicodeスクリプトとは?tf.strings.unicode_scriptの使い方を解説

Unicodeスクリプトとは何か

すべてのUnicodeコードポイントは、それぞれ単一の「スクリプト(文字体系)」と呼ばれるコードポイントの集合に属しています。ある文字がどのスクリプトに属するかを知ることで、その文字がどの言語に対応しているのかを判断できます。

TensorFlowには、指定されたコードポイントがどのスクリプトを使用するのかを調べるための「tf.strings.unicode_script」メソッドが用意されています。このメソッドが返すスクリプトコードはint32型の値であり、International Components for Unicode(ICU)のUScriptCode値にマッピングされます。

PythonでのUnicode文字列の操作

ここでは、Pythonを使ってUnicode文字列を表現し、それらをUnicodeの同等の操作で処理する方法を見ていきます。まず、標準的な文字列操作のUnicode版を活用して、スクリプト検出に基づいてUnicode文字列をトークンに分割します。

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

サンプルコード

print("The below represent '芸' and 'Б' respectively")
uscript = tf.strings.unicode_script([33464, 1041])
print(uscript.numpy())   # [17, 8] == [USCRIPT_HAN, USCRIPT_CYRILLIC]
print("Applying to multidimensional strings")
print(tf.strings.unicode_script(batch_chars_ragged))

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

実行結果

The below represent '芸' and 'Б' respectively
[17  8]
Applying to multidimensional strings
<tf.RaggedTensor [[25, 25, 25, 25, 25], [25, 25, 25, 25, 0, 25, 25, 0, 25, 25, 25, 0, 25, 25, 25, 25, 25, 25, 25, 0, 25, 25, 25, 25, 25, 25, 25, 25], [25, 25, 25, 25, 25, 25, 25, 25, 25], [0]]>

解説

  • すべてのUnicodeコードポイントは、「スクリプト」と呼ばれる単一のコードポイントの集合に属します。
  • 文字のスクリプトを調べることで、その文字がどの言語に属しうるのかを判断できます。
  • TensorFlowでは、tf.strings.unicode_scriptオペレーションを使って、指定したコードポイントが使用するスクリプトを特定できます。
  • スクリプトコードはint32型の値であり、ICU(International Components for Unicode)のUScriptCode値に対応付けられています。例えば、漢字「芸」(コードポイント33464)はUSCRIPT_HAN(値17)、キリル文字「Б」(コードポイント1041)はUSCRIPT_CYRILLIC(値8)として返されます。
  • tf.strings.unicode_scriptオペレーションは、多次元のtf.Tensorやtf.RaggedTensorに対しても適用可能です。これにより、長さの異なる複数の文字列をまとめて効率的に処理できます。
  1. Pythonの識別子とは?命名ルールと規則をわかりやすく解説

    Pythonの識別子(identifier)とはPythonにおける識別子(identifier)とは、変数、関数、クラス、モジュールなどのオブジェクトを一意に特定するために付ける名前のことです。プログラム内でデータや処理を扱ううえで、識別子は最も基本的な要素の一つといえます。識別子の基本的なルール識別子は、英字(A〜Z、a〜z)またはアンダースコア(_)で始まり、その後に0個以上の英字・アンダースコア・数字(0〜9)が続く形で構成されます。一方で、Pythonでは「@」「$」「%」などの記号を識別子に含めることはできません。また、Pythonは大文字と小文字を区別する言語であるため、「Man

  2. Python・R以外で活躍するデータサイエンスツール5選を徹底解説

    データサイエンスといえばPythonやRが定番の言語として知られていますが、実際にはそれら以外にも、データ分析や機械学習の業務を強力に支えるツールが数多く存在します。本記事では、データサイエンスの実践に役立つ代表的な5つのツールについて、それぞれの特徴と強みをわかりやすくご紹介します。Apache Hadoop(アパッチ ハドゥープ)Apache Hadoopは、Javaベースで開発されたオープンソースの分散処理フレームワークです。Javaベースの無料ソフトウェアとして誰でも利用可能大量のデータを格納できる大容量ストレージ機能巨大なデータセットを分割して複数のサーバーで並列処理できるスケーラビ