{ "cells": [ { "cell_type": "markdown", "id": "acceptable-german", "metadata": {}, "source": [ "# SQUAD" ] }, { "cell_type": "markdown", "id": "legendary-ordinance", "metadata": {}, "source": [ "
\n", "\n", "This tutorial is available as an IPython notebook at [Malaya/example/qa-squad](https://github.com/huseinzol05/Malaya/tree/master/example/qa-squad).\n", " \n", "
" ] }, { "cell_type": "markdown", "id": "searching-surprise", "metadata": {}, "source": [ "
\n", "\n", "This module only trained on standard language structure, so it is not save to use it for local language structure.\n", " \n", "
" ] }, { "cell_type": "code", "execution_count": 1, "id": "crucial-mouse", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "CPU times: user 5.14 s, sys: 1 s, total: 6.14 s\n", "Wall time: 7.01 s\n" ] } ], "source": [ "%%time\n", "\n", "import malaya\n", "from pprint import pprint" ] }, { "cell_type": "markdown", "id": "developed-vessel", "metadata": {}, "source": [ "### What is SQUAD\n", "\n", "Stanford Question Answering Dataset (SQuAD) is a reading comprehension dataset, eg,\n", "\n", "```json\n", "{\n", " 'title': 'Normans',\n", " 'paragraphs': [\n", " {\n", " 'context': 'Orang Norman (Norman: Nourmands; Perancis: Normands; Latin: Normanni) ialah orang-orang yang pada abad ke-10 dan ke-11 memberikan nama mereka kepada Normandy, sebuah wilayah di Perancis. Mereka diturunkan daripada Norse (\"Norman\" berasal daripada penyerang \"Norseman\") dan lanun dari Denmark, Iceland dan Norway yang, di bawah pimpinan mereka Rollo, bersetuju untuk bersumpah fealty kepada Raja Charles III dari Francia Barat. Melalui generasi asimilasi dan percampuran dengan penduduk asli Frankish dan Roman-Gaulish, keturunan mereka akan beransur-ansur bergabung dengan budaya Carolingian yang berpusat di Francia Barat. Identiti budaya dan etnik yang berbeza dari orang Norman muncul pada mulanya pada separuh pertama abad ke-10, dan ia terus berkembang pada abad-abad yang berjaya.',\n", " 'qas': [\n", " {\n", " 'question': 'Di negara manakah Normandy berada?',\n", " 'answers': [\n", " {'text': 'Perancis', 'answer_start': 177},\n", " {'text': 'Perancis', 'answer_start': 177},\n", " {'text': 'Perancis', 'answer_start': 177},\n", " {'text': 'Perancis', 'answer_start': 177},\n", " ],\n", " 'id': '56ddde6b9a695914005b9628',\n", " 'is_impossible': False,\n", " }\n", " ],\n", " }\n", " ],\n", "}\n", "```\n", "\n", "So we need to give a long paragraph and multiple questions, and the model will return answers based on that paragraph with start and end spans. Read more about SQUAD dataset https://rajpurkar.github.io/SQuAD-explorer/" ] }, { "cell_type": "markdown", "id": "cloudy-destination", "metadata": {}, "source": [ "### List available Transformer models" ] }, { "cell_type": "code", "execution_count": 2, "id": "attached-therapy", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "INFO:root:tested on SQUAD V2 Dev set.\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Size (MB)Quantized Size (MB)exactf1total
tiny-bert60.915.3053.4575856.7982111858.0
bert452.0113.0057.1681061.4874011858.0
albert58.114.6058.9728463.1275711858.0
tiny-albert24.86.3550.0084350.0084311858.0
xlnet478.0120.0062.7424566.5610111858.0
alxlnet58.415.6061.9750365.8976511858.0
\n", "
" ], "text/plain": [ " Size (MB) Quantized Size (MB) exact f1 total\n", "tiny-bert 60.9 15.30 53.45758 56.79821 11858.0\n", "bert 452.0 113.00 57.16810 61.48740 11858.0\n", "albert 58.1 14.60 58.97284 63.12757 11858.0\n", "tiny-albert 24.8 6.35 50.00843 50.00843 11858.0\n", "xlnet 478.0 120.00 62.74245 66.56101 11858.0\n", "alxlnet 58.4 15.60 61.97503 65.89765 11858.0" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "malaya.qa.available_transformer_squad()" ] }, { "cell_type": "markdown", "id": "intelligent-texture", "metadata": {}, "source": [ "### Load Transformer model" ] }, { "cell_type": "code", "execution_count": 3, "id": "junior-doctor", "metadata": {}, "outputs": [], "source": [ "xlnet_model = malaya.qa.transformer_squad(model = 'xlnet')\n", "albert_model = malaya.qa.transformer_squad(model = 'albert')" ] }, { "cell_type": "markdown", "id": "distant-aside", "metadata": {}, "source": [ "### Load Quantized model\n", "\n", "To load 8-bit quantized model, simply pass `quantized = True`, default is `False`.\n", "\n", "We can expect slightly accuracy drop from quantized model, and not necessary faster than normal 32-bit float model, totally depends on machine." ] }, { "cell_type": "code", "execution_count": 4, "id": "behind-arrangement", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "WARNING:root:Load quantized model will cause accuracy drop.\n", "WARNING:root:Load quantized model will cause accuracy drop.\n" ] } ], "source": [ "quantized_xlnet_model = malaya.qa.transformer_squad(model = 'xlnet', quantized = True)\n", "quantized_albert_model = malaya.qa.transformer_squad(model = 'albert', quantized = True)" ] }, { "cell_type": "markdown", "id": "given-wheel", "metadata": {}, "source": [ "### Copy from wikipedia and news" ] }, { "cell_type": "code", "execution_count": 5, "id": "monthly-fifth", "metadata": {}, "outputs": [], "source": [ "# https://ms.wikipedia.org/wiki/Mohd_Najib_bin_Abdul_Razak\n", "\n", "p_wikipedia = \"\"\"\n", "Najib razak telah dipilih untuk Parlimen Malaysia pada tahun 1976, \n", "pada usia 23 tahun, menggantikan bapanya duduk di kerusi Pekan yang berpangkalan di Pahang. \n", "Dari tahun 1982 hingga 1986 beliau menjadi Menteri Besar (Ketua Menteri) Pahang, \n", "sebelum memasuki persekutuan Kabinet Tun Dr Mahathir Mohamad pada tahun 1986 sebagai Menteri Kebudayaan, Belia dan Sukan. \n", "Beliau telah berkhidmat dalam pelbagai jawatan Kabinet sepanjang baki tahun 1980-an dan 1990-an, termasuk sebagai Menteri Pertahanan dan Menteri Pelajaran. \n", "Beliau menjadi Timbalan Perdana Menteri pada 7 Januari 2004, berkhidmat di bawah Perdana Menteri Tun Dato' Seri Abdullah Ahmad Badawi, \n", "sebelum menggantikan Badawi setahun selepas Barisan Nasional mengalami kerugian besar dalam pilihan raya 2008. \n", "Di bawah kepimpinan beliau, Barisan Nasional memenangi pilihan raya 2013, \n", "walaupun buat kali pertama dalam sejarah Malaysia pembangkang memenangi majoriti undi popular.\n", "\"\"\"\n", "q_wikipedia = ['Siapakah Menteri Besar Pahang', 'Apakah jawatan yang pernah dipegang oleh Najib Razak']" ] }, { "cell_type": "code", "execution_count": 6, "id": "proud-folks", "metadata": {}, "outputs": [], "source": [ "# https://www.malaysiakini.com/news/574914\n", "\n", "p_news = \"\"\"\n", "Bekas perdana menteri Najib Razak mempersoalkan tindakan polis yang menurutnya tidak serta-merta mengeluarkan kenyataan berhubung dakwaan Adun Perikatan Nasional (PN) \"merancang\" insiden rogol.\n", "Sedangkan, kata ahli parlimen Pekan itu, polis pantas mengeluarkan kenyataan apabila dia dilapor terlupa mengimbas MySejahtera sebelum masuk restoran.\n", "\"Berita Najib lupa scan MySejahtera tular, kenyataan polis terus keluar. Berita Dr Mahathir Mohamad lupa scan, kenyataan, polis serta-merta keluar.\n", "\"Sebab itu saya pelik kenapa pihak polis belum sempat keluar apa-apa kenyataan berhubung kes seorang gadis membuat laporan polis untuk dakwa Adun PN rancang insiden rogolnya,\" katanya di Facebook hari ini.\n", "Najib merujuk dakwaan seorang wanita yang mendakwa dirogol kenalan kepada Adun Gombak Setia, Hilman Idham.\n", "Wanita itu mendakwa ahli politik dari Bersatu berkenaan merancang insiden yang berlaku pada 5 Dis lalu.\n", "Menurut laporan polis pada 8 Mei, mangsa mendakwa kejadian itu berlaku di sebuah hotel di Selangor, yang pada masa itu berada di bawah perintah kawalan pergerakan bersyarat (PKPB).\n", "\"\"\"\n", "\n", "q_news = ['siapakah yang mempersoalkan tindakan polis', 'siapakah Adun Gombak Setia']" ] }, { "cell_type": "markdown", "id": "amateur-sending", "metadata": {}, "source": [ "### Predict\n", "\n", "```python\n", "def predict(\n", " self,\n", " paragraph_text: str,\n", " question_texts: List[str],\n", " doc_stride: int = 128,\n", " max_query_length: int = 64,\n", " max_answer_length: int = 64,\n", " n_best_size: int = 20,\n", "):\n", " \"\"\"\n", " Predict Span from questions given a paragraph.\n", "\n", " Parameters\n", " ----------\n", " paragraph_text: str\n", " question_texts: List[str]\n", " List of questions, results really depends on case sensitive questions.\n", " doc_stride: int, optional (default=128)\n", " striding size to split a paragraph into multiple texts.\n", " max_query_length: int, optional (default=64)\n", " Maximum length if question tokens.\n", " max_answer_length: int, optional (default=30)\n", " Maximum length if answer tokens.\n", "\n", " Returns\n", " -------\n", " result: List[{'text': 'text', 'start': 0, 'end': 1}]\n", " \"\"\"\n", "```" ] }, { "cell_type": "code", "execution_count": 7, "id": "ethical-makeup", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[{'text': 'Najib razak', 'start': 0, 'end': 11},\n", " {'text': 'Pekan yang berpangkalan di Pahang', 'start': 123, 'end': 157}]" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "xlnet_model.predict(p_wikipedia, q_wikipedia)" ] }, { "cell_type": "code", "execution_count": 9, "id": "orange-calibration", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[{'text': 'Najib razak', 'start': 0, 'end': 11},\n", " {'text': 'Menteri Pertahanan dan Menteri Pelajaran',\n", " 'start': 475,\n", " 'end': 516}]" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "albert_model.predict(p_wikipedia, q_wikipedia)" ] }, { "cell_type": "code", "execution_count": 10, "id": "western-oliver", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[{'text': 'Najib razak', 'start': 0, 'end': 11},\n", " {'text': 'Pekan yang berpangkalan di Pahang', 'start': 123, 'end': 157}]" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "quantized_xlnet_model.predict(p_wikipedia, q_wikipedia)" ] }, { "cell_type": "code", "execution_count": 11, "id": "blank-burlington", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[{'text': 'Najib razak', 'start': 0, 'end': 11},\n", " {'text': 'Menteri Pertahanan dan Menteri Pelajaran',\n", " 'start': 475,\n", " 'end': 516}]" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "quantized_albert_model.predict(p_wikipedia, q_wikipedia)" ] }, { "cell_type": "code", "execution_count": 12, "id": "decreased-broadcast", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[{'text': 'Bekas perdana menteri Najib Razak', 'start': 0, 'end': 33},\n", " {'text': 'Hilman Idham', 'start': 791, 'end': 804}]" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "xlnet_model.predict(p_news, q_news)" ] }, { "cell_type": "code", "execution_count": 13, "id": "powerful-comparison", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[{'text': 'Bekas perdana menteri Najib Razak', 'start': 0, 'end': 33},\n", " {'text': 'Hilman Idham', 'start': 791, 'end': 804}]" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "albert_model.predict(p_news, q_news)" ] }, { "cell_type": "code", "execution_count": 14, "id": "behavioral-mayor", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[{'text': 'Bekas perdana menteri Najib Razak', 'start': 0, 'end': 33},\n", " {'text': 'Hilman Idham', 'start': 791, 'end': 804}]" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "quantized_xlnet_model.predict(p_news, q_news)" ] }, { "cell_type": "code", "execution_count": 15, "id": "temporal-orientation", "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/plain": [ "[{'text': 'Bekas perdana menteri Najib Razak', 'start': 0, 'end': 33},\n", " {'text': 'Hilman Idham', 'start': 791, 'end': 804}]" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "quantized_albert_model.predict(p_news, q_news)" ] }, { "cell_type": "markdown", "id": "hungarian-treat", "metadata": {}, "source": [ "### Vectorize\n", "\n", "Let say you want to visualize sentence / word level in lower dimension, you can use `model.vectorize`,\n", "\n", "```python\n", "def vectorize(self, strings: List[str], method: str = 'first'):\n", " \"\"\"\n", " vectorize list of strings.\n", "\n", " Parameters\n", " ----------\n", " strings: List[str]\n", " method : str, optional (default='first')\n", " Vectorization layer supported. Allowed values:\n", "\n", " * ``'last'`` - vector from last sequence.\n", " * ``'first'`` - vector from first sequence.\n", " * ``'mean'`` - average vectors from all sequences.\n", " * ``'word'`` - average vectors based on tokens.\n", "\n", " Returns\n", " -------\n", " result: np.array\n", " \"\"\"\n", "```" ] }, { "cell_type": "markdown", "id": "indian-milton", "metadata": {}, "source": [ "#### Sentence level" ] }, { "cell_type": "code", "execution_count": 25, "id": "conditional-grounds", "metadata": {}, "outputs": [], "source": [ "strings = ['Siapakah Menteri Besar Pahang', \n", " 'Apakah jawatan yang pernah dipegang oleh Najib Razak',\n", " 'Najib razak',\n", " 'Menteri Pertahanan dan Menteri Pelajaran',\n", " 'Bekas perdana menteri Najib Razak',\n", " 'Hilman Idham',\n", " 'Tun Dr Mahathir Mohamad pada tahun 1986',\n", " 'Berita Najib lupa scan MySejahtera tular, kenyataan polis terus keluar']" ] }, { "cell_type": "code", "execution_count": 26, "id": "palestinian-harassment", "metadata": {}, "outputs": [], "source": [ "r = quantized_xlnet_model.vectorize(strings, method = 'first')" ] }, { "cell_type": "code", "execution_count": 27, "id": "assisted-weekly", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(8, 2)" ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from sklearn.manifold import TSNE\n", "import matplotlib.pyplot as plt\n", "\n", "tsne = TSNE().fit_transform(r)\n", "tsne.shape" ] }, { "cell_type": "code", "execution_count": 28, "id": "banned-designation", "metadata": {}, "outputs": [ { "data": { "image/png": "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KpiCn4jsEb1TGiroiYhUMrrHT0RERCQkFPxEREREQkLBT0RERCQkFPxEREREQkLBT0RERCQkFPxEREREQkLBT0RERCQkFPxEREREQkLBT0RERCQkFPxEREREQkLBT0RERCQkFPxEREREQkLBT0RERCQkFPxEREREQkLBT0RERCQkFPxEREREQkLBT0RERCQkFPxEREREQkLBT0RERCQkFPxEREREQkLBT0RERCQkFPxEREREQkLBT0RERCQkFPxEREREQkLBT0RERCQkFPxEREREQkLBL6TMjIsvvjj6Ojc3l/r163PWWWft8ph/+9vfdmm7K664ghUrVuzQ3qlTJ5o2bUpSUhLt27dn1apVe6Se2rVr79S4e0t8fDybNm36zeNMmDABM+Ptt9+Otk2bNg0zY8qUKbs0Znp6Oq+//vpOb7d+/Xr69u27Q3tGRgY1a9YkOTmZ5s2bc80115Cfn1/iOBMmTGDIkCGl7mv69Oncd999O12jiMj+TMEvpGrVqsWyZcvIzs4G4K233qJhw4a/acxdCX55eXn85z//oXnz5sWunzRpEosXL2bAgAEMHTq0XGO6O/n5+bscRPdHiYmJPPfcc9HXzz77LElJSbs83q4Ev9zcXBo0aFBi2Dz++ONJT09nyZIlrFixgmnTpu1yfQC9evVi+PDhO1WfiMj+TsEvxM4880xee+01IBIELrzwwui6n376iUGDBtG2bVtSUlJ4+eWXgchMS58+fejevTtNmjRh2LBhAAwfPpzs7GySk5Pp378/AE8//TRt27YlOTmZq6++mry8PCAyw3bzzTeTlJTEvHnz6NSpE2lpaaXWeuqpp/L5558DMHr0aNq0aUPLli0ZOXIkEJkxatq0KZdeeiktWrTg8ssv36Ge3r1707p1axISEnj88ccLjX/bbbeRlJTEySefzMaNGwF45ZVXOOmkk0hJSeH3v/99tH3UqFEMGjSITp06cdxxx/Hwww9HxylpH7Vr1y52H7E2b95M165dSUhI4IorrsDdd8u4AB07dmT+/Pnk5OSQlZXF559/TnJycnT9woULOe2002jdujXdunVjw4YNQGTW9dZbb6Vt27accMIJvPfee2zfvp077riDyZMnk5yczOTJk0v9vPTq1YvTTz+dLl26kJGRQYsWLUp7q6latSqnnHIKn3/+OZmZmZx77rm0adOGNm3a8MEHH+zQv6T3KXZWsLT38pJLLqF9+/ZccsklZGRk0LFjR1q1akWrVq348MMPAZg9ezadOnWib9++NGvWjP79+xd6f0RE9hnuXum/Wrdu7bJ71apVyxcvXuznnnuuZ2dne1JSks+aNct79uzp7u4jRozwp556yt3dv//+e2/SpIlnZWX5+PHjvXHjxr5lyxbPzs72Y445xr/66qvomAVWrFjhZ511lm/fvt3d3a+99lqfOHGiu7sDPnny5Gjf0047zRcsWLBDjbHt999/v5933nk+Y8YMv/LKKz0/P9/z8vK8Z8+ePmfOHF+zZo2bmc+bN6/QMcbavHmzu7v//PPPnpCQ4Js2bYrWM336dHd3Hzp0qN91113u7v7dd995fn6+u7uPGzfOb7rpJnd3HzlypLdr1863bdvmmZmZfsghh0SPc2f3Eev666/3O++8093dX331VQc8MzPzN487fvx4Hzx4sN94443+yiuv+NNPP+2jRo3yAQMG+AsvvODbt2/3du3a+bfffuvu7s8995xfdtll0feg4Lhfe+0179KlS6ExC5T2eWnYsGG0/jVr1nhCQsIONca2//TTT56amuqvv/66X3jhhf7ee++5u/vatWu9WbNmO+y/pPepPH1GjhzprVq18p9//jm67+zsbHd3/+yzz7zg/z2zZs3ygw8+2L/++mvPy8vzk08+OVqXVBwgzSvBzyh96Wtf+qpakaFT9q5pi9YxesYq1m/JJjsnjy/zDiUjI4Nnn32WM888s1DfmTNnMn36dMaMGQPAtm3b+OqrrwDo0qULderUAaB58+asXbuWRo0aFdr+nXfeYeHChbRp0waA7OxsDj/8cADi4uI499xzy1Vz//79qVmzJvHx8TzyyCM89NBDzJw5k5SUFACysrJYvXo1xxxzDMceeywnn3xyiWM9/PDDvPTSSwB8/fXXrF69mkMPPZQDDjggem9j69ateeuttwD45ptvOP/889mwYQPbt2+ncePG0bF69uxJ9erVqV69OocffjgbN27k6KOP3ul9xJo7dy5Tp06Njl+vXr1drr04F1xwAQ8//DBbt27lgQceiF4KX7VqFcuWLeOMM84AIpffjzrqqOh2ffr0iY6fkZFR7NilfV7OOOMMDjnkkBLrKvDFF1+QnJyMmXHOOefQo0cPBgwYUOj+zx9++IGsrKxC25X2PpWnT69evahZsyYAOTk5DBkyhPT0dOLi4vjss8+i/dq2bcvRRx8NQHJyMhkZGXTo0KHM4xIRqUwU/EJi2qJ1jJi6lOycyOVWdxgxdSnJbTpxyy23MHv2bDZv3hzt7+68+OKLNG3atNA4H3/8MdWrV4++jouLK/beKHdnwIAB3HvvvTusq1GjBnFxceWqe9KkSaSmphYad8SIEVx99dWF+mVkZFCrVq0Sx5k9ezZvv/028+bN48ADD6RTp05s27YNgGrVqmFmOxzP9ddfz0033USvXr2YPXs2o0aNio5X3DnYlX2Ux+4at23btixdupQDDzyQE044Idru7iQkJDBv3rxitys41tLGL+3zUtr7EqvgHr9Y+fn5fPTRR9SoUaPE7Up7n8rTJ7a+Bx98kCOOOILFixeTn59faL/l+dyLiFR2uscvJEbPWBUNfQWyc/JYXbcNI0eOJDExsdC6bt268cgjj+AeuY9p0aJFZe6jWrVq5OTkAJFZwSlTpvDtt98C8N1337F27drffBzdunXjiSeeiM76rFu3LrqP0urZunUr9erV48ADD2TlypV89NFHZe5r69at0QdeJk6cWK7+O7uPWKeeeirPPPMMAG+88Qbff//9bhk31n333bfDQy9NmzYlMzMzGvxycnJYvnx5qeMcdNBB/Pjjj9HXu/J5KY+uXbvyyCOPRF8XDYZQvvepvO/l1q1bOeqoo6hSpQpPPfVU9L5UEZH9hYJfSKzfkl1s+2avzQ033LBD++23305OTg4tW7YkISGB22+/vcx9XHXVVbRs2ZL+/fvTvHlz7r77brp27UrLli0544wzog8M/BZdu3bloosuol27diQmJtK3b99CAaSkerp3705ubi4nnngiw4cPL/WScIFRo0bRr18/WrduzWGHHVZm/13ZR6yRI0cyd+5cEhISmDp1Ksccc8xuGTdWjx496Ny5c6G2Aw44gClTpnDrrbeSlJREcnJy9KGGknTu3JkVK1ZEH+7Ylc9LeTz88MOkpaXRsmVLmjdvztixY3foU9r7VDAbWt738rrrrmPixIkkJSWxcuXKcs9WiojsK6zgN/TKLDU11ct66lNK1/6+d1lXTPhrWLcmHww/vQIqEtmzHnjgAX744QfuvPPOii5F9hAzW+juqWX3FJECmvELiaHdmlKzWuH76mpWi2Not6YlbCGy7xo7diwTJkwo9EfK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d/fTTz/dP/vsM3d3/+ijj7xz587u7j5gwADv2bOn5+bmurv72Wef7RMnTnR390cffdRr1arl7u45OTm+detWd3fPzMz0448/3vPz833NmjUeFxfnixYtcnf3fv36+VNPPeXu7ps2bYrWddttt/nDDz+8Q70jR4709u3b+/bt2z09Pd1r1qzpr7/+uru79+7d21966SXfvn27t2vXzr/99lt3d3/uuef8sssuc3f30047zW+66SZ3d3/ttde8S5cu7u4+fvz46LG7u48YMSJa1/fff+9NmjTxrKwsHz9+vDds2NA3b97s7h59T4oqaP/iiy/8hBNO8NzcXB88eLCPHz++1GMdOXKkjx49OnquX3jhBXd3P/bYY/3uu+92d/eJEyd6z549d9hn7DGsXbvWk5KSPDs72909Wq+7+8UXX+zTp08vtO2jjz7q/fr1c3f37777zvPz893dfdy4cdHzVVDbI4884r169fJt27btUENxgDSvBD+j9KWvfelr/7iWshPMjJtuuokHHngAgDFjxpCVlcWoUaNK3Gb69OmsWLGC4cOHM3bsWA488EAuvfRSOnXqxJgxY0hNTd1L1f8qPj6etLQ0DjvssL2+b6mcpi1ax+gZq1i/JRuqHsCo8a/RO6Uh8+bN49JLL2XZsmXMnDmTmTNnkpKSAkRmz1avXs0xxxxDZmYm55xzDlOnTqV58+YAbN26lQEDBrB69WrMLDrr1a5dO+655x6++eYb+vTpQ5MmTXaop0qVKpx//vkAXHzxxfTp04esrCw+/PBD+vXrF+33yy+/RJf79etHXFwcAB988AEvvvgiAJdccgm33norEPll9c9//jNz586lSpUqrFu3Ljpz1LhxY5KTkwFo3bo1GRkZACxbtoy//OUvbNmyhaysLLp161bsOezRowfVqlUjMTGRvLw8unfvDkBiYiIZGRmsWrWKZcuWccYZZwCQl5fHUUcdFd2+T58+O+y7qJkzZzJ9+vTo7Nu2bdv46quvADjjjDM45JBDit2uqOOOO46TTjqJZ555plB7eY811oUXXhj9fuONNxbbZ/LkycydO5eVK1fy6KOPUqNGDQBmzZrF/fffz88//8x3331HQkICZ599NhB5D8eNG8f7778PwDfffMP555/Phg0b2L59O40bN46O/+STT9KoUSOmTZtGtWrVynUORGTnhS74Va9e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JCQU/ERERERCQsFPREREJCQU/ERERERCQsFPREREJCQU/ERERERCQsFPREREJCQU/ERERERCQsFPREREJCQU/ERERERCQsFPREREJCQU/ERERERCQsFPREREJCQU/ERERERCQsFPREREJCQU/ERERERCQsFPREREJCQU/ERERERCQsFPREREJCQU/ERERERCQsFPREREJCQU/ERERERCQsFPREREJCQU/ERERERCQsFPREREJCQU/ERERERCQsFPREREJCQU/ERERERCQsFPREREJCQU/ERERERCQsFPREREJCQU/ERERERCQsFPREREJCQU/ERERERCQsFPREREJCQU/ERERERCQsFPREREJCQU/ERERERCQsFPREREJCR+U/Azs35mttzM8s0stci6EWb2uZmtMrNuMe3dg7bPzWz4b9m/iIiIiJTfb53xWwb0AebGNppZc+ACIAHoDvzLzOLMLA74J9ADaA5cGPQVERERkT2s6m/Z2N0/BTCzoqvOAZ5z91+ANWb2OdA2WPe5u38ZbPdc0HfFb6lDRERERMq2p+7xawh8HfP6m6CtpPYdmNlVZpZmZmmZmZl7qEwRERGR8Chzxs/M3gaOLGbVbe7+8u4vKcLdHwceB0hNTfU9tR8RERGRsCgz+Ln773dh3HVAo5jXRwdtlNIuIiIiInvQnrrUOx24wMyqm1ljoAkwH1gANDGzxmZ2AJEHQKbvoRpEREREJMZverjDzP4APALUB14zs3R37+buy83seSIPbeQCg909L9hmCDADiAOecPflv+kIRERERKRczL3y3z6XmprqaWlpFV2GiIhUIma20N1Ty+4pIgX0L3eIiIiIhISCn4iIiEhIKPhJsWrXrl3o9YQJExgyZAgAY8eO5cknnwRg4MCBTJkyZa/VNWrUKMaMGbNDe0ZGBi1atNihVhEREfnVb3q4Q8LpmmuuqegSREREZBdoxk92WkmzbvHx8YwYMYLk5GRSU1P55JNP6NatG8cffzxjx44FICsriy5dutCqVSsSExN5+eXI3wDPyMjgxBNP5MorryQhIYGuXbuSnZ1dah0LFy4kKSmJpKQk/vnPfxZat379erp3706TJk0YNmxYtP3aa68lNTWVhIQERo4cuVO1i4iI7OsU/KRY2dnZJCcnR7/uuOOOcm13zDHHkJ6eTseOHaOXgT/66KNoyKpR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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.figure(figsize = (7, 7))\n", "plt.scatter(tsne[:, 0], tsne[:, 1])\n", "labels = strings\n", "for label, x, y in zip(\n", " labels, tsne[:, 0], tsne[:, 1]\n", "):\n", " label = (\n", " '%s, %.3f' % (label[0], label[1])\n", " if isinstance(label, list)\n", " else label\n", " )\n", " plt.annotate(\n", " label,\n", " xy = (x, y),\n", " xytext = (0, 0),\n", " textcoords = 'offset points',\n", " )" ] }, { "cell_type": "markdown", "id": "another-terror", "metadata": {}, "source": [ "#### Word level" ] }, { "cell_type": "code", "execution_count": 33, "id": "manual-cuisine", "metadata": {}, "outputs": [], "source": [ "r = quantized_xlnet_model.vectorize(strings, method = 'word')" ] }, { "cell_type": "code", "execution_count": 34, "id": "warming-video", "metadata": {}, "outputs": [], "source": [ "x, y = [], []\n", "for row in r:\n", " x.extend([i[0] for i in row])\n", " y.extend([i[1] for i in row])" ] }, { "cell_type": "code", "execution_count": 35, "id": "running-galaxy", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(43, 2)" ] }, "execution_count": 35, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tsne = TSNE().fit_transform(y)\n", "tsne.shape" ] }, { "cell_type": "code", "execution_count": 36, "id": "lesser-champion", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.figure(figsize = (7, 7))\n", "plt.scatter(tsne[:, 0], tsne[:, 1])\n", "labels = x\n", "for label, x, y in zip(\n", " labels, tsne[:, 0], tsne[:, 1]\n", "):\n", " label = (\n", " '%s, %.3f' % (label[0], label[1])\n", " if isinstance(label, list)\n", " else label\n", " )\n", " plt.annotate(\n", " label,\n", " xy = (x, y),\n", " xytext = (0, 0),\n", " textcoords = 'offset points',\n", " )" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "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.7.7" } }, "nbformat": 4, "nbformat_minor": 5 }