{ "nbformat": 4, "nbformat_minor": 0, "metadata": { "colab": { "provenance": [], "gpuType": "T4" }, "kernelspec": { "name": "python3", "display_name": "Python 3" }, "language_info": { "name": "python" }, "accelerator": "GPU", "widgets": { "application/vnd.jupyter.widget-state+json": { "cff3f3c2df9047a29a4cc53c909e17f5": { "model_module": "@jupyter-widgets/controls", "model_name": "HBoxModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HBoxView", "box_style": "", "children": [ "IPY_MODEL_2e8fa56b2f0d4cf1bdc6f532c50c190f", "IPY_MODEL_5869619651184a2689206be562386374", "IPY_MODEL_ca5e88279c7a45d4b59e8540d30e7f83" ], "layout": "IPY_MODEL_61baa048cc32418f942aa868ddbc4750" } }, "2e8fa56b2f0d4cf1bdc6f532c50c190f": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_5863131474db441c8156fb5cb7070bb8", "placeholder": "​", "style": "IPY_MODEL_e7952331f4ed4398b74bc21e065756ae", "value": "tokenizer_config.json: 100%" } }, "5869619651184a2689206be562386374": { "model_module": "@jupyter-widgets/controls", "model_name": "FloatProgressModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "FloatProgressModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "ProgressView", "bar_style": "success", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_dced0ce440c7407d9b3ab2da4afb088c", "max": 26, "min": 0, "orientation": "horizontal", "style": "IPY_MODEL_5c3cf3498e03440ba435716c3224b490", "value": 26 } }, "ca5e88279c7a45d4b59e8540d30e7f83": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_61d86dcedaa34db09874a8a8c8602807", "placeholder": "​", "style": "IPY_MODEL_264c323a7e2049dc95d74d248fe4b156", "value": " 26.0/26.0 [00:00<00:00, 1.40kB/s]" } }, "61baa048cc32418f942aa868ddbc4750": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "5863131474db441c8156fb5cb7070bb8": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "e7952331f4ed4398b74bc21e065756ae": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "dced0ce440c7407d9b3ab2da4afb088c": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "5c3cf3498e03440ba435716c3224b490": { "model_module": "@jupyter-widgets/controls", "model_name": "ProgressStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "ProgressStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "bar_color": null, "description_width": "" } }, "61d86dcedaa34db09874a8a8c8602807": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "264c323a7e2049dc95d74d248fe4b156": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "c61f7bad43ee4848a08e3a1e7a2913cf": { "model_module": "@jupyter-widgets/controls", "model_name": "HBoxModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HBoxView", "box_style": "", "children": [ "IPY_MODEL_27914cff1f524b4896137f58e70f18d4", "IPY_MODEL_ec7789741e3e46d38e13dd7146d3ff66", "IPY_MODEL_95248e5457cb41f69a5dafe6d80ef484" ], "layout": "IPY_MODEL_c92459d5b20c419e82f84d6399c21694" } }, "27914cff1f524b4896137f58e70f18d4": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_ecb16723844449d489f500478068ee9c", "placeholder": "​", "style": "IPY_MODEL_89342d13c6ab42c1911b82194d791c09", "value": "config.json: 100%" } }, "ec7789741e3e46d38e13dd7146d3ff66": { "model_module": "@jupyter-widgets/controls", "model_name": "FloatProgressModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "FloatProgressModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "ProgressView", "bar_style": "success", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_bb085da7425a41fcbb09458a493e8734", "max": 665, "min": 0, "orientation": "horizontal", "style": "IPY_MODEL_e964d14b5e894f008e36dab9aa0bd5f9", "value": 665 } }, "95248e5457cb41f69a5dafe6d80ef484": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_f40a8d88563c460f925549b8dce06132", "placeholder": "​", "style": "IPY_MODEL_c686b4329bd745c68b437fb51b642cbd", "value": " 665/665 [00:00<00:00, 34.9kB/s]" } }, "c92459d5b20c419e82f84d6399c21694": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "ecb16723844449d489f500478068ee9c": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "89342d13c6ab42c1911b82194d791c09": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "bb085da7425a41fcbb09458a493e8734": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "e964d14b5e894f008e36dab9aa0bd5f9": { "model_module": "@jupyter-widgets/controls", "model_name": "ProgressStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "ProgressStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "bar_color": null, "description_width": "" } }, "f40a8d88563c460f925549b8dce06132": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "c686b4329bd745c68b437fb51b642cbd": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "2a8fc823f4cf4eeebca0817028c245bb": { "model_module": "@jupyter-widgets/controls", "model_name": "HBoxModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HBoxView", "box_style": "", "children": [ "IPY_MODEL_efdec1225405418293a188d66e72beec", "IPY_MODEL_8b3eaae03aac4e619c9bb5976a254890", "IPY_MODEL_a171898a37c84bbf934c36f73b7c682a" ], "layout": "IPY_MODEL_8bbc4c8024624c30ad5947a3f8950b8d" } }, "efdec1225405418293a188d66e72beec": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_52b33c5fdf884272af17fc9d648b6172", "placeholder": "​", "style": "IPY_MODEL_203b11670bf6434e8c5874a206bdf7e5", "value": "vocab.json: 100%" } }, "8b3eaae03aac4e619c9bb5976a254890": { "model_module": "@jupyter-widgets/controls", "model_name": "FloatProgressModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "FloatProgressModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "ProgressView", "bar_style": "success", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_c184165d67064870af42921092d4f9d6", "max": 1042301, "min": 0, "orientation": "horizontal", "style": "IPY_MODEL_d634f099b1344f6b92ef160771a864fc", "value": 1042301 } }, "a171898a37c84bbf934c36f73b7c682a": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_493a1b6850914cb2a8ddc45f514b1b0a", "placeholder": "​", "style": "IPY_MODEL_cf445b1051ad4471904e01a5f136c6ae", "value": " 1.04M/1.04M [00:00<00:00, 10.2MB/s]" } }, "8bbc4c8024624c30ad5947a3f8950b8d": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "52b33c5fdf884272af17fc9d648b6172": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "203b11670bf6434e8c5874a206bdf7e5": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "c184165d67064870af42921092d4f9d6": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "d634f099b1344f6b92ef160771a864fc": { "model_module": "@jupyter-widgets/controls", "model_name": "ProgressStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "ProgressStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "bar_color": null, "description_width": "" } }, "493a1b6850914cb2a8ddc45f514b1b0a": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "cf445b1051ad4471904e01a5f136c6ae": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "3b550fcf150144d0bd337bc4433a91da": { "model_module": "@jupyter-widgets/controls", "model_name": "HBoxModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HBoxView", "box_style": "", "children": [ "IPY_MODEL_db83e83b5b67405cb051298016594e9c", "IPY_MODEL_4fc235a9b881432c84fde4315cf6103e", "IPY_MODEL_df9b7027d8a448ca927a2b6f9a422cf9" ], "layout": "IPY_MODEL_224a37899ac1439f8452fe4ab76d12b8" } }, "db83e83b5b67405cb051298016594e9c": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_3b3ac0fed02841d5ada86643a7052609", "placeholder": "​", "style": "IPY_MODEL_73ebb05357fb4c49bdc8e30eacb7da95", "value": "merges.txt: 100%" } }, "4fc235a9b881432c84fde4315cf6103e": { "model_module": "@jupyter-widgets/controls", "model_name": "FloatProgressModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "FloatProgressModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "ProgressView", "bar_style": "success", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_af686e6a89fb4fa9b8edf8a3af8a6459", "max": 456318, "min": 0, "orientation": "horizontal", "style": "IPY_MODEL_55c95c8ad0f44d819d957b201e3c1d3a", "value": 456318 } }, "df9b7027d8a448ca927a2b6f9a422cf9": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_1fb59ca2b23b48b2b54cd14b8b20f8bb", "placeholder": "​", "style": "IPY_MODEL_3fdeb36405c74f3f85afea3bcee76c5b", "value": " 456k/456k [00:00<00:00, 5.10MB/s]" } }, "224a37899ac1439f8452fe4ab76d12b8": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "3b3ac0fed02841d5ada86643a7052609": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "73ebb05357fb4c49bdc8e30eacb7da95": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "af686e6a89fb4fa9b8edf8a3af8a6459": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "55c95c8ad0f44d819d957b201e3c1d3a": { "model_module": "@jupyter-widgets/controls", "model_name": "ProgressStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "ProgressStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "bar_color": null, "description_width": "" } }, "1fb59ca2b23b48b2b54cd14b8b20f8bb": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "3fdeb36405c74f3f85afea3bcee76c5b": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "6b55d8084e2c44a9987871e2a03ecfb3": { "model_module": "@jupyter-widgets/controls", "model_name": "HBoxModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HBoxView", "box_style": "", "children": [ "IPY_MODEL_6dc17ba405834d6f91787698d9f75183", "IPY_MODEL_7c46fff5709e4e88817399ffeb11f081", "IPY_MODEL_561a69bd9db2482db540363256d29068" ], "layout": "IPY_MODEL_4cd93b84b316429d983af3cc94ab2d51" } }, "6dc17ba405834d6f91787698d9f75183": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_e39bfba09c5e414ba9a1b18218009e2c", "placeholder": "​", "style": "IPY_MODEL_9d8f2ddcaed348e28fcc79c376f85774", "value": "tokenizer.json: 100%" } }, "7c46fff5709e4e88817399ffeb11f081": { "model_module": "@jupyter-widgets/controls", "model_name": "FloatProgressModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "FloatProgressModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "ProgressView", "bar_style": "success", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_20c0f1c054cf41aebdecf3bf30b014cd", "max": 1355256, "min": 0, "orientation": "horizontal", "style": "IPY_MODEL_a306bf53f92243449690b6720c233f21", "value": 1355256 } }, "561a69bd9db2482db540363256d29068": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_aeeff0f27ca945c6be6c5d73f9b1be27", "placeholder": "​", "style": "IPY_MODEL_d89b3f104b7f4cbcb226cd087798e805", "value": " 1.36M/1.36M [00:00<00:00, 1.98MB/s]" } }, "4cd93b84b316429d983af3cc94ab2d51": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "e39bfba09c5e414ba9a1b18218009e2c": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "9d8f2ddcaed348e28fcc79c376f85774": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "20c0f1c054cf41aebdecf3bf30b014cd": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "a306bf53f92243449690b6720c233f21": { "model_module": "@jupyter-widgets/controls", "model_name": "ProgressStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "ProgressStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "bar_color": null, "description_width": "" } }, "aeeff0f27ca945c6be6c5d73f9b1be27": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "d89b3f104b7f4cbcb226cd087798e805": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } } } } }, "cells": [ { "cell_type": "markdown", "source": [ "# Get The data\n", "\n", "Data Downloaded from: https://huggingface.co/datasets/saillab/taco-datasets/tree/main/multilingual-instruction-tuning-dataset%20/multilingual-alpaca-52k-gpt-4" ], "metadata": { "id": "dLccp8dY3vCu" } }, { "cell_type": "code", "execution_count": 1, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 93 }, "id": "bhLIhptZ3fa5", "outputId": "54562d4a-1f92-419b-f15e-e03774eebdde" }, "outputs": [ { "output_type": "display_data", "data": { "text/plain": [ "" ], "text/html": [ "\n", " \n", " \n", " Upload widget is only available when the cell has been executed in the\n", " current browser session. Please rerun this cell to enable.\n", " \n", " " ] }, "metadata": {} }, { "output_type": "stream", "name": "stdout", "text": [ "Saving Amharic.json to Amharic.json\n", "User uploaded file \"Amharic.json\" with length 137273925 bytes\n" ] } ], "source": [ "from google.colab import files\n", "\n", "uploaded = files.upload()\n", "\n", "for fn in uploaded.keys():\n", " print('User uploaded file \"{name}\" with length {length} bytes'.format(\n", " name=fn, length=len(uploaded[fn])))" ] }, { "cell_type": "code", "source": [ "from google.colab import files\n", "\n", "uploaded = files.upload()\n", "\n", "for fn in uploaded.keys():\n", " print('User uploaded file \"{name}\" with length {length} bytes'.format(\n", " name=fn, length=len(uploaded[fn])))" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 93 }, "id": "ikHOwsmp7YiJ", "outputId": "78144c47-6ab8-4a11-e68d-bc3ccddffc3e" }, "execution_count": 9, "outputs": [ { "output_type": "display_data", "data": { "text/plain": [ "" ], "text/html": [ "\n", " \n", " \n", " Upload widget is only available when the cell has been executed in the\n", " current browser session. Please rerun this cell to enable.\n", " \n", " " ] }, "metadata": {} }, { "output_type": "stream", "name": "stdout", "text": [ "Saving tokenizer.pkl to tokenizer.pkl\n", "User uploaded file \"tokenizer.pkl\" with length 268822 bytes\n" ] } ] }, { "cell_type": "code", "source": [ "!pip install sacrebleu" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "J9nSNVKS7LtO", "outputId": "25ea6cf0-e9a6-4a6f-b572-f7d5b37bb2bf" }, "execution_count": 3, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Collecting sacrebleu\n", " Downloading sacrebleu-2.4.3-py3-none-any.whl.metadata (51 kB)\n", "\u001b[?25l \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m0.0/51.8 kB\u001b[0m \u001b[31m?\u001b[0m eta \u001b[36m-:--:--\u001b[0m\r\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m51.8/51.8 kB\u001b[0m \u001b[31m4.3 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", "\u001b[?25hCollecting portalocker (from sacrebleu)\n", " Downloading portalocker-2.10.1-py3-none-any.whl.metadata (8.5 kB)\n", "Requirement already satisfied: regex in /usr/local/lib/python3.10/dist-packages (from sacrebleu) (2024.9.11)\n", "Requirement already satisfied: tabulate>=0.8.9 in /usr/local/lib/python3.10/dist-packages (from sacrebleu) (0.9.0)\n", "Requirement already satisfied: numpy>=1.17 in /usr/local/lib/python3.10/dist-packages (from sacrebleu) (1.26.4)\n", "Collecting colorama (from sacrebleu)\n", " Downloading colorama-0.4.6-py2.py3-none-any.whl.metadata (17 kB)\n", "Requirement already satisfied: lxml in /usr/local/lib/python3.10/dist-packages (from sacrebleu) (5.3.0)\n", "Downloading sacrebleu-2.4.3-py3-none-any.whl (103 kB)\n", "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m104.0/104.0 kB\u001b[0m \u001b[31m8.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", "\u001b[?25hDownloading colorama-0.4.6-py2.py3-none-any.whl (25 kB)\n", "Downloading portalocker-2.10.1-py3-none-any.whl (18 kB)\n", "Installing collected packages: portalocker, colorama, sacrebleu\n", "Successfully installed colorama-0.4.6 portalocker-2.10.1 sacrebleu-2.4.3\n" ] } ] }, { "cell_type": "code", "source": [ "import os\n", "import csv\n", "import torch\n", "import sacrebleu\n", "from torch.utils.data import Dataset, DataLoader\n", "from transformers import BertTokenizer\n", "from torch import nn\n", "import matplotlib.pyplot as plt\n", "import json\n", "import pickle\n", "from collections import defaultdict\n", "\n", "from transformers import AutoTokenizer\n", "from tokenizers.pre_tokenizers import Whitespace" ], "metadata": { "id": "eGFfHxUj3sLQ" }, "execution_count": 4, "outputs": [] }, { "cell_type": "code", "source": [ "# Load the JSON data from a file\n", "with open('Amharic.json', 'r') as file:\n", " data = json.load(file)\n", "\n", "dataset = data[:1000]\n", "# Extract English and Amharic sentences\n", "sentence_pairs = [{'en':example['input'], 'am':example['output']} for example in dataset]" ], "metadata": { "id": "UWcPA3OJ3_M8" }, "execution_count": 5, "outputs": [] }, { "cell_type": "code", "source": [ "class BPETokenizer:\n", " def __init__(self, vocab_size=4000):\n", " self.vocab_size = vocab_size\n", " self.vocab = [\"<|endoftext|>\"]\n", " self.word_freqs = defaultdict(int)\n", " self.merges = {}\n", " self.tokenizer = AutoTokenizer.from_pretrained(\"gpt2\")\n", "\n", " def compute_pair_freqs(self,splits):\n", " pair_freqs = defaultdict(int)\n", " for word, freq in self.word_freqs.items():\n", " split = splits[word]\n", " if len(split) == 1:\n", " continue\n", " for i in range(len(split) - 1):\n", " pair = (split[i], split[i + 1])\n", " pair_freqs[pair] += freq\n", " return pair_freqs\n", "\n", " def merge_pair(self,a, b, splits):\n", " for word in self.word_freqs:\n", " split = splits[word]\n", " if len(split) == 1:\n", " continue\n", "\n", " i = 0\n", " while i < len(split) - 1:\n", " if split[i] == a and split[i + 1] == b:\n", " split = split[:i] + [a + b] + split[i + 2 :]\n", " else:\n", " i += 1\n", " splits[word] = split\n", " return splits\n", "\n", " def build_vocab(self, corpus):\n", " for text in corpus:\n", " self.tokenizer.backend_tokenizer.pre_tokenizer = Whitespace()\n", " text= ' Ġ'.join(text.split())\n", " words_with_offsets = self.tokenizer.backend_tokenizer.pre_tokenizer.pre_tokenize_str(text)\n", " new_words = [word for word, offset in words_with_offsets]\n", " for word in new_words:\n", " self.word_freqs[word] += 1\n", "\n", " alphabet = []\n", "\n", " for word in self.word_freqs.keys():\n", " for letter in word:\n", " if letter not in alphabet:\n", " alphabet.append(letter)\n", " alphabet.sort()\n", "\n", "\n", " # Add every unique character to the vocab\n", " for char in alphabet:\n", " if char not in self.vocab:\n", " self.vocab.append(char)\n", "\n", " splits = {word: [c for c in word] for word in self.word_freqs.keys()}\n", "\n", " while len(self.vocab) < self.vocab_size:\n", " pair_freqs = self.compute_pair_freqs(splits)\n", " best_pair = \"\"\n", " max_freq = None\n", " for pair, freq in pair_freqs.items():\n", " if max_freq is None or max_freq < freq:\n", " best_pair = pair\n", " max_freq = freq\n", " if len(best_pair) == 2:\n", " splits = self.merge_pair(best_pair[0],best_pair[1], splits)\n", " self.merges[best_pair] = best_pair[0] + best_pair[1]\n", " self.vocab.append(best_pair[0] + best_pair[1])\n", " else:\n", " break\n", "\n", "\n", " def tokenize(self,text):\n", " self.tokenizer.backend_tokenizer.pre_tokenizer = Whitespace()\n", " pre_tokenize_result = self.tokenizer._tokenizer.pre_tokenizer.pre_tokenize_str(text)\n", " pre_tokenized_text = [word for word, offset in pre_tokenize_result]\n", " splits = [[l for l in word] for word in pre_tokenized_text]\n", "\n", "\n", " for word in pre_tokenized_text:\n", " for char in word:\n", " if char not in self.vocab:\n", " self.vocab.append(char)\n", "\n", " for pair, merge in self.merges.items():\n", " for idx, split in enumerate(splits):\n", " i = 0\n", " while i < len(split) - 1:\n", " if split[i] == pair[0] and split[i + 1] == pair[1]:\n", " split = split[:i] + [merge] + split[i + 2 :]\n", " else:\n", " i += 1\n", " splits[idx] = split\n", "\n", " return sum(splits, [])\n", "\n", " def save(self, file_path):\n", " \"\"\"\n", " Save the tokenizer's state to a file.\n", " \"\"\"\n", " state = {\n", " 'vocab_size': self.vocab_size,\n", " 'vocab': self.vocab,\n", " 'word_freqs': dict(self.word_freqs),\n", " 'merges': self.merges\n", " }\n", " with open(file_path, 'wb') as f:\n", " pickle.dump(state, f)\n", "\n", " @classmethod\n", " def load(cls, file_path):\n", " \"\"\"\n", " Load a tokenizer's state from a file.\n", " \"\"\"\n", " with open(file_path, 'rb') as f:\n", " state = pickle.load(f)\n", "\n", " tokenizer = cls(vocab_size=state['vocab_size'])\n", " tokenizer.vocab = state['vocab']\n", " tokenizer.word_freqs = defaultdict(int, state['word_freqs'])\n", " tokenizer.merges = state['merges']\n", " return tokenizer" ], "metadata": { "id": "-uSKPfbk4BvK" }, "execution_count": 6, "outputs": [] }, { "cell_type": "code", "source": [ "tokenizer_file = \"tokenizer.pkl\"\n", "\n", "def encode(text):\n", " # Step 1: Encode, decode, and normalize the text\n", " text = text.encode('utf-8').decode('utf-8').lower()\n", " text = 'Ġ'.join(text.split())\n", "\n", " # Step 2: Load tokenizer\n", " tokenizer_instance = BPETokenizer.load(tokenizer_file)\n", "\n", " # Step 3: Create a dictionary for vocabulary for O(1) lookups\n", " vocab_dict = {token: idx for idx, token in enumerate(tokenizer_instance.vocab)}\n", "\n", " # Step 4: Tokenize the text\n", " tokens = tokenizer_instance.tokenize(text)\n", "\n", " # Step 5: Generate token IDs efficiently\n", " unknown_token_id = len(tokenizer_instance.vocab)\n", " token_ids = [vocab_dict.get(t, unknown_token_id) for t in tokens]\n", "\n", " return token_ids\n", "\n", "def decode(token_ids):\n", " tokenizer_instance = BPETokenizer.load(tokenizer_file)\n", " tokens = []\n", " for id in token_ids:\n", " if 0 <= id < len(tokenizer_instance.vocab):\n", " tokens.append(tokenizer_instance.vocab[id])\n", " else:\n", " # Handle out-of-vocabulary token IDs\n", " tokens.append('')\n", " decoded_string = ''.join(tokens)\n", " decoded_string = decoded_string.replace('Ġ', ' ').strip()\n", " return decoded_string" ], "metadata": { "id": "VHpN-MOq4EGZ" }, "execution_count": 10, "outputs": [] }, { "cell_type": "code", "source": [ "def tokenize_pair(pair, tokenizer):\n", " \"\"\"\n", " Tokenize a pair of English and Amharic sentences using custom tokenizers.\n", "\n", " Args:\n", " pair (dict): A dictionary with 'en' and 'am' keys for English and Amharic sentences.\n", " tokenizer (function): Custom English + Amharic tokenizer function.\n", "\n", " Returns:\n", " dict: Tokenized inputs for both languages.\n", " \"\"\"\n", " en_tokens = tokenizer(pair['en'])\n", " am_tokens = tokenizer(pair['am'])\n", "\n", " return {\n", " 'en_input_ids': torch.tensor(en_tokens, dtype=torch.long),\n", " 'am_input_ids': torch.tensor(am_tokens, dtype=torch.long),\n", " }\n", "\n", "# Preprocess data\n", "tokenized_data = [tokenize_pair(pair, encode) for pair in sentence_pairs]" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 301, "referenced_widgets": [ "cff3f3c2df9047a29a4cc53c909e17f5", "2e8fa56b2f0d4cf1bdc6f532c50c190f", "5869619651184a2689206be562386374", "ca5e88279c7a45d4b59e8540d30e7f83", "61baa048cc32418f942aa868ddbc4750", "5863131474db441c8156fb5cb7070bb8", "e7952331f4ed4398b74bc21e065756ae", "dced0ce440c7407d9b3ab2da4afb088c", "5c3cf3498e03440ba435716c3224b490", "61d86dcedaa34db09874a8a8c8602807", "264c323a7e2049dc95d74d248fe4b156", "c61f7bad43ee4848a08e3a1e7a2913cf", "27914cff1f524b4896137f58e70f18d4", "ec7789741e3e46d38e13dd7146d3ff66", "95248e5457cb41f69a5dafe6d80ef484", "c92459d5b20c419e82f84d6399c21694", "ecb16723844449d489f500478068ee9c", "89342d13c6ab42c1911b82194d791c09", "bb085da7425a41fcbb09458a493e8734", "e964d14b5e894f008e36dab9aa0bd5f9", "f40a8d88563c460f925549b8dce06132", "c686b4329bd745c68b437fb51b642cbd", "2a8fc823f4cf4eeebca0817028c245bb", "efdec1225405418293a188d66e72beec", "8b3eaae03aac4e619c9bb5976a254890", "a171898a37c84bbf934c36f73b7c682a", "8bbc4c8024624c30ad5947a3f8950b8d", "52b33c5fdf884272af17fc9d648b6172", "203b11670bf6434e8c5874a206bdf7e5", "c184165d67064870af42921092d4f9d6", "d634f099b1344f6b92ef160771a864fc", "493a1b6850914cb2a8ddc45f514b1b0a", "cf445b1051ad4471904e01a5f136c6ae", "3b550fcf150144d0bd337bc4433a91da", "db83e83b5b67405cb051298016594e9c", "4fc235a9b881432c84fde4315cf6103e", "df9b7027d8a448ca927a2b6f9a422cf9", "224a37899ac1439f8452fe4ab76d12b8", "3b3ac0fed02841d5ada86643a7052609", "73ebb05357fb4c49bdc8e30eacb7da95", "af686e6a89fb4fa9b8edf8a3af8a6459", "55c95c8ad0f44d819d957b201e3c1d3a", "1fb59ca2b23b48b2b54cd14b8b20f8bb", "3fdeb36405c74f3f85afea3bcee76c5b", "6b55d8084e2c44a9987871e2a03ecfb3", "6dc17ba405834d6f91787698d9f75183", "7c46fff5709e4e88817399ffeb11f081", "561a69bd9db2482db540363256d29068", "4cd93b84b316429d983af3cc94ab2d51", "e39bfba09c5e414ba9a1b18218009e2c", "9d8f2ddcaed348e28fcc79c376f85774", "20c0f1c054cf41aebdecf3bf30b014cd", "a306bf53f92243449690b6720c233f21", "aeeff0f27ca945c6be6c5d73f9b1be27", "d89b3f104b7f4cbcb226cd087798e805" ] }, "id": "JzqIqXq_4GGD", "outputId": "2d33d5ae-eee3-4892-bd1e-72d57569d757" }, "execution_count": 11, "outputs": [ { "output_type": "stream", "name": "stderr", "text": [ "/usr/local/lib/python3.10/dist-packages/huggingface_hub/utils/_auth.py:94: UserWarning: \n", "The secret `HF_TOKEN` does not exist in your Colab secrets.\n", "To authenticate with the Hugging Face Hub, create a token in your settings tab (https://huggingface.co/settings/tokens), set it as secret in your Google Colab and restart your session.\n", "You will be able to reuse this secret in all of your notebooks.\n", "Please note that authentication is recommended but still optional to access public models or datasets.\n", " warnings.warn(\n" ] }, { "output_type": "display_data", "data": { "text/plain": [ "tokenizer_config.json: 0%| | 0.00/26.0 [00:00:12: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", " 'en_input_ids': torch.tensor(pad_sequence(pair['en_input_ids'], max_length)),\n", ":13: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n", " 'am_input_ids': torch.tensor(pad_sequence(pair['am_input_ids'], max_length)),\n" ] } ] }, { "cell_type": "code", "source": [ "class SimpleSeq2Seq(nn.Module):\n", " def __init__(self, input_dim, embedding_dim, hidden_dim, output_dim):\n", " super(SimpleSeq2Seq, self).__init__()\n", "\n", " # Encoder\n", " self.encoder_embedding = nn.Embedding(input_dim, embedding_dim)\n", " self.encoder_lstm = nn.LSTM(embedding_dim, hidden_dim, batch_first=True)\n", "\n", " # Decoder\n", " self.decoder_embedding = nn.Embedding(output_dim, embedding_dim)\n", " self.decoder_lstm = nn.LSTM(embedding_dim, hidden_dim, batch_first=True)\n", "\n", " # Output Layer\n", " self.fc_out = nn.Linear(hidden_dim, output_dim)\n", "\n", " def forward(self, en_input, am_input):\n", " # Encoder\n", " en_embedded = self.encoder_embedding(en_input)\n", " _, (hidden, cell) = self.encoder_lstm(en_embedded)\n", "\n", " # Decoder\n", " am_embedded = self.decoder_embedding(am_input)\n", " decoder_output, _ = self.decoder_lstm(am_embedded, (hidden, cell))\n", "\n", " # Output Layer\n", " output = self.fc_out(decoder_output)\n", " return output\n", "\n", "\n", "# Define dataset and dataloader\n", "class TranslationDataset(Dataset):\n", " def __init__(self, data):\n", " self.data = data\n", "\n", " def __len__(self):\n", " return len(self.data)\n", "\n", " def __getitem__(self, idx):\n", " return self.data[idx]\n", "\n", "dataset = TranslationDataset(tokenized_data2)\n", "dataloader = DataLoader(dataset, batch_size=32, shuffle=True)" ], "metadata": { "id": "nUo_JXBY4K7E" }, "execution_count": 16, "outputs": [] }, { "cell_type": "code", "source": [ "# Initialize model, loss, and optimizer\n", "input_dim = BPETokenizer().vocab_size #len(en_tokenizer)\n", "output_dim = BPETokenizer().vocab_size #len(am_tokenizer)\n", "embedding_dim = 256\n", "hidden_dim = 512\n", "\n", "device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')\n", "model = SimpleSeq2Seq(input_dim, embedding_dim, hidden_dim, output_dim).to(device)\n", "loss_fn = nn.CrossEntropyLoss(ignore_index=0) # Ignore padding tokens\n", "optimizer = torch.optim.Adam(model.parameters())" ], "metadata": { "id": "JNOAMOC64T40" }, "execution_count": 17, "outputs": [] }, { "cell_type": "code", "source": [ "import torch\n", "import os\n", "import csv\n", "import sacrebleu\n", "import random\n", "\n", "# Training setup\n", "epochs = 5\n", "early_stopping_patience = 5\n", "best_loss = float('inf')\n", "patience_counter = 0\n", "save_dir = \"./BPE_Q1_checkpoints\"\n", "os.makedirs(save_dir, exist_ok=True)\n", "results_file = \"training_results.csv\"\n", "\n", "# Save training metadata (only once at the beginning)\n", "with open(results_file, mode='w', newline='') as file:\n", " writer = csv.writer(file)\n", " writer.writerow([\"Epoch\", \"Train Loss\", \"BLEU\", \"CHRF\"])\n", "\n", "# Mixed Precision Setup (if using compatible hardware)\n", "scaler = torch.cuda.amp.GradScaler()\n", "\n", "# Training loop\n", "losses, bleu_scores, chrf_scores = [], [], []\n", "for epoch in range(epochs):\n", " model.train()\n", " total_loss = 0\n", " for batch in dataloader:\n", " # Randomly select direction (0 for English to Amharic, 1 for Amharic to English)\n", " direction = random.choice([0, 1])\n", "\n", " if direction == 0: # English to Amharic\n", " en_input = batch['en_input_ids'].to(device)\n", " am_input = batch['am_input_ids'].to(device)\n", " else: # Amharic to English\n", " en_input = batch['am_input_ids'].to(device) # Reverse the input\n", " am_input = batch['en_input_ids'].to(device) # Reverse the target\n", "\n", " optimizer.zero_grad()\n", "\n", " # Mixed Precision Forward and Backward Pass\n", " with torch.cuda.amp.autocast():\n", " output = model(en_input, am_input)\n", " loss = loss_fn(output.view(-1, output_dim), am_input.view(-1))\n", "\n", " # Backward pass with scaler\n", " scaler.scale(loss).backward()\n", " scaler.step(optimizer)\n", " scaler.update()\n", "\n", " total_loss += loss.item()\n", "\n", " avg_loss = total_loss / len(dataloader)\n", " losses.append(avg_loss)\n", "\n", " # Validation metrics (only at the end of the epoch)\n", " model.eval()\n", " with torch.no_grad():\n", " references, hypotheses = [], []\n", " for batch in dataloader:\n", " # Alternate between English-to-Amharic and Amharic-to-English for validation\n", " direction = random.choice([0, 1])\n", "\n", " if direction == 0: # English to Amharic\n", " en_input = batch['en_input_ids'].to(device)\n", " am_input = batch['am_input_ids'].to(device)\n", " else: # Amharic to English\n", " en_input = batch['am_input_ids'].to(device)\n", " am_input = batch['en_input_ids'].to(device)\n", "\n", " output = model(en_input, am_input)\n", " predicted = output.argmax(dim=-1).cpu().tolist()\n", "\n", " references.extend(batch['am_input_ids'].tolist())\n", " hypotheses.extend(predicted)\n", "\n", " # Decode for BLEU/CHRF scoring (after full batch)\n", " references = [[decode(ref)] for ref in references]\n", " hypotheses = [decode(hyp) for hyp in hypotheses]\n", "\n", " bleu = sacrebleu.corpus_bleu(hypotheses, references).score\n", " chrf = sacrebleu.corpus_chrf(hypotheses, references).score\n", " bleu_scores.append(bleu)\n", " chrf_scores.append(chrf)\n", "\n", " # Log results (only at the end of the epoch)\n", " print(f\"Epoch {epoch + 1}/{epochs}, Loss: {avg_loss:.4f}, BLEU: {bleu:.4f}, CHRF: {chrf:.4f}\")\n", " with open(results_file, mode='a', newline='') as file:\n", " writer = csv.writer(file)\n", " writer.writerow([epoch + 1, avg_loss, bleu, chrf])\n", "\n", " # Save model if it improves\n", " if avg_loss < best_loss:\n", " best_loss = avg_loss\n", " torch.save(model.state_dict(), os.path.join(save_dir, f\"model_epoch_{epoch + 1}.pt\"))\n", " patience_counter = 0\n", " else:\n", " patience_counter += 1\n", " if patience_counter >= early_stopping_patience:\n", " print(\"Early stopping triggered.\")\n", " break\n" ], "metadata": { "id": "N-w1o56Y4Wvq" }, "execution_count": null, "outputs": [] }, { "cell_type": "code", "source": [ "# Plot training results\n", "plt.figure(figsize=(12, 6))\n", "plt.plot(range(1, len(losses) + 1), losses, label=\"Loss\")\n", "plt.xlabel(\"Epoch\")\n", "plt.ylabel(\"Score\")\n", "plt.title(\"Training Progress\")\n", "plt.legend()\n", "plt.show()" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 564 }, "id": "6lggIgdo_N_v", "outputId": "5d82bf6c-a694-4567-b53e-60f899da1088" }, "execution_count": 19, "outputs": [ { "output_type": "display_data", "data": { "text/plain": [ "
" ], "image/png": "iVBORw0KGgoAAAANSUhEUgAAA9wAAAIjCAYAAADx4xNlAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAABgA0lEQVR4nO3dd3hUdf728XsmvUMKECCBBJBepCeAqKCIWBAQRFR6s6+7q+LjWnfFn33XAkhHQUAQ7CAWauhNpEkJEHpCSSVt5jx/AJGQAEnI5Mwk79d1zUVycmZyJ5xr9Oacz/dYDMMwBAAAAAAASpXV7AAAAAAAAJRHFG4AAAAAAByAwg0AAAAAgANQuAEAAAAAcAAKNwAAAAAADkDhBgAAAADAASjcAAAAAAA4AIUbAAAAAAAHoHADAAAAAOAAFG4AAErBoEGDVLt27RI995VXXpHFYindQAAAwHQUbgBAuWaxWIr0WLp0qdlRTTFo0KB8v4fAwEA1b95c7777rrKyssyOBwCAS7MYhmGYHQIAAEf5/PPP830+Y8YMLVmyRJ999lm+7bfddpuqVq1a4u+Tk5Mju90uLy+vYj83NzdXubm58vb2LvH3L6lBgwZp9uzZmjRpkiTp7Nmzmj9/vpYuXap+/fpp9uzZZZ4JAIDygsINAKhQHn/8cX388ce61n/+MjIy5OvrW0apzDNo0CDNmzdPaWlpedvsdrvatWunDRs26MiRI6pevXqB5xmGoczMTPn4+JRJzory9wEAKF+4pBwAUOHdfPPNatKkiTZu3KibbrpJvr6+euGFFyRJX3/9tXr06KHq1avLy8tLderU0euvvy6bzZbvNS6f4T5w4IAsFoveeecdffrpp6pTp468vLzUpk0brV+/Pt9zC5vhtlgsevzxx7Vw4UI1adJEXl5eaty4sRYtWlQg/9KlS9W6dWt5e3urTp06mjBhwnXNhVutVt188815P4ck1a5dW3fddZcWL16s1q1by8fHRxMmTJAk7d+/X/fff7+Cg4Pl6+ur9u3b6/vvvy/wugcPHtQ999wjPz8/ValSRX/729+0ePHiApf0X+3vIysrSy+//LLq1q0rLy8vRURE6Nlnny1w+fuSJUvUsWNHVapUSf7+/qpfv37ea1z04YcfqnHjxvL19VXlypXVunVrzZo1q0S/MwAACuNudgAAAJzBqVOn1L17dz3wwAN66KGH8i4vnzZtmvz9/fXMM8/I399fv/76q1566SWlpKTo7bffvubrzpo1S6mpqRo5cqQsFoveeust9erVS/v375eHh8dVn7ty5Up99dVXevTRRxUQEKD//e9/6t27tw4dOqSQkBBJ0ubNm3XHHXcoPDxcr776qmw2m1577TWFhYVd1+9j3759kpT3fSRp9+7d6t+/v0aOHKnhw4erfv36OnHihGJjY5WRkaEnn3xSISEhmj59uu655x7NmzdP9913nyQpPT1dt956q44dO6annnpK1apV06xZs/Tbb78V+v0L+/uw2+265557tHLlSo0YMUINGzbUtm3b9P777+vPP//UwoULJUnbt2/XXXfdpWbNmum1116Tl5eX9u7dq1WrVuW9/sSJE/Xkk0+qT58+euqpp5SZmanff/9da9eu1YMPPnhdvzsAAPIYAABUII899phx+X/+OnfubEgyxo8fX2D/jIyMAttGjhxp+Pr6GpmZmXnbBg4caNSqVSvv8/j4eEOSERISYpw+fTpv+9dff21IMr799tu8bS+//HKBTJIMT09PY+/evXnbtm7dakgyPvzww7xtd999t+Hr62scOXIkb9uePXsMd3f3Aq9ZmIEDBxp+fn5GYmKikZiYaOzdu9d44403DIvFYjRr1ixvv1q1ahmSjEWLFuV7/tNPP21IMlasWJG3LTU11YiKijJq165t2Gw2wzAM49133zUkGQsXLszb79y5c0aDBg0MScZvv/2Wt/1Kfx+fffaZYbVa830vwzCM8ePHG5KMVatWGYZhGO+//74hyUhMTLziz33vvfcajRs3vubvBwCA68El5QAASPLy8tLgwYMLbL90Rjk1NVVJSUnq1KmTMjIytGvXrmu+br9+/VS5cuW8zzt16iTp/GXY19K1a1fVqVMn7/NmzZopMDAw77k2m00///yzevbsmW/Oum7duurevfs1X/+i9PR0hYWFKSwsTHXr1tULL7ygmJgYLViwIN9+UVFR6tatW75tP/zwg9q2bauOHTvmbfP399eIESN04MAB7dixQ5K0aNEi1ahRQ/fcc0/eft7e3ho+fHihmQr7+/jyyy/VsGFDNWjQQElJSXmPW2+9VZLyzpZXqlRJ0vlxALvdXujrV6pUSYcPHy5weT8AAKWJwg0AgKQaNWrI09OzwPbt27frvvvuU1BQkAIDAxUWFqaHHnpIkpScnHzN142MjMz3+cXyfebMmWI/9+LzLz735MmTOnfunOrWrVtgv8K2XYm3t7eWLFmiJUuWaPny5UpISNCqVasUHR2db7+oqKgCzz148KDq169fYHvDhg3zvn7xzzp16hSYK79SzsL+Pvbs2aPt27fn/ePAxccNN9wg6fzvQzr/jxwdOnTQsGHDVLVqVT3wwAOaO3duvvL93HPPyd/fX23btlW9evX02GOP5bvkHACA0sAMNwAAUqGrbZ89e1adO3dWYGCgXnvtNdWpU0fe3t7atGmTnnvuuSuePb2Um5tboduNItwk5HqeWxxubm7q2rXrNfcrqxXJr/S97Ha7mjZtqvfee6/Q50REROQ9d/ny5frtt9/0/fffa9GiRZozZ45uvfVW/fTTT3Jzc1PDhg21e/dufffdd1q0aJHmz5+vTz75RC+99JJeffVVh/5sAICKg8INAMAVLF26VKdOndJXX32lm266KW97fHy8ian+UqVKFXl7e2vv3r0FvlbYNkeoVauWdu/eXWD7xcvta9Wqlffnjh07ZBhGvrPcxclZp04dbd26VV26dLnmCuxWq1VdunRRly5d9N577+mNN97Q//t//0+//fZb3j8u+Pn5qV+/furXr5+ys7PVq1cv/ec//9GYMWNMuSc6AKD84ZJyAACu4OIZ5kvPKGdnZ+uTTz4xK1I+F89ML1y4UEePHs3bvnfvXv34449lkuHOO+/UunXrtHr16rxt6enp+vTTT1W7dm01atRIktStWzcdOXJE33zzTd5+mZmZmjhxYpG/V9++fXXkyJFCn3Pu3Dmlp6dLkk6fPl3g6y1atJCkvNuHnTp1Kt/XPT091ahRIxmGoZycnCJnAgDgajjDDQDAFcTGxqpy5coaOHCgnnzySVksFn322Welfkn39XjllVf0008/qUOHDho9erRsNps++ugjNWnSRFu2bHH493/++ef1xRdfqHv37nryyScVHBys6dOnKz4+XvPnz5fVev7f9keOHKmPPvpI/fv311NPPaXw8HDNnDkz70xyUe4Z/vDDD2vu3LkaNWqUfvvtN3Xo0EE2m027du3S3Llz8+4R/tprr2n58uXq0aOHatWqpZMnT+qTTz5RzZo18xZ3u/3221WtWjV16NBBVatW1c6dO/XRRx+pR48eCggIcNwvDABQoVC4AQC4gpCQ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\n" }, "metadata": {} } ] }, { "cell_type": "code", "source": [ "# Plot training results\n", "plt.figure(figsize=(12, 6))\n", "plt.plot(range(1, len(bleu_scores) + 1), bleu_scores, label=\"BLEU\")\n", "plt.xlabel(\"Epoch\")\n", "plt.ylabel(\"Score\")\n", "plt.title(\"Training Progress\")\n", "plt.legend()\n", "plt.show()" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 564 }, "id": "cWcgtkD9HjMb", "outputId": "5c0fb08e-70fa-4d47-cae9-1e2b8b809e1b" }, "execution_count": 20, "outputs": [ { "output_type": "display_data", "data": { "text/plain": [ "
" ], "image/png": "iVBORw0KGgoAAAANSUhEUgAAA+QAAAIjCAYAAACKx9GpAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAABvsElEQVR4nO3dd3wUZeLH8e+m94QkpAAh9NBBEQhWFBSwougBooJS1EOsdwL+bKAnnnqinoqCBZQmFvBsIKKAIk06CCGB0ElCTc+m7Pz+2LCwkmgISWaz+bxfr7w0s7ObJ4xr8uGZecZiGIYhAAAAAABQozzMHgAAAAAAAHURQQ4AAAAAgAkIcgAAAAAATECQAwAAAABgAoIcAAAAAAATEOQAAAAAAJiAIAcAAAAAwAQEOQAAAAAAJiDIAQAAAAAwAUEOAEANGTZsmJo0aVKp5z777LOyWCxVOyAAAGAqghwAUOdZLJYKfSxdutTsoZpi2LBhTn8OISEh6tSpk/7zn//IarWaPTwAAGoti2EYhtmDAADATDNnznT6/KOPPtLixYv18ccfO22/+uqrFR0dXemvU1RUJJvNJl9f33N+bnFxsYqLi+Xn51fpr19Zw4YN09y5c/Xee+9Jkk6ePKnPP/9cS5cu1cCBAzV37twaHxMAAO6AIAcA4A8eeOABvfXWW/qrH5F5eXkKCAiooVGZZ9iwYfrss8+Uk5Pj2Gaz2dS9e3f99ttvOnjwoBo0aHDW8wzDUEFBgfz9/WtknHXleAAA3AenrAMAUAE9e/ZU+/bttW7dOl1++eUKCAjQE088IUn68ssvdd1116lBgwby9fVV8+bN9dxzz6mkpMTpNf54DfmePXtksVj0yiuvaOrUqWrevLl8fX3VtWtXrV271um5ZV1DbrFY9MADD2jBggVq3769fH191a5dOy1cuPCs8S9dulQXXXSR/Pz81Lx5c7377rvndV26h4eHevbs6fg+JKlJkya6/vrrtWjRIl100UXy9/fXu+++K0navXu3brvtNoWHhysgIECJiYn65ptvznrdvXv36sYbb1RgYKCioqL0yCOPaNGiRWddMvBnx8NqteqZZ55RixYt5Ovrq7i4OD3++ONnnV6/ePFiXXrppQoLC1NQUJASEhIcr3HKf//7X7Vr104BAQGqV6+eLrroIs2ePbtSf2YAAPyRl9kDAACgtjh27Jj69eunQYMG6Y477nCcvj59+nQFBQXp0UcfVVBQkH788Uc9/fTTysrK0ssvv/yXrzt79mxlZ2fr3nvvlcVi0UsvvaRbbrlFu3fvlre3958+95dfftEXX3yhv//97woODtYbb7yhAQMGaN++fYqIiJAkbdiwQX379lVsbKwmTJigkpISTZw4UfXr1z+vP49du3ZJkuPrSFJSUpIGDx6se++9VyNHjlRCQoLS09N18cUXKy8vTw8++KAiIiI0Y8YM3Xjjjfrss8908803S5Jyc3N11VVX6fDhw3rooYcUExOj2bNn66effirz65d1PGw2m2688Ub98ssvGjVqlNq0aaMtW7Zo8uTJ2rlzpxYsWCBJ2rZtm66//np17NhREydOlK+vr1JSUrRixQrH60+bNk0PPvigbr31Vj300EMqKCjQ5s2btXr1at1+++3n9WcHAIAkyQAAAE5Gjx5t/PFH5BVXXGFIMt55552z9s/Lyztr27333msEBAQYBQUFjm1Dhw414uPjHZ+npqYakoyIiAjj+PHjju1ffvmlIcn46quvHNueeeaZs8YkyfDx8TFSUlIc2zZt2mRIMv773/86tt1www1GQECAcfDgQce25ORkw8vL66zXLMvQoUONwMBA48iRI8aRI0eMlJQU44UXXjAsFovRsWNHx37x8fGGJGPhwoVOz3/44YcNScbPP//s2JadnW00bdrUaNKkiVFSUmIYhmH85z//MSQZCxYscOyXn59vtG7d2pBk/PTTT47t5R2Pjz/+2PDw8HD6WoZhGO+8844hyVixYoVhGIYxefJkQ5Jx5MiRcr/vm266yWjXrt1f/vkAAFBZnLIOAEAF+fr66u677z5r+5nXSGdnZ+vo0aO67LLLlJeXpx07dvzl6w4cOFD16tVzfH7ZZZdJsp/m/Vd69+6t5s2bOz7v2LGjQkJCHM8tKSnRDz/8oP79+ztd592iRQv169fvL1//lNzcXNWvX1/169dXixYt9MQTT6hHjx6aP3++035NmzZVnz59nLZ9++236tatmy699FLHtqCgII0aNUp79uzR77//LklauHChGjZsqBtvvNGxn5+fn0aOHFnmmMo6Hp9++qnatGmj1q1b6+jRo46Pq666SpIcs+1hYWGS7Jcb2Gy2Ml8/LCxMBw4cOOvyAQAAqgpBDgBABTVs2FA+Pj5nbd+2bZtuvvlmhYaGKiQkRPXr19cdd9whScrMzPzL123cuLHT56fi/MSJE+f83FPPP/XcjIwM5efnq0WLFmftV9a28vj5+Wnx4sVavHixli9frv3792vFihVq1qyZ035NmzY967l79+5VQkLCWdvbtGnjePzUP5s3b37Wde3ljbOs45GcnKxt27Y5/vLg1EerVq0k2f88JPtfglxyySUaMWKEoqOjNWjQIM2bN88pzseOHaugoCB169ZNLVu21OjRo51OaQcA4HxxDTkAABVU1mrhJ0+e1BVXXKGQkBBNnDhRzZs3l5+fn9avX6+xY8eWO/t6Jk9PzzK3GxW4Ecr5PPdceHp6qnfv3n+5X02tqF7e17LZbOrQoYNeffXVMp8TFxfneO7y5cv1008/6ZtvvtHChQv1ySef6KqrrtL3338vT09PtWnTRklJSfr666+1cOFCff7553r77bf19NNPa8KECdX6vQEA6gaCHACA87B06VIdO3ZMX3zxhS6//HLH9tTUVBNHdVpUVJT8/PyUkpJy1mNlbasO8fHxSkpKOmv7qdP54+PjHf/8/fffZRiG0yz5uYyzefPm2rRpk3r16vWXK8h7eHioV69e6tWrl1599VW98MIL+r//+z/99NNPjr98CAwM1MCBAzVw4EAVFhbqlltu0b/+9S+NHz/elHvCAwDcC6esAwBwHk7NUJ85I11YWKi3337brCE5OTWzvWDBAh06dMixPSUlRd99912NjOHaa6/VmjVrtHLlSse23NxcTZ06VU2aNFHbtm0lSX369NHBgwf1v//9z7FfQUGBpk2bVuGv9be//U0HDx4s8zn5+fnKzc2VJB0/fvysxzt37ixJjtujHTt2zOlxHx8ftW3bVoZhqKioqMJjAgCgPMyQAwBwHi6++GLVq1dPQ4cO1YMPPiiLxaKPP/64yk8ZPx/PPvusvv/+e11yySW6//77VVJSojfffFPt27fXxo0bq/3rjxs3TnPmzFG/fv304IMPKjw8XDNmzFBqaqo+//xzeXjY5wfuvfdevfnmmxo8eLAeeughxcbGatasWY6Z6IrcM/3OO+/UvHnzdN999+mnn37SJZdcopKSEu3YsUPz5s1z3CN94sSJWr58ua677jrFx8crIyNDb7/9tho1auRYfO6aa65RTEyMLrnkEkVHR2v79u168803dd111yk4OLj6/sAAAHUG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Oe3He6lqLVu2TKNHj9aqVau0ePFiFRUV6ZprrlFubm65z/n11181ePBgDR8+XBs2bFD//v3Vv39/bd261bHPSy+9pDfeeEPvvPOOVq9ercDAQPXp00cFBQU18W25lcoco6VLl2rw4MH66aeftHLlSsXFxemaa67RwYMHnfbr27ev0/tpzpw51f3tuK3KHCdJCgkJcToGe/fudXqc91LVqsxx+uKLL5yO0datW+Xp6XnWzyfeT1WjUaNGevHFF7Vu3Tr99ttvuuqqq3TTTTdp27ZtZe7vtj+TDFQrScb8+fP/dJ/HH3/caNeundO2gQMHGn369HF83q1bN2P06NGOz0tKSowGDRoYkyZNqtLx1lUVOU5ladu2rTFhwgTH588884zRqVOnqhsYnFTkOP3000+GJOPEiRPl7sP7qfpU5r00f/58w2KxGHv27HFs471U/TIyMgxJxrJly8rd529/+5tx3XXXOW3r3r27ce+99xqGYRg2m82IiYkxXn75ZcfjJ0+eNHx9fY05c+ZUz8DrkIocoz8qLi42goODjRkzZji2DR061LjpppuqYYQwjIodpw8//NAIDQ0t93HeS9WvMu+nyZMnG8HBwUZOTo5jG++n6lWvXj3jvffeK/Mxd/2ZxAy5C1i5cqV69+7ttK1Pnz5auXKlJKmwsFDr1q1z2sfDw0O9e/d27IOaZ7PZlJ2drfDwcKftycnJatCggZo1a6YhQ4Zo3759Jo2wbuvcubNiY2N19dVXa8WKFY7tvJ9cz/vvv6/evXsrPj7eaTvvpeqVmZkpSWf9P+xMf/XzKTU1VWlpaU77hIaGqnv37ryfqkBFjtEf5eXlqaio6KznLF26VFFRUUpISND999+vY8eOVelY67KKHqecnBzFx8crLi7urFlA3kvVrzLvp/fff1+DBg1SYGCg03beT1WvpKREc+fOVW5urnr06FHmPu76M4kgdwFpaWmKjo522hYdHa2srCzl5+fr6NGjKikpKXOfP14Xi5rzyiuvKCcnR3/7298c27p3767p06dr4cKFmjJlilJTU3XZZZcpOzvbxJHWLbGxsXrnnXf0+eef6/PPP1dcXJx69uyp9evXSxLvJxdz6NAhfffddxoxYoTTdt5L1ctms+nhhx/WJZdcovbt25e7X3k/n069V079k/dT1avoMfqjsWPHqkGDBk6/kPbt21cfffSRlixZon//+99atmyZ+vXrp5KSkuoYep1S0eOUkJCgDz74QF9++aVmzpwpm82miy++WAcOHJDEe6m6Veb9tGbNGm3duvWsn0+8n6rWli1bFBQUJF9fX913332aP3++2rZtW+a+7vozycvsAQC10ezZszVhwgR9+eWXTtcm9+vXz/HvHTt2VPfu3RUfH6958+Zp+PDhZgy1zklISFBCQoLj84svvli7du3S5MmT9fHHH5s4MpRlxowZCgsLU//+/Z22816qXqNHj9bWrVu5Lt+FVeYYvfjii5o7d66WLl3qtGDYoEGDHP/eoUMHdezYUc2bN9fSpUvVq1evKh13XVPR49SjRw+nWb+LL75Ybdq00bvvvqvnnnuuuodZ51Xm/fT++++rQ4cO6tatm9N23k9VKyEhQRs3blRmZqY+++wzDR06VMuWLSs3yt0RM+QuICYmRunp6U7b0tPTFRISIn9/f0VGRsrT07PMfWJiYmpyqJA0d+5cjRgxQvPmzTvrtJk/CgsLU6tWrZSSklJDo0NZunXr5jgGvJ9ch2EY+uCDD3TnnXfKx8fnT/flvVR1HnjgAX399df66aef1KhRoz/dt7yfT6feK6f+yfupap3LMTrllVde0Ysvvqjvv/9eHTt2/NN9mzVrpsjISN5P56kyx+kUb29vXXDBBY5jwHup+lTmOOXm5mru3LkV+gtg3k/nx8fHRy1atFCXLl00adIkderUSa+//nqZ+7rrzySC3AX06NFDS5Yscdq2ePFix9+k+vj4qEuXLk772Gw2LVmypNxrLFA95syZo7vvvltz5sxxugVGeXJycrRr1y7FxsbWwOhQno0bNzqOAe8n17Fs2TKlpKRU6Bce3kvnzzAMPfDAA5o/f75+/PFHNW3a9C+f81c/n5o2baqYmBinfbKysrR69WreT5VQmWMk2VcVfu6557Rw4UJddNFFf7n/gQMHdOzYMd5PlVTZ43SmkpISbdmyxXEMeC9VvfM5Tp9++qmsVqvuuOOOv9yX91PVstlsslqtZT7mtj+TTF1Szk1lZ2cbGzZsMDZs2GBIMl599VVjw4YNxt69ew3DMIxx48YZd955p2P/3bt3GwEBAcY///lPY/v27cZbb71leHp6GgsXLnTsM3fuXMPX19eYPn268fvvvxujRo0ywsLCjLS0tBr//tzFuR6nWbNmGV5eXsZbb71lHD582PFx8uRJxz6PPfaYsXTpUiM1NdVYsWKF0bt3byMyMtLIyMio8e/PXZzrcZo8ebKxYMECIzk52diyZYvx0EMPGR4eHsYPP/zg2If3U9U612N0yh133GF07969zNfkvVT17r//fiM0NNRYunSp0//D8vLyHPvceeedxrhx4xyfr1ixwvDy8jJeeeUVY/v27cYzzzxjeHt7G1u2bHHs8+KLLxphYWHGl19+aWzevNm46aabjKZNmxr5+fk1+v25g8ocoxdffNHw8fExPvvsM6fnZGdnG4Zhf3/+4x//MFauXGmkpqYaP/zwg3HhhRcaLVu2NAoKCmr8e3QHlTlOEyZMMBYtWmTs2rXLWLdunTFo0CDDz8/P2LZtm2Mf3ktVqzLH6ZRLL73UGDhw4FnbeT9VrXHjxhnLli0zUlNTjc2bNxvjxo0zLBaL8f333xuGUXd+JhHk1eDUbZf++DF06FDDMOy3S7jiiivOek7nzp0NHx8fo1mzZsaHH3541uv+97//NRo3bmz4+PgY3bp1M1atWlX934wbO9fjdMUVV/zp/oZhv11dbGys4ePjYzRs2NAYOHCgkZKSUrPfmJs51+P073//22jevLnh5+dnhIeHGz179jR+/PHHs16X91PVqcz/806ePGn4+/sbU6dOLfM1eS9VvbKOkSSnnzdXXHGF0//TDMMw5s2bZ7Rq1crw8fEx2rVrZ3zzzTdOj9tsNuOpp54yoqOjDV9fX6NXr15GUlJSDXxH7qcyxyg+Pr7M5zzzzDOGYRhGXl6ecc011xj169c3vL29jfj4eGPkyJH8BeR5qMxxevjhhx0/c6Kjo41rr73WWL9+vdPr8l6qWpX9f96OHTsMSY4oPBPvp6p1zz33GPHx8YaPj49Rv359o1evXk5/7nXlZ5LFMAyjiibbAQAAAABABXENOQAAAAAAJiDIAQAAAAAwAUEOAAAAAIAJCHIAAAAAAExAkAMAAAAAYAKCHAAAAAAAExDkAAAAAACYgCAHAAAAAMAEBDkAAKhSFotFCxYsMHsYAAC4PIIcAAA3MmzYMFkslrM++vbta/bQAADAH3iZPQAAAFC1+vbtqw8//NBpm6+vr0mjAQAA5WGGHAAAN+Pr66uYmBinj3r16kmyn04+ZcoU9evXT/7+/mrWrJk+++wzp+dv2bJFV111lfz9/RUREaFRo0YpJyfHaZ8PPvhA7dq1k6+vr2JjY/XAAw84PX706FHdfPPNCggIUMuWLfW///2ver9pAABqIYIcAIA65qmnntKAAQO0adMmDRkyRIMGDdL27dslSbm5uerTp4/q1auntWvX6tNPP9UPP/zgFNxTpkzR6NGjNWrUKG3ZskX/+9//1KJFC6evMWHCBP3tb3/T5s2bde2112rIkCE6fvx4jX6fAAC4OothGIbZgwAAAFVj2LBhmjlzpvz8/Jy2P/HEE3riiSdksVh03333acqUKY7HEhMTdeGFF+rtt9/WtGnTNHbsWO3fv1+BgYGSpG+//VY33HCDDh06pOjoaDVs2FB33323nn/++TLHYLFY9OSTT+q5556TZI/8oKAgfffdd1zLDgDAGbiGHAAAN3PllVc6BbckhYeHO/69R48eTo/16NFDGzdulCRt375dnTp1csS4JF1yySWy2WxKSkqSxWLRoUOH1KtXrz8dQ8eOHR3/HhgYqJCQEGVkZFT2WwIAwC0R5AAAuJnAwMCzTiGvKv7+/hXaz9vb2+lzi8Uim81WHUMCAKDW4hpyAADqmFWrVp31eZs2bSRJbdq00aZNm5Sbm+t4fMWKFfLw8FBCQoKCg4PVpEkTLVmypEbHDACAO2KGHAAAN2O1WpWWlua0zcvLS5GRkZKkTz/9VBdddJEuvfRSzZo1S2vWrNH7778vSRoyZIieeeYZDR06VM8++6yOHDmiMWPG6M4771R0dLQk6dlnn9V9992nqKgo9evXT9nZ2VqxYoXGjBlTs98oAAC1HEEOAICbWbhwoWJjY522JSQkaMeOHZLsK6DPnTtXf//73xUbG6s5c+aobdu2kqSAgAAtWrRIDz30kLp27aqAgAANGDBAr776quO1hg4dqoKCAk2ePFn/+Mc/FBkZqVtvvbXmvkEAANwEq6wDAFCHWCwWzZ8/X/379zd7KAAA1HlcQw4AAAAAgAkIcgAAAAAATMA15AAA1CFcqQYAgOtghhwAAAAAABMQ5AAAAAAAmIAgBwAAAADABAQ5AAAAAAAmIMgBAAAAADABQQ4AAAAAgAkIcgAAAAAATECQAwAAAABggv8HCiycuJotcYgAAAAASUVORK5CYII=\n" }, "metadata": {} } ] }, { "cell_type": "code", "source": [ "# Plot training results\n", "plt.figure(figsize=(12, 6))\n", "plt.plot(range(1, len(chrf_scores) + 1), chrf_scores, label=\"CHRF\")\n", "plt.xlabel(\"Epoch\")\n", "plt.ylabel(\"Score\")\n", "plt.title(\"Training Progress\")\n", "plt.legend()\n", "plt.show()" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 564 }, "id": "V__dxtwBHjO9", "outputId": "0c8a8e67-cc8d-46ed-96a0-baa84dbac938" }, "execution_count": 21, "outputs": [ { "output_type": "display_data", "data": { "text/plain": [ "
" ], "image/png": "iVBORw0KGgoAAAANSUhEUgAAA+QAAAIjCAYAAACKx9GpAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAABw+UlEQVR4nO3dd3hUdcL+/3tmkkx6QoD0XghFQKWGGqTrqii6WBesCIgF3NX1t66iz7O6K/Y12AULYgU7VZIIRlEE6QlpEEroKSSkzZzfHzzmawQEQpKT8n5dVy6dz5w5c08+nEzunDnnWAzDMAQAAAAAAJqU1ewAAAAAAAC0RRRyAAAAAABMQCEHAAAAAMAEFHIAAAAAAExAIQcAAAAAwAQUcgAAAAAATEAhBwAAAADABBRyAAAAAABMQCEHAAAAAMAEFHIAAJrIpEmTFB0dXa/HPvLII7JYLA0bCAAAmIpCDgBo8ywWyxl9paammh3VFJMmTarzffD19VXPnj311FNPqbKy0ux4AAC0WBbDMAyzQwAAYKZ33nmnzu233npLy5Yt09tvv11nfOTIkQoKCqr381RXV8vpdMput5/1Y2tqalRTUyN3d/d6P399TZo0SQsWLNBrr70mSSoqKtLHH3+s1NRUTZgwQQsWLGjyTAAAtAYUcgAAfufOO+/Uiy++qNO9RZaXl8vT07OJUpln0qRJ+uijj3T06NHaMafTqX79+umnn37S7t27FRoaesLjDMNQRUWFPDw8miRnW5kPAEDrwUfWAQA4A8nJyTrvvPO0du1aDRkyRJ6ennrwwQclSZ9++qkuueQShYaGym63Ky4uTo899pgcDkeddfz+GPL8/HxZLBbNnj1br7zyiuLi4mS329WnTx/9+OOPdR57smPILRaL7rzzTi1atEjnnXee7Ha7unXrpsWLF5+QPzU1Vb1795a7u7vi4uL08ssvn9Nx6VarVcnJybWvQ5Kio6P1pz/9SUuWLFHv3r3l4eGhl19+WZKUm5urq6++WgEBAfL09FT//v315ZdfnrDeHTt26LLLLpOXl5cCAwN17733asmSJSccMvBH81FZWamHH35Y8fHxstvtioiI0N/+9rcTPl6/bNkyDRo0SP7+/vL29lZiYmLtOn71wgsvqFu3bvL09FS7du3Uu3dvzZ8/v17fMwAAfs/F7AAAALQUhw4d0tixY3XNNdfohhtuqP34+ty5c+Xt7a0ZM2bI29tb33zzjf75z3+qpKRETz755GnXO3/+fJWWlmry5MmyWCz6z3/+oyuvvFK5ublydXX9w8euWrVKn3zyiaZOnSofHx89//zzGj9+vHbu3Kn27dtLktatW6cxY8YoJCREs2bNksPh0KOPPqqOHTue0/cjJydHkmqfR5IyMzN17bXXavLkybrtttuUmJioffv2acCAASovL9ddd92l9u3ba968ebrsssv00Ucf6YorrpAklZWV6aKLLtLevXt19913Kzg4WPPnz9fKlStP+vwnmw+n06nLLrtMq1at0u23364uXbpo48aNeuaZZ5SVlaVFixZJkjZv3qw//elP6tGjhx599FHZ7XZlZ2dr9erVtet/9dVXddddd+mqq67S3XffrYqKCm3YsEE//PCDrrvuunP63gEAIEkyAABAHdOmTTN+/xY5dOhQQ5Lx0ksvnbB8eXn5CWOTJ082PD09jYqKitqxiRMnGlFRUbW38/LyDElG+/btjcOHD9eOf/rpp4Yk4/PPP68de/jhh0/IJMlwc3MzsrOza8d++eUXQ5Lxwgsv1I5deumlhqenp7F79+7ase3btxsuLi4nrPNkJk6caHh5eRkHDhwwDhw4YGRnZxv/+te/DIvFYvTo0aN2uaioKEOSsXjx4jqPv+eeewxJxrfffls7VlpaasTExBjR0dGGw+EwDMMwnnrqKUOSsWjRotrljh07ZnTu3NmQZKxcubJ2/FTz8fbbbxtWq7XOcxmGYbz00kuGJGP16tWGYRjGM888Y0gyDhw4cMrXffnllxvdunU77fcHAID64iPrAACcIbvdrptuuumE8d8eI11aWqqDBw9q8ODBKi8v17Zt20673gkTJqhdu3a1twcPHizp+Me8T2fEiBGKi4urvd2jRw/5+vrWPtbhcGj58uUaN25cneO84+PjNXbs2NOu/1dlZWXq2LGjOnbsqPj4eD344INKSkrSwoUL6ywXExOj0aNH1xn76quv1LdvXw0aNKh2zNvbW7fffrvy8/O1ZcsWSdLixYsVFhamyy67rHY5d3d33XbbbSfNdLL5+PDDD9WlSxd17txZBw8erP266KKLJKl2b7u/v7+k44cbOJ3Ok67f399fu3btOuHwAQAAGgqFHACAMxQWFiY3N7cTxjdv3qwrrrhCfn5+8vX1VceO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detWuwzbUsN7/PHH1adPH/n4+CgwMFDjxo1TZmbmaR/34YcfqnPnznJ3d1f37t311Vdf1bnfMAz985//VEhIiDw8PDRixAht3769sV5Gq1afOXr11Vc1ePBgtWvXTu3atdOIESNO+Hl2sm1uzJgxjflSWrX6zNPcuXNPmAN3d/c6y7AtNaz6zFNycvJJ358uueSS2mXYnhrOnDlz1KNHD/n6+tb+bv3111//4WNa43sShbwRlJWVqWfPnnrxxRfPaPm8vDxdcsklGjZsmNavX6977rlHt956a52y9/7772vGjBl6+OGH9fPPP6tnz54aPXq09u/f31gvo9U723lKT0/XyJEj9dVXX2nt2rUaNmyYLr30Uq1bt67Oct26ddPevXtrv1atWtUY8duMs52nX2VmZtaZh8DAwNr72J4a1tnO0XPPPVdnbgoKChQQEKCrr766znJsSw0rLS1N06ZN0/fff69ly5apurpao0aNUllZ2Skf89133+naa6/VLbfconXr1mncuHEaN26cNm3aVLvMf/7zHz3//PN66aWX9MMPP8jLy0ujR49WRUVFU7ysVqU+c5Samqprr71WK1euVEZGhiIiIjRq1Cjt3r27znJjxoypsz299957jf1yWq36zJMk+fr61pmDHTt21Lmfbalh1WeePvnkkzpztGnTJtlsthPen9ieGkZ4eLieeOIJrV27Vj/99JMuuugiXX755dq8efNJl2+170kGGpUkY+HChX+4zN/+9jejW7dudcYmTJhgjB49uvZ23759jWnTptXedjgcRmhoqPH44483aN626kzm6WS6du1qzJo1q/b2ww8/bPTs2bPhgqGOM5mnlStXGpKMI0eOnHIZtqfGU59taeHChYbFYjHy8/Nrx9iWGt/+/fsNSUZaWtopl/nzn/9sXHLJJXXG+vXrZ0yePNkwDMNwOp1GcHCw8eSTT9beX1RUZNjtduO9995rnOBtyJnM0e/V1NQYPj4+xrx582rHJk6caFx++eWNkBCGcWbz9Oabbxp+fn6nvJ9tqfHVZ3t65plnDB8fH+Po0aO1Y2xPjatdu3bGa6+9dtL7Wut7EnvIm4GMjAyNGDGiztjo0aOVkZEhSaqqqtLatWvrLGO1WjVixIjaZdD0nE6nSktLFRAQUGd8+/btCg0NVWxsrK6//nrt3LnTpIRt2/nnn6+QkBCNHDlSq1evrh1ne2p+Xn/9dY0YMUJRUVF1xtmWGldxcbEknfAz7LdO9/6Ul5enwsLCOsv4+fmpX79+bE8N4Ezm6PfKy8tVXV19wmNSU1MVGBioxMRETZkyRYcOHWrQrG3Zmc7T0aNHFRUVpYiIiBP2ArItNb76bE+vv/66rrnmGnl5edUZZ3tqeA6HQwsWLFBZWZmSkpJOukxrfU+ikDcDhYWFCgoKqjMWFBSkkpISHTt2TAcPHpTD4TjpMr8/LhZNZ/bs2Tp69Kj+/Oc/147169dPc+fO1eLFizVnzhzl5eVp8ODBKi0tNTFp2xISEqKXXnpJH3/8sT7++GNFREQoOTlZP//8sySxPTUze/bs0ddff61bb721zjjbUuNyOp265557NHDgQJ133nmnXO5U70+/biu//pftqeGd6Rz93v3336/Q0NA6v5COGTNGb731llasWKF///vfSktL09ixY+VwOBojeptypvOUmJioN954Q59++qneeecdOZ1ODRgwQLt27ZLEttTY6rM9rVmzRps2bTrh/YntqWFt3LhR3t7estvtuuOOO7Rw4UJ17dr1pMu21vckF7MDAC3R/PnzNWvWLH366ad1jk0eO3Zs7f/36NFD/fr1U1RUlD744APdcsstZkRtcxITE5WYmFh7e8CAAcrJydEzzzyjt99+28RkOJl58+bJ399f48aNqzPOttS4pk2bpk2bNnFcfjNWnzl64okntGDBAqWmptY5Ydg111xT+//du3dXjx49FBcXp9TUVA0fPrxBc7c1ZzpPSUlJdfb6DRgwQF26dNHLL7+sxx57rLFjtnn12Z5ef/11de/eXX379q0zzvbUsBITE7V+/XoVFxfro48+0sSJE5WWlnbKUt4asYe8GQgODta+ffvqjO3bt0++vr7y8PBQhw4dZLPZTrpMcHBwU0aFpAULFujWW2/VBx98cMLHZn7P399fnTp1UnZ2dhOlw8n07du3dg7YnpoPwzD0xhtv6MYbb5Sbm9sfLsu21HDuvPNOffHFF1q5cqXCw8P/cNlTvT/9uq38+l+2p4Z1NnP0q9mzZ+uJJ57Q0qVL1aNHjz9cNjY2Vh06dGB7Okf1madfubq66oILLqidA7alxlOfeSorK9OCBQvO6A/AbE/nxs3NTfHx8erVq5cef/xx9ezZU88999xJl22t70kU8mYgKSlJK1asqDO2bNmy2r+kurm5qVevXnWWcTqdWrFixSmPsUDjeO+993TTTTfpvffeq3MJjFM5evSocnJyFBIS0gTpcCrr16+vnQO2p+YjLS1N2dnZZ/QLD9vSuTMMQ3feeacWLlyob775RjExMad9zOnen2JiYhQcHFxnmZKSEv3www9sT/VQnzmSjp9V+LHHHtPixYvVu3fv0y6/a9cuHTp0iO2pnuo7T7/lcDi0cePG2jlgW2p45zJPH374oSorK3XDDTecdlm2p4bldDpVWVl50vta7XuSqaeUa6VKS0uNdevWGevWrTMkGU8//bSxbt06Y8eOHYZhGMYDDzxg3HjjjbXL5+bmGp6ensZf//pXY+vWrcaLL75o2Gw2Y/HixbXLLFiwwLDb7cbcuXONLVu2GLfffrvh7+9vFBYWNvnray3Odp7effddw8XFxXjxxReNvXv31n4VFRXVLjNz5kwjNTXVyMvLM1avXm2MGDHC6NChg7F///4mf32txdnO0zPPPGMsWrTI2L59u7Fx40bj7rvvNqxWq7F8+fLaZdieGtbZztGvbrjhBqNfv34nXSfbUsObMmWK4efnZ6Smptb5GVZeXl67zI033mg88MADtbdXr15tuLi4GLNnzza2bt1qPPzww4arq6uxcePG2mWeeOIJw9/f3/j000+NDRs2GJdffrkRExNjHDt2rElfX2tQnzl64oknDDc3N+Ojjz6q85jS0lLDMI5vn/fdd5+RkZFh5OXlGcuXLzcuvPBCIyEhwaioqGjy19ga1GeeZs2aZSxZssTIyckx1q5da1xzzTWGu7u7sXnz5tpl2JYaVn3m6VeDBg0yJkyYcMI421PDeuCBB4y0tDQjLy/P2LBhg/HAAw8YFovFWLp0qWEYbec9iULeCH697NLvvyZOnGgYxvHLJQwdOvSEx5x//vmGm5ubERsba7z55psnrPeFF14wIiMjDTc3N6Nv377G999/3/gvphU723kaOnToHy5vGMcvVxcSEmK4ubkZYWFhxoQJE4zs7OymfWGtzNnO07///W8jLi7OcHd3NwICAozk5GTjm2++OWG9bE8Npz4/84qKigwPDw/jlVdeOek62ZYa3snmSFKd95uhQ4fW+ZlmGIbxwQcfGJ06dTLc3NyMbt26GV9++WWd+51Op/HQQw8ZQUFBht1uN4YPH25kZmY2wStqfeozR1FRUSd9zMMPP2wYhmGUl5cbo0aNMjp27Gi4uroaUVFRxm233cYfIM9BfebpnnvuqX3PCQoKMi6++GLj559/rrNetqWGVd+fedu2bTMk1ZbC32J7alg333yzERUVZbi5uRkdO3Y0hg8fXuf73lbekyyGYRgNtLMdAAAAAACcIY4hBwAAAADABBRyAAAAAABMQCEHAAAAAMAEFHIAAAAAAExAIQcAAAAAwAQUcgAAAAAATEAhBwAAAADABBRyAAAAAABMQCEHAAANymKxaNGiRWbHAACg2aOQAwDQikyaNEkWi+WErzFjxpgdDQAA/I6L2QEAAEDDGjNmjN588806Y3a73aQ0AADgVNhDDgBAK2O32xUcHFznq127dpKOf5x8zpw5Gjt2rDw8PBQbG6uPPvqozuM3btyoiy66SB4eHmrfvr1uv/12HT16tM4yb7zxhrp16ya73a6QkBDdeeedde4/ePCgrrjiCnl6eiohIUGfffZZ475oAABaIAo5AABtzEMPPaTx48frl19+0fXXX69rrrlGW7dulSSVlZVp9OjRateunX788Ud9+OGHWr58eZ3CPWfOHE2bNk233367Nm7cqM8++0zx8fF1nmPWrFn685//rA0bNujiiy/W9ddfr8OHDzfp6wQAoLmzGIZhmB0CAAA0jEmTJumdd96Ru7t7nfEHH3xQDz74oCwWi+644w7NmTOn9r7+/fvrwgsvVEpKil599VXdf//9KigokJeXlyTpq6++0qWXXqo9e/YoKChIYWFhuummm/Q///M/J81gsVj0j3/8Q4899pik4yXf29tbX3/9NceyAwDwGxxDDgBAKzNs2LA6hVuSAgICav8/KSmpzn1JSUlav369JGnr1q3q2bNnbRmXpIEDB8rpdCozM1MWi0V79uzR8OHD/zBDjx49av/fy8tLvr6+2r9/f31fEgAArRKFHACAVsbLy+uEj5A3FA8PjzNaztXVtc5ti8Uip9PZGJEAAGixOIYcAIA25vvvvz/hdpcuXSRJXbp00S+//KKysrLa+1evXi2r1arExET5+PgoOjpaK1asaNLMAAC0RuwhBwCglamsrFRhYWGdMRcXF3Xo0EGS9OGHH6p3794aNGiQ3n33Xa1Zs0avv/66JOn666/Xww8/rIkTJ+qRRx7RgQMHNH36dN14440KCgqSJD3yyCO64447FBgYqLFjx6q0tFSrV6/W9OnTm/aFAgDQwlHIAQBoZRYvXqyQkJA6Y4mJidq2bZuk42dAX7BggaZOnaqQkBC999576tq1qyTJ09NTS5Ys0d13360+ffrI09NT48eP19NPP127rokTJ6qiokLPPPOM7rvvPnXo0EFXXXVV071AAABaCc6yDgBAG2KxWLRw4UKNGzfO7CgAALR5HEMOAAAAAIAJKOQAAAAAAJiAY8gBAGhDOFINAIDmgz3kAAAAAACYgEIOAAAAAIAJKOQAAAAAAJiAQg4AAAAAgAko5AAAAAAAmIBCDgAAAACACSjkAAAAAACYgEIOAAAAAIAJ/n8QnskFp5D2pQAAAABJRU5ErkJggg==\n" }, "metadata": {} } ] }, { "cell_type": "code", "source": [ "import pandas as pd\n", "training_data = {\n", " \"Epoch\": list(range(1, len(losses) + 1)),\n", " \"Loss\": losses,\n", " \"BLEU\": bleu_scores,\n", " \"CHRF\": chrf_scores\n", "}\n", "\n", "# Convert the dictionary to a DataFrame\n", "df = pd.DataFrame(training_data)\n", "\n", "# Save the DataFrame to a CSV file\n", "csv_file = \"training_results_SEQ_SEQ.csv\"\n", "df.to_csv(csv_file, index=False)\n", "print(f\"Training data saved to {csv_file}\")" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "7rpYkbVLHjRn", "outputId": "ba30aa01-bb88-4178-a44b-95a30771353b" }, "execution_count": 23, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Training data saved to training_results_SEQ_SEQ.csv\n" ] } ] }, { "cell_type": "code", "source": [ "def translate_sentence(model, sentence, tokenizer, max_length=64, pad_token=0, sos_token=1, eos_token=2):\n", " \"\"\"\n", " Translate a sentence using the given SEQtoSEQ model and custom tokenizer.\n", "\n", " Args:\n", " - model: The trained translation model.\n", " - sentence: The input sentence to translate.\n", " - tokenizer: The custom tokenizer (e.g., BPETokenizer).\n", " - max_length: The maximum sequence length (default: 64).\n", " - pad_token: The padding token ID (default: 0).\n", " - sos_token: The start-of-sequence token ID (default: 1).\n", " - eos_token: The end-of-sequence token ID (default: 2).\n", "\n", " Returns:\n", " - translation: The translated sentence as a string.\n", " \"\"\"\n", " model.eval()\n", " with torch.no_grad():\n", " # Tokenize the input sentence\n", " token_ids = encode(sentence)\n", "\n", " # Debugging: Check the tokenized output\n", " print(f\"Token IDs: {token_ids}\")\n", "\n", " # Pad the tokenized sequence to the max_length\n", " token_ids = token_ids[:max_length] # Truncate if necessary\n", " padding_length = max_length - len(token_ids)\n", " token_ids += [pad_token] * padding_length # Pad to the max_length\n", "\n", " # Debugging: Check the padded sequence\n", " print(f\"Token IDs after padding: {token_ids}\")\n", "\n", " # Convert token IDs to tensor and move to the correct device\n", " input_tensor = torch.tensor(token_ids, dtype=torch.long).unsqueeze(0).to(device) # Add batch dimension\n", "\n", " # Initialize the target sequence with the start-of-sequence token\n", " target_ids = [sos_token]\n", " target_tensor = torch.tensor(target_ids, dtype=torch.long).unsqueeze(0).to(device) # Shape: (1, 1)\n", "\n", " # Decode the sequence using greedy decoding\n", " for _ in range(max_length):\n", " # Forward pass\n", " output = model(input_tensor, target_tensor) # Shape: (1, target_len, vocab_size)\n", " next_token_logits = output[:, -1, :] # Get the logits of the last generated token\n", " next_token_id = next_token_logits.argmax(dim=-1).item() # Choose the token with the highest probability\n", "\n", " # Append the predicted token to the target sequence\n", " target_ids.append(next_token_id)\n", " target_tensor = torch.tensor(target_ids, dtype=torch.long).unsqueeze(0).to(device)\n", "\n", " # Stop decoding if the end-of-sequence token is generated\n", " if next_token_id == eos_token:\n", " break\n", "\n", " # Decode the token IDs back to text\n", " translation = decode(target_ids[1:]) # Exclude the start-of-sequence token\n", " return translation" ], "metadata": { "id": "C89y-8yPH16w" }, "execution_count": 24, "outputs": [] }, { "cell_type": "code", "source": [ "# Example usage\n", "example_sentence = \"What are the three primary colors?\"\n", "translation = translate_sentence(model, example_sentence, BPETokenizer.load(tokenizer_file))\n", "print(f\"English: {example_sentence}\")\n", "print(f\"Amharic Translation: {translation}\")" ], "metadata": { "id": "r15Q2PZvIHZO" }, "execution_count": 27, "outputs": [] }, { "cell_type": "code", "source": [ "# Example usage\n", "example_sentence = \"ጤናማ ለመሆን ሶስት ምክሮችን ይስጡ.\"\n", "translation = translate_sentence(model, example_sentence, BPETokenizer.load(tokenizer_file))\n", "print(f\"Amharic: {example_sentence}\")\n", "print(f\"English Translation: {translation}\")" ], "metadata": { "id": "PAPZRDrRIKTY" }, "execution_count": 28, "outputs": [] }, { "cell_type": "code", "source": [], "metadata": { "id": "M_nQ4tPMIO1K" }, "execution_count": null, "outputs": [] } ] }