matrix-spam-ml/bert.ipynb

662 lines
111 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"env: TF_GPU_ALLOCATOR=cuda_malloc_async\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"2022-12-10 21:21:09.925809: I tensorflow/core/platform/cpu_feature_guard.cc:193] This TensorFlow binary is optimized with oneAPI Deep Neural Network Library (oneDNN) to use the following CPU instructions in performance-critical operations: AVX2 FMA\n",
"To enable them in other operations, rebuild TensorFlow with the appropriate compiler flags.\n",
"2022-12-10 21:21:10.036521: E tensorflow/stream_executor/cuda/cuda_blas.cc:2981] Unable to register cuBLAS factory: Attempting to register factory for plugin cuBLAS when one has already been registered\n",
"2022-12-10 21:21:11.247528: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:980] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero\n",
"2022-12-10 21:21:11.251948: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:980] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero\n",
"2022-12-10 21:21:11.252191: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:980] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero\n",
"/home/marcel/.conda/envs/tf/lib/python3.9/site-packages/tqdm/auto.py:22: TqdmWarning: IProgress not found. Please update jupyter and ipywidgets. See https://ipywidgets.readthedocs.io/en/stable/user_install.html\n",
" from .autonotebook import tqdm as notebook_tqdm\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"WARNING:tensorflow:Please fix your imports. Module tensorflow.python.training.tracking.data_structures has been moved to tensorflow.python.trackable.data_structures. The old module will be deleted in version 2.11.\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"2022-12-10 21:21:12.482467: I tensorflow/core/platform/cpu_feature_guard.cc:193] This TensorFlow binary is optimized with oneAPI Deep Neural Network Library (oneDNN) to use the following CPU instructions in performance-critical operations: AVX2 FMA\n",
"To enable them in other operations, rebuild TensorFlow with the appropriate compiler flags.\n",
"WARNING:tensorflow:Please fix your imports. Module tensorflow.python.training.tracking.data_structures has been moved to tensorflow.python.trackable.data_structures. The old module will be deleted in version 2.11.\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Model: \"model\"\n",
"__________________________________________________________________________________________________\n",
" Layer (type) Output Shape Param # Connected to \n",
"==================================================================================================\n",
" text (InputLayer) [(None,)] 0 [] \n",
" \n",
" preprocessing (KerasLayer) {'input_type_ids': 0 ['text[0][0]'] \n",
" (None, 128), \n",
" 'input_word_ids': \n",
" (None, 128), \n",
" 'input_mask': (Non \n",
" e, 128)} \n",
" \n",
" BERT_encoder (KerasLayer) {'default': (None, 109482241 ['preprocessing[0][0]', \n",
" 768), 'preprocessing[0][1]', \n",
" 'pooled_output': ( 'preprocessing[0][2]'] \n",
" None, 768), \n",
" 'sequence_output': \n",
" (None, 128, 768), \n",
" 'encoder_outputs': \n",
" [(None, 128, 768), \n",
" (None, 128, 768), \n",
" (None, 128, 768), \n",
" (None, 128, 768), \n",
" (None, 128, 768), \n",
" (None, 128, 768), \n",
" (None, 128, 768), \n",
" (None, 128, 768), \n",
" (None, 128, 768), \n",
" (None, 128, 768), \n",
" (None, 128, 768), \n",
" (None, 128, 768)]} \n",
" \n",
" dropout (Dropout) (None, 768) 0 ['BERT_encoder[0][13]'] \n",
" \n",
" classifier (Dense) (None, 1) 769 ['dropout[0][0]'] \n",
" \n",
"==================================================================================================\n",
"Total params: 109,483,010\n",
"Trainable params: 109,483,009\n",
"Non-trainable params: 1\n",
"__________________________________________________________________________________________________\n",
"Training model with https://tfhub.dev/tensorflow/small_bert/bert_en_uncased_L-12_H-768_A-12/2\n",
"Epoch 1/10\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"2022-12-10 21:21:53.199015: I tensorflow/compiler/xla/service/service.cc:173] XLA service 0x424858d0 initialized for platform Host (this does not guarantee that XLA will be used). Devices:\n",
"2022-12-10 21:21:53.199320: I tensorflow/compiler/xla/service/service.cc:181] StreamExecutor device (0): Host, Default Version\n",
"2022-12-10 21:21:53.212952: I tensorflow/compiler/mlir/tensorflow/utils/dump_mlir_util.cc:268] disabling MLIR crash reproducer, set env var `MLIR_CRASH_REPRODUCER_DIRECTORY` to enable.\n",
"2022-12-10 21:21:53.276686: I tensorflow/compiler/jit/xla_compilation_cache.cc:476] Compiled cluster using XLA! This line is logged at most once for the lifetime of the process.\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"42/42 [==============================] - ETA: 0s - loss: 0.3651 - binary_accuracy: 0.8204"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"2022-12-10 21:27:46.480163: W tensorflow/core/framework/cpu_allocator_impl.cc:82] Allocation of 5625815040 exceeds 10% of free system memory.\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"42/42 [==============================] - 378s 9s/step - loss: 0.3651 - binary_accuracy: 0.8204 - val_loss: 0.0910 - val_binary_accuracy: 0.9738\n",
"Epoch 2/10\n",
"42/42 [==============================] - ETA: 0s - loss: 0.0524 - binary_accuracy: 0.9850"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"2022-12-10 21:33:39.322284: W tensorflow/core/framework/cpu_allocator_impl.cc:82] Allocation of 5625815040 exceeds 10% of free system memory.\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"42/42 [==============================] - 353s 8s/step - loss: 0.0524 - binary_accuracy: 0.9850 - val_loss: 0.0860 - val_binary_accuracy: 0.9843\n",
"Epoch 3/10\n",
"42/42 [==============================] - ETA: 0s - loss: 0.0194 - binary_accuracy: 0.9955"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"2022-12-10 21:39:28.636886: W tensorflow/core/framework/cpu_allocator_impl.cc:82] Allocation of 5625815040 exceeds 10% of free system memory.\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"42/42 [==============================] - 348s 8s/step - loss: 0.0194 - binary_accuracy: 0.9955 - val_loss: 0.0950 - val_binary_accuracy: 0.9791\n",
"Epoch 4/10\n",
"42/42 [==============================] - ETA: 0s - loss: 0.0062 - binary_accuracy: 0.9985"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"2022-12-10 21:45:18.897732: W tensorflow/core/framework/cpu_allocator_impl.cc:82] Allocation of 5625815040 exceeds 10% of free system memory.\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"42/42 [==============================] - 350s 8s/step - loss: 0.0062 - binary_accuracy: 0.9985 - val_loss: 0.0881 - val_binary_accuracy: 0.9860\n",
"Epoch 5/10\n",
"42/42 [==============================] - ETA: 0s - loss: 0.0037 - binary_accuracy: 0.9993"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"2022-12-10 21:51:03.660678: W tensorflow/core/framework/cpu_allocator_impl.cc:82] Allocation of 5625815040 exceeds 10% of free system memory.\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"42/42 [==============================] - 345s 8s/step - loss: 0.0037 - binary_accuracy: 0.9993 - val_loss: 0.0873 - val_binary_accuracy: 0.9843\n",
"Epoch 6/10\n",
"42/42 [==============================] - 349s 8s/step - loss: 0.0018 - binary_accuracy: 0.9993 - val_loss: 0.0896 - val_binary_accuracy: 0.9860\n",
"Epoch 7/10\n",
"42/42 [==============================] - 350s 8s/step - loss: 0.0017 - binary_accuracy: 0.9993 - val_loss: 0.0904 - val_binary_accuracy: 0.9825\n",
"Epoch 8/10\n",
"42/42 [==============================] - 347s 8s/step - loss: 9.7578e-04 - binary_accuracy: 1.0000 - val_loss: 0.0922 - val_binary_accuracy: 0.9843\n",
"Epoch 9/10\n",
"42/42 [==============================] - 350s 8s/step - loss: 7.7726e-04 - binary_accuracy: 1.0000 - val_loss: 0.0928 - val_binary_accuracy: 0.9843\n",
"Epoch 10/10\n",
"42/42 [==============================] - 349s 8s/step - loss: 6.2757e-04 - binary_accuracy: 1.0000 - val_loss: 0.0931 - val_binary_accuracy: 0.9843\n",
"18/18 [==============================] - 41s 2s/step - loss: 0.0931 - binary_accuracy: 0.9843\n",
"Loss: 0.09307406097650528\n",
"Accuracy: 0.9842932224273682\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"WARNING:absl:Found untraced functions such as restored_function_body, restored_function_body, restored_function_body, restored_function_body, restored_function_body while saving (showing 5 of 366). These functions will not be directly callable after loading.\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"INFO:tensorflow:Assets written to: ./bert_models/1670707256.1814783/assets\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"INFO:tensorflow:Assets written to: ./bert_models/1670707256.1814783/assets\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"1/1 [==============================] - 2s 2s/step\n",
"Message: \"Greg, can you call me back once you get this?\"\n",
"Likeliness of spam in percentage: 0.00093\n",
"Vote by AI: Not Spam\n",
"Model predicted correctly\n",
"\n",
"\n",
"Message: \"Congrats on your new iPhone! Click here to claim your prize...\"\n",
"Likeliness of spam in percentage: 0.41126\n",
"Vote by AI: Not Spam\n",
"Model failed to predict correctly\n",
"\n",
"\n",
"Message: \"Really like that new photo of you\"\n",
"Likeliness of spam in percentage: 0.04146\n",
"Vote by AI: Not Spam\n",
"Model predicted correctly\n",
"\n",
"\n",
"Message: \"Did you hear the news today? Terrible what has happened...\"\n",
"Likeliness of spam in percentage: 0.00026\n",
"Vote by AI: Not Spam\n",
"Model predicted correctly\n",
"\n",
"\n",
"Message: \"Attend this free COVID webinar today: Book your session now...\"\n",
"Likeliness of spam in percentage: 0.99068\n",
"Vote by AI: Spam\n",
"Model predicted correctly\n",
"\n",
"\n",
"Message: \"Are you coming to the party tonight?\"\n",
"Likeliness of spam in percentage: 0.02573\n",
"Vote by AI: Not Spam\n",
"Model predicted correctly\n",
"\n",
"\n",
"Message: \"Your parcel has gone missing\"\n",
"Likeliness of spam in percentage: 0.00568\n",
"Vote by AI: Not Spam\n",
"Model predicted correctly\n",
"\n",
"\n",
"Message: \"Do not forget to bring friends!\"\n",
"Likeliness of spam in percentage: 0.01160\n",
"Vote by AI: Not Spam\n",
"Model predicted correctly\n",
"\n",
"\n",
"Message: \"You have won a million dollars! Fill out your bank details here...\"\n",
"Likeliness of spam in percentage: 0.00105\n",
"Vote by AI: Not Spam\n",
"Model failed to predict correctly\n",
"\n",
"\n",
"Message: \"Looking forward to seeing you again\"\n",
"Likeliness of spam in percentage: 0.11693\n",
"Vote by AI: Not Spam\n",
"Model predicted correctly\n",
"\n",
"\n",
"Message: \"oh wow https://github.com/MGCodesandStats/tensorflow-nlp/blob/master/spam%20detection%20tensorflow%20v2.ipynb works really good on spam detection. Guess I go with that as the base model then lol :D\"\n",
"Likeliness of spam in percentage: 0.53543\n",
"Vote by AI: Not Spam\n",
"Model predicted correctly\n",
"\n",
"\n",
"Message: \"ayo\"\n",
"Likeliness of spam in percentage: 0.43455\n",
"Vote by AI: Not Spam\n",
"Model predicted correctly\n",
"\n",
"\n",
"Message: \"Almost all my spam is coming to my non-gmail address actually\"\n",
"Likeliness of spam in percentage: 0.04262\n",
"Vote by AI: Not Spam\n",
"Model predicted correctly\n",
"\n",
"\n",
"Message: \"Oh neat I think I found the sizing sweetspot for my data :D\"\n",
"Likeliness of spam in percentage: 0.00090\n",
"Vote by AI: Not Spam\n",
"Model predicted correctly\n",
"\n",
"\n",
"Message: \"would never click on buttons in gmail :D always expecting there to be a bug in gmail that allows js to grab your google credentials :D XSS via email lol. I am too scared for touching spam in gmail\"\n",
"Likeliness of spam in percentage: 0.12625\n",
"Vote by AI: Not Spam\n",
"Model predicted correctly\n",
"\n",
"\n",
"Message: \"back to cacophony \"\n",
"Likeliness of spam in percentage: 0.16637\n",
"Vote by AI: Not Spam\n",
"Model predicted correctly\n",
"\n",
"\n",
"Message: \"Room version 11 when\"\n",
"Likeliness of spam in percentage: 0.38619\n",
"Vote by AI: Not Spam\n",
"Model predicted correctly\n",
"\n",
"\n",
"Message: \"skip 11 and go straight to 12\"\n",
"Likeliness of spam in percentage: 0.15472\n",
"Vote by AI: Not Spam\n",
"Model predicted correctly\n",
"\n",
"\n",
"Message: \"100 events should clear out any events that might be causing a request to fail lol\"\n",
"Likeliness of spam in percentage: 0.00092\n",
"Vote by AI: Not Spam\n",
"Model predicted correctly\n",
"\n",
"\n",
"Message: \"I'll help anyone interested on how to invest and earn $30k, $50k, $100k, $200k or more in just 72hours from the crypto market.But you will have to pay me my commission! when you receive your profit! if interested send me a direct message let's get started or via WhatsApp +1 (605) 9536801\"\n",
"Likeliness of spam in percentage: 0.99976\n",
"Vote by AI: Spam\n",
"Model predicted correctly\n",
"\n",
"\n",
"18 out of 20 are detected correctly\n",
"\n"
]
},
{
"data": {
"image/png": "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",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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Ybii3CZMEB937ACuXZO2FiIiIiIiA8FwRbnVrQv07CnOz5snbS1ERERERAaC4YryNnGi+Lh5MxAdLW0tREREREQGgOGK8ta0KfDxx4BCAcyfL3U1RERERER6j+GK8jd5svi4di3w5Im0tRARERER6TmGK8pfmzZA69ZAZiaweLHU1RARERER6TWGK8qfTAZMmiTOr1wJPH8ubT1ERERERHqM4YoK1qkT0KgRkJIChIRIXQ0RERERkd5iuKKCvd17tXw58Pq1tPUQEREREekphisqXM+eQK1awMuXwKpVUldDRERERKSXGK6ocMbGwIQJ4vyiRUB6urT1EBERERHpIYYr0sznnwPVqgHx8eLQ7EREREREpIbhijRjagp89504P38+kJUlbT1ERERERHqG4Yo0N3AgULky8OABsGWL1NUQEREREekVhivSnIUFEBQkzgcHA0qltPUQEREREekRhivSztChgJ0dcOMGsHOn1NUQEREREekNhivSjo0NMGKEOD93LiAI0tZDRERERKQnGK5IeyNHApaWwLlzwP79UldDRERERKQXGK5Iew4OwNdfi/Nz50pbCxERERGRnmC4oqIZOxYwMwOOHhUnIiIiIqJyjuGKisbVFRgwQJxn7xURERERkWGEqxUrVsDDwwPm5ubw9fXF6dOn8112zZo1aNOmDSpWrIiKFSuiQ4cOBS5PxfDdd4CREbBvn3j9FRERERFROVZi4erhw4d49OiR6vnp06cxevRorF69WqvthIeHIygoCNOnT8e5c+fg7e0NPz8/PH36NM/lDx8+jL59++LQoUOIioqCm5sbPv74Y8TGxhbreCgPnp5A377ifHCwtLUQEREREUlMJgglM5Z2mzZtMGTIEHz55ZeIi4tDrVq1UK9ePdy+fRsjRozAtGnTNNqOr68vmjVrhtDQUACAUqmEm5sbRowYgQkTJhS6vkKhQMWKFREaGop+/fpptM+kpCTY2toiMTERNjY2Gq1Tbl29CtSvD8hk4nydOlJXRERERESkM9pkgxLrubpy5QqaN28OANi6dSvq16+PEydOYNOmTQgLC9NoG5mZmTh79iw6dOigajMyMkKHDh0QFRWl0TZSU1ORlZWFSpUq5btMRkYGkpKS1CbSUL16QPfu4v2uvv9e6mqIiIiIiCRTYuEqKysLcrkcAHDw4EF069YNAFC7dm08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0UcfYeXKlejevTtMTU1zLVO9enX06dNHJwVSGfP338C5c4CFBfD111JXQ0RERESkM1qHq3v37sHd3b3AZSpUqIB169YVuSgqw3J6rQIDAQcHaWshIiIiItIhrQe0ePr0KU6dOpWr/dSpU/jnn390UhSVUTdvAnv2iPNjxkhbCxERERGRjmkdroYNG4aHDx/mao+NjcWwYcN0UhSVUUuXio/+/sB770laChERERGRrmkdrq5du4YmTZrkam/cuDGuXbumk6KoDEpIAMLCxPmxYyUthYiIiIioJGgdruRyOeLj43O1P3nyBCYmRR7Zncq6VauA9HSgSROgbVupqyEiIiIi0jmtw9XHH3+MiRMnIjExUdX26tUrTJo0CR999JFOi6MyIj0dCA0V58eO5U2DiYiIiKhM0rqraeHChWjbti3c3d3RuHFjAMCFCxfg5OSEjRs36rxAKgM2bwbi44GqVYFevaSuhoiIiIioRGgdrqpUqYJLly5h06ZNuHjxIiwsLDBgwAD07ds3z3teUTn39k2DR44E+BkhIiIiojJKJgiCIHUR+iYpKQm2trZITEyEjY2N1OUYtv37gY4dASsr4OFDwM5O6oqIiIiIiDSmTTYo8ggU165dQ0xMDDIzM9Xau3XrVtRNUlmU02s1aBCDFRERERGVaVqHq3v37qFHjx64fPkyZDIZcjq+ZP8bpEChUOi2QjJcly8DBw4ARkbAqFFSV0NEREREVKK0Hi1w1KhRqF69Op4+fQpLS0tcvXoVR44cQdOmTXH48OESKJEM1pIl4mPPnkD16tLWQkRERERUwrTuuYqKisJff/0FBwcHGBkZwcjICO+//z6Cg4MxcuRInD9/viTqJEMTFwds2iTOBwVJWwsRERERUSnQuudKoVDA2toaAODg4IDHjx8DANzd3XHz5k3dVkeGa8UKIDMTaNlSnIiIiIiIyjite67q16+Pixcvonr16vD19cX8+fNhZmaG1atXw9PTsyRqJEOTmgqsXCnOs9eKiIiIiMoJrcPVlClTkJKSAgCYNWsWunbtijZt2sDe3h7h4eE6L5AM0IYNwPPn4nVWPXpIXQ0RERERUanQOlz5+fmp5mvUqIEbN27gxYsXqFixomrEQCrHlMo3A1mMGgUYG0tbDxERERFRKdHqmqusrCyYmJjgypUrau2VKlVisCLRH38At24BtrbA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",
"text/plain": [
"<Figure size 1000x600 with 2 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"!pip3 install --quiet tensorflow-text numpy pandas tf-models-official\n",
"%env TF_GPU_ALLOCATOR=cuda_malloc_async\n",
"%load_ext tensorboard\n",
"\n",
"import csv\n",
"import numpy as np\n",
"import tensorflow as tf\n",
"tf.config.set_visible_devices([], 'GPU')\n",
"import tensorflow_hub as hub\n",
"import pandas as pd\n",
"import tensorflow as tf\n",
"import tensorflow_hub as hub\n",
"import tensorflow_models as tfm\n",
"#from official.nlp import optimization # to create AdamW optimizer\n",
"import tensorflow_text as text # needed even if unused\n",
"import time\n",
"import datetime\n",
"\n",
"import matplotlib.pyplot as plt\n",
"\n",
"def change_labels(x):\n",
" return 1 if x == \"spam\" else 0\n",
"\n",
"data = pd.read_csv(\n",
" \"./input/MatrixData.tsv\", sep=\"\\t\", quoting=csv.QUOTE_NONE, encoding=\"utf-8\"\n",
")\n",
"\n",
"# Minimum length\n",
"data = data[data[\"message\"].str.split().str.len().gt(18)]\n",
"# Remove unknown\n",
"data.dropna(inplace=True)\n",
"data.reset_index(drop=True, inplace=True)\n",
"data[\"label\"] = data[\"label\"].apply(change_labels)\n",
"\n",
"# Remove stopwords\n",
"#data[\"message\"] = data[\"message\"].apply(remove_stopwords)\n",
"# Shuffle data\n",
"data = data.sample(frac=1).reset_index(drop=True)\n",
"\n",
"# Split data into messages and label sets\n",
"sentences = data[\"message\"].tolist()\n",
"labels = data[\"label\"].tolist()\n",
"\n",
"# Separate out the sentences and labels into training and test sets\n",
"# training_size = int(len(sentences) * 0.8)\n",
"training_size = int(len(sentences) * 0.7)\n",
"training_sentences = sentences[0:training_size]\n",
"testing_sentences = sentences[training_size:]\n",
"training_labels = labels[0:training_size]\n",
"testing_labels = labels[training_size:]\n",
"\n",
"# Make labels into numpy arrays for use with the network later\n",
"test_labels = np.array(testing_labels)\n",
"train_labels = np.array(training_labels)\n",
"train_examples = np.array(training_sentences)\n",
"test_examples = np.array(testing_sentences)\n",
"\n",
"# Build dataset\n",
"AUTOTUNE = tf.data.AUTOTUNE\n",
"batch_size = 32\n",
"\n",
"raw_train_ds = tf.data.Dataset.from_tensor_slices((train_examples,train_labels))\n",
"train_ds = raw_train_ds.batch(batch_size).cache().prefetch(buffer_size=AUTOTUNE)\n",
"\n",
"raw_val_ds = tf.data.Dataset.from_tensor_slices((test_examples,test_labels))\n",
"val_ds = raw_val_ds.batch(batch_size).cache().prefetch(buffer_size=AUTOTUNE)\n",
"test_ds = raw_val_ds.batch(batch_size).cache().prefetch(buffer_size=AUTOTUNE)\n",
"\n",
"# Load the BERT encoder and preprocessing models\n",
"# Alternative https://tfhub.dev/google/electra_small/2\n",
"tfhub_handle_preprocess = 'https://tfhub.dev/tensorflow/bert_en_uncased_preprocess/3'\n",
"#tfhub_handle_encoder = 'https://tfhub.dev/google/electra_small/2'\n",
"#tfhub_handle_encoder = 'https://tfhub.dev/tensorflow/small_bert/bert_en_uncased_L-4_H-512_A-8/2'\n",
"tfhub_handle_encoder = 'https://tfhub.dev/tensorflow/small_bert/bert_en_uncased_L-12_H-768_A-12/2'\n",
"\n",
"def build_classifier_model():\n",
" text_input = tf.keras.layers.Input(shape=(), dtype=tf.string, name='text')\n",
" preprocessing_layer = hub.KerasLayer(tfhub_handle_preprocess, name='preprocessing')\n",
" encoder_inputs = preprocessing_layer(text_input)\n",
" encoder = hub.KerasLayer(tfhub_handle_encoder, trainable=True, name='BERT_encoder')\n",
" outputs = encoder(encoder_inputs)\n",
" net = outputs['pooled_output']\n",
" net = tf.keras.layers.Dropout(0.1)(net)\n",
" #net = tf.keras.layers.Dense(1, activation=None, name='classifier')(net)\n",
" net = tf.keras.layers.Dense(1, activation='sigmoid', name='classifier')(net)\n",
" return tf.keras.Model(text_input, net)\n",
"\n",
"\n",
"classifier_model = build_classifier_model()\n",
"classifier_model.summary()\n",
"# bert_raw_result = classifier_model(tf.constant(sentences))\n",
"# print(tf.sigmoid(bert_raw_result))\n",
"tf.keras.utils.plot_model(classifier_model, show_dtype=True)\n",
"\n",
"#loss = tf.keras.losses.BinaryCrossentropy(from_logits=True)\n",
"loss = tf.keras.losses.BinaryCrossentropy(from_logits=False)\n",
"metrics = tf.metrics.BinaryAccuracy()\n",
"\n",
"epochs = 10\n",
"steps_per_epoch = tf.data.experimental.cardinality(train_ds).numpy()\n",
"num_train_steps = steps_per_epoch * epochs\n",
"num_warmup_steps = int(0.1*num_train_steps)\n",
"\n",
"init_lr = 3e-5\n",
"linear_decay = tf.keras.optimizers.schedules.PolynomialDecay(\n",
" initial_learning_rate=init_lr,\n",
" end_learning_rate=0,\n",
" decay_steps=num_train_steps)\n",
"warmup_schedule = tfm.optimization.lr_schedule.LinearWarmup(\n",
" warmup_learning_rate = 0,\n",
" after_warmup_lr_sched = linear_decay,\n",
" warmup_steps = num_warmup_steps\n",
")\n",
"x = tf.linspace(0, num_train_steps, 1001)\n",
"y = [warmup_schedule(xi) for xi in x]\n",
"plt.plot(x,y)\n",
"plt.xlabel('Train step')\n",
"plt.ylabel('Learning rate')\n",
"\n",
"\n",
"\n",
"#optimizer = optimization.create_optimizer(init_lr=init_lr,\n",
"# num_train_steps=num_train_steps,\n",
"# num_warmup_steps=num_warmup_steps,\n",
"# optimizer_type='adamw')\n",
"optimizer = tf.keras.optimizers.experimental.Adam(\n",
" learning_rate = warmup_schedule)\n",
"\n",
"\n",
"classifier_model.compile(optimizer=optimizer,\n",
" loss=loss,\n",
" metrics=metrics)\n",
"\n",
"print(f'Training model with {tfhub_handle_encoder}')\n",
"log_dir = \"logs/fit/\" + datetime.datetime.now().strftime(\"%Y%m%d-%H%M%S\")\n",
"tensorboard_callback = tf.keras.callbacks.TensorBoard(log_dir=log_dir, histogram_freq=1)\n",
"history = classifier_model.fit(x=train_ds,\n",
" validation_data=val_ds,\n",
" epochs=epochs,callbacks=[tensorboard_callback])\n",
"\n",
"loss, accuracy = classifier_model.evaluate(test_ds)\n",
"\n",
"print(f'Loss: {loss}')\n",
"print(f'Accuracy: {accuracy}')\n",
"\n",
"\n",
"history_dict = history.history\n",
"\n",
"acc = history_dict['binary_accuracy']\n",
"val_acc = history_dict['val_binary_accuracy']\n",
"loss = history_dict['loss']\n",
"val_loss = history_dict['val_loss']\n",
"\n",
"epochs = range(1, len(acc) + 1)\n",
"fig = plt.figure(figsize=(10, 6))\n",
"fig.tight_layout()\n",
"\n",
"plt.subplot(2, 1, 1)\n",
"# r is for \"solid red line\"\n",
"plt.plot(epochs, loss, 'r', label='Training loss')\n",
"# b is for \"solid blue line\"\n",
"plt.plot(epochs, val_loss, 'b', label='Validation loss')\n",
"plt.title('Training and validation loss')\n",
"# plt.xlabel('Epochs')\n",
"plt.ylabel('Loss')\n",
"plt.legend()\n",
"\n",
"plt.subplot(2, 1, 2)\n",
"plt.plot(epochs, acc, 'r', label='Training acc')\n",
"plt.plot(epochs, val_acc, 'b', label='Validation acc')\n",
"plt.title('Training and validation accuracy')\n",
"plt.xlabel('Epochs')\n",
"plt.ylabel('Accuracy')\n",
"plt.legend(loc='lower right')\n",
"\n",
"\n",
"saved_model_path = f'./bert_models/{time.time()}'\n",
"\n",
"classifier_model.save(saved_model_path, include_optimizer=False)\n",
"\n",
"def test_model(model):\n",
" # Use the model to predict whether a message is spam\n",
" text_messages = [\n",
" \"Greg, can you call me back once you get this?\",\n",
" \"Congrats on your new iPhone! Click here to claim your prize...\",\n",
" \"Really like that new photo of you\",\n",
" \"Did you hear the news today? Terrible what has happened...\",\n",
" \"Attend this free COVID webinar today: Book your session now...\",\n",
" \"Are you coming to the party tonight?\",\n",
" \"Your parcel has gone missing\",\n",
" \"Do not forget to bring friends!\",\n",
" \"You have won a million dollars! Fill out your bank details here...\",\n",
" \"Looking forward to seeing you again\",\n",
" \"oh wow https://github.com/MGCodesandStats/tensorflow-nlp/blob/master/spam%20detection%20tensorflow%20v2.ipynb works really good on spam detection. Guess I go with that as the base model then lol :D\",\n",
" \"ayo\",\n",
" \"Almost all my spam is coming to my non-gmail address actually\",\n",
" \"Oh neat I think I found the sizing sweetspot for my data :D\",\n",
" \"would never click on buttons in gmail :D always expecting there to be a bug in gmail that allows js to grab your google credentials :D XSS via email lol. I am too scared for touching spam in gmail\",\n",
" \"back to cacophony \",\n",
" \"Room version 11 when\",\n",
" \"skip 11 and go straight to 12\",\n",
" \"100 events should clear out any events that might be causing a request to fail lol\",\n",
" \"I'll help anyone interested on how to invest and earn $30k, $50k, $100k, $200k or more in just 72hours from the crypto market.But you will have to pay me my commission! when you receive your profit! if interested send me a direct message let's get started or via WhatsApp +1 (605) 9536801\",\n",
" ]\n",
"\n",
" spam_no_spam = [\n",
" False,\n",
" True,\n",
" False,\n",
" False,\n",
" True,\n",
" False,\n",
" False,\n",
" False,\n",
" True,\n",
" False,\n",
" False,\n",
" False,\n",
" False,\n",
" False,\n",
" False,\n",
" False,\n",
" False,\n",
" False,\n",
" False,\n",
" True,\n",
" ]\n",
"\n",
" # print(text_messages)\n",
"\n",
" # Create the sequences\n",
" #results = tf.sigmoid(model(tf.constant(text_messages)))\n",
" results = model.predict(tf.constant(text_messages))\n",
"\n",
" # The closer the class is to 1, the more likely that the message is spam\n",
" correct = 0\n",
" expected = len(spam_no_spam)\n",
" for x in range(len(text_messages)):\n",
" print(f'Message: \"{text_messages[x]}\"')\n",
" print(f\"Likeliness of spam in percentage: {results[x][0]:.5f}\")\n",
" spam = results[x][0] >= 0.8\n",
" if spam:\n",
" print(\"Vote by AI: Spam\")\n",
" else:\n",
" print(\"Vote by AI: Not Spam\")\n",
"\n",
" if spam_no_spam[x] != spam:\n",
" print(\"Model failed to predict correctly\")\n",
" else:\n",
" correct = correct+1\n",
" print(\"Model predicted correctly\")\n",
" print(\"\\n\")\n",
" print(f\"{correct} out of {expected} are detected correctly\\n\")\n",
"\n",
"\n",
"test_model(classifier_model)\n"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3.9.15 ('tf')",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.9.15 (main, Nov 24 2022, 14:31:59) \n[GCC 11.2.0]"
},
"orig_nbformat": 4,
"vscode": {
"interpreter": {
"hash": "86eece18b6898e5d361741678d0e9a4298e9b9ab2411f93d35b863e6e254e93a"
}
}
},
"nbformat": 4,
"nbformat_minor": 2
}