diff --git a/tasks/data_augmentation/notebooks/zero_shot_classification/GoogleColabFineTuneEmbeddingModel.ipynb b/tasks/data_augmentation/notebooks/zero_shot_classification/GoogleColabFineTuneEmbeddingModel.ipynb index 78064ba0..1b1126d8 100644 --- a/tasks/data_augmentation/notebooks/zero_shot_classification/GoogleColabFineTuneEmbeddingModel.ipynb +++ b/tasks/data_augmentation/notebooks/zero_shot_classification/GoogleColabFineTuneEmbeddingModel.ipynb @@ -40,7 +40,7 @@ }, "widgets": { "application/vnd.jupyter.widget-state+json": { - "a9572d31730d42019365958670ce4adf": { + "fca6dd1f1a0d4bdd8afe04f5f899e7f8": { "model_module": "@jupyter-widgets/controls", "model_name": "HBoxModel", "state": { @@ -52,15 +52,15 @@ "_view_count": null, "_view_module_version": "1.5.0", "box_style": "", - "layout": "IPY_MODEL_1d22e5a4c66a4cd7b86d8d20b94029e1", + "layout": "IPY_MODEL_c203042fd0204268a649a05daa0513bf", "_model_module": "@jupyter-widgets/controls", "children": [ - "IPY_MODEL_a113e119d5764b328db3bf511900be0b", - "IPY_MODEL_09532df629af458f83b8636fdbf45c24" + "IPY_MODEL_acf9c2fff09d46a3a62203b2980e0539", + "IPY_MODEL_f04ce12c094a432cba7a2b2dc8fea813" ] } }, - "1d22e5a4c66a4cd7b86d8d20b94029e1": { + "c203042fd0204268a649a05daa0513bf": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "state": { @@ -111,50 +111,50 @@ "left": null } }, - "a113e119d5764b328db3bf511900be0b": { + "acf9c2fff09d46a3a62203b2980e0539": { "model_module": "@jupyter-widgets/controls", "model_name": "FloatProgressModel", "state": { "_view_name": "ProgressView", - "style": "IPY_MODEL_a6940fb831214948a58799d4372fe07b", + "style": "IPY_MODEL_77a376e6fd524e839e4017ba6d7d52a9", "_dom_classes": [], "description": "Epoch: 100%", "_model_name": "FloatProgressModel", "bar_style": "success", - "max": 2, + "max": 10, "_view_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", - "value": 2, + "value": 10, "_view_count": null, "_view_module_version": "1.5.0", "orientation": "horizontal", "min": 0, "description_tooltip": null, "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_139e93e910084878a93e61908eac369f" + "layout": "IPY_MODEL_8f2b826e76b44d9da1fc36c607f0fe02" } }, - "09532df629af458f83b8636fdbf45c24": { + "f04ce12c094a432cba7a2b2dc8fea813": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "state": { "_view_name": "HTMLView", - "style": "IPY_MODEL_209cb947261342e1977c340b0fefae36", + "style": "IPY_MODEL_44dc88d26359459ea810213cd9c4e87c", "_dom_classes": [], "description": "", "_model_name": "HTMLModel", "placeholder": "​", "_view_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", - "value": " 2/2 [00:47<00:00, 23.58s/it]", + "value": " 10/10 [45:52<00:00, 275.27s/it]", "_view_count": null, "_view_module_version": "1.5.0", "description_tooltip": null, "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_de62abfdeff34006800c442e0c866d8e" + "layout": "IPY_MODEL_53ede21cf7164a89a809bf2ac953f959" } }, - "a6940fb831214948a58799d4372fe07b": { + "77a376e6fd524e839e4017ba6d7d52a9": { "model_module": "@jupyter-widgets/controls", "model_name": "ProgressStyleModel", "state": { @@ -169,7 +169,7 @@ "_model_module": "@jupyter-widgets/controls" } }, - "139e93e910084878a93e61908eac369f": { + "8f2b826e76b44d9da1fc36c607f0fe02": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "state": { @@ -220,7 +220,7 @@ "left": null } }, - "209cb947261342e1977c340b0fefae36": { + "44dc88d26359459ea810213cd9c4e87c": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "state": { @@ -234,7 +234,7 @@ "_model_module": "@jupyter-widgets/controls" } }, - "de62abfdeff34006800c442e0c866d8e": { + "53ede21cf7164a89a809bf2ac953f959": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "state": { @@ -285,7 +285,7 @@ "left": null } }, - "b2d70e845f134eb89b10253d04bc2984": { + "c12c140a024f46c7a1cfad318f8056fc": { "model_module": "@jupyter-widgets/controls", "model_name": "HBoxModel", "state": { @@ -297,15 +297,15 @@ "_view_count": null, "_view_module_version": "1.5.0", "box_style": "", - "layout": "IPY_MODEL_2cf17c25a8f049e4bd8a32a67700fe29", + "layout": "IPY_MODEL_10c77230e1b64e69af1ffc44a045ddd2", "_model_module": "@jupyter-widgets/controls", "children": [ - "IPY_MODEL_af5cf0176d8a41d3b538b213864842e0", - "IPY_MODEL_d15f83390ec748d19f03adb5456239a1" + "IPY_MODEL_8f2f04f100a94ab8acbc84c13e5859dd", + "IPY_MODEL_3fa00df1702a446ab57d973aba921d3c" ] } }, - "2cf17c25a8f049e4bd8a32a67700fe29": { + "10c77230e1b64e69af1ffc44a045ddd2": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "state": { @@ -356,50 +356,50 @@ "left": null } }, - "af5cf0176d8a41d3b538b213864842e0": { + "8f2f04f100a94ab8acbc84c13e5859dd": { "model_module": "@jupyter-widgets/controls", "model_name": "FloatProgressModel", "state": { "_view_name": "ProgressView", - "style": "IPY_MODEL_77854a49bb1e469abdc99910270ec8f2", + "style": "IPY_MODEL_779a149fd09b4c6ba2123ef11b083813", "_dom_classes": [], "description": "Iteration: 100%", "_model_name": "FloatProgressModel", "bar_style": "success", - "max": 31, + "max": 28, "_view_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", - "value": 31, + "value": 28, "_view_count": null, "_view_module_version": "1.5.0", "orientation": "horizontal", "min": 0, "description_tooltip": null, "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_b6255bd351a340f29555c4c8235da2d9" + "layout": "IPY_MODEL_19aa17e755464ca5b0c03d0b3873f559" } }, - "d15f83390ec748d19f03adb5456239a1": { + "3fa00df1702a446ab57d973aba921d3c": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "state": { "_view_name": "HTMLView", - "style": "IPY_MODEL_de36b12c8c044b84b7f2cc616b4a01fb", + "style": "IPY_MODEL_b4e762317b52408ca6a1fb46575efe06", "_dom_classes": [], "description": "", "_model_name": "HTMLModel", "placeholder": "​", "_view_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", - "value": " 31/31 [00:47<00:00, 1.52s/it]", + "value": " 28/28 [45:52<00:00, 98.31s/it]", "_view_count": null, "_view_module_version": "1.5.0", "description_tooltip": null, "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_4072e74bcd754c3aaaf88354929b6a91" + "layout": "IPY_MODEL_ebf1d875a69f4d67b6d61f6815cc0655" } }, - "77854a49bb1e469abdc99910270ec8f2": { + "779a149fd09b4c6ba2123ef11b083813": { "model_module": "@jupyter-widgets/controls", "model_name": "ProgressStyleModel", "state": { @@ -414,7 +414,7 @@ "_model_module": "@jupyter-widgets/controls" } }, - "b6255bd351a340f29555c4c8235da2d9": { + "19aa17e755464ca5b0c03d0b3873f559": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "state": { @@ -465,7 +465,7 @@ "left": null } }, - "de36b12c8c044b84b7f2cc616b4a01fb": { + "b4e762317b52408ca6a1fb46575efe06": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "state": { @@ -479,7 +479,7 @@ "_model_module": "@jupyter-widgets/controls" } }, - "4072e74bcd754c3aaaf88354929b6a91": { + "ebf1d875a69f4d67b6d61f6815cc0655": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "state": { @@ -530,7 +530,7 @@ "left": null } }, - "fbc309a67eba4a4fbe5a08d71e906948": { + "0043df9db81b47aead59cec69e05da8b": { "model_module": "@jupyter-widgets/controls", "model_name": "HBoxModel", "state": { @@ -542,15 +542,15 @@ "_view_count": null, "_view_module_version": "1.5.0", "box_style": "", - "layout": "IPY_MODEL_66a78180061140ad8aa38ac0852f1341", + "layout": "IPY_MODEL_f72994f47aaf4f6798d6b463cf2d8d86", "_model_module": "@jupyter-widgets/controls", "children": [ - "IPY_MODEL_e4d68489cba7485f9f09c0e62a768cf2", - "IPY_MODEL_c4a4997f4b624cf6857827f8773ad942" + "IPY_MODEL_0197d0350b424e1bae2a8a53dd7c26df", + "IPY_MODEL_984ab80a4bbe42748daea5171c0db82f" ] } }, - "66a78180061140ad8aa38ac0852f1341": { + "f72994f47aaf4f6798d6b463cf2d8d86": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "state": { @@ -601,50 +601,50 @@ "left": null } }, - "e4d68489cba7485f9f09c0e62a768cf2": { + "0197d0350b424e1bae2a8a53dd7c26df": { "model_module": "@jupyter-widgets/controls", "model_name": "FloatProgressModel", "state": { "_view_name": "ProgressView", - "style": "IPY_MODEL_d7349571e12944df9938b0071fd12032", + "style": "IPY_MODEL_a37d28bdc9bd4e128391c5ddb1f38852", "_dom_classes": [], "description": "Iteration: 100%", "_model_name": "FloatProgressModel", "bar_style": "success", - "max": 31, + "max": 28, "_view_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", - "value": 31, + "value": 28, "_view_count": null, "_view_module_version": "1.5.0", "orientation": "horizontal", "min": 0, "description_tooltip": null, "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_9fa1111e63944ed2ae340d523180c27e" + "layout": "IPY_MODEL_f96091f965d94857a16c15024ec732b5" } }, - "c4a4997f4b624cf6857827f8773ad942": { + "984ab80a4bbe42748daea5171c0db82f": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "state": { "_view_name": "HTMLView", - "style": "IPY_MODEL_cbf9123b9b6a4a8884dee393ee689eb5", + "style": "IPY_MODEL_9f20f391063548b4a8987fa3c4f7d97a", "_dom_classes": [], "description": "", "_model_name": "HTMLModel", "placeholder": "​", "_view_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", - "value": " 31/31 [00:33<00:00, 1.07s/it]", + "value": " 28/28 [01:16<00:00, 2.74s/it]", "_view_count": null, "_view_module_version": "1.5.0", "description_tooltip": null, "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_3e57696b2eb542b99657acd746690551" + "layout": "IPY_MODEL_3069cde1cbad49dfa0c34bea3ed71d08" } }, - "d7349571e12944df9938b0071fd12032": { + "a37d28bdc9bd4e128391c5ddb1f38852": { "model_module": "@jupyter-widgets/controls", "model_name": "ProgressStyleModel", "state": { @@ -659,7 +659,7 @@ "_model_module": "@jupyter-widgets/controls" } }, - "9fa1111e63944ed2ae340d523180c27e": { + "f96091f965d94857a16c15024ec732b5": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "state": { @@ -710,7 +710,7 @@ "left": null } }, - "cbf9123b9b6a4a8884dee393ee689eb5": { + "9f20f391063548b4a8987fa3c4f7d97a": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "state": { @@ -724,7 +724,7 @@ "_model_module": "@jupyter-widgets/controls" } }, - "3e57696b2eb542b99657acd746690551": { + "3069cde1cbad49dfa0c34bea3ed71d08": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "state": { @@ -775,7 +775,7 @@ "left": null } }, - "adb37a347dc741bb8b467711d7f29b52": { + "dd29ef6f6df44d44af78d04004c62f01": { "model_module": "@jupyter-widgets/controls", "model_name": "HBoxModel", "state": { @@ -787,15 +787,15 @@ "_view_count": null, "_view_module_version": "1.5.0", "box_style": "", - "layout": "IPY_MODEL_7e2833fd892541e5b031bf8a23e7dfa9", + "layout": "IPY_MODEL_6fe5ac05d47b41ceb544a5179d1ef5d4", "_model_module": "@jupyter-widgets/controls", "children": [ - "IPY_MODEL_ce9d2045aa784a87bb1d999bb8016727", - "IPY_MODEL_01ff82ff97fa4909bdfc9029403b9bdd" + "IPY_MODEL_1b9ccce5f3894cdc9158c653d41957ca", + "IPY_MODEL_d8afbc8b25444d1483330af2b18a94d0" ] } }, - "7e2833fd892541e5b031bf8a23e7dfa9": { + "6fe5ac05d47b41ceb544a5179d1ef5d4": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "state": { @@ -846,50 +846,50 @@ "left": null } }, - "ce9d2045aa784a87bb1d999bb8016727": { + "1b9ccce5f3894cdc9158c653d41957ca": { "model_module": "@jupyter-widgets/controls", "model_name": "FloatProgressModel", "state": { "_view_name": "ProgressView", - "style": "IPY_MODEL_38e47280bebe4135818796d938aa3084", + "style": "IPY_MODEL_92a14ea822d0458583320ed461bd1a17", "_dom_classes": [], - "description": "Epoch: 100%", + "description": "Iteration: 100%", "_model_name": "FloatProgressModel", "bar_style": "success", - "max": 2, + "max": 28, "_view_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", - "value": 2, + "value": 28, "_view_count": null, "_view_module_version": "1.5.0", "orientation": "horizontal", "min": 0, "description_tooltip": null, "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_165a0b004d4b496e8bbe1ea0c1b98306" + "layout": "IPY_MODEL_d071db82958845a5947daa9eaa2ddf91" } }, - "01ff82ff97fa4909bdfc9029403b9bdd": { + "d8afbc8b25444d1483330af2b18a94d0": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "state": { "_view_name": "HTMLView", - "style": "IPY_MODEL_a27d3dcd9ebe417e9bc497c2cd07b681", + "style": "IPY_MODEL_0c9c7bc3e1dc495799a4a37c990f4241", "_dom_classes": [], "description": "", "_model_name": "HTMLModel", "placeholder": "​", "_view_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", - "value": " 2/2 [00:35<00:00, 17.77s/it]", + "value": " 28/28 [01:01<00:00, 2.20s/it]", "_view_count": null, "_view_module_version": "1.5.0", "description_tooltip": null, "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_e61766c2f5d2431a845f686866798bd3" + "layout": "IPY_MODEL_94c3ab21e78c405da85788eb4106db50" } }, - "38e47280bebe4135818796d938aa3084": { + "92a14ea822d0458583320ed461bd1a17": { "model_module": "@jupyter-widgets/controls", "model_name": "ProgressStyleModel", "state": { @@ -904,7 +904,7 @@ "_model_module": "@jupyter-widgets/controls" } }, - "165a0b004d4b496e8bbe1ea0c1b98306": { + "d071db82958845a5947daa9eaa2ddf91": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "state": { @@ -955,7 +955,7 @@ "left": null } }, - "a27d3dcd9ebe417e9bc497c2cd07b681": { + "0c9c7bc3e1dc495799a4a37c990f4241": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "state": { @@ -969,7 +969,7 @@ "_model_module": "@jupyter-widgets/controls" } }, - "e61766c2f5d2431a845f686866798bd3": { + "94c3ab21e78c405da85788eb4106db50": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "state": { @@ -1020,7 +1020,7 @@ "left": null } }, - "ef07a5d5bdde47ed84f7c9a43e19a45f": { + "3304541393f84fefa400de83e8636a5c": { "model_module": "@jupyter-widgets/controls", "model_name": "HBoxModel", "state": { @@ -1032,15 +1032,15 @@ "_view_count": null, "_view_module_version": "1.5.0", "box_style": "", - "layout": "IPY_MODEL_24433c5adfbc4cea8028a5b29f98a166", + "layout": "IPY_MODEL_0538e8932a854ef987ce8e43ec13a719", "_model_module": "@jupyter-widgets/controls", "children": [ - "IPY_MODEL_c9c7884e24fa44419dbc69ebfef4032d", - "IPY_MODEL_c6f4fdced03d45d7a1c3a2a5c790f42c" + "IPY_MODEL_cf3e517756074c739d2d8f0368dee1ea", + "IPY_MODEL_0e2231e802f34971a1af2cbc0022f3eb" ] } }, - "24433c5adfbc4cea8028a5b29f98a166": { + "0538e8932a854ef987ce8e43ec13a719": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "state": { @@ -1091,50 +1091,50 @@ "left": null } }, - "c9c7884e24fa44419dbc69ebfef4032d": { + "cf3e517756074c739d2d8f0368dee1ea": { "model_module": "@jupyter-widgets/controls", "model_name": "FloatProgressModel", "state": { "_view_name": "ProgressView", - "style": "IPY_MODEL_e722fdf2798b4b5b82c93c2638dd5477", + "style": "IPY_MODEL_b50304c81a714aeaa58d5c8e20dee56b", "_dom_classes": [], "description": "Iteration: 100%", "_model_name": "FloatProgressModel", "bar_style": "success", - "max": 31, + "max": 28, "_view_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", - "value": 31, + "value": 28, "_view_count": null, "_view_module_version": "1.5.0", "orientation": "horizontal", "min": 0, "description_tooltip": null, "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_c005c5550e5c45e28fc731772a2bf7af" + "layout": "IPY_MODEL_5d12b9d1dfdb48b7809111a676185d15" } }, - "c6f4fdced03d45d7a1c3a2a5c790f42c": { + "0e2231e802f34971a1af2cbc0022f3eb": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "state": { "_view_name": "HTMLView", - "style": "IPY_MODEL_14d03e8e23854fb4a3ac8063218e0ae2", + "style": "IPY_MODEL_d4c81c9a13a74df2a0cc7c237469b68b", "_dom_classes": [], "description": "", "_model_name": "HTMLModel", "placeholder": "​", "_view_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", - "value": " 31/31 [00:35<00:00, 1.15s/it]", + "value": " 28/28 [00:46<00:00, 1.67s/it]", "_view_count": null, "_view_module_version": "1.5.0", "description_tooltip": null, "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_82620c7c240c44d2a6dfa95497289bc8" + "layout": "IPY_MODEL_81b6e33bbd5547e99b8dab541374f4e7" } }, - "e722fdf2798b4b5b82c93c2638dd5477": { + "b50304c81a714aeaa58d5c8e20dee56b": { "model_module": "@jupyter-widgets/controls", "model_name": "ProgressStyleModel", "state": { @@ -1149,7 +1149,7 @@ "_model_module": "@jupyter-widgets/controls" } }, - "c005c5550e5c45e28fc731772a2bf7af": { + "5d12b9d1dfdb48b7809111a676185d15": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "state": { @@ -1200,7 +1200,7 @@ "left": null } }, - "14d03e8e23854fb4a3ac8063218e0ae2": { + "d4c81c9a13a74df2a0cc7c237469b68b": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "state": { @@ -1214,7 +1214,7 @@ "_model_module": "@jupyter-widgets/controls" } }, - "82620c7c240c44d2a6dfa95497289bc8": { + "81b6e33bbd5547e99b8dab541374f4e7": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "state": { @@ -1265,7 +1265,7 @@ "left": null } }, - "4825d1567c3140438331446e01180251": { + "f03fc44e573e4c799f1045c504d36b2f": { "model_module": "@jupyter-widgets/controls", "model_name": "HBoxModel", "state": { @@ -1277,15 +1277,15 @@ "_view_count": null, "_view_module_version": "1.5.0", "box_style": "", - "layout": "IPY_MODEL_6a2c5e52ef23492ab50526314f433398", + "layout": "IPY_MODEL_a7b74586b70244eba0782addd7a6e4d4", "_model_module": "@jupyter-widgets/controls", "children": [ - "IPY_MODEL_82b52d9049de4898bde77e6e3fc3ec1c", - "IPY_MODEL_475b1d01f8934aaa8767e66831dfb7a8" + "IPY_MODEL_1f80711802bd4fd8b50d101d6df878b6", + "IPY_MODEL_2d9c3e251af84a14b34df6160666b7ee" ] } }, - "6a2c5e52ef23492ab50526314f433398": { + "a7b74586b70244eba0782addd7a6e4d4": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "state": { @@ -1336,50 +1336,50 @@ "left": null } }, - "82b52d9049de4898bde77e6e3fc3ec1c": { + "1f80711802bd4fd8b50d101d6df878b6": { "model_module": "@jupyter-widgets/controls", "model_name": "FloatProgressModel", "state": { "_view_name": "ProgressView", - "style": "IPY_MODEL_31cd013fa0244dccbe0dd37ea2ef1fd4", + "style": "IPY_MODEL_75af76007b0b482698644fdd0ed8d571", "_dom_classes": [], "description": "Iteration: 100%", "_model_name": "FloatProgressModel", "bar_style": "success", - "max": 31, + "max": 28, "_view_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", - "value": 31, + "value": 28, "_view_count": null, "_view_module_version": "1.5.0", "orientation": "horizontal", "min": 0, "description_tooltip": null, "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_27928bcd9585415cb274a4dfb3f648bd" + "layout": "IPY_MODEL_9ac5ff1a27824774a09ca05be8cc4857" } }, - "475b1d01f8934aaa8767e66831dfb7a8": { + "2d9c3e251af84a14b34df6160666b7ee": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "state": { "_view_name": "HTMLView", - "style": "IPY_MODEL_149a4a47dd9f476380c37a730e8c63da", + "style": "IPY_MODEL_71c8d30a19814201908f88a77ce6f46a", "_dom_classes": [], "description": "", "_model_name": "HTMLModel", "placeholder": "​", "_view_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", - "value": " 31/31 [00:21<00:00, 1.45it/s]", + "value": " 28/28 [00:08<00:00, 3.43it/s]", "_view_count": null, "_view_module_version": "1.5.0", "description_tooltip": null, "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_f85fc31fa00e4412b2690c7c73b2056a" + "layout": "IPY_MODEL_dd47cc0013c6480fa831d049940850a6" } }, - "31cd013fa0244dccbe0dd37ea2ef1fd4": { + "75af76007b0b482698644fdd0ed8d571": { "model_module": "@jupyter-widgets/controls", "model_name": "ProgressStyleModel", "state": { @@ -1394,7 +1394,7 @@ "_model_module": "@jupyter-widgets/controls" } }, - "27928bcd9585415cb274a4dfb3f648bd": { + "9ac5ff1a27824774a09ca05be8cc4857": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "state": { @@ -1445,7 +1445,7 @@ "left": null } }, - "149a4a47dd9f476380c37a730e8c63da": { + "71c8d30a19814201908f88a77ce6f46a": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "state": { @@ -1459,7 +1459,7 @@ "_model_module": "@jupyter-widgets/controls" } }, - "f85fc31fa00e4412b2690c7c73b2056a": { + "dd47cc0013c6480fa831d049940850a6": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "state": { @@ -1510,7 +1510,7 @@ "left": null } }, - "78c898811bfc4875b98c89dc71e5514f": { + "1d385b01f10e44489b63814336181bde": { "model_module": "@jupyter-widgets/controls", "model_name": "HBoxModel", "state": { @@ -1522,15 +1522,15 @@ "_view_count": null, "_view_module_version": "1.5.0", "box_style": "", - "layout": "IPY_MODEL_5474a24ffa694b70ac3cba68dea838cf", + "layout": "IPY_MODEL_4701fb0c920d43c189eb3f36091821b7", "_model_module": "@jupyter-widgets/controls", "children": [ - "IPY_MODEL_19b14291422b49e2aa9f0c136245d5c8", - "IPY_MODEL_14ed3217e4824e428ac97418121ca8d5" + "IPY_MODEL_46ef86cff22a4e88964ad11f33c943ec", + "IPY_MODEL_6cc96dac09a6452a9ed253fb25c474b7" ] } }, - "5474a24ffa694b70ac3cba68dea838cf": { + "4701fb0c920d43c189eb3f36091821b7": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "state": { @@ -1581,50 +1581,50 @@ "left": null } }, - "19b14291422b49e2aa9f0c136245d5c8": { + "46ef86cff22a4e88964ad11f33c943ec": { "model_module": "@jupyter-widgets/controls", "model_name": "FloatProgressModel", "state": { "_view_name": "ProgressView", - "style": "IPY_MODEL_acfaaf9ef97a4532b15926f33d19b68c", + "style": "IPY_MODEL_86876f890d9443dbb2f28ed6020526dd", "_dom_classes": [], - "description": "Epoch: 50%", + "description": "Iteration: 100%", "_model_name": "FloatProgressModel", - "bar_style": "danger", - "max": 2, + "bar_style": "success", + "max": 28, "_view_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", - "value": 1, + "value": 28, "_view_count": null, "_view_module_version": "1.5.0", "orientation": "horizontal", "min": 0, "description_tooltip": null, "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_918ed4e7c93e485dbd9be1bd64bd85e9" + "layout": "IPY_MODEL_e473824c3f2146948bb1b8b4a0e5e5da" } }, - "14ed3217e4824e428ac97418121ca8d5": { + "6cc96dac09a6452a9ed253fb25c474b7": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "state": { "_view_name": "HTMLView", - "style": "IPY_MODEL_a412f89ae07348fa8d77fcf3a3f6399d", + "style": "IPY_MODEL_7bda8650be2440588bedf1b2d577b38c", "_dom_classes": [], "description": "", "_model_name": "HTMLModel", "placeholder": "​", "_view_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", - "value": " 1/2 [00:19<00:14, 14.01s/it]", + "value": " 28/28 [00:31<00:00, 1.11s/it]", "_view_count": null, "_view_module_version": "1.5.0", "description_tooltip": null, "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_8fa11a5367dd41028a6a05e8e1a01ce7" + "layout": "IPY_MODEL_78ec3b4e9914430f9359f26b08105e04" } }, - "acfaaf9ef97a4532b15926f33d19b68c": { + "86876f890d9443dbb2f28ed6020526dd": { "model_module": "@jupyter-widgets/controls", "model_name": "ProgressStyleModel", "state": { @@ -1639,7 +1639,7 @@ "_model_module": "@jupyter-widgets/controls" } }, - "918ed4e7c93e485dbd9be1bd64bd85e9": { + "e473824c3f2146948bb1b8b4a0e5e5da": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "state": { @@ -1690,7 +1690,7 @@ "left": null } }, - "a412f89ae07348fa8d77fcf3a3f6399d": { + "7bda8650be2440588bedf1b2d577b38c": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "state": { @@ -1704,7 +1704,7 @@ "_model_module": "@jupyter-widgets/controls" } }, - "8fa11a5367dd41028a6a05e8e1a01ce7": { + "78ec3b4e9914430f9359f26b08105e04": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "state": { @@ -1755,7 +1755,7 @@ "left": null } }, - "093d49b6236b487fb757c25768b4df64": { + "492cbe734d6149c2837528e1655d662e": { "model_module": "@jupyter-widgets/controls", "model_name": "HBoxModel", "state": { @@ -1767,15 +1767,15 @@ "_view_count": null, "_view_module_version": "1.5.0", "box_style": "", - "layout": "IPY_MODEL_cb97b2a14caa44dc877492232ea3d407", + "layout": "IPY_MODEL_97c90c47ac574ff8b9d9c00fe349da80", "_model_module": "@jupyter-widgets/controls", "children": [ - "IPY_MODEL_03bcf18d3b084de9b44367b5d4f3a6bd", - "IPY_MODEL_780d0eed80f54dfea4b410390c01653e" + "IPY_MODEL_6d31911b685c4108a8d5e0b525613911", + "IPY_MODEL_29ab38f03b9c4c86b18ed5608d040e49" ] } }, - "cb97b2a14caa44dc877492232ea3d407": { + "97c90c47ac574ff8b9d9c00fe349da80": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "state": { @@ -1826,50 +1826,50 @@ "left": null } }, - "03bcf18d3b084de9b44367b5d4f3a6bd": { + "6d31911b685c4108a8d5e0b525613911": { "model_module": "@jupyter-widgets/controls", "model_name": "FloatProgressModel", "state": { "_view_name": "ProgressView", - "style": "IPY_MODEL_1290453a849f492d8debf450f36f7b48", + "style": "IPY_MODEL_c69b83d1ec9347f3b2b5375ca533738a", "_dom_classes": [], "description": "Iteration: 100%", "_model_name": "FloatProgressModel", "bar_style": "success", - "max": 31, + "max": 28, "_view_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", - "value": 31, + "value": 28, "_view_count": null, "_view_module_version": "1.5.0", "orientation": "horizontal", "min": 0, "description_tooltip": null, "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_fc790c2f7ae14782b1c81b4edc928b6c" + "layout": "IPY_MODEL_d40ea82e5d4f4b149b95796005062856" } }, - "780d0eed80f54dfea4b410390c01653e": { + "29ab38f03b9c4c86b18ed5608d040e49": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "state": { "_view_name": "HTMLView", - "style": "IPY_MODEL_7dbe8c145df74e90841bca8ccae12314", + "style": "IPY_MODEL_75a15fb3c013479cb5c3a45df0b2936f", "_dom_classes": [], "description": "", "_model_name": "HTMLModel", "placeholder": "​", "_view_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", - "value": " 31/31 [00:13<00:00, 2.32it/s]", + "value": " 28/28 [00:23<00:00, 1.22it/s]", "_view_count": null, "_view_module_version": "1.5.0", "description_tooltip": null, "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_cac6523ba185434abd3d987d2c2129d7" + "layout": "IPY_MODEL_9151a55f3f6d4db2928f2b3b279f3c0b" } }, - "1290453a849f492d8debf450f36f7b48": { + "c69b83d1ec9347f3b2b5375ca533738a": { "model_module": "@jupyter-widgets/controls", "model_name": "ProgressStyleModel", "state": { @@ -1884,7 +1884,7 @@ "_model_module": "@jupyter-widgets/controls" } }, - "fc790c2f7ae14782b1c81b4edc928b6c": { + "d40ea82e5d4f4b149b95796005062856": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "state": { @@ -1935,7 +1935,7 @@ "left": null } }, - "7dbe8c145df74e90841bca8ccae12314": { + "75a15fb3c013479cb5c3a45df0b2936f": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "state": { @@ -1949,7 +1949,7 @@ "_model_module": "@jupyter-widgets/controls" } }, - "cac6523ba185434abd3d987d2c2129d7": { + "9151a55f3f6d4db2928f2b3b279f3c0b": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "state": { @@ -2000,7 +2000,7 @@ "left": null } }, - "6cd99c4adf3245579255ff38466395f6": { + "1e304bf241274d818ab4522828ae169c": { "model_module": "@jupyter-widgets/controls", "model_name": "HBoxModel", "state": { @@ -2012,15 +2012,15 @@ "_view_count": null, "_view_module_version": "1.5.0", "box_style": "", - "layout": "IPY_MODEL_dd3ce1ba54174fef8ccee98d2e44ed4c", + "layout": "IPY_MODEL_f65aac581b9f413589669b922fbc46a8", "_model_module": "@jupyter-widgets/controls", "children": [ - "IPY_MODEL_9d909b528159413d9d80665daa753521", - "IPY_MODEL_46fa1a6f0f524a7995ac548deebb123c" + "IPY_MODEL_16336b96d0a64703bd03d5f0e48657b8", + "IPY_MODEL_68841718d5724076a06b0dd7c0a9df69" ] } }, - "dd3ce1ba54174fef8ccee98d2e44ed4c": { + "f65aac581b9f413589669b922fbc46a8": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "state": { @@ -2071,50 +2071,50 @@ "left": null } }, - "9d909b528159413d9d80665daa753521": { + "16336b96d0a64703bd03d5f0e48657b8": { "model_module": "@jupyter-widgets/controls", "model_name": "FloatProgressModel", "state": { "_view_name": "ProgressView", - "style": "IPY_MODEL_cacb560792f9488696b9421753a3fc59", + "style": "IPY_MODEL_9eab9ea38b41459da2284fdd5aa39bbb", "_dom_classes": [], - "description": "Iteration: 39%", + "description": "Iteration: 100%", "_model_name": "FloatProgressModel", - "bar_style": "danger", - "max": 31, + "bar_style": "success", + "max": 28, "_view_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", - "value": 12, + "value": 28, "_view_count": null, "_view_module_version": "1.5.0", "orientation": "horizontal", "min": 0, "description_tooltip": null, "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_afecaf3d6c554044bebb5638fe507d69" + "layout": "IPY_MODEL_65e5465691384020984635b1f6f098c2" } }, - "46fa1a6f0f524a7995ac548deebb123c": { + "68841718d5724076a06b0dd7c0a9df69": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "state": { "_view_name": "HTMLView", - "style": "IPY_MODEL_09b43f809d18440ca7214b6e0ba12c64", + "style": "IPY_MODEL_618525790f53419f886281120454efeb", "_dom_classes": [], "description": "", "_model_name": "HTMLModel", "placeholder": "​", "_view_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", - "value": " 12/31 [00:05<00:09, 2.10it/s]", + "value": " 28/28 [00:14<00:00, 1.88it/s]", "_view_count": null, "_view_module_version": "1.5.0", "description_tooltip": null, "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_2b345d11ae804fc6b03dd5edc9f48352" + "layout": "IPY_MODEL_c499b23942f9456180edc5e99ab98ca7" } }, - "cacb560792f9488696b9421753a3fc59": { + "9eab9ea38b41459da2284fdd5aa39bbb": { "model_module": "@jupyter-widgets/controls", "model_name": "ProgressStyleModel", "state": { @@ -2129,7 +2129,7 @@ "_model_module": "@jupyter-widgets/controls" } }, - "afecaf3d6c554044bebb5638fe507d69": { + "65e5465691384020984635b1f6f098c2": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "state": { @@ -2180,7 +2180,7 @@ "left": null } }, - "09b43f809d18440ca7214b6e0ba12c64": { + "618525790f53419f886281120454efeb": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "state": { @@ -2194,7 +2194,7 @@ "_model_module": "@jupyter-widgets/controls" } }, - "2b345d11ae804fc6b03dd5edc9f48352": { + "c499b23942f9456180edc5e99ab98ca7": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "state": { @@ -2244,198 +2244,689 @@ "display": null, "left": null } - } - } - } - }, - "cells": [ - { - "cell_type": "markdown", - "metadata": { - "id": "bk0XWLfMvDXU" - }, - "source": [ - "# Note\n", - "This notebook can be run on google colab for improved performance. The code changes necessary for running on this system are commented over the code." - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "edvxyOpnvDXj" - }, - "source": [ - "## Data preprocessing" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "-_KSLzO7733B" - }, - "source": [ - "" - ], - "execution_count": null, - "outputs": [] - }, - { - "cell_type": "code", - "metadata": { - "id": "Ml7Gd4VgxW1d" - }, - "source": [ - "! pip install \\\n", - " scprep\\\n", - " spacy==2.3.2 \\\n", - " sentence_transformers==0.4.0 \\\n", - " phate==1.0.4 && \\\n", - " python -m spacy download es_core_news_lg" - ], - "execution_count": null, - "outputs": [] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "iH3dg-EV3JMY" - }, - "source": [ - "WARNING! Once you installed the packages in the previous cell you must restart your runtime and then import the library and load the model" - ] - }, - { - "cell_type": "code", - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" }, - "id": "i1eWkGLcx_yi", - "outputId": "5138a213-1cfa-4205-da4f-277862d0c9fc" - }, - "source": [ - "import spacy\n", - "if spacy.prefer_gpu():\n", - " print(\"Using the GPU\")\n", - "else:\n", - " print(\"Using the CPU\")\n", - "es_nlp = spacy.load('es_core_news_lg')" - ], - "execution_count": 1, - "outputs": [ - { - "output_type": "stream", - "text": [ - "Using the GPU\n" - ], - "name": "stdout" - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "EFkH4jX4MMZX" - }, - "source": [ - "For development work, in case you want to update the files in your GitHub branch by rerunning the clone, you first have to empty the folder." - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "TVeFAuzRLxy8" - }, - "source": [ - "!rm -rf policy-data-analyzer/" - ], - "execution_count": 2, - "outputs": [] - }, - { - "cell_type": "code", - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" + "2e98274dfc4a4535b4cf395c274f9c7c": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HBoxModel", + "state": { + "_view_name": "HBoxView", + "_dom_classes": [], + "_model_name": "HBoxModel", + "_view_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_view_count": null, + "_view_module_version": "1.5.0", + "box_style": "", + "layout": "IPY_MODEL_889c0e01503d4707abfbd344f18a33dc", + "_model_module": "@jupyter-widgets/controls", + "children": [ + "IPY_MODEL_59d2db0846b44fffb8eb8df09256a12b", + "IPY_MODEL_398870e396004bd6b3df8fe40aa25818" + ] + } }, - "id": "ykyZ81KN7tfr", - "outputId": "858589f4-d910-40a4-ef0f-3e03b79f0109" - }, - "source": [ - "# Define branch to clone\n", - "! branch_name='#50_dfq_sbert_fine_tuning' && \\\n", - " git clone --branch $branch_name https://github.com/wri-dssg/policy-data-analyzer.git" - ], - "execution_count": 3, - "outputs": [ - { - "output_type": "stream", - "text": [ - "Cloning into 'policy-data-analyzer'...\n", - "remote: Enumerating objects: 174, done.\u001b[K\n", - "remote: Counting objects: 100% (174/174), done.\u001b[K\n", - "remote: Compressing objects: 100% (123/123), done.\u001b[K\n", - "remote: Total 3093 (delta 94), reused 129 (delta 51), pack-reused 2919\u001b[K\n", - "Receiving objects: 100% (3093/3093), 134.22 MiB | 18.57 MiB/s, done.\n", - "Resolving deltas: 100% (1641/1641), done.\n", - "Checking out files: 100% (843/843), done.\n" - ], - "name": "stdout" - } - ] - }, - { - "cell_type": "code", - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" + "889c0e01503d4707abfbd344f18a33dc": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "state": { + "_view_name": "LayoutView", + "grid_template_rows": null, + "right": null, + "justify_content": null, + "_view_module": "@jupyter-widgets/base", + "overflow": null, + "_model_module_version": "1.2.0", + "_view_count": null, + "flex_flow": null, + "width": null, + "min_width": null, + "border": null, + "align_items": null, + "bottom": null, + "_model_module": "@jupyter-widgets/base", + "top": null, + "grid_column": null, + "overflow_y": null, + "overflow_x": null, + "grid_auto_flow": null, + "grid_area": null, + "grid_template_columns": null, + "flex": null, + "_model_name": "LayoutModel", + "justify_items": null, + "grid_row": null, + "max_height": null, + "align_content": null, + "visibility": null, + "align_self": null, + "height": null, + "min_height": null, + "padding": null, + "grid_auto_rows": null, + "grid_gap": null, + "max_width": null, + "order": null, + "_view_module_version": "1.2.0", + "grid_template_areas": null, + "object_position": null, + "object_fit": null, + "grid_auto_columns": null, + "margin": null, + "display": null, + "left": null + } }, - "id": "R4UNMkgIvDXl", - "outputId": "2c8114ea-3d98-474c-ad9e-db1af65f2150" - }, - "source": [ - "import pandas as pd\n", - "import sys\n", - "import os\n", - "import csv\n", - "from sklearn.model_selection import train_test_split\n", - "from sentence_transformers import SentencesDataset, SentenceTransformer, InputExample, losses\n", - "from sentence_transformers.evaluation import LabelAccuracyEvaluator\n", - "from torch import nn, Tensor\n", - "from typing import Iterable, Dict\n", - "from torch.utils.data import DataLoader\n", - "import math\n", - "import time\n", - "import cupy as cp\n", - "\n", - "# os.chdir(\"policy-data-analyzer\") #If you run this cell more than once, comment out this line because you are ready in this folder and you will get an error\n", - "from tasks.data_loader.src.utils import *\n", - "from tasks.data_augmentation.src.zero_shot_classification.latent_embeddings_classifier import *\n", - "from tasks.evaluate_model.src.model_evaluator import *\n", - "from tasks.data_visualization.src.plotting import *\n", - "\n", - "from google.colab import drive\n", - "drive.mount('/content/drive')" - ], - "execution_count": 4, - "outputs": [ - { - "output_type": "stream", - "text": [ - "Mounted at /content/drive\n" - ], - "name": "stdout" - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "P4l8oGqlvDXs" - }, - "source": [ - "## Fine-tuning the embedding model on the labeled data" - ] + "59d2db0846b44fffb8eb8df09256a12b": { + "model_module": "@jupyter-widgets/controls", + "model_name": "FloatProgressModel", + "state": { + "_view_name": "ProgressView", + "style": "IPY_MODEL_c455db89759e43b49717b7c0e8cdf749", + "_dom_classes": [], + "description": "Iteration: 100%", + "_model_name": "FloatProgressModel", + "bar_style": "success", + "max": 28, + "_view_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "value": 28, + "_view_count": null, + "_view_module_version": "1.5.0", + "orientation": "horizontal", + "min": 0, + "description_tooltip": null, + "_model_module": "@jupyter-widgets/controls", + "layout": "IPY_MODEL_14665e3c4ae64f5cba8465a75de16df1" + } + }, + "398870e396004bd6b3df8fe40aa25818": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "state": { + "_view_name": "HTMLView", + "style": "IPY_MODEL_d78e8d908d3a43eda18d7b4c26cddaaa", + "_dom_classes": [], + "description": "", + "_model_name": "HTMLModel", + "placeholder": "​", + "_view_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "value": " 28/28 [44:27<00:00, 95.26s/it]", + "_view_count": null, + "_view_module_version": "1.5.0", + "description_tooltip": null, + "_model_module": "@jupyter-widgets/controls", + "layout": "IPY_MODEL_9b03ee6a937a40d99a9a112001e38ef3" + } + }, + "c455db89759e43b49717b7c0e8cdf749": { + "model_module": "@jupyter-widgets/controls", + "model_name": "ProgressStyleModel", + "state": { + "_view_name": "StyleView", + "_model_name": "ProgressStyleModel", + "description_width": "initial", + "_view_module": "@jupyter-widgets/base", + "_model_module_version": "1.5.0", + "_view_count": null, + "_view_module_version": "1.2.0", + "bar_color": null, + "_model_module": "@jupyter-widgets/controls" + } + }, + "14665e3c4ae64f5cba8465a75de16df1": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "state": { + "_view_name": "LayoutView", + "grid_template_rows": null, + "right": null, + "justify_content": null, + "_view_module": "@jupyter-widgets/base", + "overflow": null, + "_model_module_version": "1.2.0", + "_view_count": null, + "flex_flow": null, + "width": null, + "min_width": null, + "border": null, + "align_items": null, + "bottom": null, + "_model_module": "@jupyter-widgets/base", + "top": null, + "grid_column": null, + "overflow_y": null, + "overflow_x": null, + "grid_auto_flow": null, + "grid_area": null, + "grid_template_columns": null, + "flex": null, + "_model_name": "LayoutModel", + "justify_items": null, + "grid_row": null, + "max_height": null, + "align_content": null, + "visibility": null, + "align_self": null, + "height": null, + "min_height": null, + "padding": null, + "grid_auto_rows": null, + "grid_gap": null, + "max_width": null, + "order": null, + "_view_module_version": "1.2.0", + "grid_template_areas": null, + "object_position": null, + "object_fit": null, + "grid_auto_columns": null, + "margin": null, + "display": null, + "left": null + } + }, + "d78e8d908d3a43eda18d7b4c26cddaaa": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "state": { + "_view_name": "StyleView", + "_model_name": "DescriptionStyleModel", + "description_width": "", + "_view_module": "@jupyter-widgets/base", + "_model_module_version": "1.5.0", + "_view_count": null, + "_view_module_version": "1.2.0", + "_model_module": "@jupyter-widgets/controls" + } + }, + "9b03ee6a937a40d99a9a112001e38ef3": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "state": { + "_view_name": "LayoutView", + "grid_template_rows": null, + "right": null, + "justify_content": null, + "_view_module": "@jupyter-widgets/base", + "overflow": null, + "_model_module_version": "1.2.0", + "_view_count": null, + "flex_flow": null, + "width": null, + "min_width": null, + "border": null, + "align_items": null, + "bottom": null, + "_model_module": "@jupyter-widgets/base", + "top": null, + "grid_column": null, + "overflow_y": null, + "overflow_x": null, + "grid_auto_flow": null, + "grid_area": null, + "grid_template_columns": null, + "flex": null, + "_model_name": "LayoutModel", + "justify_items": null, + "grid_row": null, + "max_height": null, + "align_content": null, + "visibility": null, + "align_self": null, + "height": null, + "min_height": null, + "padding": null, + "grid_auto_rows": null, + "grid_gap": null, + "max_width": null, + "order": null, + "_view_module_version": "1.2.0", + "grid_template_areas": null, + "object_position": null, + "object_fit": null, + "grid_auto_columns": null, + "margin": null, + "display": null, + "left": null + } + }, + "def1dc1c9ea242ad9e29ff55d4a79326": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HBoxModel", + "state": { + "_view_name": "HBoxView", + "_dom_classes": [], + "_model_name": "HBoxModel", + "_view_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_view_count": null, + "_view_module_version": "1.5.0", + "box_style": "", + "layout": "IPY_MODEL_d8f685293e2d4a868eb4258d2e535659", + "_model_module": "@jupyter-widgets/controls", + "children": [ + "IPY_MODEL_c391454a40c342eca3479026162b4da0", + "IPY_MODEL_645384434f4747a4b24d5b37fce6fa00" + ] + } + }, + "d8f685293e2d4a868eb4258d2e535659": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "state": { + "_view_name": "LayoutView", + "grid_template_rows": null, + "right": null, + "justify_content": null, + "_view_module": "@jupyter-widgets/base", + "overflow": null, + "_model_module_version": "1.2.0", + "_view_count": null, + "flex_flow": null, + "width": null, + "min_width": null, + "border": null, + "align_items": null, + "bottom": null, + "_model_module": "@jupyter-widgets/base", + "top": null, + "grid_column": null, + "overflow_y": null, + "overflow_x": null, + "grid_auto_flow": null, + "grid_area": null, + "grid_template_columns": null, + "flex": null, + "_model_name": "LayoutModel", + "justify_items": null, + "grid_row": null, + "max_height": null, + "align_content": null, + "visibility": null, + "align_self": null, + "height": null, + "min_height": null, + "padding": null, + "grid_auto_rows": null, + "grid_gap": null, + "max_width": null, + "order": null, + "_view_module_version": "1.2.0", + "grid_template_areas": null, + "object_position": null, + "object_fit": null, + "grid_auto_columns": null, + "margin": null, + "display": null, + "left": null + } + }, + "c391454a40c342eca3479026162b4da0": { + "model_module": "@jupyter-widgets/controls", + "model_name": "FloatProgressModel", + "state": { + "_view_name": "ProgressView", + "style": "IPY_MODEL_cc3f54299a05492a86384f062595280e", + "_dom_classes": [], + "description": "Iteration: 100%", + "_model_name": "FloatProgressModel", + "bar_style": "success", + "max": 28, + "_view_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "value": 28, + "_view_count": null, + "_view_module_version": "1.5.0", + "orientation": "horizontal", + "min": 0, + "description_tooltip": null, + "_model_module": "@jupyter-widgets/controls", + "layout": "IPY_MODEL_6b334406ed0f49cd8096471a97b134b3" + } + }, + "645384434f4747a4b24d5b37fce6fa00": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "state": { + "_view_name": "HTMLView", + "style": "IPY_MODEL_370fa1fe3aa74ee2a94be109f96f48d0", + "_dom_classes": [], + "description": "", + "_model_name": "HTMLModel", + "placeholder": "​", + "_view_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "value": " 28/28 [00:19<00:00, 1.45it/s]", + "_view_count": null, + "_view_module_version": "1.5.0", + "description_tooltip": null, + "_model_module": "@jupyter-widgets/controls", + "layout": "IPY_MODEL_f0847f77abc543c0ad4986a1abfaab91" + } + }, + "cc3f54299a05492a86384f062595280e": { + "model_module": "@jupyter-widgets/controls", + "model_name": "ProgressStyleModel", + "state": { + "_view_name": "StyleView", + "_model_name": "ProgressStyleModel", + "description_width": "initial", + "_view_module": "@jupyter-widgets/base", + "_model_module_version": "1.5.0", + "_view_count": null, + "_view_module_version": "1.2.0", + "bar_color": null, + "_model_module": "@jupyter-widgets/controls" + } + }, + "6b334406ed0f49cd8096471a97b134b3": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "state": { + "_view_name": "LayoutView", + "grid_template_rows": null, + "right": null, + "justify_content": null, + "_view_module": "@jupyter-widgets/base", + "overflow": null, + "_model_module_version": "1.2.0", + "_view_count": null, + "flex_flow": null, + "width": null, + "min_width": null, + "border": null, + "align_items": null, + "bottom": null, + "_model_module": "@jupyter-widgets/base", + "top": null, + "grid_column": null, + "overflow_y": null, + "overflow_x": null, + "grid_auto_flow": null, + "grid_area": null, + "grid_template_columns": null, + "flex": null, + "_model_name": "LayoutModel", + "justify_items": null, + "grid_row": null, + "max_height": null, + "align_content": null, + "visibility": null, + "align_self": null, + "height": null, + "min_height": null, + "padding": null, + "grid_auto_rows": null, + "grid_gap": null, + "max_width": null, + "order": null, + "_view_module_version": "1.2.0", + "grid_template_areas": null, + "object_position": null, + "object_fit": null, + "grid_auto_columns": null, + "margin": null, + "display": null, + "left": null + } + }, + "370fa1fe3aa74ee2a94be109f96f48d0": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "state": { + "_view_name": "StyleView", + "_model_name": "DescriptionStyleModel", + "description_width": "", + "_view_module": "@jupyter-widgets/base", + "_model_module_version": "1.5.0", + "_view_count": null, + "_view_module_version": "1.2.0", + "_model_module": "@jupyter-widgets/controls" + } + }, + "f0847f77abc543c0ad4986a1abfaab91": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "state": { + "_view_name": "LayoutView", + "grid_template_rows": null, + "right": null, + "justify_content": null, + "_view_module": "@jupyter-widgets/base", + "overflow": null, + "_model_module_version": "1.2.0", + "_view_count": null, + "flex_flow": null, + "width": null, + "min_width": null, + "border": null, + "align_items": null, + "bottom": null, + "_model_module": "@jupyter-widgets/base", + "top": null, + "grid_column": null, + "overflow_y": null, + "overflow_x": null, + "grid_auto_flow": null, + "grid_area": null, + "grid_template_columns": null, + "flex": null, + "_model_name": "LayoutModel", + "justify_items": null, + "grid_row": null, + "max_height": null, + "align_content": null, + "visibility": null, + "align_self": null, + "height": null, + "min_height": null, + "padding": null, + "grid_auto_rows": null, + "grid_gap": null, + "max_width": null, + "order": null, + "_view_module_version": "1.2.0", + "grid_template_areas": null, + "object_position": null, + "object_fit": null, + "grid_auto_columns": null, + "margin": null, + "display": null, + "left": null + } + } + } + } + }, + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "bk0XWLfMvDXU" + }, + "source": [ + "# Note\n", + "This notebook can be run on google colab for improved performance. The code changes necessary for running on this system are commented over the code." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "edvxyOpnvDXj" + }, + "source": [ + "## Data preprocessing" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "-_KSLzO7733B" + }, + "source": [ + "" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "Ml7Gd4VgxW1d" + }, + "source": [ + "! pip install \\\n", + " scprep\\\n", + " spacy==2.3.2 \\\n", + " sentence_transformers==0.4.0 \\\n", + " phate==1.0.4 && \\\n", + " python -m spacy download es_core_news_lg" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "iH3dg-EV3JMY" + }, + "source": [ + "WARNING! Once you installed the packages in the previous cell you must restart your runtime and then import the library and load the model" + ] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "i1eWkGLcx_yi", + "outputId": "5138a213-1cfa-4205-da4f-277862d0c9fc" + }, + "source": [ + "import spacy\n", + "if spacy.prefer_gpu():\n", + " print(\"Using the GPU\")\n", + "else:\n", + " print(\"Using the CPU\")\n", + "es_nlp = spacy.load('es_core_news_lg')" + ], + "execution_count": 1, + "outputs": [ + { + "output_type": "stream", + "text": [ + "Using the GPU\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "EFkH4jX4MMZX" + }, + "source": [ + "For development work, in case you want to update the files in your GitHub branch by rerunning the clone, you first have to empty the folder." + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "TVeFAuzRLxy8" + }, + "source": [ + "!rm -rf policy-data-analyzer/" + ], + "execution_count": 2, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "ykyZ81KN7tfr", + "outputId": "858589f4-d910-40a4-ef0f-3e03b79f0109" + }, + "source": [ + "# Define branch to clone\n", + "! branch_name='#50_dfq_sbert_fine_tuning' && \\\n", + " git clone --branch $branch_name https://github.com/wri-dssg/policy-data-analyzer.git" + ], + "execution_count": 3, + "outputs": [ + { + "output_type": "stream", + "text": [ + "Cloning into 'policy-data-analyzer'...\n", + "remote: Enumerating objects: 174, done.\u001b[K\n", + "remote: Counting objects: 100% (174/174), done.\u001b[K\n", + "remote: Compressing objects: 100% (123/123), done.\u001b[K\n", + "remote: Total 3093 (delta 94), reused 129 (delta 51), pack-reused 2919\u001b[K\n", + "Receiving objects: 100% (3093/3093), 134.22 MiB | 18.57 MiB/s, done.\n", + "Resolving deltas: 100% (1641/1641), done.\n", + "Checking out files: 100% (843/843), done.\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "R4UNMkgIvDXl", + "outputId": "56eef288-660b-43b8-aa08-f7af7992903e" + }, + "source": [ + "import pandas as pd\n", + "import sys\n", + "import os\n", + "import csv\n", + "from sklearn.model_selection import train_test_split\n", + "from sentence_transformers import SentencesDataset, SentenceTransformer, InputExample, losses\n", + "from sentence_transformers.evaluation import LabelAccuracyEvaluator\n", + "from torch import nn, Tensor\n", + "from typing import Iterable, Dict\n", + "from torch.utils.data import DataLoader\n", + "import math\n", + "import time\n", + "import cupy as cp\n", + "import json\n", + "\n", + "# os.chdir(\"policy-data-analyzer\") #If you run this cell more than once, comment out this line because you are ready in this folder and you will get an error\n", + "from tasks.data_loader.src.utils import *\n", + "from tasks.data_augmentation.src.zero_shot_classification.latent_embeddings_classifier import *\n", + "from tasks.evaluate_model.src.model_evaluator import *\n", + "from tasks.data_visualization.src.plotting import *\n", + "\n", + "from google.colab import drive\n", + "drive.mount('/content/drive')" + ], + "execution_count": 111, + "outputs": [ + { + "output_type": "stream", + "text": [ + "Drive already mounted at /content/drive; to attempt to forcibly remount, call drive.mount(\"/content/drive\", force_remount=True).\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "P4l8oGqlvDXs" + }, + "source": [ + "## Fine-tuning the embedding model on the labeled data" + ] }, { "cell_type": "markdown", @@ -2514,9 +3005,202 @@ " loss = loss_fct(output, labels.view(-1))\n", " return loss\n", " else:\n", - " return features, output" + " return features, output\n", + "\n", + "def grid_search_fine_tune_sbert(train_params, train_sents, train_labels, test_sents, test_labels, label_names):\n", + " output_path = train_params[\"output_path\"]\n", + " experiment = train_params[\"experiment\"]\n", + " all_test_perc = train_params[\"all_test_perc\"]\n", + " model_names = train_params[\"model_names\"]\n", + " start_epochs = train_params[\"start_epochs\"]\n", + " max_num_epochs = train_params[\"max_num_epochs\"]\n", + " epochs_increment = train_params[\"epochs_increment\"]\n", + " numeric_labels = labels2numeric(test_labels, label_names)\n", + "\n", + " print(\"Grid Search Fine tuning parameters:\\n\", json.dumps(train_params, sort_keys=True, indent=4))\n", + "\n", + " # Output setup - we will update the json as the fine tuning process goes so every result is stored immediately\n", + " with open(f\"{output_path}/{experiment}_FineTuningResults.json\", \"w\") as fw:\n", + " json.dump({}, fw)\n", + "\n", + " for test_perc in all_test_perc:\n", + " with open(f\"{output_path}/{experiment}_FineTuningResults.json\", \"r\") as fr:\n", + " output = json.load(fr)\n", + "\n", + " output[f\"test_perc={test_perc}\"] = {}\n", + " X_train, X_test, y_train, y_test = train_test_split(train_sents, train_labels, test_size=test_perc,\n", + " stratify=train_labels, random_state=69420)\n", + "\n", + " # Load data samples into batches\n", + " train_batch_size = 16\n", + " label2int = dict(zip(label_names, range(len(label_names))))\n", + " train_samples = []\n", + " for sent, label in zip(X_train, y_train):\n", + " label_id = label2int[label]\n", + " train_samples.append(InputExample(texts=[sent], label=label_id))\n", + "\n", + " # Configure the dev set evaluator - still need to test whether this works\n", + " dev_samples = []\n", + " for sent, label in zip(X_test, y_test):\n", + " label_id = label2int[label]\n", + " dev_samples.append(InputExample(texts=[sent], label=label_id))\n", + "\n", + " for model_name in model_names:\n", + " # Setup\n", + " output[f\"test_perc={test_perc}\"][model_name] = []\n", + "\n", + " # Train set config\n", + " model = SentenceTransformer(model_name)\n", + " train_dataset = SentencesDataset(train_samples, model=model)\n", + " train_dataloader = DataLoader(train_dataset, shuffle=True, batch_size=train_batch_size)\n", + "\n", + " # Define the way the loss is computed\n", + " classifier = SoftmaxClassifier(model=model,\n", + " sentence_embedding_dimension=model.get_sentence_embedding_dimension(),\n", + " num_labels=len(label2int))\n", + "\n", + " # Dev set config\n", + " dev_dataset = SentencesDataset(dev_samples, model=model)\n", + " dev_dataloader = DataLoader(dev_dataset, shuffle=True, batch_size=train_batch_size)\n", + " dev_evaluator = LabelAccuracyEvaluator(dataloader=dev_dataloader, softmax_model=classifier, name='lae-dev')\n", + "\n", + " for num_epochs in range(start_epochs, max_num_epochs + 2, epochs_increment):\n", + " print(\"Num epochs:\", num_epochs)\n", + "\n", + " warmup_steps = math.ceil(\n", + " len(train_dataset) * num_epochs / train_batch_size * 0.1) # 10% of train data for warm-up\n", + " model_deets = f\"model={model_name}_test-perc={test_perc}_n-epoch={num_epochs}\"\n", + "\n", + " # Train the model\n", + " start = time.time()\n", + " if num_epochs == start_epochs:\n", + " model.fit(train_objectives=[(train_dataloader, classifier)],\n", + " evaluator=dev_evaluator,\n", + " epochs=start_epochs,\n", + " evaluation_steps=1000,\n", + " warmup_steps=warmup_steps,\n", + " )\n", + " else:\n", + " model.fit(train_objectives=[(train_dataloader, classifier)],\n", + " evaluator=dev_evaluator,\n", + " epochs=epochs_increment, # We always tune on an extra epoch to see the performance gain\n", + " evaluation_steps=1000,\n", + " warmup_steps=warmup_steps,\n", + " )\n", + "\n", + " end = time.time()\n", + " hours, rem = divmod(end - start, 3600)\n", + " minutes, seconds = divmod(rem, 60)\n", + " print(\"Time taken for fine-tuning:\", \"{:0>2}:{:0>2}:{:05.2f}\".format(int(hours), int(minutes), seconds))\n", + "\n", + " ### Classify sentences\n", + " # Projection matrix Z low-dim projection\n", + " print(\"Classifying sentences...\")\n", + " proj_matrix = cp.asnumpy(calc_proj_matrix(test_sents, 50, es_nlp, model, 0.01))\n", + " all_sent_embs = encode_all_sents(test_sents, model, proj_matrix)\n", + " all_label_embs = encode_labels(label_names, model, proj_matrix)\n", + " visualize_embeddings_2D(np.vstack(all_sent_embs), test_labels, tsne_perplexity=50,\n", + " store_name=f\"{output_path}/{model_deets}\")\n", + " model_preds, model_scores = calc_all_cos_similarity(all_sent_embs, all_label_embs, label_names)\n", + "\n", + " ### Evaluate the model\n", + " numeric_preds = labels2numeric(model_preds, label_names)\n", + " evaluator = ModelEvaluator(label_names, y_true=numeric_labels, y_pred=numeric_preds)\n", + "\n", + " output[f\"test_perc={test_perc}\"][model_name].append(\n", + " {\"num_epochs\": num_epochs, \"avg_f1\": evaluator.avg_f1.tolist()})\n", + " with open(f\"{output_path}/{experiment}_FineTuningResults.json\", \"w\") as fw:\n", + " json.dump(output, fw)\n", + "\n", + " evaluator.plot_confusion_matrix(color_map='Blues', exp_name=f\"{output_path}/{model_deets}\")\n", + " print(\"Macro/Weighted Avg F1-score:\", evaluator.avg_f1.tolist())\n", + "\n", + "def fine_tune_sbert(train_params, train_sents, train_labels, test_sents, test_labels, label_names):\n", + " output_path = train_params[\"output_path\"]\n", + " experiment = train_params[\"experiment\"]\n", + " test_perc = train_params[\"test_perc\"]\n", + " model_name = train_params[\"model_names\"]\n", + " num_epochs = train_params[\"num_epochs\"]\n", + " numeric_labels = labels2numeric(test_labels, label_names)\n", + "\n", + " print(\"Fine tuning parameters:\\n\", json.dumps(train_params, sort_keys=True, indent=4))\n", + "\n", + " output = {f\"test_perc={test_perc}\": {}}\n", + " X_train, X_test, y_train, y_test = train_test_split(train_sents, train_labels, test_size=test_perc,\n", + " stratify=train_labels, random_state=69420)\n", + " # Load data samples into batches\n", + " train_batch_size = 16\n", + " label2int = dict(zip(label_names, range(len(label_names))))\n", + " train_samples = []\n", + " for sent, label in zip(X_train, y_train):\n", + " label_id = label2int[label]\n", + " train_samples.append(InputExample(texts=[sent], label=label_id))\n", + "\n", + " # Configure the dev set evaluator - still need to test whether this works\n", + " dev_samples = []\n", + " for sent, label in zip(X_test, y_test):\n", + " label_id = label2int[label]\n", + " dev_samples.append(InputExample(texts=[sent], label=label_id))\n", + "\n", + " # Setup\n", + " output[f\"test_perc={test_perc}\"][model_name] = []\n", + "\n", + " # Train set config\n", + " model = SentenceTransformer(model_name)\n", + " train_dataset = SentencesDataset(train_samples, model=model)\n", + " train_dataloader = DataLoader(train_dataset, shuffle=True, batch_size=train_batch_size)\n", + "\n", + " # Define the way the loss is computed\n", + " classifier = SoftmaxClassifier(model=model,\n", + " sentence_embedding_dimension=model.get_sentence_embedding_dimension(),\n", + " num_labels=len(label2int))\n", + "\n", + " # Dev set config\n", + " dev_dataset = SentencesDataset(dev_samples, model=model)\n", + " dev_dataloader = DataLoader(dev_dataset, shuffle=True, batch_size=train_batch_size)\n", + " dev_evaluator = LabelAccuracyEvaluator(dataloader=dev_dataloader, softmax_model=classifier, name='lae-dev')\n", + " warmup_steps = math.ceil(\n", + " len(train_dataset) * num_epochs / train_batch_size * 0.1) # 10% of train data for warm-up\n", + " model_deets = f\"model={model_name}_test-perc={test_perc}_n-epoch={num_epochs}\"\n", + "\n", + " # Train the model\n", + " start = time.time()\n", + " model.fit(train_objectives=[(train_dataloader, classifier)],\n", + " evaluator=dev_evaluator,\n", + " epochs=num_epochs,\n", + " evaluation_steps=1000,\n", + " warmup_steps=warmup_steps,\n", + " output_path=output_path\n", + " )\n", + "\n", + " end = time.time()\n", + " hours, rem = divmod(end - start, 3600)\n", + " minutes, seconds = divmod(rem, 60)\n", + " print(\"Time taken for fine-tuning:\", \"{:0>2}:{:0>2}:{:05.2f}\".format(int(hours), int(minutes), seconds))\n", + "\n", + " ### Classify sentences\n", + " # Projection matrix Z low-dim projection\n", + " print(\"Classifying sentences...\")\n", + " proj_matrix = cp.asnumpy(calc_proj_matrix(test_sents, 50, es_nlp, model, 0.01))\n", + " all_sent_embs = encode_all_sents(test_sents, model, proj_matrix)\n", + " all_label_embs = encode_labels(label_names, model, proj_matrix)\n", + " visualize_embeddings_2D(np.vstack(all_sent_embs), test_labels, tsne_perplexity=50,\n", + " store_name=f\"{output_path}/{model_deets}\")\n", + " model_preds, model_scores = calc_all_cos_similarity(all_sent_embs, all_label_embs, label_names)\n", + "\n", + " ### Evaluate the model\n", + " numeric_preds = labels2numeric(model_preds, label_names)\n", + " evaluator = ModelEvaluator(label_names, y_true=numeric_labels, y_pred=numeric_preds)\n", + "\n", + " output[f\"test_perc={test_perc}\"][model_name].append(\n", + " {\"num_epochs\": num_epochs, \"avg_f1\": evaluator.avg_f1.tolist()})\n", + " with open(f\"{output_path}/{experiment}_FineTuningResults.json\", \"w\") as fw:\n", + " json.dump(output, fw)\n", + "\n", + " evaluator.plot_confusion_matrix(color_map='Blues', exp_name=f\"{output_path}/{model_deets}\")\n", + " print(\"Macro/Weighted Avg F1-score:\", evaluator.avg_f1.tolist())" ], - "execution_count": 5, + "execution_count": 134, "outputs": [] }, { @@ -2609,6 +3293,30 @@ "* model_names . You put in the list the names of the models to be used." ] }, + { + "cell_type": "code", + "metadata": { + "id": "E1r1ktjdeYQF" + }, + "source": [ + "def load_dataset(data_path, rater, set_of_labels_string):\n", + " \"\"\"\n", + " Return the train data, train labels, test data, and test labels \n", + " \"\"\"\n", + " dataset = []\n", + "\n", + " for dataset_type in [\"train\", \"test\"]:\n", + " for file_type in [\"sentences\", \"labels\"]:\n", + " filename = dataset_type + \"_\" + rater + \"_\" + set_of_labels_string + \"_\" + file_type + \".csv\"\n", + " file = data_path + \"/\" + filename\n", + " data = pd.read_csv(file, index_col=False, header=None)\n", + " dataset.append(data[0].tolist()) # The data is always the entire first column\n", + " \n", + " return dataset[0], dataset[1], dataset[2], dataset[3]" + ], + "execution_count": 114, + "outputs": [] + }, { "cell_type": "code", "metadata": { @@ -2617,22 +3325,22 @@ "source": [ "rater = \"Rater3\" # TODO: Change accordingly to what is the dataset you want to analyze\n", "set_of_labels = All_but_unknown\n", - "set_of_labels_string = \"single_All_but_unknown\"\n", - "experiment = \"EXP-TEST-NEW-DATA\"\n", + "set_of_labels_string = \"combined_All_but_unknown\"\n", + "experiment = \"EXP-TEST-NEW-DATA2\" \n", "\n", "# This first one is the one used by David and Daniel\n", - "base_path = \"/content/drive/MyDrive/WRI-LatinAmerica-Talent/\"\n", + "base_path = \"/content/drive/MyDrive/WRI-LatinAmerica-Talent\"\n", "\n", "# This one is the one used by Jordi\n", "# base_path = \"/content/drive/MyDrive/Official Folder of WRI Latin America Project/WRI-LatinAmerica-Talent\"\n", "\n", - "data_path = f\"{base_path}/Cristina_Policy_Files/Tagged_sentence_lists/datasets/Raters/\"\n", - "results_save_path = f\"{base_path}/Modeling/FineTuningexperiments/{experiment}\"\n", + "data_path = f\"{base_path}/Cristina_Policy_Files/Tagged_sentence_lists/datasets/Raters\"\n", + "results_save_path = f\"{base_path}/Modeling/FineTuningExperiments/{experiment}\"\n", "\n", "if not os.path.exists(results_save_path):\n", " os.makedirs(results_save_path)" ], - "execution_count": 32, + "execution_count": 140, "outputs": [] }, { @@ -2641,339 +3349,665 @@ "colab": { "base_uri": "https://localhost:8080/" }, - "id": "HEemnroODor0", - "outputId": "708d36ba-f271-4fb6-baaf-35ce65ee4bef" + "id": "r-eUXWHQi6TH", + "outputId": "172fc07b-8e18-448a-c3c9-c1b29e0c52ae" }, "source": [ - "print(os.listdir(f\"{base_path}/Modeling/FineTuningExperiments/\"))" + "train_sents, train_labels, test_sents, test_labels = load_dataset(data_path, rater, set_of_labels_string)\n", + "label_names = unique_labels(train_labels)\n", + "label_names" ], - "execution_count": 30, + "execution_count": 115, "outputs": [ { - "output_type": "stream", - "text": [ - "['Exp1', 'EXP_DAVID_TSNE', 'EXP10', 'EXP11', 'EXP12', 'EXP13', 'EXP14', 'EXP15', 'Summary_diagrams', 'EXP20', 'EXP21', 'EXP22', 'EXPTEST1', 'EXPTEST2', 'EXPTEST0', 'EXPTEST3', 'EXPTEST4', 'EXPTEST5', 'EXP-TEST-NEW-DATA']\n" - ], - "name": "stdout" + "output_type": "execute_result", + "data": { + "text/plain": [ + "['Technical assistance',\n", + " 'Supplies',\n", + " 'Credit',\n", + " 'Direct payment',\n", + " 'Fine',\n", + " 'Tax deduction']" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 115 } ] }, { "cell_type": "code", "metadata": { - "id": "E1r1ktjdeYQF" + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "mT8lrfE1jiF0", + "outputId": "80736eaf-0b0d-4c09-92f0-8067f58f7ae0" }, "source": [ - "def load_dataset(data_path, rater, set_of_labels_string):\n", - " \"\"\"\n", - " Return the train data, train labels, test data, and test labels \n", - " \"\"\"\n", - " dataset = []\n", - "\n", - " for dataset_type in [\"train\", \"test\"]:\n", - " for file_type in [\"sentences\", \"labels\"]:\n", - " filename = dataset_type + \"_\" + rater + \"_\" + set_of_labels_string + \"_\" + file_type + \".csv\"\n", - " file = data_path + filename\n", - " data = pd.read_csv(file, index_col=False, header=None)\n", - " dataset.append(data[0].tolist()) # The data is always the entire first column\n", - " \n", - " return dataset[0], dataset[1], dataset[2], dataset[3]" + "(train_sents[2], train_labels[2]), (test_sents[2], test_labels[2])" + ], + "execution_count": 116, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "(('Cada familia sólo tendrá derecho a un Subsidio Bono Leña, no pudiendo causar este beneficio más de una persona por grupo familiar',\n", + " 'Direct payment'),\n", + " ('- El pago del Subsidio se efectuará a la persona beneficiaria o al integrante de la familia beneficiaria que corresponda, de acuerdo a la información que contenga la Ficha de Protección Social o el instrumento de caracterización socioeconómica vigente\"',\n", + " 'Direct payment'))" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 116 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "VbnqVcEzuWq5" + }, + "source": [ + "### Grid Search Fine Tuning" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "l9ycZoZ5yU0d" + }, + "source": [ + "# Configure the grid search fine tuning \n", + "grid_search_params = {\n", + " \"all_test_perc\": [0.15, 0.2, 0.25, 0.3],\n", + " \"model_names\": ['stsb-xlm-r-multilingual', 'paraphrase-xlm-r-multilingual-v1'], #, 'quora-distilbert-multilingual''distiluse-base-multilingual-sed-v2',\n", + " \"output_path\": results_save_path,\n", + " \"experiment\": experiment,\n", + " # If you want to train for a set number of epochs instead of a range, set all these numbers to be equal\n", + " \"start_epochs\": 4, \n", + " \"epochs_increment\": 2,\n", + " \"max_num_epochs\": 12\n", + "}" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "jWmPbwmhP_cZ" + }, + "source": [ + "# To run a grid search over hyperparameters for fine tuning SBERT without storing the model, run:\n", + "grid_search_fine_tune_sbert(grid_search_params, train_sents, train_labels, test_sents, test_labels, label_names)" ], - "execution_count": 46, + "execution_count": null, "outputs": [] }, + { + "cell_type": "markdown", + "metadata": { + "id": "m22EUP0uuaP0" + }, + "source": [ + "### Fine tuning with set parameters" + ] + }, { "cell_type": "code", "metadata": { - "id": "r-eUXWHQi6TH" + "id": "Rf23hSr5RdYt" }, "source": [ - "train_sents, train_labels, test_sents, test_labels = load_dataset(data_path, rater, set_of_labels_string)" + "# Configure the fine tuning for one set of parameters\n", + "fine_tuning_params = {\n", + " \"test_perc\": 0.25,\n", + " \"model_names\": 'paraphrase-xlm-r-multilingual-v1',\n", + " \"output_path\": results_save_path,\n", + " \"experiment\": experiment\",\n", + " \"num_epochs\": 10\n", + "}" ], - "execution_count": 43, + "execution_count": 141, "outputs": [] }, { "cell_type": "code", "metadata": { "colab": { - "base_uri": "https://localhost:8080/" + "base_uri": "https://localhost:8080/", + "height": 1000, + "referenced_widgets": [ + "fca6dd1f1a0d4bdd8afe04f5f899e7f8", + "c203042fd0204268a649a05daa0513bf", + "acf9c2fff09d46a3a62203b2980e0539", + "f04ce12c094a432cba7a2b2dc8fea813", + "77a376e6fd524e839e4017ba6d7d52a9", + "8f2b826e76b44d9da1fc36c607f0fe02", + "44dc88d26359459ea810213cd9c4e87c", + "53ede21cf7164a89a809bf2ac953f959", + "c12c140a024f46c7a1cfad318f8056fc", + "10c77230e1b64e69af1ffc44a045ddd2", + "8f2f04f100a94ab8acbc84c13e5859dd", + "3fa00df1702a446ab57d973aba921d3c", + "779a149fd09b4c6ba2123ef11b083813", + "19aa17e755464ca5b0c03d0b3873f559", + "b4e762317b52408ca6a1fb46575efe06", + "ebf1d875a69f4d67b6d61f6815cc0655", + "0043df9db81b47aead59cec69e05da8b", + "f72994f47aaf4f6798d6b463cf2d8d86", + "0197d0350b424e1bae2a8a53dd7c26df", + "984ab80a4bbe42748daea5171c0db82f", + "a37d28bdc9bd4e128391c5ddb1f38852", + "f96091f965d94857a16c15024ec732b5", + "9f20f391063548b4a8987fa3c4f7d97a", + "3069cde1cbad49dfa0c34bea3ed71d08", + "dd29ef6f6df44d44af78d04004c62f01", + "6fe5ac05d47b41ceb544a5179d1ef5d4", + "1b9ccce5f3894cdc9158c653d41957ca", + "d8afbc8b25444d1483330af2b18a94d0", + "92a14ea822d0458583320ed461bd1a17", + "d071db82958845a5947daa9eaa2ddf91", + "0c9c7bc3e1dc495799a4a37c990f4241", + "94c3ab21e78c405da85788eb4106db50", + "3304541393f84fefa400de83e8636a5c", + "0538e8932a854ef987ce8e43ec13a719", + "cf3e517756074c739d2d8f0368dee1ea", + "0e2231e802f34971a1af2cbc0022f3eb", + "b50304c81a714aeaa58d5c8e20dee56b", + "5d12b9d1dfdb48b7809111a676185d15", + "d4c81c9a13a74df2a0cc7c237469b68b", + "81b6e33bbd5547e99b8dab541374f4e7", + "f03fc44e573e4c799f1045c504d36b2f", + "a7b74586b70244eba0782addd7a6e4d4", + "1f80711802bd4fd8b50d101d6df878b6", + "2d9c3e251af84a14b34df6160666b7ee", + "75af76007b0b482698644fdd0ed8d571", + "9ac5ff1a27824774a09ca05be8cc4857", + "71c8d30a19814201908f88a77ce6f46a", + "dd47cc0013c6480fa831d049940850a6", + "1d385b01f10e44489b63814336181bde", + "4701fb0c920d43c189eb3f36091821b7", + "46ef86cff22a4e88964ad11f33c943ec", + "6cc96dac09a6452a9ed253fb25c474b7", + "86876f890d9443dbb2f28ed6020526dd", + "e473824c3f2146948bb1b8b4a0e5e5da", + "7bda8650be2440588bedf1b2d577b38c", + "78ec3b4e9914430f9359f26b08105e04", + "492cbe734d6149c2837528e1655d662e", + "97c90c47ac574ff8b9d9c00fe349da80", + "6d31911b685c4108a8d5e0b525613911", + "29ab38f03b9c4c86b18ed5608d040e49", + "c69b83d1ec9347f3b2b5375ca533738a", + "d40ea82e5d4f4b149b95796005062856", + "75a15fb3c013479cb5c3a45df0b2936f", + "9151a55f3f6d4db2928f2b3b279f3c0b", + "1e304bf241274d818ab4522828ae169c", + "f65aac581b9f413589669b922fbc46a8", + "16336b96d0a64703bd03d5f0e48657b8", + "68841718d5724076a06b0dd7c0a9df69", + "9eab9ea38b41459da2284fdd5aa39bbb", + "65e5465691384020984635b1f6f098c2", + "618525790f53419f886281120454efeb", + "c499b23942f9456180edc5e99ab98ca7", + "2e98274dfc4a4535b4cf395c274f9c7c", + "889c0e01503d4707abfbd344f18a33dc", + "59d2db0846b44fffb8eb8df09256a12b", + "398870e396004bd6b3df8fe40aa25818", + "c455db89759e43b49717b7c0e8cdf749", + "14665e3c4ae64f5cba8465a75de16df1", + "d78e8d908d3a43eda18d7b4c26cddaaa", + "9b03ee6a937a40d99a9a112001e38ef3", + "def1dc1c9ea242ad9e29ff55d4a79326", + "d8f685293e2d4a868eb4258d2e535659", + "c391454a40c342eca3479026162b4da0", + "645384434f4747a4b24d5b37fce6fa00", + "cc3f54299a05492a86384f062595280e", + "6b334406ed0f49cd8096471a97b134b3", + "370fa1fe3aa74ee2a94be109f96f48d0", + "f0847f77abc543c0ad4986a1abfaab91" + ] + }, + "id": "fVnPsq3FQLpw", + "outputId": "9b2cd796-a9eb-446f-f0da-ef0655c2387b" + }, + "source": [ + "# If you already know which configuration you want to fine tune SBERT on, and want to store the model, run:\n", + "fine_tune_sbert(fine_tuning_params, train_sents, train_labels, test_sents, test_labels, label_names)" + ], + "execution_count": 142, + "outputs": [ + { + "output_type": "stream", + "text": [ + "Fine tuning parameters:\n", + " {\n", + " \"experiment\": \"EXP-TEST-NEW-DATA2\",\n", + " \"model_names\": \"paraphrase-xlm-r-multilingual-v1\",\n", + " \"num_epochs\": 10,\n", + " \"output_path\": \"/content/drive/MyDrive/WRI-LatinAmerica-Talent/Modeling/FineTuningExperiments/EXP-TEST-NEW-DATA2\",\n", + " \"test_perc\": 0.25\n", + "}\n" + ], + "name": "stdout" + }, + { + "output_type": "display_data", + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "fca6dd1f1a0d4bdd8afe04f5f899e7f8", + "version_minor": 0, + "version_major": 2 + }, + "text/plain": [ + "HBox(children=(FloatProgress(value=0.0, description='Epoch', max=10.0, style=ProgressStyle(description_width='…" + ] + }, + "metadata": { + "tags": [] + } + }, + { + "output_type": "display_data", + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "c12c140a024f46c7a1cfad318f8056fc", + "version_minor": 0, + "version_major": 2 + }, + "text/plain": [ + "HBox(children=(FloatProgress(value=0.0, description='Iteration', max=28.0, style=ProgressStyle(description_wid…" + ] + }, + "metadata": { + "tags": [] + } + }, + { + "output_type": "stream", + "text": [ + "\n", + "\n", + "Evaluating: 0%| | 0/10 [00:002}:{:0>2}:{:05.2f}\".format(int(hours),int(minutes),seconds))\n", - " \n", - " ### Classify sentences\n", - " # Projection matrix Z low-dim projection\n", - " print(\"Classifying sentences...\")\n", - " proj_matrix = cp.asnumpy(calc_proj_matrix(test_sents, 50, es_nlp, model, 0.01))\n", - " all_sent_embs = encode_train_sents(test_sents, model, proj_matrix)\n", - " all_label_embs = encode_labels(label_names, model, proj_matrix)\n", - " visualize_embeddings_2D(np.vstack(all_sent_embs), test_labels, tsne_perplexity=50, store_name=f\"{results_save_path}/{model_deets}\")\n", - " model_preds, model_scores = calc_all_cos_similarity(all_sent_embs, all_label_embs, label_names)\n", - " \n", - " ### Evaluate the model\n", - " numeric_preds = labels2numeric(model_preds, label_names)\n", - " evaluator = ModelEvaluator(label_names, y_true=numeric_labels, y_pred=numeric_preds)\n", - " \n", - " output[f\"test_perc={test_perc}\"][model_name].append({\"num_epochs\": num_epochs, \"avg_f1\": evaluator.avg_f1.tolist()})\n", - " with open(f\"{output_path}{experiment}_FineTuningResults.json\", \"w\") as fw:\n", - " json.dump(output, fw)\n", - "\n", - " evaluator.plot_confusion_matrix(color_map='Blues', exp_name=f\"{results_save_path}/{model_deets}\")" - ], - "execution_count": null, - "outputs": [ { "output_type": "stream", "text": [ - "100%|██████████| 1.01G/1.01G [00:53<00:00, 18.8MB/s]\n" + "\n", + "\n", + "Evaluating: 0%| | 0/10 [00:00" ] }, "metadata": { - "tags": [], - "needs_background": "light" + "tags": [] } }, { "output_type": "display_data", "data": { - "image/png": "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\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAfIAAAG2CAYAAACEWASqAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nOzdeVhUZfvA8e8Mi4gBIiCr5ErYa5amqbixipgm7itZSa9m5vKaaW6VWW6vlktamaUhlr3uCy4JiEvmzy1Lc98SWUQDAVkH5vcHOooCMiPDzND96ZrrYubMc+a+O86553nOc85RqNVqNUIIIYQwSUpDByCEEEII3UkhF0IIIUyYFHIhhBDChEkhF0IIIUyYFHIhhBDChEkhF0IIIUyYFHIhjJharea7776ja9euBAcHExgYyIcffkhGRsYTrffdd9+lY8eO7Nu3T+u2v//+O0OHDn2iz69oUVFRZGZmlrhs3rx5/PDDD5UckRCVRyHnkQthvObOncv//d//sXjxYpydncnKyuKTTz7h8uXLREZGolAodFpv48aN2blzJ56enhUcsWF07tyZFStW4OLiYuhQhKh00iMXwkilpaURERHBrFmzcHZ2BsDa2ppp06YRHh6OWq0mNzeXadOmERwcTEhICLNmzaKgoAAAf39/fvzxR3r37k27du2YNWsWAGFhYRQWFjJ06FDi4uLw9/fnyJEjms+991ylUjF58mSCg4MJCgpi5MiRZGZmcujQIYKCggB0+vyHhYWF8fXXX9OvXz9at25NZGQkS5YsoXPnznTp0oVr164BcOnSJQYMGEBISAhBQUFs3boVgPfff5/Lly8TFhbGkSNHmDhxIjNnzqRbt25s376diRMnsmTJEn7//Xd8fX25c+cOAF9++SWjRo2q6M0mRKWTQi6EkTpx4gQuLi40aNCg2OvVqlXD398fpVLJypUrSUpKYtu2bWzYsIEjR45oChzA4cOHWbNmDevWrWPVqlUkJSUREREBQEREBB07diz18/fv3098fDw7duxg165dNGzYkOPHjxd7jy6fX5LDhw8TGRnJzJkzmTt3Li4uLuzYsYOGDRuybt06AObMmYOfnx/bt2/n008/ZfLkyeTn5zNz5kxNPi1atADg4MGDrF27lpCQEM1nNG3alMDAQL766iuSk5NZvXo1U6ZM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\n", "text/plain": [ "
" ] }, "metadata": { - "tags": [], - "needs_background": "light" + "tags": [] } }, { "output_type": "stream", "text": [ - "Num epochs: 6\n" + "Macro/Weighted Avg F1-score: [0.8145452412305988, 0.8430859877700709]\n" ], "name": "stdout" + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "fwM1PalvKsax" + }, + "source": [ + "### Load best model from training" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "G9rPCSzicc2Z" + }, + "source": [ + "model_name = \"paraphrase-xlm-r-multilingual-v1\"\n", + "test_perc = 0.25\n", + "num_epochs = 10\n", + "model_deets = f\"model={model_name}_test-perc={test_perc}_n-epoch={num_epochs}\"\n", + "experiment = \"EXP-TEST-NEW-DATA2\"\n", + "\n", + "saved_model_path = f\"{base_path}/Modeling/FineTuningExperiments/{experiment}\"\n", + "# saved_model_path = f\"/content/drive/MyDrive/Official Folder of WRI Latin America Project/WRI-LatinAmerica-Talent/Modeling/FineTuningExperiments/{Experiment}/FineTuning_{model_deets}\"" + ], + "execution_count": 143, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "pe2dWNR6LEYh" + }, + "source": [ + "saved_model = SentenceTransformer(saved_model_path)" + ], + "execution_count": 144, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "JnRYlUead3h1" + }, + "source": [ + "# Simple embeddings, no projection matrix added\n", + "train_sent_embs = encode_all_sents(train_sents, saved_model)\n", + "test_sent_embs = encode_all_sents(test_sents, saved_model)" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "IsTPFo-NcdDb" + }, + "source": [ + "### Test multiple classifiers\n", + "- Random Forests" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "2PutPV-Qfd10" + }, + "source": [ + "from sklearn.model_selection import cross_val_score\n", + "from sklearn.metrics import classification_report" + ], + "execution_count": 132, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "X3enEXNfcory" + }, + "source": [ + "from sklearn.ensemble import RandomForestClassifier" + ], + "execution_count": 120, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "0bkssDEOco5h" + }, + "source": [ + "clf = RandomForestClassifier(n_estimators=100, max_depth=3, random_state=69420)\n", + "clf.fit(np.vstack(train_sent_embs), train_labels)\n", + "clf_preds = [clf.predict(sent_emb)[0] for sent_emb in test_sent_embs]\n", + "print(classification_report(test_labels, clf_preds))" + ], + "execution_count": 161, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" }, + "id": "wnkib30lfERf", + "outputId": "a4bdf709-6f97-4a72-87fe-de2be695008f" + }, + "source": [ + "" + ], + "execution_count": 164, + "outputs": [ { - "output_type": "display_data", - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "adb37a347dc741bb8b467711d7f29b52", - "version_minor": 0, - "version_major": 2 - }, - "text/plain": [ - "HBox(children=(FloatProgress(value=0.0, description='Epoch', max=2.0, style=ProgressStyle(description_width='i…" - ] - }, - "metadata": { - "tags": [] - } - }, - { - "output_type": "display_data", - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "ef07a5d5bdde47ed84f7c9a43e19a45f", - "version_minor": 0, - "version_major": 2 - }, - "text/plain": [ - "HBox(children=(FloatProgress(value=0.0, description='Iteration', max=31.0, style=ProgressStyle(description_wid…" - ] - }, - "metadata": { - "tags": [] - } + "output_type": "stream", + "text": [ + " precision recall f1-score support\n", + "\n", + " Credit 1.00 0.77 0.87 30\n", + " Direct payment 0.81 0.90 0.85 52\n", + " Fine 0.80 0.92 0.86 26\n", + " Supplies 0.00 0.00 0.00 10\n", + " Tax deduction 0.00 0.00 0.00 10\n", + "Technical assistance 0.49 0.86 0.62 22\n", + "\n", + " accuracy 0.75 150\n", + " macro avg 0.52 0.58 0.53 150\n", + " weighted avg 0.69 0.75 0.71 150\n", + "\n" + ], + "name": "stdout" }, { "output_type": "stream", "text": [ - "\n", - "Evaluating: 0%| | 0/6 [00:00" ] }, "metadata": { "tags": [] } + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "hEnVp56BgSjo" + }, + "source": [ + "- Support Vector Machines" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "ceU18zCdfXgg" + }, + "source": [ + "from sklearn import svm" + ], + "execution_count": 137, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "VE34MIq1gYLF" + }, + "source": [ + "clf = svm.SVC(gamma=0.001, C=100.)\n", + "clf.fit(np.vstack(train_sent_embs), train_labels)\n", + "clf_preds = [clf.predict(sent_emb)[0] for sent_emb in test_sent_embs]\n", + "print(classification_report(test_labels, clf_preds))" + ], + "execution_count": 166, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" }, + "id": "8MN858KOgcYs", + "outputId": "929b6055-3c86-40c3-8bc4-59c65426e266" + }, + "source": [ + "" + ], + "execution_count": 169, + "outputs": [ { "output_type": "stream", "text": [ + " precision recall f1-score support\n", "\n", - "Evaluating: 0%| | 0/6 [00:00" + "
" ] }, "metadata": { "tags": [] } + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "6-h6EhwMnq8W" + }, + "source": [ + "- Gradient Boosting trees" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "P5MFJRj4nm90" + }, + "source": [ + "!pip install xgboost \\\n", + " lightgbm \\\n", + " catboost" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "trfA9gjdp3Jm" + }, + "source": [ + "from xgboost import XGBClassifier\n", + "from lightgbm import LGBMClassifier\n", + "from catboost import CatBoostClassifier\n", + "from sklearn.tree import DecisionTreeClassifier\n", + "from sklearn.ensemble import (AdaBoostClassifier,\n", + " GradientBoostingClassifier)" + ], + "execution_count": 173, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "Z2fRO28hnmy4" + }, + "source": [ + "cb = CatBoostClassifier(n_estimators=2000,\n", + " colsample_bylevel=0.06,\n", + " max_leaves=31,\n", + " subsample=0.67,\n", + " verbose=0,\n", + " thread_count=6,\n", + " random_state=69420,\n", + " bootstrap_type='Poisson')\n", + "\n", + "gbm = GradientBoostingClassifier(n_estimators=2000,\n", + " subsample=0.67,\n", + " max_features=0.06,\n", + " validation_fraction=0.1,\n", + " n_iter_no_change=15,\n", + " verbose=0,\n", + " random_state=69420)\n", + "\n", + "lgbm = LGBMClassifier(n_estimators=2000,\n", + " feature_fraction=0.06,\n", + " bagging_fraction=0.67,\n", + " bagging_freq=1,\n", + " verbose=0,\n", + " n_jobs=6,\n", + " random_state=69420)\n", + "\n", + "xgb = XGBClassifier(n_estimators=2000,\n", + " tree_method='hist',\n", + " subsample=0.67,\n", + " colsample_level=0.06,\n", + " verbose=0,\n", + " n_jobs=6,\n", + " random_state=69420)\n", + "\n", + "base_estim = DecisionTreeClassifier(max_depth=1, max_features=0.06) \n", + "ab = AdaBoostClassifier(base_estimator=base_estim,\n", + " n_estimators=500,\n", + " learning_rate=0.5,\n", + " random_state=69420)\n" + ], + "execution_count": 178, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 1000 + }, + "id": "OTF_EvTUqit4", + "outputId": "9301b005-5f4f-4fa4-b8cf-f8e39caa6565" + }, + "source": [ + "gb_classifiers = [lgbm, gbm, xgb, ab] #cb\n", + "gb_names = [i.__class__.__name__ for i in gb_classifiers]\n", + "\n", + "for clf, clf_name in zip(gb_classifiers, gb_names):\n", + " print(\"Evaluating:\", clf_name)\n", + " print(\"Training...\")\n", + " clf.fit(np.vstack(train_sent_embs), train_labels)\n", + " print(\"Predicting...\")\n", + " clf_preds = [clf.predict(sent_emb)[0] for sent_emb in test_sent_embs]\n", + " print(classification_report(test_labels, clf_preds))\n", + " numeric_preds = labels2numeric(clf_preds, label_names)\n", + " numeric_test_labels = labels2numeric(test_labels, label_names)\n", + " evaluator = ModelEvaluator(label_names, y_true=numeric_test_labels, y_pred=numeric_preds)\n", + " evaluator.plot_confusion_matrix(color_map='Blues', exp_name=f\"{saved_model_path}/{clf_name}\")" + ], + "execution_count": 180, + "outputs": [ + { + "output_type": "stream", + "text": [ + "Evaluating: LGBMClassifier\n", + "Training...\n", + "Predicting...\n", + " precision recall f1-score support\n", + "\n", + " Credit 1.00 0.77 0.87 30\n", + " Direct payment 0.82 0.94 0.87 52\n", + " Fine 0.83 0.92 0.87 26\n", + " Supplies 0.70 0.70 0.70 10\n", + " Tax deduction 0.89 0.80 0.84 10\n", + "Technical assistance 0.89 0.77 0.83 22\n", + "\n", + " accuracy 0.85 150\n", + " macro avg 0.85 0.82 0.83 150\n", + " weighted avg 0.86 0.85 0.85 150\n", + "\n", + "Stored confusion matrix: /content/drive/MyDrive/WRI-LatinAmerica-Talent/Modeling/FineTuningExperiments/EXP-TEST-NEW-DATA2/LGBMClassifier_cm.png\n" + ], + "name": "stdout" }, { "output_type": "display_data", "data": { - "image/png": "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\n", + "image/png": "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G8jOzn5sXyqVitWrVxMUFMS6des4ePAgI0eOxN7enoCAANLT0zl69Cjbtm0jKCiIY8eOkZqayqZNm3jhhRfYvHkz9evX/9OYt27dys6dO9m7dy8qlQqA+/fvs379er744gu++uor8vLyWLNmDZs2bWLLli2kpaURHR39lD89IaoPKZELUYMkJSUxceJEtFotZmZmLFq0CGPjRz/z9u3bAxATE0N0dDTnz58HoKioCLVaTUpKCu7u7gB069aNoqIi3X5v3LhB06ZNMTc3x9zcnDVr1jz2dy9dukRycjKTJk0CIC8vj5SUFBITExk8eDAAPXr0IDw8/HdjNzc3Z8KECRgbG5OdnU1OTg4A3bt3B6BFixakpaWRkJBAamoq//znPwF4+PAhqampf++DE6Iak0QuRA1Svo3818oW1TExMeHNN99k2LBhj72uVP5SQffrJRiUSiUajeZ3/66JiQnPPfccc+fOfez5gIAA3X7/aPuUlBQCAwPZt28flpaWj8VWfipihUKBiYkJbdu2Zd26dY/tY+/evb+7fyFqMqlaF+IZ06FDB06ePAk8qrb+4osvAGjQoAE3btxAq9USFRX12DZNmzYlKSmJvLw8ioqK8PHx0S3aU1paSps2bYiMjKSgoACtVsv8+fMpLCykSZMmxMXFAY96qP+e7OxsbGxssLS0JD4+npSUFIqLiwF01eZXrlzB0dGRJk2akJiYyP379wFYvnw56enpT/dDEqIakRK5EM+YIUOGcO7cOcaMGUNpaamuU9n06dN59913cXR0xMHB4bFtatWqhZ+fHz4+PgC8/vrrKBQKunfvzrhx49i0aROTJk1i/PjxGBkZMXDgQMzNzZk0aRLTp0/n+PHjtGjR4ndjatWqFZaWlowZM4YuXbowZswY5syZQ5cuXbC1teXNN9/kzp07fPzxx1hYWDBr1izeeOMNTE1Nad269V9qfxeippJlTIUQQohqTKrWhRBCiGpMErkQQghRjUkiF0IIIaoxSeRCCCFENSaJXAghhKjGJJELIYQQ1ZgkciGEEKIa+38X6fqX7AFG6gAAAABJRU5ErkJggg==\n", "text/plain": [ "
" ] @@ -3290,36 +4676,67 @@ { "output_type": "stream", "text": [ - "Num epochs: 8\n" + "Evaluating: GradientBoostingClassifier\n", + "Training...\n", + "Predicting...\n", + " precision recall f1-score support\n", + "\n", + " Credit 1.00 0.73 0.85 30\n", + " Direct payment 0.78 0.88 0.83 52\n", + " Fine 0.77 0.92 0.84 26\n", + " Supplies 0.70 0.70 0.70 10\n", + " Tax deduction 0.80 0.80 0.80 10\n", + "Technical assistance 0.94 0.77 0.85 22\n", + "\n", + " accuracy 0.83 150\n", + " macro avg 0.83 0.80 0.81 150\n", + " weighted avg 0.84 0.83 0.83 150\n", + "\n", + "Stored confusion matrix: /content/drive/MyDrive/WRI-LatinAmerica-Talent/Modeling/FineTuningExperiments/EXP-TEST-NEW-DATA2/GradientBoostingClassifier_cm.png\n" ], "name": "stdout" }, { "output_type": "display_data", "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "78c898811bfc4875b98c89dc71e5514f", - "version_minor": 0, - "version_major": 2 - }, + "image/png": "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\n", "text/plain": [ - "HBox(children=(FloatProgress(value=0.0, description='Epoch', max=2.0, style=ProgressStyle(description_width='i…" + "
" ] }, "metadata": { "tags": [] } }, + { + "output_type": "stream", + "text": [ + "Evaluating: XGBClassifier\n", + "Training...\n", + "Predicting...\n", + " precision recall f1-score support\n", + "\n", + " Credit 1.00 0.73 0.85 30\n", + " Direct payment 0.78 0.90 0.84 52\n", + " Fine 0.80 0.92 0.86 26\n", + " Supplies 0.67 0.60 0.63 10\n", + " Tax deduction 0.73 0.80 0.76 10\n", + "Technical assistance 0.94 0.77 0.85 22\n", + "\n", + " accuracy 0.83 150\n", + " macro avg 0.82 0.79 0.80 150\n", + " weighted avg 0.84 0.83 0.83 150\n", + "\n", + "Stored confusion matrix: /content/drive/MyDrive/WRI-LatinAmerica-Talent/Modeling/FineTuningExperiments/EXP-TEST-NEW-DATA2/XGBClassifier_cm.png\n" + ], + "name": "stdout" + }, { "output_type": "display_data", "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "093d49b6236b487fb757c25768b4df64", - "version_minor": 0, - "version_major": 2 - }, + "image/png": "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\n", "text/plain": [ - "HBox(children=(FloatProgress(value=0.0, description='Iteration', max=31.0, style=ProgressStyle(description_wid…" + "
" ] }, "metadata": { @@ -3329,99 +4746,44 @@ { "output_type": "stream", "text": [ + "Evaluating: AdaBoostClassifier\n", + "Training...\n", + "Predicting...\n", + " precision recall f1-score support\n", "\n", - "Evaluating: 0%| | 0/6 [00:00" ] }, "metadata": { "tags": [] } - }, - { - "output_type": "error", - "ename": "KeyboardInterrupt", - "evalue": "ignored", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 59\u001b[0m \u001b[0mepochs\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;31m# We always tune on an extra epoch to see the performance gain\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 60\u001b[0m \u001b[0mevaluation_steps\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m1000\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 61\u001b[0;31m \u001b[0mwarmup_steps\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mwarmup_steps\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 62\u001b[0m )\n\u001b[1;32m 63\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/usr/local/lib/python3.6/dist-packages/sentence_transformers/SentenceTransformer.py\u001b[0m in \u001b[0;36mfit\u001b[0;34m(self, train_objectives, evaluator, epochs, steps_per_epoch, scheduler, warmup_steps, optimizer_class, optimizer_params, weight_decay, evaluation_steps, output_path, save_best_model, max_grad_norm, use_amp, callback, output_path_ignore_not_empty)\u001b[0m\n\u001b[1;32m 586\u001b[0m \u001b[0mloss_value\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbackward\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 587\u001b[0m \u001b[0mtorch\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mnn\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mutils\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mclip_grad_norm_\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mloss_model\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mparameters\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmax_grad_norm\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 588\u001b[0;31m \u001b[0moptimizer\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mstep\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 589\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 590\u001b[0m \u001b[0moptimizer\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mzero_grad\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/usr/local/lib/python3.6/dist-packages/torch/optim/lr_scheduler.py\u001b[0m in \u001b[0;36mwrapper\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m 65\u001b[0m \u001b[0minstance\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_step_count\u001b[0m \u001b[0;34m+=\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 66\u001b[0m \u001b[0mwrapped\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mfunc\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m__get__\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0minstance\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcls\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 67\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mwrapped\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 68\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 69\u001b[0m \u001b[0;31m# Note that the returned function here is no longer a bound method,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/usr/local/lib/python3.6/dist-packages/transformers/optimization.py\u001b[0m in \u001b[0;36mstep\u001b[0;34m(self, closure)\u001b[0m\n\u001b[1;32m 345\u001b[0m \u001b[0mexp_avg\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmul_\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mbeta1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd_\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mgrad\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0malpha\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m1.0\u001b[0m \u001b[0;34m-\u001b[0m \u001b[0mbeta1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 346\u001b[0m \u001b[0mexp_avg_sq\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmul_\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mbeta2\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0maddcmul_\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mgrad\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mgrad\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mvalue\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m1.0\u001b[0m \u001b[0;34m-\u001b[0m \u001b[0mbeta2\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 347\u001b[0;31m \u001b[0mdenom\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mexp_avg_sq\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msqrt\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd_\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mgroup\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"eps\"\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 348\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 349\u001b[0m \u001b[0mstep_size\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgroup\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"lr\"\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;31mKeyboardInterrupt\u001b[0m: " - ] } ] }, { "cell_type": "code", "metadata": { - "id": "G9rPCSzicc2Z" - }, - "source": [ - "" - ], - "execution_count": null, - "outputs": [] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "IsTPFo-NcdDb" - }, - "source": [ - "### Test multiple classifiers\n", - "- Random Forests\n", - "- Support Vector Machines\n", - "- Gradient Boosted trees" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "X3enEXNfcory" - }, - "source": [ - "" - ], - "execution_count": null, - "outputs": [] - }, - { - "cell_type": "code", - "metadata": { - "id": "0bkssDEOco5h" + "id": "-tgSAKOLriT2" }, "source": [ "" diff --git a/tasks/data_augmentation/src/zero_shot_classification/fine_tuning_sbert.py b/tasks/data_augmentation/src/zero_shot_classification/fine_tuning_sbert.py new file mode 100644 index 00000000..95ae55f9 --- /dev/null +++ b/tasks/data_augmentation/src/zero_shot_classification/fine_tuning_sbert.py @@ -0,0 +1,252 @@ +import math +import time +from typing import Iterable, Dict + +import cupy as cp +import spacy +from sentence_transformers import SentencesDataset, SentenceTransformer, InputExample +from sentence_transformers.evaluation import LabelAccuracyEvaluator +from sklearn.model_selection import train_test_split +from torch import nn, Tensor +from torch.utils.data import DataLoader + +from tasks.data_augmentation.src.zero_shot_classification.latent_embeddings_classifier import * +from tasks.data_loader.src.utils import * +from tasks.data_visualization.src.plotting import * +from tasks.evaluate_model.src.model_evaluator import * + +if spacy.prefer_gpu(): + print("Using the GPU") +else: + print("Using the CPU") + +# May need to run python -m spacy download es_core_news_lg first! +es_nlp = spacy.load('es_core_news_lg') + + +class SoftmaxClassifier(nn.Module): + """ + This loss adds a softmax classifier on top of the output of the transformer network. + It takes a sentence embedding and learns a mapping between it and the corresponding category. + :param model: SentenceTransformer model + :param sentence_embedding_dimension: Dimension of your sentence embeddings + :param num_labels: Number of different labels + """ + + def __init__(self, + model: SentenceTransformer, + sentence_embedding_dimension: int, + num_labels: int): + super(SoftmaxClassifier, self).__init__() + self.model = model + self.num_labels = num_labels + self.classifier = nn.Linear(sentence_embedding_dimension, num_labels) + + def forward(self, sentence_features: Iterable[Dict[str, Tensor]], labels: Tensor): + # Get batch sentence embeddings + features = self.model(sentence_features[0])['sentence_embedding'] + + # Get batch loss + output = self.classifier(features) + loss_fct = nn.CrossEntropyLoss() + + if labels is not None: + loss = loss_fct(output, labels.view(-1)) + return loss + else: + return features, output + + +def grid_search_fine_tune_sbert(train_params, train_sents, train_labels, test_sents, test_labels, label_names): + output_path = train_params["output_path"] + experiment = train_params["experiment"] + all_test_perc = train_params["all_test_perc"] + model_names = train_params["model_names"] + start_epochs = train_params["start_epochs"] + max_num_epochs = train_params["max_num_epochs"] + epochs_increment = train_params["epochs_increment"] + numeric_labels = labels2numeric(test_labels, label_names) + + print("Grid Search Fine tuning parameters:\n", json.dumps(train_params, sort_keys=True, indent=4)) + + # Output setup - we will update the json as the fine tuning process goes so every result is stored immediately + with open(f"{output_path}/{experiment}_FineTuningResults.json", "w") as fw: + json.dump({}, fw) + + for test_perc in all_test_perc: + with open(f"{output_path}/{experiment}_FineTuningResults.json", "r") as fr: + output = json.load(fr) + + output[f"test_perc={test_perc}"] = {} + X_train, X_test, y_train, y_test = train_test_split(train_sents, train_labels, test_size=test_perc, + stratify=train_labels, random_state=69420) + + # Load data samples into batches + train_batch_size = 16 + label2int = dict(zip(label_names, range(len(label_names)))) + train_samples = [] + for sent, label in zip(X_train, y_train): + label_id = label2int[label] + train_samples.append(InputExample(texts=[sent], label=label_id)) + + # Configure the dev set evaluator - still need to test whether this works + dev_samples = [] + for sent, label in zip(X_test, y_test): + label_id = label2int[label] + dev_samples.append(InputExample(texts=[sent], label=label_id)) + + for model_name in model_names: + # Setup + output[f"test_perc={test_perc}"][model_name] = [] + + # Train set config + model = SentenceTransformer(model_name) + train_dataset = SentencesDataset(train_samples, model=model) + train_dataloader = DataLoader(train_dataset, shuffle=True, batch_size=train_batch_size) + + # Define the way the loss is computed + classifier = SoftmaxClassifier(model=model, + sentence_embedding_dimension=model.get_sentence_embedding_dimension(), + num_labels=len(label2int)) + + # Dev set config + dev_dataset = SentencesDataset(dev_samples, model=model) + dev_dataloader = DataLoader(dev_dataset, shuffle=True, batch_size=train_batch_size) + dev_evaluator = LabelAccuracyEvaluator(dataloader=dev_dataloader, softmax_model=classifier, name='lae-dev') + + for num_epochs in range(start_epochs, max_num_epochs + 2, epochs_increment): + print("Num epochs:", num_epochs) + + warmup_steps = math.ceil( + len(train_dataset) * num_epochs / train_batch_size * 0.1) # 10% of train data for warm-up + model_deets = f"model={model_name}_test-perc={test_perc}_n-epoch={num_epochs}" + + # Train the model + start = time.time() + if num_epochs == start_epochs: + model.fit(train_objectives=[(train_dataloader, classifier)], + evaluator=dev_evaluator, + epochs=start_epochs, + evaluation_steps=1000, + warmup_steps=warmup_steps, + ) + else: + model.fit(train_objectives=[(train_dataloader, classifier)], + evaluator=dev_evaluator, + epochs=epochs_increment, # We always tune on an extra epoch to see the performance gain + evaluation_steps=1000, + warmup_steps=warmup_steps, + ) + + end = time.time() + hours, rem = divmod(end - start, 3600) + minutes, seconds = divmod(rem, 60) + print("Time taken for fine-tuning:", "{:0>2}:{:0>2}:{:05.2f}".format(int(hours), int(minutes), seconds)) + + ### Classify sentences + # Projection matrix Z low-dim projection + print("Classifying sentences...") + proj_matrix = cp.asnumpy(calc_proj_matrix(test_sents, 50, es_nlp, model, 0.01)) + all_sent_embs = encode_all_sents(test_sents, model, proj_matrix) + all_label_embs = encode_labels(label_names, model, proj_matrix) + visualize_embeddings_2D(np.vstack(all_sent_embs), test_labels, tsne_perplexity=50, + store_name=f"{output_path}/{model_deets}") + model_preds, model_scores = calc_all_cos_similarity(all_sent_embs, all_label_embs, label_names) + + ### Evaluate the model + numeric_preds = labels2numeric(model_preds, label_names) + evaluator = ModelEvaluator(label_names, y_true=numeric_labels, y_pred=numeric_preds) + + output[f"test_perc={test_perc}"][model_name].append( + {"num_epochs": num_epochs, "avg_f1": evaluator.avg_f1.tolist()}) + with open(f"{output_path}/{experiment}_FineTuningResults.json", "w") as fw: + json.dump(output, fw) + + evaluator.plot_confusion_matrix(color_map='Blues', exp_name=f"{output_path}/{model_deets}") + print("Macro/Weighted Avg F1-score:", evaluator.avg_f1.tolist()) + + +def fine_tune_sbert(train_params, train_sents, train_labels, test_sents, test_labels, label_names): + output_path = train_params["output_path"] + experiment = train_params["experiment"] + test_perc = train_params["test_perc"] + model_name = train_params["model_names"] + num_epochs = train_params["num_epochs"] + numeric_labels = labels2numeric(test_labels, label_names) + + print("Fine tuning parameters:\n", json.dumps(train_params, sort_keys=True, indent=4)) + + output = {f"test_perc={test_perc}": {}} + X_train, X_test, y_train, y_test = train_test_split(train_sents, train_labels, test_size=test_perc, + stratify=train_labels, random_state=69420) + # Load data samples into batches + train_batch_size = 16 + label2int = dict(zip(label_names, range(len(label_names)))) + train_samples = [] + for sent, label in zip(X_train, y_train): + label_id = label2int[label] + train_samples.append(InputExample(texts=[sent], label=label_id)) + + # Configure the dev set evaluator - still need to test whether this works + dev_samples = [] + for sent, label in zip(X_test, y_test): + label_id = label2int[label] + dev_samples.append(InputExample(texts=[sent], label=label_id)) + + # Setup + output[f"test_perc={test_perc}"][model_name] = [] + + # Train set config + model = SentenceTransformer(model_name) + train_dataset = SentencesDataset(train_samples, model=model) + train_dataloader = DataLoader(train_dataset, shuffle=True, batch_size=train_batch_size) + + # Define the way the loss is computed + classifier = SoftmaxClassifier(model=model, + sentence_embedding_dimension=model.get_sentence_embedding_dimension(), + num_labels=len(label2int)) + + # Dev set config + dev_dataset = SentencesDataset(dev_samples, model=model) + dev_dataloader = DataLoader(dev_dataset, shuffle=True, batch_size=train_batch_size) + dev_evaluator = LabelAccuracyEvaluator(dataloader=dev_dataloader, softmax_model=classifier, name='lae-dev') + warmup_steps = math.ceil( + len(train_dataset) * num_epochs / train_batch_size * 0.1) # 10% of train data for warm-up + model_deets = f"model={model_name}_test-perc={test_perc}_n-epoch={num_epochs}" + + # Train the model + start = time.time() + model.fit(train_objectives=[(train_dataloader, classifier)], + evaluator=dev_evaluator, + epochs=num_epochs, + evaluation_steps=1000, + warmup_steps=warmup_steps, + output_path=output_path + ) + + end = time.time() + hours, rem = divmod(end - start, 3600) + minutes, seconds = divmod(rem, 60) + print("Time taken for fine-tuning:", "{:0>2}:{:0>2}:{:05.2f}".format(int(hours), int(minutes), seconds)) + + ### Classify sentences + # Projection matrix Z low-dim projection + print("Classifying sentences...") + proj_matrix = cp.asnumpy(calc_proj_matrix(test_sents, 50, es_nlp, model, 0.01)) + all_sent_embs = encode_all_sents(test_sents, model, proj_matrix) + all_label_embs = encode_labels(label_names, model, proj_matrix) + visualize_embeddings_2D(np.vstack(all_sent_embs), test_labels, tsne_perplexity=50, + store_name=f"{output_path}/{model_deets}") + model_preds, model_scores = calc_all_cos_similarity(all_sent_embs, all_label_embs, label_names) + + ### Evaluate the model + numeric_preds = labels2numeric(model_preds, label_names) + evaluator = ModelEvaluator(label_names, y_true=numeric_labels, y_pred=numeric_preds) + + output[f"test_perc={test_perc}"][model_name].append( + {"num_epochs": num_epochs, "avg_f1": evaluator.avg_f1.tolist()}) + with open(f"{output_path}/{experiment}_FineTuningResults.json", "w") as fw: + json.dump(output, fw) + + evaluator.plot_confusion_matrix(color_map='Blues', exp_name=f"{output_path}/{model_deets}") + print("Macro/Weighted Avg F1-score:", evaluator.avg_f1.tolist()) \ No newline at end of file