LLMの事前学習で利用されるmC4のデータを確認
はじめに
LLMの事前学習で広く使われるデータセットmC4の中身が気になったので確認し記事にしてみました!
ダウンロード方法から一部データの確認までします。
mC4とは?
mC4は100以上の言語を含む大規模な言語データセットで、インターネットから収取された膨大なテキストデータセット「Common Crawl」を基にしています。Common Crawlから不要なノイズを取り除く処理はされているものの、かなりノイズが含まれているそうです。
ダウンロード方法
mC4はHugging FaceのDatasetsに登録されており、簡単にダウンロードすることができます。
この記事ではPythonを通してダウンロードします。まず必要なパッケージをインストールします。
pip install datasets transformers
そして、以下のPythonスクリプトを実行することでダウンロードすることができます。
from datasets import load_dataset
# データセットの読み込み、今回は日本語データ'ja'のみをダウンロードする
dataset = load_dataset('mc4', 'ja', split='train')
僕の環境では、ダウンロードに8時間ほどかかりましたたので、実行する場合は気長に待ちましょう。
また、データは全体で1.1TBととても大きいので、ディスク容量は確認しておきましょう。僕は最初、何も考えずに実行した結果、ディスクが死にました。ダウンロードで作成されるディレクトリの説明とディスク容量は以下のようになります。
downloads(298GB):huggingfaceからダウンロードしてきた(圧縮された)ファイルが保存されるディレクトリ
mc4(774GB):データセットとして読み込み可能な形式に変更されたファイルが保存されるディレクトリ
load_datasetのデフォルトの保存先は~/.cache/huggingface/datasetsですが、容量の大きい別ディスクを指定したい場合は引数cach_dirを使用して保存先を変更することができます。
dataset = load_dataset('mc4', 'ja', cache_dir="./data", split='train')
データの確認
データセットの確認は以下のように行います。
# 先頭のデータの確認
dataset[0]
次に、実際に確認したデータの例を紹介します。
意味のない文字列が大量に含まれたデータ
以下に示すのは、mC4データセットから抜粋した一部分です。pprintを使用して視覚的に分かりやすいように整理しています。よくわからない文字列ばかりですね。元のデータは中古車販売の検索結果のようです。この様なサイトのリンクやよく分からない文字列データは学習時に削除できる様にしたいですね。
記事タイトルがまとめられたデータ
mC4データセットには、FC2から収集された記事のタイトルが集約されたデータも含まれています。こうしたデータでは、関連記事のタイトルが多く含まれています。例えば以下のデータでは記事本文よりも関連記事のタイトルの方が文字が多くなっています。このようなデータは、日本語の学習データとして、あまり意味のある情報を含んでいなさそうですね。
複数の商品がまとめられたデータ
元のリンクが辿れないため、データの詳細は分かりませんが、ネットショッピングで検索した結果のようなものもあります。このようなデータは単語の羅列部分が多々ありますが、文も存在しています。全角スペースの\u3000などの処理をしっかりすると学習データとしては使えそうですね。
日記データ
mC4データセットにはウェブ上で公開されている日記データも含まれています。しかし、以下のデータは元の日記にあった日付が削除され、テキストが統合されているため、文脈が不自然になっている部分もあります。それでも、多くの文章を含んでいるため、学習データとしては有用そうですね。
Hatena Blogのデータ
Hatena Blogの商品レビュー記事などもデータに含まれていました。個人で大量の文を書くので事前学習のデータとしてはとても良さそうですね。
おわりに
LLMの事前学習で広く使われるデータセットmC4をダウンロードし、中身を確認しました。
確認の結果、学習にとって有害かもしれない、意味のない文字列やタイトル、商品名の羅列などが多く含まれていることがわかりました。
これらのノイズデータを適切に除去することで、日本語の大規模言語モデルの性能向上が期待できるかもしれませんね。
この記事が気に入ったらサポートをしてみませんか?