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

TensorFlowとPythonを使ってイリアスデータセットのトークンから語彙を構築する方法

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

テンソルはTensorFlowにおける基本的なデータ構造であり、データフローグラフと呼ばれるフロー図の中でエッジ同士を接続する役割を果たします。テンソルとは、端的に言えば多次元配列またはリストのことです。

使用するデータセットについて

今回は、ウィリアム・カウパー、エドワード(ダービー伯爵)、サミュエル・バトラーによる3つの翻訳作品のテキストデータを含む「イリアス」データセットを使用します。モデルは、1行のテキストが与えられた際にその翻訳者を識別できるように訓練されます。使用するテキストファイルは事前に前処理されており、文書のヘッダー・フッター、行番号、章タイトルなどは削除済みです。

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

コード例

以下がコードスニペットです。

print("Build a vocabulary using the tokens")
tokenized_ds = configure_dataset(tokenized_ds)
vocab_dict = collections.defaultdict(lambda: 0)
for toks in tokenized_ds.as_numpy_iterator():
    for tok in toks:
        vocab_dict[tok] += 1
print("Sort the vocabulary")
vocab = sorted(vocab_dict.items(), key=lambda x: x[1], reverse=True)
vocab = [token for token, count in vocab]
vocab = vocab[:VOCAB_SIZE]
vocab_size = len(vocab)
print("The vocabulary size is : ", vocab_size)
print("First six vocabulary entries are :", vocab[:6])

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

出力結果

Build a vocabulary using the tokens
Sort the vocabulary
The vocabulary size is : 10000
First six vocabulary entries are : [b',', b'the', b'and', b"'", b'of', b'.']

続いて、トークンを出現頻度の高い順に並べ替え、上位VOCAB_SIZE個のトークンだけを残すことで語彙を構築します。

コードの解説

  • collections.defaultdict を使って各トークンの出現回数をカウントし、データセット全体を走査します。

  • 収集したトークンを頻度に基づいて降順に並べ替えた後、語彙リストが構築されます。

  • 最終的な語彙サイズと、語彙の先頭6件がコンソールに出力されます。出力例では、カンマや「the」「and」などの高頻度トークンが上位にランクインしていることが確認できます。

  1. TensorFlowとPythonを使ってデータセットを視覚化する方法

    ここでは、花のデータセットを使用します。このデータセットは、Googleが提供するAPI経由でダウンロードでき、「get_file」メソッドにAPIのURLを引数として渡すことで、データを開発環境に取得できます。 ダウンロードしたデータは「matplotlib」ライブラリを使って視覚化できます。「imshow」メソッドを使用すると、コンソール上に画像を表示することが可能です。 TensorFlowとKerasの連携 関連記事: TensorFlowとは何か?KerasはどのようにTensorFlowと連携してニューラルネットワークを構築するのか? 本記事ではKeras Sequential

  2. TensorFlowとPythonを使って花のデータセットを可視化する方法

    花のデータセットは、matplotlibライブラリを使用することで簡単に可視化できます。imshowメソッドを使うと、画像をコンソール上に表示でき、データセット全体を反復処理しながら最初の数枚の画像だけを出力するといったことも可能です。使用するデータセットについて本記事では、数千枚の花の画像を含む「flowers(花)」データセットを使用します。このデータセットには5つのサブディレクトリが含まれており、各クラス(花の種類)ごとに1つのサブディレクトリが割り当てられています。なお、以下のコードはGoogle Colaboratoryで実行することを想定しています。Google Colab(Col