{ "cells": [ { "cell_type": "code", "execution_count": 1, "id": "6627cfba-e3f0-4a37-92b7-7f145005b0a7", "metadata": {}, "outputs": [], "source": [ "from transformers import PreTrainedTokenizerFast\n", "from phonemizer import phonemize\n", "from phonemizer.backend import EspeakBackend\n", "from phonemizer.separator import Separator\n", "\n", "test_string = 'इसरो ने चंद्रयान-3 मिशन के लिए तीन मुख्य उद्देश्य निर्धारित किए हैं, जिनमें शामिल हैं: लैंडर की चंद्रमा की सतह पर सुरक्षित और सॉफ्ट लैंडिंग कराना। चंद्रमा पर रोवर की विचरण क्षमताओं का अवलोकन और प्रदर्शन। चंद्रमा की संरचना को बेहतर ढंग से समझने और उसके विज्ञान को अभ्यास में लाने के लिए चंद्रमा की सतह पर उपलब्ध रासायनिक और प्राकृतिक तत्वों, मिट्टी, पानी आदि पर वैज्ञानिक प्रयोग करना।'\n", "\n", "phonemized = phonemize(\n", " [test_string],\n", " language = 'hi',\n", " backend = 'espeak',\n", " separator = Separator(phone = None, word = ' ', syllable = None),\n", " strip = True,\n", " preserve_punctuation = True,\n", " njobs = 1\n", " )" ] }, { "cell_type": "code", "execution_count": 2, "id": "5d23d7bd-2034-4e97-a262-901ab4d454fc", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "69\n", "70\n" ] } ], "source": [ "words = test_string.split()\n", "phn_words = phonemized[0].split()\n", "print(len(words))\n", "print(len(phn_words))" ] }, { "cell_type": "markdown", "id": "54275b7e-39f1-4e3a-aa00-799434f9aba0", "metadata": {}, "source": [ "### Scratch Unigram Tokenizer" ] }, { "cell_type": "code", "execution_count": 3, "id": "45224695-ee8a-4130-a349-f5740dc064a4", "metadata": {}, "outputs": [], "source": [ "hin_scratch_tokenizer = PreTrainedTokenizerFast.from_pretrained(\"trained_tokenizers/hindi_scratch_UnigramTokenizer/\")\n", "hin_phonemized_scratch_tokenizer = PreTrainedTokenizerFast.from_pretrained(\"trained_tokenizers/hindi_phonemized_scratch_UnigramTokenizer/\")" ] }, { "cell_type": "code", "execution_count": 4, "id": "75896d0b-fc2f-45b0-a387-bc6fdc19a390", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "79\n", "['▁इसरो', '▁ने', '▁चंद्र', 'यान', '-', '3', '▁मिशन', '▁के', '▁लिए', '▁तीन', '▁मुख्य', '▁उद्देश्य', '▁निर्धारित', '▁किए', '▁हैं,', '▁जिनमें', '▁शामिल', '▁हैं:', '▁लैंड', 'र', '▁की', '▁चंद्रमा', '▁की', '▁सतह', '▁पर', '▁सुरक्षित', '▁और', '▁सॉफ्ट', '▁लैंडिंग', '▁कराना', '।', '▁चंद्रमा', '▁पर', '▁रोवर', '▁की', '▁विचरण', '▁क्षमताओं', '▁का', '▁अवलोकन', '▁और', '▁प्रदर्शन', '।', '▁चंद्रमा', '▁की', '▁संरचना', '▁को', '▁बेहतर', '▁ढंग', '▁से', '▁समझने', '▁और', '▁उसके', '▁विज्ञान', '▁को', '▁अभ्यास', '▁में', '▁लाने', '▁के', '▁लिए', '▁चंद्रमा', '▁की', '▁सतह', '▁पर', '▁उपलब्ध', '▁रासायनिक', '▁और', '▁प्राकृतिक', '▁तत्वों', ',', '▁मिट्टी', ',', '▁पानी', '▁आदि', '▁पर', '▁वैज्ञानिक', '▁प्रयोग', '▁करना।']\n" ] } ], "source": [ "print(len(hin_scratch_tokenizer.encode(test_string)))\n", "print(hin_scratch_tokenizer.tokenize(test_string))" ] }, { "cell_type": "code", "execution_count": 5, "id": "02468de9-a22b-430c-ba3f-a48169c25b6e", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "82\n", "['▁ɪs', 'ɾoː', '▁neː', '▁cəndɾəjaːn', '▁tiːn', '▁mɪʃən', '▁keː', '▁lɪeː', '▁tiːn', '▁mʊkhjə', '▁ʊdːeːʃjə', '▁nɪɾdhaːɾɪt', '▁kɪeː', '▁hɛ̃', ',', '▁ɟɪnmẽː', '▁ʃaːmɪl', '▁hɛ̃', ':', '▁', 'lɛ̃ɖəɾ', '▁ki', '▁cʌndɾəmaː', '▁ki', '▁sʌtəh', '▁pʌɾ', '▁sʊɾʌkʃɪt', '▁ɔːɾ', '▁sɔphʈ', '▁lɛ̃ɖĩɡ', '▁', 'kəɾaːnaː', '▁cʌndɾəmaː', '▁pʌɾ', '▁', 'ɾoːʋəɾ', '▁ki', '▁ʋɪcəɾəɳ', '▁', 'kʃəmtaːw', '▁kaː', '▁ʌʋloːkən', '▁ɔːɾ', '▁pɾədʌrʃən', '▁cʌndɾəmaː', '▁ki', '▁sʌnɾəcnaː', '▁koː', '▁beːhətəɾ', '▁ɖhʌŋɡ', '▁seː', '▁sʌməɟhneː', '▁ɔːɾ', '▁ʊskeː', '▁ʋɪɡjaːn', '▁koː', '▁ʌbhjaːs', '▁mẽː', '▁laːneː', '▁keː', '▁lɪeː', '▁cʌndɾəmaː', '▁ki', '▁sʌtəh', '▁pʌɾ', '▁ʊpəlʌbdh', '▁ɾaːsaːjnɪk', '▁ɔːɾ', '▁pɾaːkɾɪtɪk', '▁', 'tʌtʋõ', ',', '▁mɪʈʈi', ',', '▁paːni', '▁aːdɪ', '▁pʌɾ', '▁ʋɛːɡjaːnɪk', '▁pɾəjoːɡ', '▁kʌɾnaː']\n" ] } ], "source": [ "print(len(hin_phonemized_scratch_tokenizer.encode(phonemized[0])))\n", "print(hin_phonemized_scratch_tokenizer.tokenize(phonemized[0]))" ] }, { "cell_type": "markdown", "id": "2abc2dee-ab30-4721-908b-cbac40a694d5", "metadata": {}, "source": [ "### Scratch WordPiece Tokenizer" ] }, { "cell_type": "code", "execution_count": 6, "id": "05bb2b9e-ade4-48c2-ba58-d43536a6d547", "metadata": {}, "outputs": [], "source": [ "hin_scratch_tokenizer = PreTrainedTokenizerFast.from_pretrained(\"trained_tokenizers/hindi_scratch_WordPieceTokenizer/\")\n", "hin_phonemized_scratch_tokenizer = PreTrainedTokenizerFast.from_pretrained(\"trained_tokenizers/hindi_phonemized_scratch_WordPieceTokenizer/\")" ] }, { "cell_type": "code", "execution_count": 7, "id": "ead210ee-08ee-40cd-ba81-c3bd8a123ac5", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "82\n", "['इसरो', 'ने', 'चंद्र', '##यान', '-', '3', 'मिशन', 'के', 'लिए', 'तीन', 'मुख्य', 'उद्देश्य', 'निर्धारित', 'किए', 'हैं', ',', 'जिनमें', 'शामिल', 'हैं', ':', 'लैंड', '##र', 'की', 'चंद्रमा', 'की', 'सतह', 'पर', 'सुरक्षित', 'और', 'सॉफ्ट', 'लैंडिंग', 'कराना', '।', 'चंद्रमा', 'पर', 'रोवर', 'की', 'विचरण', 'क्षमताओं', 'का', 'अवलोकन', 'और', 'प्रदर्शन', '।', 'चंद्रमा', 'की', 'संरचना', 'को', 'बेहतर', 'ढंग', 'से', 'समझने', 'और', 'उसके', 'विज्ञान', 'को', 'अभ्यास', 'में', 'लाने', 'के', 'लिए', 'चंद्रमा', 'की', 'सतह', 'पर', 'उपलब्ध', 'रासायनिक', 'और', 'प्राकृतिक', 'तत्वों', ',', 'मिट्टी', ',', 'पानी', 'आदि', 'पर', 'वैज्ञानिक', 'प्रयोग', 'करना', '।']\n" ] } ], "source": [ "print(len(hin_scratch_tokenizer.encode(test_string)))\n", "print(hin_scratch_tokenizer.tokenize(test_string))" ] }, { "cell_type": "code", "execution_count": 8, "id": "57db11bb-1acc-4392-93c9-4b530e72d48c", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "78\n", "['ɪsɾoː', 'neː', 'cəndɾə', '##jaːn', 'tiːn', 'mɪʃən', 'keː', 'lɪeː', 'tiːn', 'mʊkʰjə', 'ʊdːeːʃjə', 'nɪɾdʰaːɾɪt', 'kɪeː', 'hɛ̃', '[UNK]', 'ɟɪnmẽː', 'ʃaːmɪl', 'hɛ̃', '[UNK]', 'lɛ̃ɖ', '##əɾ', 'ki', 'cʌndɾəmaː', 'ki', 'sʌtəh', 'pʌɾ', 'sʊɾʌkʃɪt', 'ɔːɾ', 'sɔpʰʈ', 'lɛ̃ɖĩɡ', 'kəɾaːnaː', 'cʌndɾəmaː', 'pʌɾ', 'ɾoːʋəɾ', 'ki', 'ʋɪcəɾəɳ', 'kʃəmtaːw', 'kaː', 'ʌʋloːkən', 'ɔːɾ', 'pɾədʌrʃən', 'cʌndɾəmaː', 'ki', 'sʌnɾəcnaː', 'koː', 'beːhətəɾ', 'ɖʰʌŋɡ', 'seː', 'sʌməɟʰneː', 'ɔːɾ', 'ʊskeː', 'ʋɪɡjaːn', 'koː', 'ʌbʰjaːs', 'mẽː', 'laːneː', 'keː', 'lɪeː', 'cʌndɾəmaː', 'ki', 'sʌtəh', 'pʌɾ', 'ʊpəlʌbdʰ', 'ɾaːsaːjnɪk', 'ɔːɾ', 'pɾaːkɾɪtɪk', 'tʌtʋõ', '[UNK]', 'mɪʈʈi', '[UNK]', 'paːni', 'aːdɪ', 'pʌɾ', 'ʋɛːɡjaːnɪk', 'pɾəjoːɡ', 'kʌɾnaː']\n" ] } ], "source": [ "print(len(hin_phonemized_scratch_tokenizer.encode(phonemized[0])))\n", "print(hin_phonemized_scratch_tokenizer.tokenize(phonemized[0]))" ] }, { "cell_type": "markdown", "id": "fddfd47d-370c-4968-a166-578063047ace", "metadata": {}, "source": [ "### Scratch BPE Tokenizer" ] }, { "cell_type": "code", "execution_count": 9, "id": "637194b7-bbae-4e53-a0a1-16aab1660254", "metadata": {}, "outputs": [], "source": [ "hin_scratch_tokenizer = PreTrainedTokenizerFast.from_pretrained(\"trained_tokenizers/hindi_scratch_BPETokenizer/\")\n", "hin_phonemized_scratch_tokenizer = PreTrainedTokenizerFast.from_pretrained(\"trained_tokenizers/hindi_phonemized_scratch_BPETokenizer/\")" ] }, { "cell_type": "code", "execution_count": 10, "id": "c7cb49a5-a7a9-42bd-89f0-71865bd40a71", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "246\n", "['à¤ĩसर', 'à¥ĭ', 'Ġन', 'à¥ĩ', 'Ġà¤ļ', 'à¤Ĥ', 'द', 'à¥į', 'रय', 'ा', 'न', '-', '3', 'Ġम', 'ि', 'शन', 'Ġà¤ķ', 'à¥ĩ', 'Ġल', 'ि', 'à¤ı', 'Ġत', 'à¥Ģ', 'न', 'Ġम', 'à¥ģ', 'à¤ĸ', 'à¥į', 'य', 'Ġà¤īद', 'à¥į', 'द', 'à¥ĩ', 'श', 'à¥į', 'य', 'Ġन', 'ि', 'र', 'à¥į', 'ध', 'ा', 'र', 'ि', 'त', 'Ġà¤ķ', 'ि', 'à¤ı', 'Ġह', 'à¥Īà¤Ĥ,', 'Ġà¤ľ', 'ि', 'नम', 'à¥ĩà¤Ĥ', 'Ġश', 'ा', 'म', 'ि', 'ल', 'Ġह', 'à¥Īà¤Ĥ:', 'Ġल', 'à¥Īà¤Ĥ', 'डर', 'Ġà¤ķ', 'à¥Ģ', 'Ġà¤ļ', 'à¤Ĥ', 'द', 'à¥į', 'रम', 'ा', 'Ġà¤ķ', 'à¥Ģ', 'Ġसतह', 'Ġपर', 'Ġस', 'à¥ģ', 'रà¤ķ', 'à¥į', 'ष', 'ि', 'त', 'Ġà¤Ķर', 'Ġस', 'à¥ī', 'फ', 'à¥į', 'à¤Ł', 'Ġल', 'à¥Īà¤Ĥ', 'ड', 'िà¤Ĥ', 'à¤Ĺ', 'Ġà¤ķर', 'ा', 'न', 'ा।', 'Ġà¤ļ', 'à¤Ĥ', 'द', 'à¥į', 'रम', 'ा', 'Ġपर', 'Ġर', 'à¥ĭ', 'वर', 'Ġà¤ķ', 'à¥Ģ', 'Ġव', 'ि', 'à¤ļरण', 'Ġà¤ķ', 'à¥į', 'षमत', 'ा', 'à¤ĵ', 'à¤Ĥ', 'Ġà¤ķ', 'ा', 'Ġà¤ħवल', 'à¥ĭ', 'à¤ķन', 'Ġà¤Ķर', 'Ġप', 'à¥į', 'रदर', 'à¥į', 'शन', '।', 'Ġà¤ļ', 'à¤Ĥ', 'द', 'à¥į', 'रम', 'ा', 'Ġà¤ķ', 'à¥Ģ', 'Ġस', 'à¤Ĥ', 'रà¤ļन', 'ा', 'Ġà¤ķ', 'à¥ĭ', 'Ġब', 'à¥ĩ', 'हतर', 'Ġढ', 'à¤Ĥ', 'à¤Ĺ', 'Ġस', 'à¥ĩ', 'Ġसमà¤Ŀन', 'à¥ĩ', 'Ġà¤Ķर', 'Ġà¤īसà¤ķ', 'à¥ĩ', 'Ġव', 'ि', 'à¤ľ', 'à¥į', 'à¤ŀ', 'ा', 'न', 'Ġà¤ķ', 'à¥ĭ', 'Ġà¤ħà¤Ń', 'à¥į', 'य', 'ा', 'स', 'Ġम', 'à¥ĩà¤Ĥ', 'Ġल', 'ा', 'न', 'à¥ĩ', 'Ġà¤ķ', 'à¥ĩ', 'Ġल', 'ि', 'à¤ı', 'Ġà¤ļ', 'à¤Ĥ', 'द', 'à¥į', 'रम', 'ा', 'Ġà¤ķ', 'à¥Ģ', 'Ġसतह', 'Ġपर', 'Ġà¤īपलब', 'à¥į', 'ध', 'Ġर', 'ा', 'स', 'ा', 'यन', 'ि', 'à¤ķ', 'Ġà¤Ķर', 'Ġप', 'à¥į', 'र', 'ा', 'à¤ķ', 'à¥ĥ', 'त', 'ि', 'à¤ķ', 'Ġतत', 'à¥į', 'व', 'à¥ĭà¤Ĥ,', 'Ġम', 'ि', 'à¤Ł', 'à¥į', 'à¤Ł', 'à¥Ģ,', 'Ġप', 'ा', 'न', 'à¥Ģ', 'Ġà¤Ĩद', 'ि', 'Ġपर', 'Ġव', 'à¥Ī', 'à¤ľ', 'à¥į', 'à¤ŀ', 'ा', 'न', 'ि', 'à¤ķ', 'Ġप', 'à¥į', 'रय', 'à¥ĭ', 'à¤Ĺ', 'Ġà¤ķरन', 'ा।']\n" ] } ], "source": [ "print(len(hin_scratch_tokenizer.encode(test_string)))\n", "print(hin_scratch_tokenizer.tokenize(test_string))" ] }, { "cell_type": "code", "execution_count": 11, "id": "ab40aca4-2f79-4668-b465-e80cb8129a68", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "85\n", "['ɪs', 'ɾoËIJ', 'ĠneËIJ', 'ĠcÉĻndɾÉĻ', 'jaËIJn', 'ĠtiËIJn', 'ĠmɪÊĥÉĻn', 'ĠkeËIJ', 'ĠlɪeËIJ', 'ĠtiËIJn', 'ĠmÊĬkÊ°jÉĻ', 'ĠÊĬdËIJeËIJÊĥjÉĻ', 'ĠnɪɾdÊ°aËIJɾɪt', 'ĠkɪeËIJ', 'ĠhÉĽ', 'Ìĥ', 'ĠÉŁÉªnme', 'Ìĥ', 'ËIJ', 'ĠÊĥaËIJmɪl', 'ĠhÉĽ', 'Ìĥ', 'ĠlÉĽ', 'Ìĥ', 'ÉĸÉĻɾ', 'Ġki', 'ĠcÊĮndɾÉĻmaËIJ', 'Ġki', 'ĠsÊĮtÉĻh', 'ĠpÊĮɾ', 'ĠsÊĬɾÊĮkÊĥɪt', 'ĠÉĶËIJɾ', 'ĠsÉĶpÊ°ÊĪ', 'ĠlÉĽ', 'Ìĥ', 'Éĸi', 'Ìĥ', 'É¡', 'ĠkÉĻɾaËIJnaËIJ', 'ĠcÊĮndɾÉĻmaËIJ', 'ĠpÊĮɾ', 'ĠɾoËIJÊĭÉĻɾ', 'Ġki', 'ĠÊĭɪcÉĻɾÉĻɳ', 'ĠkÊĥÉĻmtaËIJw', 'ĠkaËIJ', 'ĠÊĮÊĭloËIJkÉĻn', 'ĠÉĶËIJɾ', 'ĠpɾÉĻdÊĮrÊĥÉĻn', 'ĠcÊĮndɾÉĻmaËIJ', 'Ġki', 'ĠsÊĮnɾÉĻcnaËIJ', 'ĠkoËIJ', 'ĠbeËIJhÉĻtÉĻɾ', 'ĠÉĸÊ°ÊĮÅĭÉ¡', 'ĠseËIJ', 'ĠsÊĮmÉĻÉŁÊ°neËIJ', 'ĠÉĶËIJɾ', 'ĠÊĬskeËIJ', 'ĠÊĭɪɡjaËIJn', 'ĠkoËIJ', 'ĠÊĮbÊ°jaËIJs', 'Ġme', 'Ìĥ', 'ËIJ', 'ĠlaËIJneËIJ', 'ĠkeËIJ', 'ĠlɪeËIJ', 'ĠcÊĮndɾÉĻmaËIJ', 'Ġki', 'ĠsÊĮtÉĻh', 'ĠpÊĮɾ', 'ĠÊĬpÉĻlÊĮbdÊ°', 'ĠɾaËIJsaËIJjnɪk', 'ĠÉĶËIJɾ', 'ĠpɾaËIJkɾɪtɪk', 'ĠtÊĮtÊĭo', 'Ìĥ', 'ĠmɪÊĪÊĪi', 'ĠpaËIJni', 'ĠaËIJdɪ', 'ĠpÊĮɾ', 'ĠÊĭÉĽËIJÉ¡jaËIJnɪk', 'ĠpɾÉĻjoËIJÉ¡', 'ĠkÊĮɾnaËIJ']\n" ] } ], "source": [ "print(len(hin_phonemized_scratch_tokenizer.encode(phonemized[0])))\n", "print(hin_phonemized_scratch_tokenizer.tokenize(phonemized[0]))" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "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.11.7" } }, "nbformat": 4, "nbformat_minor": 5 }