indicate 0.2.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- indicate/__init__.py +3 -0
- indicate/data/model/hindi_to_english/english_tokens.json +1 -0
- indicate/data/model/hindi_to_english/hindi_tokens.json +1 -0
- indicate/data/model/hindi_to_english/saved_weights/decoder.weights.h5 +0 -0
- indicate/data/model/hindi_to_english/saved_weights/encoder.weights.h5 +0 -0
- indicate/decoder.py +62 -0
- indicate/encoder.py +24 -0
- indicate/hindi2english.py +138 -0
- indicate/logging.py +6 -0
- indicate/notebooks/Data_Preparation.ipynb +1 -0
- indicate/notebooks/Inference.ipynb +1 -0
- indicate/notebooks/Inference_latest.ipynb +2331 -0
- indicate/notebooks/Train.ipynb +1 -0
- indicate/notebooks/Train_latest.ipynb +1746 -0
- indicate/notebooks/Transliterate.ipynb +2501 -0
- indicate/notebooks/transliterate_cricket.ipynb +305 -0
- indicate/tests/__init__.py +12 -0
- indicate/tests/test_010_hindi_translate.py +20 -0
- indicate/transliterate.py +28 -0
- indicate/utils.py +86 -0
- indicate-0.2.0.dist-info/LICENSE +21 -0
- indicate-0.2.0.dist-info/METADATA +139 -0
- indicate-0.2.0.dist-info/RECORD +26 -0
- indicate-0.2.0.dist-info/WHEEL +6 -0
- indicate-0.2.0.dist-info/entry_points.txt +2 -0
- indicate-0.2.0.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"nbformat":4,"nbformat_minor":0,"metadata":{"colab":{"name":"Inference.ipynb","provenance":[],"collapsed_sections":[],"machine_shape":"hm","mount_file_id":"1hwjiddf6PutEFYq4JycWQjp0dZWIpvHt","authorship_tag":"ABX9TyNo/yBGh/kbcHcM6jY6+Z7e"},"kernelspec":{"name":"python3","display_name":"Python 3"},"language_info":{"name":"python"},"accelerator":"GPU"},"cells":[{"cell_type":"code","source":["%cd /content/drive/MyDrive/Colab/Transliterate/Main/"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"k8cdWuWzeR_6","executionInfo":{"status":"ok","timestamp":1639602042644,"user_tz":480,"elapsed":192,"user":{"displayName":"Rajashekar Chintalapati","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GhvaKS4oQw2sBCyEe0cxq9rGBNCg4w2UoWOgVaD660=s64","userId":"03596288833202137831"}},"outputId":"f886e02b-3af1-46e4-bef8-14aec59201a8"},"execution_count":1,"outputs":[{"output_type":"stream","name":"stdout","text":["/content/drive/MyDrive/Colab/Transliterate/Main\n"]}]},{"cell_type":"code","source":["pip install tensorflow_addons"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"UW5vs3rakyDG","executionInfo":{"status":"ok","timestamp":1639602048290,"user_tz":480,"elapsed":4732,"user":{"displayName":"Rajashekar Chintalapati","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GhvaKS4oQw2sBCyEe0cxq9rGBNCg4w2UoWOgVaD660=s64","userId":"03596288833202137831"}},"outputId":"9c85f8f3-82c7-45ca-86ab-0e9106c73956"},"execution_count":2,"outputs":[{"output_type":"stream","name":"stdout","text":["Collecting tensorflow_addons\n"," Downloading tensorflow_addons-0.15.0-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl (1.1 MB)\n","\u001b[K |████████████████████████████████| 1.1 MB 5.6 MB/s \n","\u001b[?25hRequirement already satisfied: typeguard>=2.7 in /usr/local/lib/python3.7/dist-packages (from tensorflow_addons) (2.7.1)\n","Installing collected packages: tensorflow-addons\n","Successfully installed tensorflow-addons-0.15.0\n"]}]},{"cell_type":"code","execution_count":17,"metadata":{"id":"K0BNndbWw0Rd","executionInfo":{"status":"ok","timestamp":1639605426661,"user_tz":480,"elapsed":174,"user":{"displayName":"Rajashekar Chintalapati","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GhvaKS4oQw2sBCyEe0cxq9rGBNCg4w2UoWOgVaD660=s64","userId":"03596288833202137831"}}},"outputs":[],"source":["import os\n","import json\n","\n","import pandas as pd\n","\n","import tensorflow as tf\n","\n","from encoder import Encoder\n","from decoder import Decoder, translate"]},{"cell_type":"markdown","source":["# Hyperparameters"],"metadata":{"id":"x34MMPFkgw16"}},{"cell_type":"code","source":["embedding_dim = 256\n","units = 1024\n","BATCH_SIZE = 64\n","BUFFER_SIZE = 120000\n","\n","max_length_input = 47\n","max_length_output = 49"],"metadata":{"id":"7xTucF3FgwKK","executionInfo":{"status":"ok","timestamp":1639602054949,"user_tz":480,"elapsed":4,"user":{"displayName":"Rajashekar Chintalapati","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GhvaKS4oQw2sBCyEe0cxq9rGBNCg4w2UoWOgVaD660=s64","userId":"03596288833202137831"}}},"execution_count":4,"outputs":[]},{"cell_type":"markdown","source":["# Load Vocab"],"metadata":{"id":"F0lrvAYvhZcW"}},{"cell_type":"code","source":["with open('./data/hindi_tokens.json') as f:\n"," data = json.load(f)\n"," input_lang_tokenizer = tf.keras.preprocessing.text.tokenizer_from_json(data)\n","\n","with open('./data/english_tokens.json') as f:\n"," data = json.load(f)\n"," target_lang_tokenizer = tf.keras.preprocessing.text.tokenizer_from_json(data)\n","\n","vocab_inp_size = len(input_lang_tokenizer.word_index)+1\n","vocab_tar_size = len(target_lang_tokenizer.word_index)+1"],"metadata":{"id":"WRdqxqINhY_M","executionInfo":{"status":"ok","timestamp":1639602056585,"user_tz":480,"elapsed":367,"user":{"displayName":"Rajashekar Chintalapati","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GhvaKS4oQw2sBCyEe0cxq9rGBNCg4w2UoWOgVaD660=s64","userId":"03596288833202137831"}}},"execution_count":5,"outputs":[]},{"cell_type":"markdown","source":["# Encoder, Decoder, optimizer"],"metadata":{"id":"YA24vPP0khOK"}},{"cell_type":"code","source":["encoder = Encoder(vocab_inp_size, embedding_dim, units, BATCH_SIZE)\n","decoder = Decoder(vocab_tar_size, embedding_dim, units, BATCH_SIZE, \n"," max_length_input, max_length_output, 'luong')\n","optimizer = tf.keras.optimizers.Adam()"],"metadata":{"id":"5UtLbxPegpsM","executionInfo":{"status":"ok","timestamp":1639602062807,"user_tz":480,"elapsed":2874,"user":{"displayName":"Rajashekar Chintalapati","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GhvaKS4oQw2sBCyEe0cxq9rGBNCg4w2UoWOgVaD660=s64","userId":"03596288833202137831"}}},"execution_count":6,"outputs":[]},{"cell_type":"code","source":["# sample input\n","example_input_batch = tf.random.uniform(shape=[64,47])\n","sample_hidden = encoder.initialize_hidden_state()\n","sample_output, sample_h, sample_c = encoder(example_input_batch, sample_hidden)\n","print ('Encoder output shape: (batch size, sequence length, units) {}'.format(sample_output.shape))\n","print ('Encoder h vecotr shape: (batch size, units) {}'.format(sample_h.shape))\n","print ('Encoder c vector shape: (batch size, units) {}'.format(sample_c.shape))"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"KtjT9vaXssne","executionInfo":{"status":"ok","timestamp":1639602065553,"user_tz":480,"elapsed":1706,"user":{"displayName":"Rajashekar Chintalapati","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GhvaKS4oQw2sBCyEe0cxq9rGBNCg4w2UoWOgVaD660=s64","userId":"03596288833202137831"}},"outputId":"70e14fea-8cfd-403a-dfea-e8a94b17bb8d"},"execution_count":7,"outputs":[{"output_type":"stream","name":"stdout","text":["Encoder output shape: (batch size, sequence length, units) (64, 47, 1024)\n","Encoder h vecotr shape: (batch size, units) (64, 1024)\n","Encoder c vector shape: (batch size, units) (64, 1024)\n"]}]},{"cell_type":"code","source":["# Test decoder stack\n","example_target_batch = tf.random.uniform(shape=[64,49])\n","sample_x = tf.random.uniform((BATCH_SIZE, max_length_output))\n","decoder.attention_mechanism.setup_memory(sample_output)\n","initial_state = decoder.build_initial_state(BATCH_SIZE, [sample_h, sample_c], tf.float32)\n","\n","sample_decoder_outputs = decoder(sample_x, initial_state)\n","\n","print(\"Decoder Outputs Shape: \", sample_decoder_outputs.rnn_output.shape)"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"1o-WETR7OdLp","executionInfo":{"status":"ok","timestamp":1639602069109,"user_tz":480,"elapsed":2628,"user":{"displayName":"Rajashekar Chintalapati","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GhvaKS4oQw2sBCyEe0cxq9rGBNCg4w2UoWOgVaD660=s64","userId":"03596288833202137831"}},"outputId":"337d1cce-4459-402c-cc0e-32dfa99bab64"},"execution_count":8,"outputs":[{"output_type":"stream","name":"stdout","text":["Decoder Outputs Shape: (64, 48, 36)\n"]}]},{"cell_type":"markdown","source":["# Restore the latest checkpoint"],"metadata":{"id":"68fvuRtPd_D-"}},{"cell_type":"code","source":["checkpoint_dir = './data/training_checkpoints'\n","checkpoint_prefix = os.path.join(checkpoint_dir, \"ckpt\")\n","checkpoint = tf.train.Checkpoint(optimizer=optimizer,\n"," encoder=encoder,\n"," decoder=decoder)"],"metadata":{"id":"kou79vmeeNt9","executionInfo":{"status":"ok","timestamp":1639602072842,"user_tz":480,"elapsed":194,"user":{"displayName":"Rajashekar Chintalapati","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GhvaKS4oQw2sBCyEe0cxq9rGBNCg4w2UoWOgVaD660=s64","userId":"03596288833202137831"}}},"execution_count":9,"outputs":[]},{"cell_type":"code","source":["tf.train.latest_checkpoint(checkpoint_dir)"],"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":35},"id":"Si8q4-lBB4-G","executionInfo":{"status":"ok","timestamp":1639602076696,"user_tz":480,"elapsed":863,"user":{"displayName":"Rajashekar Chintalapati","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GhvaKS4oQw2sBCyEe0cxq9rGBNCg4w2UoWOgVaD660=s64","userId":"03596288833202137831"}},"outputId":"c27782a5-1f26-4bb7-b802-0d1e76e2c51f"},"execution_count":10,"outputs":[{"output_type":"execute_result","data":{"application/vnd.google.colaboratory.intrinsic+json":{"type":"string"},"text/plain":["'./data/training_checkpoints/ckpt-16'"]},"metadata":{},"execution_count":10}]},{"cell_type":"code","source":["checkpoint.restore(tf.train.latest_checkpoint(checkpoint_dir))"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"zg4vWb7jDTo3","executionInfo":{"status":"ok","timestamp":1639602084232,"user_tz":480,"elapsed":4745,"user":{"displayName":"Rajashekar Chintalapati","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GhvaKS4oQw2sBCyEe0cxq9rGBNCg4w2UoWOgVaD660=s64","userId":"03596288833202137831"}},"outputId":"064ea229-015f-4835-e309-03cd92870339"},"execution_count":11,"outputs":[{"output_type":"execute_result","data":{"text/plain":["<tensorflow.python.training.tracking.util.CheckpointLoadStatus at 0x7f408011cbd0>"]},"metadata":{},"execution_count":11}]},{"cell_type":"code","source":["encoder.embedding.variables"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"3XnDYSVy_kzK","executionInfo":{"status":"ok","timestamp":1639602085560,"user_tz":480,"elapsed":144,"user":{"displayName":"Rajashekar Chintalapati","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GhvaKS4oQw2sBCyEe0cxq9rGBNCg4w2UoWOgVaD660=s64","userId":"03596288833202137831"}},"outputId":"817f8222-8af2-4276-b86e-af5a9a7ee6ff"},"execution_count":12,"outputs":[{"output_type":"execute_result","data":{"text/plain":["[<tf.Variable 'encoder/embedding/embeddings:0' shape=(166, 256) dtype=float32, numpy=\n"," array([[-0.05789247, -0.05761706, 0.02359108, ..., -0.02519219,\n"," 0.00357639, 0.01821649],\n"," [-0.10162569, 0.16787839, 0.07515186, ..., -0.00349098,\n"," 0.1095918 , -0.15538824],\n"," [-0.16587584, -0.03577255, -0.01891636, ..., -0.0088463 ,\n"," -0.06838183, -0.2139026 ],\n"," ...,\n"," [-0.17257637, 0.12110738, 0.04137989, ..., -0.07441133,\n"," 0.0579181 , 0.01120433],\n"," [ 0.14117908, -0.18636873, -0.05861941, ..., 0.06990251,\n"," -0.2155933 , 0.14242741],\n"," [-0.00366263, 0.01715398, -0.0158137 , ..., 0.16398238,\n"," -0.10098743, 0.12626456]], dtype=float32)>]"]},"metadata":{},"execution_count":12}]},{"cell_type":"code","source":["decoder.embedding.variables"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"8EcQxPd4uEsg","executionInfo":{"status":"ok","timestamp":1639602087243,"user_tz":480,"elapsed":182,"user":{"displayName":"Rajashekar Chintalapati","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GhvaKS4oQw2sBCyEe0cxq9rGBNCg4w2UoWOgVaD660=s64","userId":"03596288833202137831"}},"outputId":"c31231a9-b06f-4798-e844-d9a26be6a498"},"execution_count":13,"outputs":[{"output_type":"execute_result","data":{"text/plain":["[<tf.Variable 'decoder/embedding_1/embeddings:0' shape=(36, 256) dtype=float32, numpy=\n"," array([[ 0.03724634, -0.02989709, -0.04813312, ..., -0.00780924,\n"," 0.00926129, 0.04338977],\n"," [ 0.34583732, -0.17232183, -0.43789735, ..., 0.5467175 ,\n"," 0.10759091, -0.3757458 ],\n"," [ 0.09607859, 0.03775342, -0.02386252, ..., 0.05660833,\n"," -0.04309656, -0.05559392],\n"," ...,\n"," [-0.22139364, 0.01528357, 0.03857458, ..., 0.06938541,\n"," 0.0544119 , -0.1216424 ],\n"," [ 0.15152052, -0.08498745, 0.10692687, ..., 0.02095544,\n"," -0.06592558, -0.20377964],\n"," [ 0.12033921, 0.09701973, -0.10407609, ..., 0.00369695,\n"," 0.13182832, 0.00884839]], dtype=float32)>]"]},"metadata":{},"execution_count":13}]},{"cell_type":"markdown","source":["# Basic Decoder"],"metadata":{"id":"ZUk_JuKyoPLf"}},{"cell_type":"code","source":["test_input = 'राजशेखर चिंतालपति'\n","translate(test_input, units, input_lang_tokenizer, target_lang_tokenizer, \n"," encoder, decoder, max_length_input)"],"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":35},"id":"uuaT1icFoSiI","executionInfo":{"status":"ok","timestamp":1639602091246,"user_tz":480,"elapsed":349,"user":{"displayName":"Rajashekar Chintalapati","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GhvaKS4oQw2sBCyEe0cxq9rGBNCg4w2UoWOgVaD660=s64","userId":"03596288833202137831"}},"outputId":"baefafd4-06a3-426f-bf96-c97e2995f528"},"execution_count":14,"outputs":[{"output_type":"execute_result","data":{"application/vnd.google.colaboratory.intrinsic+json":{"type":"string"},"text/plain":["'rajshekhar chinthalpati'"]},"metadata":{},"execution_count":14}]},{"cell_type":"code","source":["test_input = 'गौरव सूद'\n","translate(test_input, units, input_lang_tokenizer, target_lang_tokenizer, \n"," encoder, decoder, max_length_input)"],"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":35},"id":"YJw64aW6quw5","executionInfo":{"status":"ok","timestamp":1639602094849,"user_tz":480,"elapsed":247,"user":{"displayName":"Rajashekar Chintalapati","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GhvaKS4oQw2sBCyEe0cxq9rGBNCg4w2UoWOgVaD660=s64","userId":"03596288833202137831"}},"outputId":"b3953a6f-bad9-4580-89b2-d6f2a1dabcf3"},"execution_count":15,"outputs":[{"output_type":"execute_result","data":{"application/vnd.google.colaboratory.intrinsic+json":{"type":"string"},"text/plain":["'gaurav sud'"]},"metadata":{},"execution_count":15}]},{"cell_type":"markdown","source":["# Validation on Dakshina Test Dataset"],"metadata":{"id":"IZQDxlAS5tIe"}},{"cell_type":"code","source":["dakshina_test_df = pd.read_csv('./data/hi.translit.sampled.test.tsv', sep='\\t', names=[\"hindi\", \"english\", \"freq\"])"],"metadata":{"id":"wPkXVPU25oCU","executionInfo":{"status":"ok","timestamp":1639605433501,"user_tz":480,"elapsed":1253,"user":{"displayName":"Rajashekar Chintalapati","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GhvaKS4oQw2sBCyEe0cxq9rGBNCg4w2UoWOgVaD660=s64","userId":"03596288833202137831"}}},"execution_count":18,"outputs":[]},{"cell_type":"markdown","source":["## Comparing with indic-trans"],"metadata":{"id":"sMguHSYnGa4v"}},{"cell_type":"markdown","source":["### Installing indic-trans"],"metadata":{"id":"iBSUuOhUJleY"}},{"cell_type":"code","source":["pip install -r ../indic-trans/requirements.txt"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"t_sNy3zJGXuz","executionInfo":{"status":"ok","timestamp":1639605605240,"user_tz":480,"elapsed":3888,"user":{"displayName":"Rajashekar Chintalapati","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GhvaKS4oQw2sBCyEe0cxq9rGBNCg4w2UoWOgVaD660=s64","userId":"03596288833202137831"}},"outputId":"f3bfc2c1-7201-42da-a78c-2325ed4f0415"},"execution_count":19,"outputs":[{"output_type":"stream","name":"stdout","text":["Collecting pbr\n"," Downloading pbr-5.8.0-py2.py3-none-any.whl (112 kB)\n","\u001b[?25l\r\u001b[K |███ | 10 kB 17.7 MB/s eta 0:00:01\r\u001b[K |█████▉ | 20 kB 23.0 MB/s eta 0:00:01\r\u001b[K |████████▊ | 30 kB 12.4 MB/s eta 0:00:01\r\u001b[K |███████████▋ | 40 kB 9.4 MB/s eta 0:00:01\r\u001b[K |██████████████▌ | 51 kB 5.2 MB/s eta 0:00:01\r\u001b[K |█████████████████▍ | 61 kB 5.7 MB/s eta 0:00:01\r\u001b[K |████████████████████▎ | 71 kB 5.5 MB/s eta 0:00:01\r\u001b[K |███████████████████████▏ | 81 kB 6.2 MB/s eta 0:00:01\r\u001b[K |██████████████████████████▏ | 92 kB 4.7 MB/s eta 0:00:01\r\u001b[K |█████████████████████████████ | 102 kB 5.1 MB/s eta 0:00:01\r\u001b[K |████████████████████████████████| 112 kB 5.1 MB/s eta 0:00:01\r\u001b[K |████████████████████████████████| 112 kB 5.1 MB/s \n","\u001b[?25hRequirement already satisfied: six in /usr/local/lib/python3.7/dist-packages (from -r ../indic-trans/requirements.txt (line 2)) (1.15.0)\n","Requirement already satisfied: future in /usr/local/lib/python3.7/dist-packages (from -r ../indic-trans/requirements.txt (line 3)) (0.16.0)\n","Requirement already satisfied: cython>=0.24.0a0 in /usr/local/lib/python3.7/dist-packages (from -r ../indic-trans/requirements.txt (line 4)) (0.29.24)\n","Requirement already satisfied: numpy>=1.10.4 in /usr/local/lib/python3.7/dist-packages (from -r ../indic-trans/requirements.txt (line 5)) (1.19.5)\n","Requirement already satisfied: scipy>=0.13.3 in /usr/local/lib/python3.7/dist-packages (from -r ../indic-trans/requirements.txt (line 6)) (1.4.1)\n","Installing collected packages: pbr\n","Successfully installed pbr-5.8.0\n"]}]},{"cell_type":"code","source":["pip install ../indic-trans"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"1NDTPpoKHBek","executionInfo":{"status":"ok","timestamp":1639606244639,"user_tz":480,"elapsed":601318,"user":{"displayName":"Rajashekar Chintalapati","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GhvaKS4oQw2sBCyEe0cxq9rGBNCg4w2UoWOgVaD660=s64","userId":"03596288833202137831"}},"outputId":"68fc2a55-21ce-4493-8d40-605aadddf965"},"execution_count":21,"outputs":[{"output_type":"stream","name":"stdout","text":["Processing /content/drive/My Drive/Colab/Transliterate/indic-trans\n","\u001b[33m DEPRECATION: A future pip version will change local packages to be built in-place without first copying to a temporary directory. We recommend you use --use-feature=in-tree-build to test your packages with this new behavior before it becomes the default.\n"," pip 21.3 will remove support for this functionality. You can find discussion regarding this at https://github.com/pypa/pip/issues/7555.\u001b[0m\n"," Installing build dependencies ... \u001b[?25l\u001b[?25hdone\n"," Getting requirements to build wheel ... \u001b[?25l\u001b[?25hdone\n"," Installing backend dependencies ... \u001b[?25l\u001b[?25hdone\n"," Preparing wheel metadata ... \u001b[?25l\u001b[?25hdone\n","Requirement already satisfied: cython>=0.24.0a0 in /usr/local/lib/python3.7/dist-packages (from indictrans==1.2.3) (0.29.24)\n","Requirement already satisfied: six in /usr/local/lib/python3.7/dist-packages (from indictrans==1.2.3) (1.15.0)\n","Requirement already satisfied: scipy>=0.13.3 in /usr/local/lib/python3.7/dist-packages (from indictrans==1.2.3) (1.4.1)\n","Requirement already satisfied: future in /usr/local/lib/python3.7/dist-packages (from indictrans==1.2.3) (0.16.0)\n","Requirement already satisfied: pbr in /usr/local/lib/python3.7/dist-packages (from indictrans==1.2.3) (5.8.0)\n","Requirement already satisfied: numpy>=1.10.4 in /usr/local/lib/python3.7/dist-packages (from indictrans==1.2.3) (1.19.5)\n","Building wheels for collected packages: indictrans\n"," Building wheel for indictrans (PEP 517) ... \u001b[?25l\u001b[?25hdone\n"," Created wheel for indictrans: filename=indictrans-1.2.3-cp37-cp37m-linux_x86_64.whl size=337557214 sha256=6f06ac7419977cc75ea0f6a494940e39a802abc269466f0dca9ce7d700d2ad8e\n"," Stored in directory: /root/.cache/pip/wheels/10/1f/11/be5ddc8ef916e474d3203c4e9f075763964649ad4363904253\n","Successfully built indictrans\n","Installing collected packages: indictrans\n","Successfully installed indictrans-1.2.3\n"]}]},{"cell_type":"markdown","source":["### Test indic-trans"],"metadata":{"id":"ItpubLSMJptP"}},{"cell_type":"code","source":["from indictrans import Transliterator\n","trn = Transliterator(source='hin', target='eng', build_lookup=True)\n","eng = trn.transform(\"राजशेखर चिंतालपति\")\n","eng"],"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":35},"id":"HWjNbSlaJdFL","executionInfo":{"status":"ok","timestamp":1639606313639,"user_tz":480,"elapsed":547,"user":{"displayName":"Rajashekar Chintalapati","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GhvaKS4oQw2sBCyEe0cxq9rGBNCg4w2UoWOgVaD660=s64","userId":"03596288833202137831"}},"outputId":"9ca4e4a5-6c49-40bb-be06-f54abcedc4a4"},"execution_count":22,"outputs":[{"output_type":"execute_result","data":{"application/vnd.google.colaboratory.intrinsic+json":{"type":"string"},"text/plain":["'rajasekhar chintalapati'"]},"metadata":{},"execution_count":22}]},{"cell_type":"markdown","source":["### Quick diff between model and indic-trans"],"metadata":{"id":"NXxzfYQKLsJX"}},{"cell_type":"code","source":["dakshina_test_df.style.hide_index()\n","def test_compare(x):\n"," print(f\"{x['hindi']} : actual - {x['english']}, Model predicted - {translate(x['hindi'], units, input_lang_tokenizer, target_lang_tokenizer, encoder, decoder, max_length_input)}, indicTrans predicted - {trn.transform(x['hindi'])}\")\n","dakshina_test_df.sample(10).apply(lambda x: test_compare(x), axis=1).to_string(index=False)"],"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":209},"id":"9Rk7-iDjJu7K","executionInfo":{"status":"ok","timestamp":1639606477208,"user_tz":480,"elapsed":898,"user":{"displayName":"Rajashekar Chintalapati","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GhvaKS4oQw2sBCyEe0cxq9rGBNCg4w2UoWOgVaD660=s64","userId":"03596288833202137831"}},"outputId":"0ac2c544-99ac-4d91-9760-0ac7c12f3402"},"execution_count":25,"outputs":[{"output_type":"stream","name":"stdout","text":["फारसी : actual - farsi, Model predicted - farisi, indicTrans predicted - farsi\n","ग्रंथियों : actual - grandhiyon, Model predicted - granthion, indicTrans predicted - grathiyon\n","वायना : actual - vayna, Model predicted - wayna, indicTrans predicted - vaayana\n","गुजारते : actual - gujarte, Model predicted - gujarte, indicTrans predicted - gujaarte\n","बैला : actual - bella, Model predicted - baila, indicTrans predicted - baila\n","महाजन : actual - mhajan, Model predicted - mahajan, indicTrans predicted - mahajan\n","श्रंखला : actual - shrankhala, Model predicted - shrankhala, indicTrans predicted - shrankhla\n","वर्तमान : actual - vartamaan, Model predicted - varthaman, indicTrans predicted - vartmaan\n","इशिता : actual - ishita, Model predicted - ishita, indicTrans predicted - ishita\n","कमेरे : actual - kmere, Model predicted - kamere, indicTrans predicted - camere\n"]},{"output_type":"execute_result","data":{"application/vnd.google.colaboratory.intrinsic+json":{"type":"string"},"text/plain":["' None\\n None\\n None\\n None\\n None\\n None\\n None\\n None\\n None\\n None'"]},"metadata":{},"execution_count":25}]},{"cell_type":"markdown","source":["### Get predictions on Dakshina Test DS using model and indic-trans"],"metadata":{"id":"AAbGpi8mLw16"}},{"cell_type":"code","source":["from tqdm import tqdm\n","tqdm.pandas()\n","\n","dakshina_test_df.style.hide_index()\n","predicted = []\n","indictrans = []\n","\n","def predict(hin):\n"," predicted.append(translate(hin, units, input_lang_tokenizer, target_lang_tokenizer, \n"," encoder, decoder, max_length_input))\n"," indictrans.append(trn.transform(hin))\n","\n","dakshina_test_df.progress_apply(lambda x: predict(x['hindi']), axis=1)"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"UXJONdJmKjg-","executionInfo":{"status":"ok","timestamp":1639606925986,"user_tz":480,"elapsed":322288,"user":{"displayName":"Rajashekar Chintalapati","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GhvaKS4oQw2sBCyEe0cxq9rGBNCg4w2UoWOgVaD660=s64","userId":"03596288833202137831"}},"outputId":"6e169f85-55f5-4e11-aaa9-01aef2d0915d"},"execution_count":28,"outputs":[{"output_type":"stream","name":"stderr","text":["100%|██████████| 4502/4502 [05:22<00:00, 13.97it/s]\n"]},{"output_type":"execute_result","data":{"text/plain":["0 None\n","1 None\n","2 None\n","3 None\n","4 None\n"," ... \n","4497 None\n","4498 None\n","4499 None\n","4500 None\n","4501 None\n","Length: 4502, dtype: object"]},"metadata":{},"execution_count":28}]},{"cell_type":"code","source":["dakshina_test_df['model_predicted'] = predicted\n","dakshina_test_df['indictrans_predicted'] = indictrans\n","dakshina_test_df.head()"],"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":206},"id":"Hfz_Exy7L-Lc","executionInfo":{"status":"ok","timestamp":1639606936867,"user_tz":480,"elapsed":155,"user":{"displayName":"Rajashekar Chintalapati","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GhvaKS4oQw2sBCyEe0cxq9rGBNCg4w2UoWOgVaD660=s64","userId":"03596288833202137831"}},"outputId":"9b9417c8-0efe-4ede-aa36-706c11aaccc0"},"execution_count":29,"outputs":[{"output_type":"execute_result","data":{"text/html":["<div>\n","<style scoped>\n"," .dataframe tbody tr th:only-of-type {\n"," vertical-align: middle;\n"," }\n","\n"," .dataframe tbody tr th {\n"," vertical-align: top;\n"," }\n","\n"," .dataframe thead th {\n"," text-align: right;\n"," }\n","</style>\n","<table border=\"1\" class=\"dataframe\">\n"," <thead>\n"," <tr style=\"text-align: right;\">\n"," <th></th>\n"," <th>hindi</th>\n"," <th>english</th>\n"," <th>freq</th>\n"," <th>model_predicted</th>\n"," <th>indictrans_predicted</th>\n"," </tr>\n"," </thead>\n"," <tbody>\n"," <tr>\n"," <th>0</th>\n"," <td>अंक</td>\n"," <td>ank</td>\n"," <td>5</td>\n"," <td>ank</td>\n"," <td>ank</td>\n"," </tr>\n"," <tr>\n"," <th>1</th>\n"," <td>अंक</td>\n"," <td>anka</td>\n"," <td>1</td>\n"," <td>ank</td>\n"," <td>ank</td>\n"," </tr>\n"," <tr>\n"," <th>2</th>\n"," <td>अंकित</td>\n"," <td>ankit</td>\n"," <td>3</td>\n"," <td>ankit</td>\n"," <td>ankit</td>\n"," </tr>\n"," <tr>\n"," <th>3</th>\n"," <td>अंकों</td>\n"," <td>anakon</td>\n"," <td>1</td>\n"," <td>ankon</td>\n"," <td>ankon</td>\n"," </tr>\n"," <tr>\n"," <th>4</th>\n"," <td>अंकों</td>\n"," <td>ankhon</td>\n"," <td>1</td>\n"," <td>ankon</td>\n"," <td>ankon</td>\n"," </tr>\n"," </tbody>\n","</table>\n","</div>"],"text/plain":[" hindi english freq model_predicted indictrans_predicted\n","0 अंक ank 5 ank ank\n","1 अंक anka 1 ank ank\n","2 अंकित ankit 3 ankit ankit\n","3 अंकों anakon 1 ankon ankon\n","4 अंकों ankhon 1 ankon ankon"]},"metadata":{},"execution_count":29}]},{"cell_type":"markdown","source":["### Calculate edit distance"],"metadata":{"id":"Yz3F8vkpL8i9"}},{"cell_type":"code","source":["def edit_distance(s1, s2):\n"," t1 = tf.sparse.from_dense(tf.expand_dims(tf.strings.bytes_split(s1), axis=0))\n"," t2 = tf.sparse.from_dense(tf.expand_dims(tf.strings.bytes_split(s2), axis=0))\n"," distance = tf.edit_distance(t1, t2)\n"," return distance[0].numpy()\n","\n","model_edit_dist = []\n","indic_edit_dist = []\n","\n","def edit_dist(x):\n"," model_edit_dist.append(edit_distance(x['model_predicted'], x['english']))\n"," indic_edit_dist.append(edit_distance(x['indictrans_predicted'], x['english']))\n","\n","dakshina_test_df.progress_apply(lambda x: edit_dist(x), axis=1)"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"6DpA10-bMHPs","executionInfo":{"status":"ok","timestamp":1639607155462,"user_tz":480,"elapsed":166738,"user":{"displayName":"Rajashekar Chintalapati","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GhvaKS4oQw2sBCyEe0cxq9rGBNCg4w2UoWOgVaD660=s64","userId":"03596288833202137831"}},"outputId":"65a864a4-2913-40b2-84c8-85b3cbbf844d"},"execution_count":30,"outputs":[{"output_type":"stream","name":"stderr","text":["100%|██████████| 4502/4502 [02:46<00:00, 27.03it/s]\n"]},{"output_type":"execute_result","data":{"text/plain":["0 None\n","1 None\n","2 None\n","3 None\n","4 None\n"," ... \n","4497 None\n","4498 None\n","4499 None\n","4500 None\n","4501 None\n","Length: 4502, dtype: object"]},"metadata":{},"execution_count":30}]},{"cell_type":"code","source":["dakshina_test_df['model_edit_distance'] = model_edit_dist\n","dakshina_test_df['indic_edit_distance'] = indic_edit_dist\n","dakshina_test_df.head()"],"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":206},"id":"KbXEufxMMTnO","executionInfo":{"status":"ok","timestamp":1639607160697,"user_tz":480,"elapsed":152,"user":{"displayName":"Rajashekar Chintalapati","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GhvaKS4oQw2sBCyEe0cxq9rGBNCg4w2UoWOgVaD660=s64","userId":"03596288833202137831"}},"outputId":"fb6757e2-39bd-4ac0-b8b4-d0493beac8d1"},"execution_count":31,"outputs":[{"output_type":"execute_result","data":{"text/html":["<div>\n","<style scoped>\n"," .dataframe tbody tr th:only-of-type {\n"," vertical-align: middle;\n"," }\n","\n"," .dataframe tbody tr th {\n"," vertical-align: top;\n"," }\n","\n"," .dataframe thead th {\n"," text-align: right;\n"," }\n","</style>\n","<table border=\"1\" class=\"dataframe\">\n"," <thead>\n"," <tr style=\"text-align: right;\">\n"," <th></th>\n"," <th>hindi</th>\n"," <th>english</th>\n"," <th>freq</th>\n"," <th>model_predicted</th>\n"," <th>indictrans_predicted</th>\n"," <th>model_edit_distance</th>\n"," <th>indic_edit_distance</th>\n"," </tr>\n"," </thead>\n"," <tbody>\n"," <tr>\n"," <th>0</th>\n"," <td>अंक</td>\n"," <td>ank</td>\n"," <td>5</td>\n"," <td>ank</td>\n"," <td>ank</td>\n"," <td>0.000000</td>\n"," <td>0.000000</td>\n"," </tr>\n"," <tr>\n"," <th>1</th>\n"," <td>अंक</td>\n"," <td>anka</td>\n"," <td>1</td>\n"," <td>ank</td>\n"," <td>ank</td>\n"," <td>0.250000</td>\n"," <td>0.250000</td>\n"," </tr>\n"," <tr>\n"," <th>2</th>\n"," <td>अंकित</td>\n"," <td>ankit</td>\n"," <td>3</td>\n"," <td>ankit</td>\n"," <td>ankit</td>\n"," <td>0.000000</td>\n"," <td>0.000000</td>\n"," </tr>\n"," <tr>\n"," <th>3</th>\n"," <td>अंकों</td>\n"," <td>anakon</td>\n"," <td>1</td>\n"," <td>ankon</td>\n"," <td>ankon</td>\n"," <td>0.166667</td>\n"," <td>0.166667</td>\n"," </tr>\n"," <tr>\n"," <th>4</th>\n"," <td>अंकों</td>\n"," <td>ankhon</td>\n"," <td>1</td>\n"," <td>ankon</td>\n"," <td>ankon</td>\n"," <td>0.166667</td>\n"," <td>0.166667</td>\n"," </tr>\n"," </tbody>\n","</table>\n","</div>"],"text/plain":[" hindi english ... model_edit_distance indic_edit_distance\n","0 अंक ank ... 0.000000 0.000000\n","1 अंक anka ... 0.250000 0.250000\n","2 अंकित ankit ... 0.000000 0.000000\n","3 अंकों anakon ... 0.166667 0.166667\n","4 अंकों ankhon ... 0.166667 0.166667\n","\n","[5 rows x 7 columns]"]},"metadata":{},"execution_count":31}]},{"cell_type":"markdown","source":["### Save above results"],"metadata":{"id":"-qW8v4AxMZ5Z"}},{"cell_type":"code","source":["dakshina_test_df.to_csv('./data/dakshina_test_results.csv',index=False)"],"metadata":{"id":"bLqlREjGMfLR","executionInfo":{"status":"ok","timestamp":1639607186421,"user_tz":480,"elapsed":138,"user":{"displayName":"Rajashekar Chintalapati","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GhvaKS4oQw2sBCyEe0cxq9rGBNCg4w2UoWOgVaD660=s64","userId":"03596288833202137831"}}},"execution_count":32,"outputs":[]},{"cell_type":"markdown","source":["### Plotting edit distance for both model and indic-trans"],"metadata":{"id":"OSSIc7ObMqdq"}},{"cell_type":"markdown","source":["### Indic trans edit distance plot"],"metadata":{"id":"84UYA0BmMx_7"}},{"cell_type":"code","source":["import matplotlib.pyplot as plt\n","import numpy as np\n","\n","plt.figure(figsize=(20,10))\n","plt.hist(indic_edit_dist, bins=np.arange(min(indic_edit_dist), max(indic_edit_dist)+0.01, step=0.01))"],"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":1000},"id":"_8kY3geqMvwN","executionInfo":{"status":"ok","timestamp":1639607269309,"user_tz":480,"elapsed":1143,"user":{"displayName":"Rajashekar Chintalapati","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GhvaKS4oQw2sBCyEe0cxq9rGBNCg4w2UoWOgVaD660=s64","userId":"03596288833202137831"}},"outputId":"51b058da-f965-485e-bf28-512a25dc830d"},"execution_count":34,"outputs":[{"output_type":"execute_result","data":{"text/plain":["(array([1.578e+03, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00,\n"," 1.000e+00, 1.300e+01, 2.000e+01, 3.900e+01, 8.300e+01, 1.370e+02,\n"," 2.180e+02, 1.000e+00, 2.650e+02, 1.200e+01, 3.430e+02, 0.000e+00,\n"," 3.300e+01, 0.000e+00, 3.050e+02, 1.000e+00, 1.010e+02, 3.000e+00,\n"," 0.000e+00, 2.630e+02, 1.000e+00, 9.000e+00, 1.610e+02, 0.000e+00,\n"," 3.100e+01, 0.000e+00, 0.000e+00, 2.560e+02, 0.000e+00, 0.000e+00,\n"," 8.000e+00, 5.300e+01, 0.000e+00, 0.000e+00, 1.460e+02, 2.000e+00,\n"," 7.400e+01, 0.000e+00, 9.000e+00, 3.000e+00, 1.000e+00, 0.000e+00,\n"," 0.000e+00, 0.000e+00, 1.480e+02, 0.000e+00, 0.000e+00, 0.000e+00,\n"," 1.000e+00, 4.000e+00, 0.000e+00, 2.300e+01, 1.000e+00, 0.000e+00,\n"," 4.300e+01, 0.000e+00, 4.000e+00, 0.000e+00, 0.000e+00, 0.000e+00,\n"," 2.900e+01, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 6.000e+00,\n"," 0.000e+00, 0.000e+00, 0.000e+00, 2.000e+01, 0.000e+00, 1.000e+00,\n"," 0.000e+00, 0.000e+00, 3.000e+00, 0.000e+00, 0.000e+00, 3.000e+00,\n"," 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00,\n"," 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00,\n"," 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 2.400e+01, 0.000e+00,\n"," 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00,\n"," 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00,\n"," 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00,\n"," 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 2.000e+00,\n"," 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00,\n"," 0.000e+00, 1.000e+01, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00,\n"," 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00,\n"," 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00,\n"," 6.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00,\n"," 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00,\n"," 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 2.000e+00, 0.000e+00,\n"," 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00,\n"," 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00,\n"," 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00,\n"," 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00,\n"," 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00,\n"," 0.000e+00, 2.000e+00]),\n"," array([0. , 0.01, 0.02, 0.03, 0.04, 0.05, 0.06, 0.07, 0.08, 0.09, 0.1 ,\n"," 0.11, 0.12, 0.13, 0.14, 0.15, 0.16, 0.17, 0.18, 0.19, 0.2 , 0.21,\n"," 0.22, 0.23, 0.24, 0.25, 0.26, 0.27, 0.28, 0.29, 0.3 , 0.31, 0.32,\n"," 0.33, 0.34, 0.35, 0.36, 0.37, 0.38, 0.39, 0.4 , 0.41, 0.42, 0.43,\n"," 0.44, 0.45, 0.46, 0.47, 0.48, 0.49, 0.5 , 0.51, 0.52, 0.53, 0.54,\n"," 0.55, 0.56, 0.57, 0.58, 0.59, 0.6 , 0.61, 0.62, 0.63, 0.64, 0.65,\n"," 0.66, 0.67, 0.68, 0.69, 0.7 , 0.71, 0.72, 0.73, 0.74, 0.75, 0.76,\n"," 0.77, 0.78, 0.79, 0.8 , 0.81, 0.82, 0.83, 0.84, 0.85, 0.86, 0.87,\n"," 0.88, 0.89, 0.9 , 0.91, 0.92, 0.93, 0.94, 0.95, 0.96, 0.97, 0.98,\n"," 0.99, 1. , 1.01, 1.02, 1.03, 1.04, 1.05, 1.06, 1.07, 1.08, 1.09,\n"," 1.1 , 1.11, 1.12, 1.13, 1.14, 1.15, 1.16, 1.17, 1.18, 1.19, 1.2 ,\n"," 1.21, 1.22, 1.23, 1.24, 1.25, 1.26, 1.27, 1.28, 1.29, 1.3 , 1.31,\n"," 1.32, 1.33, 1.34, 1.35, 1.36, 1.37, 1.38, 1.39, 1.4 , 1.41, 1.42,\n"," 1.43, 1.44, 1.45, 1.46, 1.47, 1.48, 1.49, 1.5 , 1.51, 1.52, 1.53,\n"," 1.54, 1.55, 1.56, 1.57, 1.58, 1.59, 1.6 , 1.61, 1.62, 1.63, 1.64,\n"," 1.65, 1.66, 1.67, 1.68, 1.69, 1.7 , 1.71, 1.72, 1.73, 1.74, 1.75,\n"," 1.76, 1.77, 1.78, 1.79, 1.8 , 1.81, 1.82, 1.83, 1.84, 1.85, 1.86,\n"," 1.87, 1.88, 1.89, 1.9 , 1.91, 1.92, 1.93, 1.94, 1.95, 1.96, 1.97,\n"," 1.98, 1.99, 2. ]),\n"," <a list of 200 Patch objects>)"]},"metadata":{},"execution_count":34},{"output_type":"display_data","data":{"image/png":"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\n","text/plain":["<Figure size 1440x720 with 1 Axes>"]},"metadata":{"needs_background":"light"}}]},{"cell_type":"markdown","source":["#### Model edit distance plot"],"metadata":{"id":"ktMTTSJNNKFf"}},{"cell_type":"code","source":["plt.figure(figsize=(20,10))\n","plt.hist(model_edit_dist, bins=np.arange(min(model_edit_dist), max(model_edit_dist)+0.01, step=0.01))"],"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":1000},"id":"WFgVNNzcNOLz","executionInfo":{"status":"ok","timestamp":1639607277266,"user_tz":480,"elapsed":1641,"user":{"displayName":"Rajashekar Chintalapati","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GhvaKS4oQw2sBCyEe0cxq9rGBNCg4w2UoWOgVaD660=s64","userId":"03596288833202137831"}},"outputId":"96001038-2b50-445c-f754-ab00b2829d4a"},"execution_count":35,"outputs":[{"output_type":"execute_result","data":{"text/plain":["(array([1.841e+03, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00,\n"," 0.000e+00, 1.300e+01, 2.400e+01, 3.100e+01, 8.600e+01, 1.280e+02,\n"," 2.100e+02, 0.000e+00, 2.740e+02, 7.000e+00, 2.970e+02, 0.000e+00,\n"," 3.600e+01, 0.000e+00, 2.910e+02, 2.000e+00, 9.600e+01, 0.000e+00,\n"," 0.000e+00, 2.300e+02, 0.000e+00, 9.000e+00, 1.570e+02, 0.000e+00,\n"," 1.700e+01, 0.000e+00, 0.000e+00, 2.190e+02, 0.000e+00, 0.000e+00,\n"," 1.000e+01, 3.700e+01, 1.000e+00, 0.000e+00, 1.330e+02, 2.000e+00,\n"," 5.300e+01, 0.000e+00, 1.000e+01, 1.000e+00, 0.000e+00, 0.000e+00,\n"," 0.000e+00, 0.000e+00, 1.380e+02, 0.000e+00, 0.000e+00, 1.000e+00,\n"," 0.000e+00, 1.100e+01, 0.000e+00, 1.400e+01, 0.000e+00, 0.000e+00,\n"," 2.500e+01, 0.000e+00, 3.000e+00, 1.000e+00, 1.000e+00, 0.000e+00,\n"," 3.400e+01, 0.000e+00, 0.000e+00, 1.000e+00, 0.000e+00, 2.000e+00,\n"," 0.000e+00, 0.000e+00, 0.000e+00, 1.900e+01, 0.000e+00, 0.000e+00,\n"," 0.000e+00, 0.000e+00, 8.000e+00, 0.000e+00, 0.000e+00, 5.000e+00,\n"," 0.000e+00, 1.000e+00, 0.000e+00, 0.000e+00, 1.000e+00, 0.000e+00,\n"," 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00,\n"," 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 1.700e+01, 0.000e+00,\n"," 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00,\n"," 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00,\n"," 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00,\n"," 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00,\n"," 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00,\n"," 0.000e+00, 2.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00,\n"," 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00,\n"," 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00,\n"," 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00,\n"," 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 1.000e+00, 0.000e+00,\n"," 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00,\n"," 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00,\n"," 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00,\n"," 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00,\n"," 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00,\n"," 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00,\n"," 0.000e+00, 0.000e+00, 1.000e+00, 0.000e+00, 0.000e+00, 0.000e+00,\n"," 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00,\n"," 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00,\n"," 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00,\n"," 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00,\n"," 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00,\n"," 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00,\n"," 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00,\n"," 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00,\n"," 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00,\n"," 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00,\n"," 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00,\n"," 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00,\n"," 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00,\n"," 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00,\n"," 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00,\n"," 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00,\n"," 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00,\n"," 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00,\n"," 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00,\n"," 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00,\n"," 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00,\n"," 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00,\n"," 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00,\n"," 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00,\n"," 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00,\n"," 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00,\n"," 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00,\n"," 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00,\n"," 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00,\n"," 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00,\n"," 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00,\n"," 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00,\n"," 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00,\n"," 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00,\n"," 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00,\n"," 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00,\n"," 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00,\n"," 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00,\n"," 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 0.000e+00, 1.000e+00]),\n"," array([0. , 0.01, 0.02, 0.03, 0.04, 0.05, 0.06, 0.07, 0.08, 0.09, 0.1 ,\n"," 0.11, 0.12, 0.13, 0.14, 0.15, 0.16, 0.17, 0.18, 0.19, 0.2 , 0.21,\n"," 0.22, 0.23, 0.24, 0.25, 0.26, 0.27, 0.28, 0.29, 0.3 , 0.31, 0.32,\n"," 0.33, 0.34, 0.35, 0.36, 0.37, 0.38, 0.39, 0.4 , 0.41, 0.42, 0.43,\n"," 0.44, 0.45, 0.46, 0.47, 0.48, 0.49, 0.5 , 0.51, 0.52, 0.53, 0.54,\n"," 0.55, 0.56, 0.57, 0.58, 0.59, 0.6 , 0.61, 0.62, 0.63, 0.64, 0.65,\n"," 0.66, 0.67, 0.68, 0.69, 0.7 , 0.71, 0.72, 0.73, 0.74, 0.75, 0.76,\n"," 0.77, 0.78, 0.79, 0.8 , 0.81, 0.82, 0.83, 0.84, 0.85, 0.86, 0.87,\n"," 0.88, 0.89, 0.9 , 0.91, 0.92, 0.93, 0.94, 0.95, 0.96, 0.97, 0.98,\n"," 0.99, 1. , 1.01, 1.02, 1.03, 1.04, 1.05, 1.06, 1.07, 1.08, 1.09,\n"," 1.1 , 1.11, 1.12, 1.13, 1.14, 1.15, 1.16, 1.17, 1.18, 1.19, 1.2 ,\n"," 1.21, 1.22, 1.23, 1.24, 1.25, 1.26, 1.27, 1.28, 1.29, 1.3 , 1.31,\n"," 1.32, 1.33, 1.34, 1.35, 1.36, 1.37, 1.38, 1.39, 1.4 , 1.41, 1.42,\n"," 1.43, 1.44, 1.45, 1.46, 1.47, 1.48, 1.49, 1.5 , 1.51, 1.52, 1.53,\n"," 1.54, 1.55, 1.56, 1.57, 1.58, 1.59, 1.6 , 1.61, 1.62, 1.63, 1.64,\n"," 1.65, 1.66, 1.67, 1.68, 1.69, 1.7 , 1.71, 1.72, 1.73, 1.74, 1.75,\n"," 1.76, 1.77, 1.78, 1.79, 1.8 , 1.81, 1.82, 1.83, 1.84, 1.85, 1.86,\n"," 1.87, 1.88, 1.89, 1.9 , 1.91, 1.92, 1.93, 1.94, 1.95, 1.96, 1.97,\n"," 1.98, 1.99, 2. , 2.01, 2.02, 2.03, 2.04, 2.05, 2.06, 2.07, 2.08,\n"," 2.09, 2.1 , 2.11, 2.12, 2.13, 2.14, 2.15, 2.16, 2.17, 2.18, 2.19,\n"," 2.2 , 2.21, 2.22, 2.23, 2.24, 2.25, 2.26, 2.27, 2.28, 2.29, 2.3 ,\n"," 2.31, 2.32, 2.33, 2.34, 2.35, 2.36, 2.37, 2.38, 2.39, 2.4 , 2.41,\n"," 2.42, 2.43, 2.44, 2.45, 2.46, 2.47, 2.48, 2.49, 2.5 , 2.51, 2.52,\n"," 2.53, 2.54, 2.55, 2.56, 2.57, 2.58, 2.59, 2.6 , 2.61, 2.62, 2.63,\n"," 2.64, 2.65, 2.66, 2.67, 2.68, 2.69, 2.7 , 2.71, 2.72, 2.73, 2.74,\n"," 2.75, 2.76, 2.77, 2.78, 2.79, 2.8 , 2.81, 2.82, 2.83, 2.84, 2.85,\n"," 2.86, 2.87, 2.88, 2.89, 2.9 , 2.91, 2.92, 2.93, 2.94, 2.95, 2.96,\n"," 2.97, 2.98, 2.99, 3. , 3.01, 3.02, 3.03, 3.04, 3.05, 3.06, 3.07,\n"," 3.08, 3.09, 3.1 , 3.11, 3.12, 3.13, 3.14, 3.15, 3.16, 3.17, 3.18,\n"," 3.19, 3.2 , 3.21, 3.22, 3.23, 3.24, 3.25, 3.26, 3.27, 3.28, 3.29,\n"," 3.3 , 3.31, 3.32, 3.33, 3.34, 3.35, 3.36, 3.37, 3.38, 3.39, 3.4 ,\n"," 3.41, 3.42, 3.43, 3.44, 3.45, 3.46, 3.47, 3.48, 3.49, 3.5 , 3.51,\n"," 3.52, 3.53, 3.54, 3.55, 3.56, 3.57, 3.58, 3.59, 3.6 , 3.61, 3.62,\n"," 3.63, 3.64, 3.65, 3.66, 3.67, 3.68, 3.69, 3.7 , 3.71, 3.72, 3.73,\n"," 3.74, 3.75, 3.76, 3.77, 3.78, 3.79, 3.8 , 3.81, 3.82, 3.83, 3.84,\n"," 3.85, 3.86, 3.87, 3.88, 3.89, 3.9 , 3.91, 3.92, 3.93, 3.94, 3.95,\n"," 3.96, 3.97, 3.98, 3.99, 4. , 4.01, 4.02, 4.03, 4.04, 4.05, 4.06,\n"," 4.07, 4.08, 4.09, 4.1 , 4.11, 4.12, 4.13, 4.14, 4.15, 4.16, 4.17,\n"," 4.18, 4.19, 4.2 , 4.21, 4.22, 4.23, 4.24, 4.25, 4.26, 4.27, 4.28,\n"," 4.29, 4.3 , 4.31, 4.32, 4.33, 4.34, 4.35, 4.36, 4.37, 4.38]),\n"," <a list of 438 Patch objects>)"]},"metadata":{},"execution_count":35},{"output_type":"display_data","data":{"image/png":"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AAAAp8D1l7LTzLy1+vrqhTNzvgt3L3tT9faZ+e7qt6tv37s/UL2qOlf9bvVdVWutj8/M367evff7W2utp14gGwAAAIATckmhaK115zM89Q0X2XdVr3uG97m3uveSpwMAAADgijmWi1kDAAAAcPUTigAAAACohCIAAAAANqEIAAAAgEooAgAAAGATigAAAACohCIAAAAANqEIAAAAgEooAgAAAGATigAAAACohCIAAAAANqEIAAAAgEooAgAAAGATigAAAACohCIAAAAANqEIAAAAgEooAgAAAGATigAAAACohCIAAAAANqEIAAAAgEooAgAAAGATigAAAACohCIAAAAANqEIAAAAgEooAgAAAGATigAAAACohCIAAAAANqEIAAAAgEooAgAAAGATigAAAACohCIAAAAANqEIAAAAgEooAgAAAGATigAAAACohCIAAAAANqEIAAAAgEooAgAAAGATigAAAACohCIAAAAANqEIAAAAgEooAgAAAGATigAAAACohCIAAAAANqEIAAAAgEooAgAAAGATigAAAACohCIAAAAANqEIAAAAgEooAgAAAGATigAAAACohCIAAAAANqEIAAAAgEooAgAAAGATigAAAACohCIAAAAANqEIAAAAgEooAgAAAGATigAAAACohCIAAAAANqEIAAAAgEooAgAAAGA7dCiama+amYcP/HxiZr5/Zn5wZh49sP6qA695w8ycm5kPzsw3H8+vAAAAAMBxuP6wL1xrfbC6tWpmrqserX6m+q7qh9daf/fg/jPz0uqO6mXVH6n+zcx85Vrr04edAQAAAIDjc1ynnn1D9aG11m8/yz6vqd621vrkWuu3qnPVy4/p8wEAAAA4ouMKRXdUbz3w+PUz896ZuXdmXrDXbqg+cmCf83sNAAAAgFPgyKFoZr64+pbqn+6lN1df0YXT0h6rfugQ73nXzDw0Mw898cQTRx0RAAAAgEtwHEcUvbL6lbXWR6vWWh9da316rfWZ6sf63Ollj1Y3HXjdjXvtadZa96y1bltr3XbmzJljGBEAAACA53IcoejODpx2NjMvPvDct1Xv29v3VXfMzJfMzEuqW6pfPobPBwAAAOAYHPquZ1Uz8/uqb6y+58Dy35mZW6tVPfLkc2ut98/M26sPVJ+qXueOZwAAAACnx5FC0Vrr/6v+0FPWvuNZ9n9j9cajfCYA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\n","text/plain":["<Figure size 1440x720 with 1 Axes>"]},"metadata":{"needs_background":"light"}}]},{"cell_type":"markdown","source":["### Remove duplicate entries"],"metadata":{"id":"qABHZ_VmNf9N"}},{"cell_type":"code","source":["model_edit_dedup = dakshina_test_df.groupby(['hindi'])['model_edit_distance'].min().reset_index()\n","indic_edit_dedup = dakshina_test_df.groupby(['hindi'])['indic_edit_distance'].min().reset_index()"],"metadata":{"id":"VGP2Qq6oNa-0","executionInfo":{"status":"ok","timestamp":1639607401387,"user_tz":480,"elapsed":185,"user":{"displayName":"Rajashekar Chintalapati","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GhvaKS4oQw2sBCyEe0cxq9rGBNCg4w2UoWOgVaD660=s64","userId":"03596288833202137831"}}},"execution_count":36,"outputs":[]},{"cell_type":"code","source":["model_acc_percent = len(model_edit_dedup[model_edit_dedup['model_edit_distance'] == 0])/len(model_edit_dedup)\n","indic_acc_percent = len(indic_edit_dedup[indic_edit_dedup['indic_edit_distance'] == 0])/len(indic_edit_dedup)\n","print(f\"Out of {len(model_edit_dedup)}, model predicted {model_acc_percent * 100}% correctly\")\n","print(f\"Out of {len(indic_edit_dedup)}, indic predicted {indic_acc_percent * 100}% correctly\")"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"eUWZzYeINmc0","executionInfo":{"status":"ok","timestamp":1639607419272,"user_tz":480,"elapsed":161,"user":{"displayName":"Rajashekar Chintalapati","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14GhvaKS4oQw2sBCyEe0cxq9rGBNCg4w2UoWOgVaD660=s64","userId":"03596288833202137831"}},"outputId":"6303f7ed-d70c-4a9b-95d3-44eecb34f6b0"},"execution_count":37,"outputs":[{"output_type":"stream","name":"stdout","text":["Out of 2500, model predicted 73.64% correctly\n","Out of 2500, indic predicted 63.12% correctly\n"]}]}]}
|