<jupyter_start><jupyter_text>ニューストピック分類 Base Modelの評価 with GPU  Google ドライブの接続  以下を実行。表示されるurlからGoogleアカウントにサイン。表示される認証用のコードを以下に表示されるテキストボックスにコピペ。  → サインインしたGoogleアカウントのGoogleドライブがマウントされる。<jupyter_code>from google.colab import drive
drive.mount("/content/drive/")<jupyter_output>Mounted at /content/drive/<jupyter_text>主な設定<jupyter_code>data_path = '/content/drive/My Drive/Colab Notebooks/data'   # 作業用フォルダ<jupyter_output><empty_output><jupyter_text>ライブラリのインストール<jupyter_code>!pip install transformers==4.10
!pip install datasets==1.11
!pip install fugashi==1.1
!pip install ipadic==1.0
import os
import torch
import pandas as pd
from transformers import BertForSequenceClassification, BertJapaneseTokenizer<jupyter_output><empty_output><jupyter_text>モデルの読み込み<jupyter_code>loaded_model = BertForSequenceClassification.from_pretrained(data_path) 
loaded_model.cuda()
loaded_tokenizer = BertJapaneseTokenizer.from_pretrained(data_path)<jupyter_output><empty_output><jupyter_text>テストデータの読み込み<jupyter_code>cat_info = pd.read_csv(os.path.join(data_path, "cat_info.csv"), index_col=False)
cat_names = cat_info['name']
cat_names
news_test = pd.read_csv(
    os.path.join(data_path, "news_test.csv" ), index_col=False)
news_test.head()<jupyter_output><empty_output><jupyter_text>サンプルデータの予測<jupyter_code># 形態素解析
MAX_LENGTH = 512
def tokenize(text):
    words = loaded_tokenizer.tokenize(text)
    word_ids = loaded_tokenizer.convert_tokens_to_ids(words)  # インデックスに変換
    word_tensor = torch.tensor([word_ids[:MAX_LENGTH]])  # テンソルに変換
    return word_tensor
index = 30
sample_text  = news_test.loc[index, 'text']
sample_label = news_test.loc[index, 'label']
print('text :', sample_text)
print('true label:', sample_label, cat_names[sample_label])

x = tokenize(sample_text)
x = x.cuda()  # GPU対応
y = loaded_model(x)  # 予測
pred = y[0].argmax(-1).item()  # 最大値のインデックス
print("pred label:", pred, cat_names[pred])<jupyter_output>text : 「ゴルフ婚活」や「料理婚活」など、ただ食事やお酒を共にするだけでは無く、イベント性をプラスした"婚活"はもはや定番。共通の話題が生まれやすく、自然と仲良くなれるので、女性からもアプローチがしやすい所が魅力的です。そんな中、結婚情報サイト「youbride（ユーブライド）」が3日、代々木公園の清掃を通して交流を深める、地球にやさしいエコと婚活のイベント「クリーンアップ婚活イベント」を開催しました。エコと婚活の融合なんて、新鮮でイマドキ！清々しい秋晴れの日、集まった「youbride」会員は男性20名、女性20名の計40名。「清掃活動って疲れそう…」と思う方が多いかもしれませんが、「クリーンアップ婚活イベント」はあくまで、外の気持ちの良い空気を楽しみながら、街をキレイにしていく"プチ"エコ活動。高すぎるヒールでなければ、ブーツやパンプスでお洒落をして参加できるのが魅力的です。代々木公園の入口から、それぞれチームを作ってイベントがスタート。男性がゴミをつかむトングを、女性がゴミ袋を持つので自然と連携がとれ、2人は急接近。タバコの吸いがらが道に落ちている事が多かった事から「タバコは吸いますか？」「吸いますが、携帯灰皿を持ち歩いています」等と、普通の婚活パーティでは出ない話題も飛び出し、お互いの事をよく知る事が出来ました。エコ活動終了後は、ワインやお料理が楽しめるカフェバーに移動してパーティがスタート。「お疲れ様でした！」の乾杯の後、自由に会話を楽しみました。温泉旅行やギフト券が当たるゲームは、エコ活動で気が合ったパートナー、その時には話せなかった参加者の垣根を越えて大盛り上がり。終始和やかで楽しいパーティに。気の合った者同士はアドレス交換するなど、しっかり婚活の主旨も忘れていませんでした。イベントに参加した方々からは終了後、参加者に感想を聞いたアンケートでは、ほとんどの方が「こういったイベント型の婚活パーティははじめてだったので楽しかったです」「皆さん、自然に関心がある方で色々とお話が出来ました」と好感触。椅子に座ってテーブル越しにお話をするだけでは分からない、人柄を知ることが出来る新鮮な体験だった様です。普通の婚活じゃつまらない、仲良くなれないと嘆く婚活女子の皆さんは今回の「クリーンアップ婚活」の様な“進化型婚活”をチェックしてみてはいかが？・youbrid[...]<jupyter_text>精度評価と性能評価<jupyter_code>from sklearn.metrics import accuracy_score
from tqdm import tqdm
test_texts  = news_test['text']
test_labels = news_test['label']
%%time
preds = []
for text in tqdm(test_texts):
    x = tokenize(text)
    x = x.cuda()  # GPU対応
    y = loaded_model(x)  # 予測
    pred = y[0].argmax(-1).item()  # 最大値のインデックス
    preds.append(pred)
print(accuracy_score(test_labels, preds))<jupyter_output>0.9381107491856677
{'fraction_non_alphanumeric': 0.11038381434096994, 'fraction_numerical': 0.01309134186254091, 'mean_word_length': 11.093525179856115, 'pattern_counts': {'":': 0, '<': 26, '<?xml version=': 0, '>': 26, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '7', 'dir': 'jupyter-structured-clean-dedup', 'id': '161666', 'license': 'MIT', 'n_tokens_mistral': 2161, 'n_tokens_neox': 2095, 'n_words': 136, 'path': 'src/3_news_cl_test_base_model_with_GPU.ipynb', 'repo_name': 'kagiya00/speedingup-bert', 'size': '3361'}