本記事はデータセットの可視化について、ナレッジを残そうと思い書きました。
(今回は特にコンペ用にelyza/ELYZA-tasks-100を使ってます)
データセットを可視化することで、データの全体像を把握できます。テキストの長さや単語の出現頻度を視覚化することで、どのような特徴を持っているかを直感的に理解できます。
データセットに存在する特徴や傾向を見つけるためには、可視化をするとみえてくることもあります。例えば、ある特徴量が特定のラベルに関連している場合、その関連性を発見する手助けとなります。
データセットを可視化することで、外れ値や欠損値の存在を簡単に確認できます。これは、データクリーニングの指針となり、データの質を向上させる助けとなります。
自作のデータセットを作成する際に、既存のデータセットの可視化結果を参考にすることで、必要な特徴やデータのバランスを考慮した設計が可能になります。
こんな感じの可視化ができるようになります。
# ライブラリの準備
!pip install datasets
!pip install transformers[ja,torch] datasets matplotlib
!pip install japanize_matplotlib
# 乱数を固定して実験結果が固定化されるようにしておく
from transformers.trainer_utils import set_seed
set_seed(42)
# datasetにelyza/ELYZA-tasks-100を指定する
from pprint import pprint
from datasets import load_dataset
dataset = load_dataset("elyza/ELYZA-tasks-100")
train_dataset = dataset['test']
pprint(train_dataset[0])
# 下記のように出力されます
"""
{'eval_aspect': '- 熱意を取り戻すのではなく、仕事の効率化・スキルアップのような文脈になっていたら1点減点\\n'
'- 出したアイデアが5つより多い、少ない場合は1点減点\\n'
'- 5つのアイデアのうち、内容が重複しているものがあれば1点減点\\n'
'\\n',
'input': '仕事の熱意を取り戻すためのアイデアを5つ挙げてください。',
'output': '1. 自分の仕事に対する興味を再発見するために、新しい技能や知識を学ぶこと。\\n'
'2. カレッジやセミナーなどで講演を聴くことで、仕事に対する新しいアイデアや視点を得ること。\\n'
'3. 仕事に対してストレスを感じている場合は、ストレスマネジメントのテクニックを学ぶこと。\\n'
'4. 仕事以外の楽しいことをすることで、ストレスを発散すること。\\n'
'5. 仕事に対して自己評価をすることで、自分がどのように進化しているのかを知ること。'}
"""
# 私はドライブの中にgoogle--gemma-2-2b-jpn-itを保存しているので、それを呼び出す目的でドライブをマウントします
from google.colab import drive
drive.mount('/content/drive')
# pathの部分は、自分のモデルのパスに書き換えてください
from transformers import AutoTokenizer, AutoModel
model_dir = '/content/drive/MyDrive/huggingface/hub/your_model_path'
model_name = AutoModel.from_pretrained(model_dir)
tokenizer = AutoTokenizer.from_pretrained(model_dir)
print(type(tokenizer).__name__)
# こんな感じででると思います
# Tokenizerとしてこれが使われているということです
"""
GemmaTokenizerFast
"""
# 試しにtokenizeしてみます
tokenizer.tokenize("これはテストです。")
# こんな感じででます。トークナイズできてますね
"""
['これは', 'テスト', 'です', '。']
"""
from collections import Counter
import japanize_matplotlib
import matplotlib.pyplot as plt
from datasets import Dataset
from tqdm import tqdm
plt.rcParams['font.size'] = 20