diff --git a/Noie.ipynb b/Noie.ipynb new file mode 100644 index 0000000..7bb4aa4 --- /dev/null +++ b/Noie.ipynb @@ -0,0 +1,3859 @@ +{ + "nbformat": 4, + "nbformat_minor": 0, + "metadata": { + "colab": { + "provenance": [], + "include_colab_link": true + }, + "kernelspec": { + "name": "python3", + "display_name": "Python 3" + }, + "language_info": { + "name": "python" + }, + "widgets": { + "application/vnd.jupyter.widget-state+json": { + "95e4153cff5345bfa05bbd03004fbce9": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HBoxModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_943c6f48b3d644e4b3cd9080267d356d", + "IPY_MODEL_370944fc082048e5ab90be44e9bf1f57", + "IPY_MODEL_befcc82bdc8f42b289933521c6112806" + ], + "layout": "IPY_MODEL_03fe4d1cdf60409ba40489ce3ec8a872" + } + }, + "943c6f48b3d644e4b3cd9080267d356d": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_96efaef86f5d4e87b2bdc5bf59fbd165", + "placeholder": "​", + "style": "IPY_MODEL_5700d7adc9e04a159939285e15b9a642", + "value": "Downloading https://raw.githubusercontent.com/stanfordnlp/stanza-resources/main/resources_1.4.0.json: " + } + }, + "370944fc082048e5ab90be44e9bf1f57": { + "model_module": "@jupyter-widgets/controls", + "model_name": "FloatProgressModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_294bc7b70b67495987a037755b3888dd", + "max": 25998, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_18009cba28464d7c9009ebaba423a2c3", + "value": 25998 + } + }, + "befcc82bdc8f42b289933521c6112806": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_bbb6764656ae42718112c4746cdc1de4", + "placeholder": "​", + "style": "IPY_MODEL_ff71d073a9ff47eea4864a272602d179", + "value": " 154k/? [00:00<00:00, 2.82MB/s]" + } + }, + "03fe4d1cdf60409ba40489ce3ec8a872": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "96efaef86f5d4e87b2bdc5bf59fbd165": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "5700d7adc9e04a159939285e15b9a642": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "294bc7b70b67495987a037755b3888dd": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "18009cba28464d7c9009ebaba423a2c3": { + "model_module": "@jupyter-widgets/controls", + "model_name": "ProgressStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "bbb6764656ae42718112c4746cdc1de4": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "ff71d073a9ff47eea4864a272602d179": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "dedcfbe82336450fb37857b0fc6b9e45": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HBoxModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_c59d097c733e4891b54056652df044ea", + "IPY_MODEL_5efe0e03dc334db9b89e6689ff75fd84", + "IPY_MODEL_c4b9f3a6be7c45818ca8e0ac3eac93d5" + ], + "layout": "IPY_MODEL_2a4db2d2318a474b9df8a70095430ac4" + } + }, + "c59d097c733e4891b54056652df044ea": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_68e8b5f38ae9458b9eb1d28fd64a209d", + "placeholder": "​", + "style": "IPY_MODEL_3eed62082b974b3eaef1ec0c51d2a313", + "value": "Downloading https://huggingface.co/stanfordnlp/stanza-pt/resolve/v1.4.0/models/tokenize/bosque.pt: 100%" + } + }, + "5efe0e03dc334db9b89e6689ff75fd84": { + "model_module": "@jupyter-widgets/controls", + "model_name": "FloatProgressModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_3893e03934e842b49760e800a67de7f8", + "max": 635807, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_49c2fb43e8c242d0b06b44e5fd3f879e", + "value": 635807 + } + }, + "c4b9f3a6be7c45818ca8e0ac3eac93d5": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_e7aee431537a4ec285cbbd4ca3da0c54", + "placeholder": "​", + "style": "IPY_MODEL_5d491f77b3e9475590fb81cbcf908fd9", + "value": " 636k/636k [00:00<00:00, 2.23MB/s]" + } + }, + "2a4db2d2318a474b9df8a70095430ac4": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "68e8b5f38ae9458b9eb1d28fd64a209d": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "3eed62082b974b3eaef1ec0c51d2a313": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "3893e03934e842b49760e800a67de7f8": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "49c2fb43e8c242d0b06b44e5fd3f879e": { + "model_module": "@jupyter-widgets/controls", + "model_name": "ProgressStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "e7aee431537a4ec285cbbd4ca3da0c54": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "5d491f77b3e9475590fb81cbcf908fd9": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "5ca98c547e5249dbbd158db62b6029ca": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HBoxModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_5a3335da879b46d6a9878b480417408f", + "IPY_MODEL_9904ebb33cd0447395d0fbef9c505ee3", + "IPY_MODEL_8fa4388aea2549dab19b5c904c60b5d5" + ], + "layout": "IPY_MODEL_ef16234f1e76491e92c92a9b56a6edbf" + } + }, + "5a3335da879b46d6a9878b480417408f": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_b0f9d27ec6cd41c9934592ce909aaafb", + "placeholder": "​", + "style": "IPY_MODEL_7d3e77d6fb2f40d8991c73c322d1cc54", + "value": "Downloading https://huggingface.co/stanfordnlp/stanza-pt/resolve/v1.4.0/models/mwt/bosque.pt: 100%" + } + }, + "9904ebb33cd0447395d0fbef9c505ee3": { + "model_module": "@jupyter-widgets/controls", + "model_name": "FloatProgressModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_7a60e1d28bf948fe89d1a2c088309e80", + "max": 601808, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_a0891fac15b5416383853c81bfd1b459", + "value": 601808 + } + }, + "8fa4388aea2549dab19b5c904c60b5d5": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_cf80ad14241d4ce1b4a39bf5c6c542fe", + "placeholder": "​", + "style": "IPY_MODEL_b51c392dc81c4dacbecc73c48f32647a", + "value": " 602k/602k [00:00<00:00, 1.56MB/s]" + } + }, + "ef16234f1e76491e92c92a9b56a6edbf": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "b0f9d27ec6cd41c9934592ce909aaafb": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "7d3e77d6fb2f40d8991c73c322d1cc54": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "7a60e1d28bf948fe89d1a2c088309e80": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "a0891fac15b5416383853c81bfd1b459": { + "model_module": "@jupyter-widgets/controls", + "model_name": "ProgressStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "cf80ad14241d4ce1b4a39bf5c6c542fe": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "b51c392dc81c4dacbecc73c48f32647a": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "60735140e14c4bc1b83e603470ab5995": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HBoxModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_57c21d060e454d868e19f9629f540942", + "IPY_MODEL_935698d26bfb4696b76047ff452db4c9", + "IPY_MODEL_25d4f6dd59104eb9adbe4b32c72d6ee2" + ], + "layout": "IPY_MODEL_3267681711eb446c8c17b4130de939bb" + } + }, + "57c21d060e454d868e19f9629f540942": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_d5eca874e97742f6a171b9650b56df4e", + "placeholder": "​", + "style": "IPY_MODEL_452f0f7e829544d9a38205028020e519", + "value": "Downloading https://huggingface.co/stanfordnlp/stanza-pt/resolve/v1.4.0/models/pos/bosque.pt: 100%" + } + }, + "935698d26bfb4696b76047ff452db4c9": { + "model_module": "@jupyter-widgets/controls", + "model_name": "FloatProgressModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_9dfd979563c54f9b9a5d69a5b878f915", + "max": 18022686, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_638118770ef94048851f595e50b88bb9", + "value": 18022686 + } + }, + "25d4f6dd59104eb9adbe4b32c72d6ee2": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_e345f0b9666944989e4ff468bfddb0fc", + "placeholder": "​", + "style": "IPY_MODEL_5cc6c79bfe25477abdde76e2f61ea6d1", + "value": " 18.0M/18.0M [00:00<00:00, 28.7MB/s]" + } + }, + "3267681711eb446c8c17b4130de939bb": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "d5eca874e97742f6a171b9650b56df4e": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "452f0f7e829544d9a38205028020e519": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "9dfd979563c54f9b9a5d69a5b878f915": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "638118770ef94048851f595e50b88bb9": { + "model_module": "@jupyter-widgets/controls", + "model_name": "ProgressStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "e345f0b9666944989e4ff468bfddb0fc": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "5cc6c79bfe25477abdde76e2f61ea6d1": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "1b697eebfd9b4e03a5fcb4fef129d8a5": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HBoxModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_de17663d8b8547fe9383414dccf13430", + "IPY_MODEL_4af63bf8a3524d418f166d7d32334c4b", + "IPY_MODEL_a40a937840aa44739a135c04d2041ad3" + ], + "layout": "IPY_MODEL_4b27192eadfe4edf9eef8286282b91c4" + } + }, + "de17663d8b8547fe9383414dccf13430": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_ececc0b7018a4381956abbd655847558", + "placeholder": "​", + "style": "IPY_MODEL_2739d00e5ae04493b91d2e4494d7f256", + "value": "Downloading https://huggingface.co/stanfordnlp/stanza-pt/resolve/v1.4.0/models/lemma/bosque.pt: 100%" + } + }, + "4af63bf8a3524d418f166d7d32334c4b": { + "model_module": "@jupyter-widgets/controls", + "model_name": "FloatProgressModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_e6a212657525455aaee924a1a3ed78bd", + "max": 3856889, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_e9be765bc39f4d188ebda3985116ea58", + "value": 3856889 + } + }, + "a40a937840aa44739a135c04d2041ad3": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_1b8328e196724e4e9cfd1009282bf46d", + "placeholder": "​", + "style": "IPY_MODEL_5993b083610249b18a3def94ee72b31c", + "value": " 3.86M/3.86M [00:00<00:00, 7.45MB/s]" + } + }, + "4b27192eadfe4edf9eef8286282b91c4": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "ececc0b7018a4381956abbd655847558": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "2739d00e5ae04493b91d2e4494d7f256": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "e6a212657525455aaee924a1a3ed78bd": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "e9be765bc39f4d188ebda3985116ea58": { + "model_module": "@jupyter-widgets/controls", + "model_name": "ProgressStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "1b8328e196724e4e9cfd1009282bf46d": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "5993b083610249b18a3def94ee72b31c": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "6e2473ca8601454493b0ff58174f7d34": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HBoxModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_632b24d3d0ff40169fc774ba8da8e15c", + "IPY_MODEL_df9a8527b9c24249ab340cdbdba35400", + "IPY_MODEL_44531601ee7e42bea38bf2c03220746d" + ], + "layout": "IPY_MODEL_028e72efb22b45d4804eaaaf6dcefc7e" + } + }, + "632b24d3d0ff40169fc774ba8da8e15c": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_cf11eb172bd64ac9a437c71cb6d8a23f", + "placeholder": "​", + "style": "IPY_MODEL_7fcff08c102b472f8a0cbc52e02243c3", + "value": "Downloading https://huggingface.co/stanfordnlp/stanza-pt/resolve/v1.4.0/models/depparse/bosque.pt: 100%" + } + }, + "df9a8527b9c24249ab340cdbdba35400": { + "model_module": "@jupyter-widgets/controls", + "model_name": "FloatProgressModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_10ab218a99604c379828569d897ce978", + "max": 102331699, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_4961d0c247114355b65ec90b25532918", + "value": 102331699 + } + }, + "44531601ee7e42bea38bf2c03220746d": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_d83d29b0d1a04156ab35fa0dfa3e76b5", + "placeholder": "​", + "style": "IPY_MODEL_ac98ff108271427b85e475e386dae38e", + "value": " 102M/102M [00:02<00:00, 55.3MB/s]" + } + }, + "028e72efb22b45d4804eaaaf6dcefc7e": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "cf11eb172bd64ac9a437c71cb6d8a23f": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "7fcff08c102b472f8a0cbc52e02243c3": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "10ab218a99604c379828569d897ce978": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "4961d0c247114355b65ec90b25532918": { + "model_module": "@jupyter-widgets/controls", + "model_name": "ProgressStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "d83d29b0d1a04156ab35fa0dfa3e76b5": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "ac98ff108271427b85e475e386dae38e": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "538e612fee564d90962309a00ae34045": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HBoxModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_6da7345b165d46cc99a304dbf799c2f3", + "IPY_MODEL_c4cc7c8152c244be81b2f1595c304732", + "IPY_MODEL_a7b798ba191647829e9c9832cc5a30fd" + ], + "layout": "IPY_MODEL_1fee3d8b44624aa887901ab50e4fcf48" + } + }, + "6da7345b165d46cc99a304dbf799c2f3": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_d843dee6a5d04233944e61b1896429ee", + "placeholder": "​", + "style": "IPY_MODEL_8c6614d22e774c3ea79255aa189b52e9", + "value": "Downloading https://huggingface.co/stanfordnlp/stanza-pt/resolve/v1.4.0/models/pretrain/bosque.pt: 100%" + } + }, + "c4cc7c8152c244be81b2f1595c304732": { + "model_module": "@jupyter-widgets/controls", + "model_name": "FloatProgressModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_9cc604dc84854e359534d17bdcd98f04", + "max": 106904293, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_f4058990c56b4c7b94b37c77961be5c4", + "value": 106904293 + } + }, + "a7b798ba191647829e9c9832cc5a30fd": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_2c07f32c04e04aa4904474b015937645", + "placeholder": "​", + "style": "IPY_MODEL_03505170957e49139861f61b48c998a1", + "value": " 107M/107M [00:02<00:00, 55.0MB/s]" + } + }, + "1fee3d8b44624aa887901ab50e4fcf48": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "d843dee6a5d04233944e61b1896429ee": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "8c6614d22e774c3ea79255aa189b52e9": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "9cc604dc84854e359534d17bdcd98f04": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "f4058990c56b4c7b94b37c77961be5c4": { + "model_module": "@jupyter-widgets/controls", + "model_name": "ProgressStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "2c07f32c04e04aa4904474b015937645": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "03505170957e49139861f61b48c998a1": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "6666e1b5677e4952a90f4a016cc9a78f": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HBoxModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_aa21fc27ba864e3db8ac368712761aa3", + "IPY_MODEL_5697cec92ad94cf5a9b6790647f95251", + "IPY_MODEL_cfd61cc8ca2c4462878dd13e14a2f814" + ], + "layout": "IPY_MODEL_4212904855b0484ebb305692efb61ade" + } + }, + "aa21fc27ba864e3db8ac368712761aa3": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_c9b7d9b16a6c4e4f808c180866897897", + "placeholder": "​", + "style": "IPY_MODEL_f9146b3bf2a24084899bf9b795c5de94", + "value": "Downloading https://raw.githubusercontent.com/stanfordnlp/stanza-resources/main/resources_1.4.0.json: " + } + }, + "5697cec92ad94cf5a9b6790647f95251": { + "model_module": "@jupyter-widgets/controls", + "model_name": "FloatProgressModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_9fea05c6aedd41e693c641b86e37b94b", + "max": 25998, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_8654f5ffefd5464e8808a1749947048f", + "value": 25998 + } + }, + "cfd61cc8ca2c4462878dd13e14a2f814": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_b2893d5dd7df4516822f66fdab2f3aa5", + "placeholder": "​", + "style": "IPY_MODEL_ab6b79a1f5ce44a49e1177aa6fcc5d03", + "value": " 154k/? [00:00<00:00, 2.05MB/s]" + } + }, + "4212904855b0484ebb305692efb61ade": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "c9b7d9b16a6c4e4f808c180866897897": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "f9146b3bf2a24084899bf9b795c5de94": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "9fea05c6aedd41e693c641b86e37b94b": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "8654f5ffefd5464e8808a1749947048f": { + "model_module": "@jupyter-widgets/controls", + "model_name": "ProgressStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "b2893d5dd7df4516822f66fdab2f3aa5": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "ab6b79a1f5ce44a49e1177aa6fcc5d03": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + } + } + } + }, + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "view-in-github", + "colab_type": "text" + }, + "source": [ + "\"Open" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "Lo77yoXNo1GJ" + }, + "source": [ + "![formas.png](data:image/png;base64,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)\n", + "# RESEARCH GROUP\n", + "## Noie\n", + "### An Open Information Extraction System based on Dependency Parser and Handcrafted Rules for Portuguese texts inspired by ClausIE \n", + "\n", + "https://formas.ufba.br/\n", + "\n", + "How to cite us:\n", + "\n", + "?" + ] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "5KzP1HLAv2iE", + "outputId": "3012b944-33e2-4d7d-e3be-70e0fa96def1" + }, + "source": [ + "!pip install lemminflect" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Looking in indexes: https://pypi.org/simple, https://us-python.pkg.dev/colab-wheels/public/simple/\n", + "Collecting lemminflect\n", + " Downloading lemminflect-0.2.2-py3-none-any.whl (769 kB)\n", + "\u001b[K |████████████████████████████████| 769 kB 8.4 MB/s \n", + "\u001b[?25hRequirement already satisfied: numpy in /usr/local/lib/python3.7/dist-packages (from lemminflect) (1.21.6)\n", + "Installing collected packages: lemminflect\n", + "Successfully installed lemminflect-0.2.2\n" + ] + } + ] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "E4ds08alwScu", + "outputId": "4e72b911-64ac-4d76-b81a-7732104a6b7f" + }, + "source": [ + "!pip install stanza" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Looking in indexes: https://pypi.org/simple, https://us-python.pkg.dev/colab-wheels/public/simple/\n", + "Collecting stanza\n", + " Downloading stanza-1.4.0-py3-none-any.whl (574 kB)\n", + "\u001b[K |████████████████████████████████| 574 kB 8.2 MB/s \n", + "\u001b[?25hRequirement already satisfied: protobuf in /usr/local/lib/python3.7/dist-packages (from stanza) (3.17.3)\n", + "Requirement already satisfied: requests in /usr/local/lib/python3.7/dist-packages (from stanza) (2.23.0)\n", + "Collecting transformers\n", + " Downloading transformers-4.19.2-py3-none-any.whl (4.2 MB)\n", + "\u001b[K |████████████████████████████████| 4.2 MB 45.4 MB/s \n", + "\u001b[?25hCollecting emoji\n", + " Downloading emoji-1.7.0.tar.gz (175 kB)\n", + "\u001b[K |████████████████████████████████| 175 kB 50.1 MB/s \n", + "\u001b[?25hRequirement already satisfied: numpy in /usr/local/lib/python3.7/dist-packages (from stanza) (1.21.6)\n", + "Requirement already satisfied: six in /usr/local/lib/python3.7/dist-packages (from stanza) (1.15.0)\n", + "Requirement already satisfied: torch>=1.3.0 in /usr/local/lib/python3.7/dist-packages (from stanza) (1.11.0+cu113)\n", + "Requirement already satisfied: tqdm in /usr/local/lib/python3.7/dist-packages (from stanza) (4.64.0)\n", + "Requirement already satisfied: typing-extensions in /usr/local/lib/python3.7/dist-packages (from torch>=1.3.0->stanza) (4.2.0)\n", + "Requirement already satisfied: chardet<4,>=3.0.2 in /usr/local/lib/python3.7/dist-packages (from requests->stanza) (3.0.4)\n", + "Requirement already satisfied: idna<3,>=2.5 in /usr/local/lib/python3.7/dist-packages (from requests->stanza) (2.10)\n", + "Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.7/dist-packages (from requests->stanza) (2022.5.18.1)\n", + "Requirement already satisfied: urllib3!=1.25.0,!=1.25.1,<1.26,>=1.21.1 in /usr/local/lib/python3.7/dist-packages (from requests->stanza) (1.24.3)\n", + "Requirement already satisfied: packaging>=20.0 in /usr/local/lib/python3.7/dist-packages (from transformers->stanza) (21.3)\n", + "Requirement already satisfied: filelock in /usr/local/lib/python3.7/dist-packages (from transformers->stanza) (3.7.0)\n", + "Requirement already satisfied: importlib-metadata in /usr/local/lib/python3.7/dist-packages (from transformers->stanza) (4.11.4)\n", + "Collecting tokenizers!=0.11.3,<0.13,>=0.11.1\n", + " Downloading tokenizers-0.12.1-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl (6.6 MB)\n", + "\u001b[K |████████████████████████████████| 6.6 MB 45.1 MB/s \n", + "\u001b[?25hCollecting huggingface-hub<1.0,>=0.1.0\n", + " Downloading huggingface_hub-0.7.0-py3-none-any.whl (86 kB)\n", + "\u001b[K |████████████████████████████████| 86 kB 4.7 MB/s \n", + "\u001b[?25hRequirement already satisfied: regex!=2019.12.17 in /usr/local/lib/python3.7/dist-packages (from transformers->stanza) (2019.12.20)\n", + "Collecting pyyaml>=5.1\n", + " Downloading PyYAML-6.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl (596 kB)\n", + "\u001b[K |████████████████████████████████| 596 kB 54.7 MB/s \n", + "\u001b[?25hRequirement already satisfied: pyparsing!=3.0.5,>=2.0.2 in /usr/local/lib/python3.7/dist-packages (from packaging>=20.0->transformers->stanza) (3.0.9)\n", + "Requirement already satisfied: zipp>=0.5 in /usr/local/lib/python3.7/dist-packages (from importlib-metadata->transformers->stanza) (3.8.0)\n", + "Building wheels for collected packages: emoji\n", + " Building wheel for emoji (setup.py) ... \u001b[?25l\u001b[?25hdone\n", + " Created wheel for emoji: filename=emoji-1.7.0-py3-none-any.whl size=171046 sha256=06a49a2eec7ed186f80f65cbbb9f22e5914d4c14a9a5495a74ea120f740176e6\n", + " Stored in directory: /root/.cache/pip/wheels/8a/4e/b6/57b01db010d17ef6ea9b40300af725ef3e210cb1acfb7ac8b6\n", + "Successfully built emoji\n", + "Installing collected packages: pyyaml, tokenizers, huggingface-hub, transformers, emoji, stanza\n", + " Attempting uninstall: pyyaml\n", + " Found existing installation: PyYAML 3.13\n", + " Uninstalling PyYAML-3.13:\n", + " Successfully uninstalled PyYAML-3.13\n", + "Successfully installed emoji-1.7.0 huggingface-hub-0.7.0 pyyaml-6.0 stanza-1.4.0 tokenizers-0.12.1 transformers-4.19.2\n" + ] + } + ] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 1000 + }, + "id": "CE8dWc2Kwlnw", + "outputId": "d8d92429-be6c-456c-afda-c971a42c8c6e" + }, + "source": [ + "!pip install spacy_stanza" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Looking in indexes: https://pypi.org/simple, https://us-python.pkg.dev/colab-wheels/public/simple/\n", + "Collecting spacy_stanza\n", + " Downloading spacy_stanza-1.0.2-py3-none-any.whl (9.7 kB)\n", + "Requirement already satisfied: stanza<1.5.0,>=1.2.0 in /usr/local/lib/python3.7/dist-packages (from spacy_stanza) (1.4.0)\n", + "Collecting spacy<4.0.0,>=3.0.0\n", + " Downloading spacy-3.3.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (6.2 MB)\n", + "\u001b[K |████████████████████████████████| 6.2 MB 7.8 MB/s \n", + "\u001b[?25hRequirement already satisfied: jinja2 in /usr/local/lib/python3.7/dist-packages (from spacy<4.0.0,>=3.0.0->spacy_stanza) (2.11.3)\n", + "Requirement already satisfied: requests<3.0.0,>=2.13.0 in /usr/local/lib/python3.7/dist-packages (from spacy<4.0.0,>=3.0.0->spacy_stanza) (2.23.0)\n", + "Requirement already satisfied: wasabi<1.1.0,>=0.9.1 in /usr/local/lib/python3.7/dist-packages (from spacy<4.0.0,>=3.0.0->spacy_stanza) (0.9.1)\n", + "Collecting srsly<3.0.0,>=2.4.3\n", + " Downloading srsly-2.4.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (457 kB)\n", + "\u001b[K |████████████████████████████████| 457 kB 40.2 MB/s \n", + "\u001b[?25hRequirement already satisfied: murmurhash<1.1.0,>=0.28.0 in /usr/local/lib/python3.7/dist-packages (from spacy<4.0.0,>=3.0.0->spacy_stanza) (1.0.7)\n", + "Collecting typing-extensions<4.0.0.0,>=3.7.4\n", + " Downloading typing_extensions-3.10.0.2-py3-none-any.whl (26 kB)\n", + "Collecting langcodes<4.0.0,>=3.2.0\n", + " Downloading langcodes-3.3.0-py3-none-any.whl (181 kB)\n", + "\u001b[K |████████████████████████████████| 181 kB 39.7 MB/s \n", + "\u001b[?25hCollecting spacy-loggers<2.0.0,>=1.0.0\n", + " Downloading spacy_loggers-1.0.2-py3-none-any.whl (7.2 kB)\n", + "Requirement already satisfied: setuptools in /usr/local/lib/python3.7/dist-packages (from spacy<4.0.0,>=3.0.0->spacy_stanza) (57.4.0)\n", + "Collecting typer<0.5.0,>=0.3.0\n", + " Downloading typer-0.4.1-py3-none-any.whl (27 kB)\n", + "Requirement already satisfied: cymem<2.1.0,>=2.0.2 in /usr/local/lib/python3.7/dist-packages (from spacy<4.0.0,>=3.0.0->spacy_stanza) (2.0.6)\n", + "Requirement already satisfied: numpy>=1.15.0 in /usr/local/lib/python3.7/dist-packages (from spacy<4.0.0,>=3.0.0->spacy_stanza) (1.21.6)\n", + "Requirement already satisfied: packaging>=20.0 in /usr/local/lib/python3.7/dist-packages (from spacy<4.0.0,>=3.0.0->spacy_stanza) (21.3)\n", + "Requirement already satisfied: blis<0.8.0,>=0.4.0 in /usr/local/lib/python3.7/dist-packages (from spacy<4.0.0,>=3.0.0->spacy_stanza) (0.4.1)\n", + "Collecting spacy-legacy<3.1.0,>=3.0.9\n", + " Downloading spacy_legacy-3.0.9-py2.py3-none-any.whl (20 kB)\n", + "Requirement already satisfied: preshed<3.1.0,>=3.0.2 in /usr/local/lib/python3.7/dist-packages (from spacy<4.0.0,>=3.0.0->spacy_stanza) (3.0.6)\n", + "Collecting pydantic!=1.8,!=1.8.1,<1.9.0,>=1.7.4\n", + " Downloading pydantic-1.8.2-cp37-cp37m-manylinux2014_x86_64.whl (10.1 MB)\n", + "\u001b[K |████████████████████████████████| 10.1 MB 41.0 MB/s \n", + "\u001b[?25hRequirement already satisfied: tqdm<5.0.0,>=4.38.0 in /usr/local/lib/python3.7/dist-packages (from spacy<4.0.0,>=3.0.0->spacy_stanza) (4.64.0)\n", + "Collecting pathy>=0.3.5\n", + " Downloading pathy-0.6.1-py3-none-any.whl (42 kB)\n", + "\u001b[K |████████████████████████████████| 42 kB 1.0 MB/s \n", + "\u001b[?25hCollecting thinc<8.1.0,>=8.0.14\n", + " Downloading thinc-8.0.17-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (660 kB)\n", + "\u001b[K |████████████████████████████████| 660 kB 55.7 MB/s \n", + "\u001b[?25hCollecting catalogue<2.1.0,>=2.0.6\n", + " Downloading catalogue-2.0.7-py3-none-any.whl (17 kB)\n", + "Requirement already satisfied: zipp>=0.5 in /usr/local/lib/python3.7/dist-packages (from catalogue<2.1.0,>=2.0.6->spacy<4.0.0,>=3.0.0->spacy_stanza) (3.8.0)\n", + "Requirement already satisfied: pyparsing!=3.0.5,>=2.0.2 in /usr/local/lib/python3.7/dist-packages (from packaging>=20.0->spacy<4.0.0,>=3.0.0->spacy_stanza) (3.0.9)\n", + "Collecting smart-open<6.0.0,>=5.0.0\n", + " Downloading smart_open-5.2.1-py3-none-any.whl (58 kB)\n", + "\u001b[K |████████████████████████████████| 58 kB 6.3 MB/s \n", + "\u001b[?25hRequirement already satisfied: urllib3!=1.25.0,!=1.25.1,<1.26,>=1.21.1 in /usr/local/lib/python3.7/dist-packages (from requests<3.0.0,>=2.13.0->spacy<4.0.0,>=3.0.0->spacy_stanza) (1.24.3)\n", + "Requirement already satisfied: chardet<4,>=3.0.2 in /usr/local/lib/python3.7/dist-packages (from requests<3.0.0,>=2.13.0->spacy<4.0.0,>=3.0.0->spacy_stanza) (3.0.4)\n", + "Requirement already satisfied: idna<3,>=2.5 in /usr/local/lib/python3.7/dist-packages (from requests<3.0.0,>=2.13.0->spacy<4.0.0,>=3.0.0->spacy_stanza) (2.10)\n", + "Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.7/dist-packages (from requests<3.0.0,>=2.13.0->spacy<4.0.0,>=3.0.0->spacy_stanza) (2022.5.18.1)\n", + "Requirement already satisfied: transformers in /usr/local/lib/python3.7/dist-packages (from stanza<1.5.0,>=1.2.0->spacy_stanza) (4.19.2)\n", + "Requirement already satisfied: six in /usr/local/lib/python3.7/dist-packages (from stanza<1.5.0,>=1.2.0->spacy_stanza) (1.15.0)\n", + "Requirement already satisfied: torch>=1.3.0 in /usr/local/lib/python3.7/dist-packages (from stanza<1.5.0,>=1.2.0->spacy_stanza) (1.11.0+cu113)\n", + "Requirement already satisfied: emoji in /usr/local/lib/python3.7/dist-packages (from stanza<1.5.0,>=1.2.0->spacy_stanza) (1.7.0)\n", + "Requirement already satisfied: protobuf in /usr/local/lib/python3.7/dist-packages (from stanza<1.5.0,>=1.2.0->spacy_stanza) (3.17.3)\n", + "Requirement already satisfied: click<9.0.0,>=7.1.1 in /usr/local/lib/python3.7/dist-packages (from typer<0.5.0,>=0.3.0->spacy<4.0.0,>=3.0.0->spacy_stanza) (7.1.2)\n", + "Requirement already satisfied: MarkupSafe>=0.23 in /usr/local/lib/python3.7/dist-packages (from jinja2->spacy<4.0.0,>=3.0.0->spacy_stanza) (2.0.1)\n", + "Requirement already satisfied: huggingface-hub<1.0,>=0.1.0 in /usr/local/lib/python3.7/dist-packages (from transformers->stanza<1.5.0,>=1.2.0->spacy_stanza) (0.7.0)\n", + "Requirement already satisfied: pyyaml>=5.1 in /usr/local/lib/python3.7/dist-packages (from transformers->stanza<1.5.0,>=1.2.0->spacy_stanza) (6.0)\n", + "Requirement already satisfied: filelock in /usr/local/lib/python3.7/dist-packages (from transformers->stanza<1.5.0,>=1.2.0->spacy_stanza) (3.7.0)\n", + "Requirement already satisfied: regex!=2019.12.17 in /usr/local/lib/python3.7/dist-packages (from transformers->stanza<1.5.0,>=1.2.0->spacy_stanza) (2019.12.20)\n", + "Requirement already satisfied: tokenizers!=0.11.3,<0.13,>=0.11.1 in /usr/local/lib/python3.7/dist-packages (from transformers->stanza<1.5.0,>=1.2.0->spacy_stanza) (0.12.1)\n", + "Requirement already satisfied: importlib-metadata in /usr/local/lib/python3.7/dist-packages (from transformers->stanza<1.5.0,>=1.2.0->spacy_stanza) (4.11.4)\n", + "Installing collected packages: typing-extensions, catalogue, typer, srsly, smart-open, pydantic, thinc, spacy-loggers, spacy-legacy, pathy, langcodes, spacy, spacy-stanza\n", + " Attempting uninstall: typing-extensions\n", + " Found existing installation: typing-extensions 4.2.0\n", + " Uninstalling typing-extensions-4.2.0:\n", + " Successfully uninstalled typing-extensions-4.2.0\n", + " Attempting uninstall: catalogue\n", + " Found existing installation: catalogue 1.0.0\n", + " Uninstalling catalogue-1.0.0:\n", + " Successfully uninstalled catalogue-1.0.0\n", + " Attempting uninstall: srsly\n", + " Found existing installation: srsly 1.0.5\n", + " Uninstalling srsly-1.0.5:\n", + " Successfully uninstalled srsly-1.0.5\n", + " Attempting uninstall: smart-open\n", + " Found existing installation: smart-open 6.0.0\n", + " Uninstalling smart-open-6.0.0:\n", + " Successfully uninstalled smart-open-6.0.0\n", + " Attempting uninstall: thinc\n", + " Found existing installation: thinc 7.4.0\n", + " Uninstalling thinc-7.4.0:\n", + " Successfully uninstalled thinc-7.4.0\n", + " Attempting uninstall: spacy\n", + " Found existing installation: spacy 2.2.4\n", + " Uninstalling spacy-2.2.4:\n", + " Successfully uninstalled spacy-2.2.4\n", + "Successfully installed catalogue-2.0.7 langcodes-3.3.0 pathy-0.6.1 pydantic-1.8.2 smart-open-5.2.1 spacy-3.3.0 spacy-legacy-3.0.9 spacy-loggers-1.0.2 spacy-stanza-1.0.2 srsly-2.4.3 thinc-8.0.17 typer-0.4.1 typing-extensions-3.10.0.2\n" + ] + }, + { + "output_type": "display_data", + "data": { + "application/vnd.colab-display-data+json": { + "pip_warning": { + "packages": [ + "typing_extensions" + ] + } + } + }, + "metadata": {} + } + ] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 912, + "referenced_widgets": [ + "95e4153cff5345bfa05bbd03004fbce9", + "943c6f48b3d644e4b3cd9080267d356d", + "370944fc082048e5ab90be44e9bf1f57", + "befcc82bdc8f42b289933521c6112806", + "03fe4d1cdf60409ba40489ce3ec8a872", + "96efaef86f5d4e87b2bdc5bf59fbd165", + "5700d7adc9e04a159939285e15b9a642", + "294bc7b70b67495987a037755b3888dd", + "18009cba28464d7c9009ebaba423a2c3", + "bbb6764656ae42718112c4746cdc1de4", + "ff71d073a9ff47eea4864a272602d179", + "dedcfbe82336450fb37857b0fc6b9e45", + "c59d097c733e4891b54056652df044ea", + "5efe0e03dc334db9b89e6689ff75fd84", + "c4b9f3a6be7c45818ca8e0ac3eac93d5", + "2a4db2d2318a474b9df8a70095430ac4", + "68e8b5f38ae9458b9eb1d28fd64a209d", + "3eed62082b974b3eaef1ec0c51d2a313", + "3893e03934e842b49760e800a67de7f8", + "49c2fb43e8c242d0b06b44e5fd3f879e", + "e7aee431537a4ec285cbbd4ca3da0c54", + "5d491f77b3e9475590fb81cbcf908fd9", + "5ca98c547e5249dbbd158db62b6029ca", + "5a3335da879b46d6a9878b480417408f", + "9904ebb33cd0447395d0fbef9c505ee3", + "8fa4388aea2549dab19b5c904c60b5d5", + "ef16234f1e76491e92c92a9b56a6edbf", + "b0f9d27ec6cd41c9934592ce909aaafb", + "7d3e77d6fb2f40d8991c73c322d1cc54", + "7a60e1d28bf948fe89d1a2c088309e80", + "a0891fac15b5416383853c81bfd1b459", + "cf80ad14241d4ce1b4a39bf5c6c542fe", + "b51c392dc81c4dacbecc73c48f32647a", + "60735140e14c4bc1b83e603470ab5995", + "57c21d060e454d868e19f9629f540942", + "935698d26bfb4696b76047ff452db4c9", + "25d4f6dd59104eb9adbe4b32c72d6ee2", + "3267681711eb446c8c17b4130de939bb", + "d5eca874e97742f6a171b9650b56df4e", + "452f0f7e829544d9a38205028020e519", + "9dfd979563c54f9b9a5d69a5b878f915", + "638118770ef94048851f595e50b88bb9", + "e345f0b9666944989e4ff468bfddb0fc", + "5cc6c79bfe25477abdde76e2f61ea6d1", + "1b697eebfd9b4e03a5fcb4fef129d8a5", + "de17663d8b8547fe9383414dccf13430", + "4af63bf8a3524d418f166d7d32334c4b", + "a40a937840aa44739a135c04d2041ad3", + "4b27192eadfe4edf9eef8286282b91c4", + "ececc0b7018a4381956abbd655847558", + "2739d00e5ae04493b91d2e4494d7f256", + "e6a212657525455aaee924a1a3ed78bd", + "e9be765bc39f4d188ebda3985116ea58", + "1b8328e196724e4e9cfd1009282bf46d", + "5993b083610249b18a3def94ee72b31c", + "6e2473ca8601454493b0ff58174f7d34", + "632b24d3d0ff40169fc774ba8da8e15c", + "df9a8527b9c24249ab340cdbdba35400", + "44531601ee7e42bea38bf2c03220746d", + "028e72efb22b45d4804eaaaf6dcefc7e", + "cf11eb172bd64ac9a437c71cb6d8a23f", + "7fcff08c102b472f8a0cbc52e02243c3", + "10ab218a99604c379828569d897ce978", + "4961d0c247114355b65ec90b25532918", + "d83d29b0d1a04156ab35fa0dfa3e76b5", + "ac98ff108271427b85e475e386dae38e", + "538e612fee564d90962309a00ae34045", + "6da7345b165d46cc99a304dbf799c2f3", + "c4cc7c8152c244be81b2f1595c304732", + "a7b798ba191647829e9c9832cc5a30fd", + "1fee3d8b44624aa887901ab50e4fcf48", + "d843dee6a5d04233944e61b1896429ee", + "8c6614d22e774c3ea79255aa189b52e9", + "9cc604dc84854e359534d17bdcd98f04", + "f4058990c56b4c7b94b37c77961be5c4", + "2c07f32c04e04aa4904474b015937645", + "03505170957e49139861f61b48c998a1" + ] + }, + "id": "RUmc9cVHxDUv", + "outputId": "47740352-84b2-48e1-acd6-3e7b8d8d8b61" + }, + "source": [ + "import stanza\n", + "stanza.download('pt', package='bosque')" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Downloading https://raw.githubusercontent.com/stanfordnlp/stanza-resources/main/resources_1.4.0.json: 0%| …" + ], + "application/vnd.jupyter.widget-view+json": { + "version_major": 2, + "version_minor": 0, + "model_id": "95e4153cff5345bfa05bbd03004fbce9" + } + }, + "metadata": {} + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "2022-06-05 17:37:43 INFO: Downloading these customized packages for language: pt (Portuguese)...\n", + "=======================\n", + "| Processor | Package |\n", + "-----------------------\n", + "| tokenize | bosque |\n", + "| mwt | bosque |\n", + "| pos | bosque |\n", + "| lemma | bosque |\n", + "| depparse | bosque |\n", + "| pretrain | bosque |\n", + "=======================\n", + "\n", + "INFO:stanza:Downloading these customized packages for language: pt (Portuguese)...\n", + "=======================\n", + "| Processor | Package |\n", + "-----------------------\n", + "| tokenize | bosque |\n", + "| mwt | bosque |\n", + "| pos | bosque |\n", + "| lemma | bosque |\n", + "| depparse | bosque |\n", + "| pretrain | bosque |\n", + "=======================\n", + "\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Downloading https://huggingface.co/stanfordnlp/stanza-pt/resolve/v1.4.0/models/tokenize/bosque.pt: 0%| …" + ], + "application/vnd.jupyter.widget-view+json": { + "version_major": 2, + "version_minor": 0, + "model_id": "dedcfbe82336450fb37857b0fc6b9e45" + } + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Downloading https://huggingface.co/stanfordnlp/stanza-pt/resolve/v1.4.0/models/mwt/bosque.pt: 0%| |…" + ], + "application/vnd.jupyter.widget-view+json": { + "version_major": 2, + "version_minor": 0, + "model_id": "5ca98c547e5249dbbd158db62b6029ca" + } + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Downloading https://huggingface.co/stanfordnlp/stanza-pt/resolve/v1.4.0/models/pos/bosque.pt: 0%| |…" + ], + "application/vnd.jupyter.widget-view+json": { + "version_major": 2, + "version_minor": 0, + "model_id": "60735140e14c4bc1b83e603470ab5995" + } + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Downloading https://huggingface.co/stanfordnlp/stanza-pt/resolve/v1.4.0/models/lemma/bosque.pt: 0%| …" + ], + "application/vnd.jupyter.widget-view+json": { + "version_major": 2, + "version_minor": 0, + "model_id": "1b697eebfd9b4e03a5fcb4fef129d8a5" + } + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Downloading https://huggingface.co/stanfordnlp/stanza-pt/resolve/v1.4.0/models/depparse/bosque.pt: 0%| …" + ], + "application/vnd.jupyter.widget-view+json": { + "version_major": 2, + "version_minor": 0, + "model_id": "6e2473ca8601454493b0ff58174f7d34" + } + }, + "metadata": {} + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Downloading https://huggingface.co/stanfordnlp/stanza-pt/resolve/v1.4.0/models/pretrain/bosque.pt: 0%| …" + ], + "application/vnd.jupyter.widget-view+json": { + "version_major": 2, + "version_minor": 0, + "model_id": "538e612fee564d90962309a00ae34045" + } + }, + "metadata": {} + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "2022-06-05 17:37:55 INFO: Finished downloading models and saved to /root/stanza_resources.\n", + "INFO:stanza:Finished downloading models and saved to /root/stanza_resources.\n" + ] + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "yE0dnNNdld9u" + }, + "source": [ + "#!/usr/bin/env python3\n", + "# -*- coding: utf-8 -*-\n", + "\"\"\"\n", + "Created on Wed Nov 6 18:07:24 2019\n", + "\n", + "@author: Emmanouil Theofanis Chourdakis\n", + "\n", + "Clausie as a spacy library\n", + "\n", + "History\n", + "\n", + "Rafael Glauber - rafaelglauber@gmail.com\n", + "- 2021/11/19 \n", + "- Source code compatible with spacy 3 (stanza models) and handcrafted rules for Portuguese Language.\n", + "\n", + "\"\"\"\n", + "\n", + "from numpy import right_shift\n", + "import spacy\n", + "import lemminflect\n", + "import logging\n", + "import typing\n", + "import stanza\n", + "import spacy_stanza\n", + "\n", + "from spacy.language import Language\n", + "from spacy.tokens import Span, Doc\n", + "from spacy.matcher import Matcher\n", + "from lemminflect import getInflection\n", + "\n", + "logging.basicConfig(level=logging.INFO)\n", + "\n", + "Doc.set_extension(\"clauses\", default=[], force=True)\n", + "Span.set_extension(\"clauses\", default=[], force=True)\n", + "\n", + "SUBJECT_DEPREL = ['nsubj', 'nsubj:pass']\n", + "IOBJECT_DEPREL = ['iobj']\n", + "DOBJECT_DEPREL = ['obj']\n", + "COMPLEMENT_DEPREL = ['ccomp', 'xcomp', 'amod', 'nmod', 'nummod']\n", + "ADVERBIAL_DEPREL = ['advcl', 'advmod', 'obl', 'obl:agent']\n", + "COPULAR_DEPREL = ['cop']\n", + "APPOSITIVE_DEPREL = ['appos']\n", + "CONJ_DEPREL = ['conj']\n", + "\n", + "RELATIVE_PRONOUN = ['qual', 'cujo', 'quanto', 'que', 'quem', 'onde']\n", + "\n", + "PRONOUN_POS = 'PRON'\n", + "VERB_POS = 'VERB'\n", + "\n", + "# aux verb to appos modifier (synthetic relationship)\n", + "TOBE_VERB = 'é'\n", + "\n", + "class Clause:\n", + " \n", + " def __init__(\n", + " self,\n", + " subject: typing.Optional[Span] = None,\n", + " verb: typing.Optional[Span] = None,\n", + " indirect_object: typing.Optional[Span] = None,\n", + " direct_object: typing.Optional[Span] = None,\n", + " complement: typing.Optional[Span] = None,\n", + " adverbials: typing.List[Span] = None,\n", + " ):\n", + " \"\"\"\n", + " Parameters\n", + " ----------\n", + " subject : Span\n", + " Subject.\n", + " verb : Span\n", + " Verb.\n", + " indirect_object : Span, optional\n", + " Indirect object, The default is None.\n", + " direct_object : Span, optional\n", + " Direct object. The default is None.\n", + " complement : Span, optional\n", + " Complement. The default is None.\n", + " adverbials : list, optional\n", + " List of adverbials. The default is [].\n", + "\n", + " Returns\n", + " -------\n", + " None.\n", + "\n", + " \"\"\"\n", + " if adverbials is None:\n", + " adverbials = []\n", + "\n", + " self.subject = subject\n", + " self.verb = verb\n", + " self.indirect_object = indirect_object\n", + " self.direct_object = direct_object\n", + " self.complement = complement\n", + " self.adverbials = adverbials\n", + "\n", + " self.doc = self.subject.doc\n", + "\n", + " self.type = self._get_clause_type()\n", + "\n", + " def _get_clause_type(self):\n", + " has_verb = self.verb is not None\n", + " has_complement = self.complement is not None\n", + " has_adverbial = len(self.adverbials) > 0\n", + " has_direct_object = self.direct_object is not None\n", + " has_indirect_object = self.indirect_object is not None\n", + " has_object = has_direct_object or has_indirect_object\n", + " \n", + " clause_type = \"undefined\"\n", + "\n", + " if not has_verb:\n", + " clause_type = \"SVC\"\n", + " return clause_type\n", + "\n", + " if has_object:\n", + " if has_direct_object and has_indirect_object:\n", + " clause_type = \"SVOO\"\n", + " elif has_complement:\n", + " clause_type = \"SVOC\"\n", + " elif not has_adverbial or not has_direct_object:\n", + " clause_type = \"SVO\"\n", + " elif has_adverbial:\n", + " clause_type = \"SVOA\"\n", + " else:\n", + " clause_type = \"SVO\"\n", + " else:\n", + " if has_complement:\n", + " clause_type = \"SVC\"\n", + " elif not has_adverbial:\n", + " clause_type = \"SV\"\n", + " elif has_adverbial:\n", + " clause_type = \"SVA\"\n", + " else:\n", + " clause_type = \"SV\"\n", + "\n", + " return clause_type\n", + "\n", + " def __repr__(self):\n", + " return \"<{}, {}, {}, {}, {}, {}, {}>\".format(\n", + " self.type,\n", + " self.subject,\n", + " self.verb,\n", + " self.indirect_object,\n", + " self.direct_object,\n", + " self.complement,\n", + " self.adverbials,\n", + " )\n", + "\n", + " def to_propositions(\n", + " self, as_text: bool = False, inflect: str or None = \"VBD\", capitalize: bool = False\n", + " ):\n", + "\n", + " if inflect and not as_text:\n", + " logging.warning(\"`inflect' argument is ignored when `as_text==False'. To suppress this warning call `to_propositions' with the argument `inflect=None'\")\n", + " if capitalize and not as_text:\n", + " logging.warning(\"`capitalize' argument is ignored when `as_text==False'. To suppress this warning call `to_propositions' with the argument `capitalize=False\")\n", + "\n", + " propositions = []\n", + "\n", + " subjects = extract_ccs_from_token_at_root(self.subject)\n", + " direct_objects = extract_ccs_from_token_at_root(self.direct_object)\n", + " indirect_objects = extract_ccs_from_token_at_root(self.indirect_object)\n", + " complements = extract_ccs_from_token_at_root(self.complement)\n", + " verbs = [self.verb] if self.verb else []\n", + " \n", + " # synthetic verb\n", + " tobe_verb = nlp(TOBE_VERB)\n", + "\n", + " for subj in subjects:\n", + " if complements and not verbs:\n", + " for c in complements:\n", + " propositions.append((subj, tobe_verb, c))\n", + " propositions.append((subj, tobe_verb) + tuple(complements))\n", + "\n", + " for verb in verbs:\n", + " prop = [subj, verb]\n", + " if self.type in [\"SV\", \"SVA\"]:\n", + " if self.adverbials:\n", + " for a in self.adverbials:\n", + " propositions.append(tuple(prop + [a]))\n", + " propositions.append(tuple(prop + self.adverbials))\n", + " else:\n", + " propositions.append(tuple(prop))\n", + "\n", + " elif self.type == \"SVOO\":\n", + " for iobj in indirect_objects:\n", + " for dobj in direct_objects:\n", + " propositions.append((subj, verb, iobj, dobj))\n", + " elif self.type == \"SVO\":\n", + " for obj in direct_objects + indirect_objects:\n", + " propositions.append((subj, verb, obj))\n", + " for a in self.adverbials:\n", + " propositions.append((subj, verb, obj, a))\n", + " elif self.type == \"SVOA\":\n", + " for obj in direct_objects:\n", + " if self.adverbials:\n", + " for a in self.adverbials:\n", + " propositions.append(tuple(prop + [obj, a]))\n", + " propositions.append(tuple(prop + [obj] + self.adverbials))\n", + "\n", + " elif self.type == \"SVOC\":\n", + " for obj in indirect_objects + direct_objects:\n", + " if complements:\n", + " for c in complements:\n", + " propositions.append(tuple(prop + [obj, c]))\n", + " propositions.append(tuple(prop + [obj] + complements))\n", + " elif self.type == \"SVC\":\n", + " if complements:\n", + " for c in complements:\n", + " propositions.append(tuple(prop + [c]))\n", + " propositions.append(tuple(prop + complements))\n", + "\n", + " # Remove doubles\n", + " propositions = list(set(propositions))\n", + "\n", + " if as_text:\n", + " return _convert_clauses_to_text(\n", + " propositions, inflect=inflect, capitalize=capitalize\n", + " )\n", + "\n", + " return propositions\n", + "\n", + "def inflect_token(token, inflect):\n", + " if (\n", + " inflect\n", + " and token.pos_ == \"VERB\"\n", + " and \"AUX\" not in [tt.pos_ for tt in token.lefts]\n", + " # t is not preceded by an auxiliary verb (e.g. `the birds were ailing`)\n", + " ): # t `dreamed of becoming a dancer`\n", + " return str(token._.inflect(inflect))\n", + " else:\n", + " return str(token)\n", + "\n", + "\n", + "def _convert_clauses_to_text(propositions, inflect, capitalize):\n", + " proposition_texts = []\n", + " for proposition in propositions:\n", + " span_texts = []\n", + " for span in proposition:\n", + "\n", + " token_texts = []\n", + " for token in span:\n", + " token_texts.append(inflect_token(token, inflect))\n", + "\n", + " span_texts.append(\" \".join(token_texts))\n", + " proposition_texts.append(\" \".join(span_texts))\n", + "\n", + " if capitalize: # Capitalize and add a full stop.\n", + " proposition_texts = [text.capitalize() + \".\" for text in proposition_texts]\n", + "\n", + " return proposition_texts\n", + "\n", + "\n", + "def _get_verb_matches(span):\n", + " # 1. Find verb phrases in the span\n", + " # (see mdmjsh answer here: https://stackoverflow.com/questions/47856247/extract-verb-phrases-using-spacy)\n", + " verb_matcher = Matcher(span.vocab)\n", + " pattern = [\n", + " #[{\"POS\": \"AUX\"}], \n", + " #[{\"POS\": \"VERB\"}], \n", + " #[{\"POS\": \"VERB\", \"OP\": \"+\"}], \n", + " [{\"POS\": \"AUX\", \"OP\": \"+\"}, \n", + " {\"POS\": \"VERB\", \"OP\": \"*\"}, \n", + " {\"POS\": \"ADV\", \"OP\": \"*\"}, \n", + " {\"POS\": \"ADJ\", \"OP\": \"*\"}, \n", + " {\"POS\": \"DET\", \"OP\": \"*\"}, \n", + " {\"POS\": \"NOUN\", \"OP\": \"*\"}], \n", + " [{\"POS\": \"VERB\", \"OP\": \"+\"}, \n", + " {\"POS\": \"ADV\", \"OP\": \"*\"}, \n", + " {\"POS\": \"ADJ\", \"OP\": \"*\"}, \n", + " {\"POS\": \"DET\", \"OP\": \"*\"}, \n", + " {\"POS\": \"NOUN\", \"OP\": \"*\"}] \n", + " #[{\"POS\": \"AUX\"}, {\"POS\": \"NOUN\"}],\n", + " #[{\"POS\": \"AUX\"}, {\"POS\": \"DET\"}, {\"POS\": \"NOUN\"}]\n", + " ]\n", + " verb_matcher.add(\"Verb phrase\", pattern)\n", + " return verb_matcher(span)\n", + "\n", + "\n", + "def _get_verb_chunks(span):\n", + " matches = _get_verb_matches(span)\n", + "\n", + " # Filter matches (e.g. do not have both \"has won\" and \"won\" in verbs)\n", + " verb_chunks = []\n", + " for match in [span[start:end] for _, start, end in matches]:\n", + " if match.root not in [vp.root for vp in verb_chunks]:\n", + " verb_chunks.append(match)\n", + " return verb_chunks\n", + "\n", + "\n", + "def _get_subject(verb): \n", + " # get verb root token\n", + " root = verb.root\n", + " \n", + " # if it is a copulate verb, we should climb the tree.\n", + " if root.dep_ in COPULAR_DEPREL:\n", + " children = root.head.children\n", + " else:\n", + " children = verb.root.children \n", + " \n", + " # default subject in SV format\n", + " for c in children:\n", + " if c.dep_ in SUBJECT_DEPREL:\n", + " subject = extract_span_from_entity(c)\n", + " # if relative pronoun: return left\n", + " if (subject.root.pos_ == PRONOUN_POS) and (subject.root.lemma_ in RELATIVE_PRONOUN):\n", + " return extract_span_from_entity(subject.doc[:subject.root.i])\n", + " else: \n", + " return subject\n", + "\n", + " while root.dep_ in CONJ_DEPREL:\n", + " for c in root.children:\n", + " if c.dep_ in SUBJECT_DEPREL:\n", + " subject = extract_span_from_entity(c)\n", + " return subject\n", + "\n", + " if c.dep_ in ['acl', 'acl:relcl', 'advcl']:\n", + " subject = find_verb_subject(c)\n", + " return extract_span_from_entity(subject) if subject else None\n", + " \n", + " if root == verb.root.head: \n", + " if root.pos_ == VERB_POS:\n", + " root = root.head\n", + " else: \n", + " break\n", + " else:\n", + " root = verb.root.head\n", + "\n", + " for c in root.children:\n", + " if c.dep_ in SUBJECT_DEPREL:\n", + " subject = extract_span_from_entity(c)\n", + " return subject\n", + " return None\n", + "\n", + "def _find_matching_child(root, allowed_types):\n", + " for c in root.children:\n", + " if c.dep_ in allowed_types:\n", + " return extract_span_from_entity(c)\n", + " \n", + " for c in root.children:\n", + " if (c.dep_ in CONJ_DEPREL) and (c.pos_ == root.pos_):\n", + " return _find_matching_child(c, allowed_types=allowed_types)\n", + "\n", + " return None\n", + "\n", + "def _find_matching_parent(root, allowed_types):\n", + " sub_tree = _find_matching_child(root.head, allowed_types=allowed_types)\n", + "\n", + " if sub_tree == None or root.head.i > sub_tree.end:\n", + " return None\n", + " else: \n", + " return Span(root.doc, root.head.i, sub_tree.end)\n", + "\n", + "def extract_clauses(span):\n", + " clauses = []\n", + " verb_chunks = _get_verb_chunks(span)\n", + " for verb in verb_chunks:\n", + "\n", + " subject = _get_subject(verb)\n", + " if not subject:\n", + " continue\n", + "\n", + " complement = None\n", + "\n", + " # Check if there are phrases of the form, \"AE, a scientist of ...\"\n", + " # If so, add a new clause of the form:\n", + " # \n", + " for c in subject.root.children:\n", + " if c.dep_ in APPOSITIVE_DEPREL: \n", + " appos = extract_span_from_entity(c)\n", + " complement = extract_span_from_entity_no_appos(subject.root)\n", + " # Change subject to appos for informative order in relationship\n", + " if (subject.root.pos_ == 'NOUN') and (appos.root.pos_ == 'PROPN'):\n", + " subject = appos \n", + " clause = Clause(subject=subject, complement=complement)\n", + " clauses.append(clause)\n", + "\n", + " indirect_object = _find_matching_child(verb.root, IOBJECT_DEPREL)\n", + " direct_object = _find_matching_child(verb.root, DOBJECT_DEPREL)\n", + " \n", + " # complement or \"predicate of the subject\" \n", + " if (verb.root.dep_ in COPULAR_DEPREL):\n", + " right = verb.doc[verb.root.i:].root\n", + " # if rigth token is not a verb: finding the parent\n", + " if (right.pos_ != 'VERB'):\n", + " complement = _find_matching_parent(right, COMPLEMENT_DEPREL)\n", + " else: \n", + " complement = _find_matching_child(verb.root, COMPLEMENT_DEPREL)\n", + " \n", + " adverbials = [\n", + " extract_span_from_entity(c)\n", + " for c in verb.root.children\n", + " if c.dep_ in ADVERBIAL_DEPREL\n", + " ]\n", + " \n", + " clause = Clause(\n", + " subject=subject,\n", + " verb=verb,\n", + " indirect_object=indirect_object,\n", + " direct_object=direct_object,\n", + " complement=complement,\n", + " adverbials=adverbials,\n", + " )\n", + " clauses.append(clause)\n", + " return clauses\n", + "\n", + "@Language.component('openie')\n", + "def do_extract_clauses(doc):\n", + " for sent in doc.sents:\n", + " clauses = extract_clauses(sent)\n", + " sent._.clauses = clauses\n", + " doc._.clauses += clauses\n", + " return doc\n", + "\n", + "def extract_span_from_entity(token):\n", + " ent_subtree = sorted([c for c in token.subtree if c.pos_ != 'PUNCT'], key=lambda x: x.i)\n", + " return Span(token.doc, start=ent_subtree[0].i, end=ent_subtree[-1].i + 1)\n", + "\n", + "def extract_span_from_entity_no_appos(token):\n", + " ent_subtree = sorted(\n", + " [token] + [c for c in token.children if c.dep_ not in APPOSITIVE_DEPREL],\n", + " key=lambda x: x.i,\n", + " )\n", + " return Span(token.doc, start=ent_subtree[0].i, end=ent_subtree[-1].i + 1)\n", + "\n", + "def extract_ccs_from_token_at_root(span):\n", + " if span is None:\n", + " return []\n", + " else:\n", + " return [span]\n", + " #return extract_ccs_from_token(span.root)\n", + "\n", + "def find_verb_subject(v):\n", + " \"\"\"\n", + " Returns the subject of the verb. If it does not exist and the root is a head,\n", + " find the subject of that verb instead.\n", + " \"\"\"\n", + " if v.dep_ in SUBJECT_DEPREL:\n", + " return v\n", + " # guard against infinite recursion on root token\n", + " elif v.dep_ in [\"advcl\", \"acl\", \"acl:relcl\"] and v.head.dep_ != \"root\":\n", + " return find_verb_subject(v.head)\n", + "\n", + " for c in v.children:\n", + " if c.dep_ in SUBJECT_DEPREL:\n", + " return c\n", + " elif c.dep_ in [\"advcl\", \"acl\", \"acl:relcl\"] and v.head.dep_ != \"root\":\n", + " return find_verb_subject(v.head)\n" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "TRQFVkfilnX1" + }, + "source": [ + "# Run!" + ] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 1000, + "referenced_widgets": [ + "6666e1b5677e4952a90f4a016cc9a78f", + "aa21fc27ba864e3db8ac368712761aa3", + "5697cec92ad94cf5a9b6790647f95251", + "cfd61cc8ca2c4462878dd13e14a2f814", + "4212904855b0484ebb305692efb61ade", + "c9b7d9b16a6c4e4f808c180866897897", + "f9146b3bf2a24084899bf9b795c5de94", + "9fea05c6aedd41e693c641b86e37b94b", + "8654f5ffefd5464e8808a1749947048f", + "b2893d5dd7df4516822f66fdab2f3aa5", + "ab6b79a1f5ce44a49e1177aa6fcc5d03" + ] + }, + "id": "TwAQ2rG4vdJz", + "outputId": "03561d3f-5a4e-4410-d280-01fc7767f674" + }, + "source": [ + "if __name__ == \"__main__\":\n", + " import spacy\n", + "\n", + " nlp = spacy_stanza.load_pipeline(\"pt\")\n", + " nlp.add_pipe(\"openie\")\n", + "\n", + " text = [\n", + " \"Pinoquio disse que o heroi Super-man nasceu na extinta Kripton.\",\n", + " \"Em 21 de maio de 2013, os proprietários da NFL em suas reuniões de primavera em Boston votaram e premiaram o jogo no Levi's Stadium.\",\n", + " \"EA morreu em Princeton em 1995.\",\n", + " \"O diretor do filme, Mohsen Makhmalbaf, decide realizar uma chamada aberta para escalar os atores de seu próximo filme através de um anúncio de jornal.\",\n", + " \"No imenso desacerto que foi a defesa do Penafiel, o capitão Vasco foi o homem que ainda segurou as pontas.\",\n", + " \"Daniela Barreiro Claro é professora da UFBA e ensina Banco de Dados.\",\n", + " \"Os alunos querem aprender Matemática.\",\n", + " \"A intervenção de Pequim é, possivelmente, a de maior alcance, desde a entrega de Hong Kong pelo Reino Unido em 1997.\",\n", + " \"O dono da fazenda viajou para Salvador ontem.\",\n", + " \"Eu compro, empresto e vendo ouro.\",\n", + " \"Eu gosto de banana, pera e maça.\"\n", + " ]\n", + "\n", + " with open('out.txt', 'w') as output:\n", + " \n", + " for s in text:\n", + " doc = nlp(s)\n", + " #explacy.print_parse_info(nlp, s)\n", + " output.write(s + '\\n')\n", + " for prop in doc._.clauses:\n", + " output.write('\\t' + str(prop.to_propositions(inflect=None)) + '\\n')\n", + "\n", + " output.close() \n" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Downloading https://raw.githubusercontent.com/stanfordnlp/stanza-resources/main/resources_1.4.0.json: 0%| …" + ], + "application/vnd.jupyter.widget-view+json": { + "version_major": 2, + "version_minor": 0, + "model_id": "6666e1b5677e4952a90f4a016cc9a78f" + } + }, + "metadata": {} + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "2022-06-05 17:40:30 INFO: Loading these models for language: pt (Portuguese):\n", + "==========================\n", + "| Processor | Package |\n", + "--------------------------\n", + "| tokenize | bosque |\n", + "| mwt | bosque |\n", + "| pos | bosque |\n", + "| lemma | bosque |\n", + "| depparse | bosque |\n", + "| constituency | cintil |\n", + "==========================\n", + "\n", + "INFO:stanza:Loading these models for language: pt (Portuguese):\n", + "==========================\n", + "| Processor | Package |\n", + "--------------------------\n", + "| tokenize | bosque |\n", + "| mwt | bosque |\n", + "| pos | bosque |\n", + "| lemma | bosque |\n", + "| depparse | bosque |\n", + "| constituency | cintil |\n", + "==========================\n", + "\n", + "2022-06-05 17:40:30 INFO: Use device: cpu\n", + "INFO:stanza:Use device: cpu\n", + "2022-06-05 17:40:30 INFO: Loading: tokenize\n", + "INFO:stanza:Loading: tokenize\n", + "2022-06-05 17:40:30 INFO: Loading: mwt\n", + "INFO:stanza:Loading: mwt\n", + "2022-06-05 17:40:30 INFO: Loading: pos\n", + "INFO:stanza:Loading: pos\n", + "2022-06-05 17:40:31 INFO: Loading: lemma\n", + "INFO:stanza:Loading: lemma\n", + "2022-06-05 17:40:31 INFO: Loading: depparse\n", + "INFO:stanza:Loading: depparse\n", + "2022-06-05 17:40:31 INFO: Loading: constituency\n", + "INFO:stanza:Loading: constituency\n", + "2022-06-05 17:40:32 INFO: Done loading processors!\n", + "INFO:stanza:Done loading processors!\n", + "/usr/local/lib/python3.7/dist-packages/spacy/language.py:1005: UserWarning: Due to multiword token expansion or an alignment issue, the original text has been replaced by space-separated expanded tokens.\n", + " doc = self._ensure_doc(text)\n", + "/usr/local/lib/python3.7/dist-packages/spacy/language.py:1005: UserWarning: Can't set named entities because of multi-word token expansion or because the character offsets don't map to valid tokens produced by the Stanza tokenizer:\n", + "Words: ['Pinoquio', 'disse', 'que', 'o', 'heroi', 'Super-man', 'nasceu', 'em', 'a', 'extinta', 'Kripton', '.']\n", + "Entities: []\n", + " doc = self._ensure_doc(text)\n", + "/usr/local/lib/python3.7/dist-packages/spacy/language.py:1005: UserWarning: Can't set named entities because of multi-word token expansion or because the character offsets don't map to valid tokens produced by the Stanza tokenizer:\n", + "Words: ['Em', '21', 'de', 'maio', 'de', '2013', ',', 'os', 'proprietários', 'de', 'a', 'NFL', 'em', 'suas', 'reuniões', 'de', 'primavera', 'em', 'Boston', 'votaram', 'e', 'premiaram', 'o', 'jogo', 'em', 'o', \"Levi's\", 'Stadium', '.']\n", + "Entities: []\n", + " doc = self._ensure_doc(text)\n", + "/usr/local/lib/python3.7/dist-packages/spacy/language.py:1005: UserWarning: Can't set named entities because of multi-word token expansion or because the character offsets don't map to valid tokens produced by the Stanza tokenizer:\n", + "Words: ['O', 'diretor', 'de', 'o', 'filme', ',', 'Mohsen', 'Makhmalbaf', ',', 'decide', 'realizar', 'uma', 'chamada', 'aberta', 'para', 'escalar', 'os', 'atores', 'de', 'seu', 'próximo', 'filme', 'através', 'de', 'um', 'anúncio', 'de', 'jornal', '.']\n", + "Entities: []\n", + " doc = self._ensure_doc(text)\n", + "/usr/local/lib/python3.7/dist-packages/spacy/language.py:1005: UserWarning: Can't set named entities because of multi-word token expansion or because the character offsets don't map to valid tokens produced by the Stanza tokenizer:\n", + "Words: ['Em', 'o', 'imenso', 'desacerto', 'que', 'foi', 'a', 'defesa', 'de', 'o', 'Penafiel', ',', 'o', 'capitão', 'Vasco', 'foi', 'o', 'homem', 'que', 'ainda', 'segurou', 'as', 'pontas', '.']\n", + "Entities: []\n", + " doc = self._ensure_doc(text)\n", + "/usr/local/lib/python3.7/dist-packages/spacy/language.py:1005: UserWarning: Can't set named entities because of multi-word token expansion or because the character offsets don't map to valid tokens produced by the Stanza tokenizer:\n", + "Words: ['Daniela', 'Barreiro', 'Claro', 'é', 'professora', 'de', 'a', 'UFBA', 'e', 'ensina', 'Banco', 'de', 'Dados', '.']\n", + "Entities: []\n", + " doc = self._ensure_doc(text)\n", + "/usr/local/lib/python3.7/dist-packages/spacy/language.py:1005: UserWarning: Can't set named entities because of multi-word token expansion or because the character offsets don't map to valid tokens produced by the Stanza tokenizer:\n", + "Words: ['A', 'intervenção', 'de', 'Pequim', 'é', ',', 'possivelmente', ',', 'a', 'de', 'maior', 'alcance', ',', 'desde', 'a', 'entrega', 'de', 'Hong', 'Kong', 'por', 'o', 'Reino', 'Unido', 'em', '1997', '.']\n", + "Entities: []\n", + " doc = self._ensure_doc(text)\n", + "/usr/local/lib/python3.7/dist-packages/spacy/language.py:1005: UserWarning: Can't set named entities because of multi-word token expansion or because the character offsets don't map to valid tokens produced by the Stanza tokenizer:\n", + "Words: ['O', 'dono', 'de', 'a', 'fazenda', 'viajou', 'para', 'Salvador', 'ontem', '.']\n", + "Entities: []\n", + " doc = self._ensure_doc(text)\n" + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/src/noie.py b/src/noie.py deleted file mode 100644 index e8d37e6..0000000 --- a/src/noie.py +++ /dev/null @@ -1,504 +0,0 @@ -# -*- coding: utf-8 -*- -"""Noie.ipynb - -Automatically generated by Colaboratory. - -Original file is located at - https://colab.research.google.com/drive/16WEb3jBSJ71EaBQl6JaIlhIMb3GbYlW0 - -![formas.png](data:image/png;base64,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) -# RESEARCH GROUP -## Noie -### An Open Information Extraction System based on Dependency Parser and Handcrafted Rules for Portuguese texts inspired by ClausIE - -https://formas.ufba.br/ - -How to cite us: - -? -""" - -!pip install lemminflect - -!pip install stanza - -!pip install spacy_stanza - -stanza.download('pt', package='bosque') - -#!/usr/bin/env python3 -# -*- coding: utf-8 -*- -""" -Created on Wed Nov 6 18:07:24 2019 - -@author: Emmanouil Theofanis Chourdakis - -Clausie as a spacy library - -History - -Rafael Glauber - rafaelglauber@gmail.com -- 2021/11/19 -- Source code compatible with spacy 3 (stanza models) and handcrafted rules for Portuguese Language. - -""" - -from numpy import right_shift -import spacy -import lemminflect -import logging -import typing -import stanza -import spacy_stanza - -from spacy.language import Language -from spacy.tokens import Span, Doc -from spacy.matcher import Matcher -from lemminflect import getInflection - -logging.basicConfig(level=logging.INFO) - -Doc.set_extension("clauses", default=[], force=True) -Span.set_extension("clauses", default=[], force=True) - -SUBJECT_DEPREL = ['nsubj', 'nsubj:pass'] -IOBJECT_DEPREL = ['iobj'] -DOBJECT_DEPREL = ['obj'] -COMPLEMENT_DEPREL = ['ccomp', 'xcomp', 'amod', 'nmod', 'nummod'] -ADVERBIAL_DEPREL = ['advcl', 'advmod', 'obl', 'obl:agent'] -COPULAR_DEPREL = ['cop'] -APPOSITIVE_DEPREL = ['appos'] -CONJ_DEPREL = ['conj'] - -RELATIVE_PRONOUN = ['qual', 'cujo', 'quanto', 'que', 'quem', 'onde'] - -PRONOUN_POS = 'PRON' -VERB_POS = 'VERB' - -# aux verb to appos modifier (synthetic relationship) -TOBE_VERB = 'é' - -class Clause: - - def __init__( - self, - subject: typing.Optional[Span] = None, - verb: typing.Optional[Span] = None, - indirect_object: typing.Optional[Span] = None, - direct_object: typing.Optional[Span] = None, - complement: typing.Optional[Span] = None, - adverbials: typing.List[Span] = None, - ): - """ - Parameters - ---------- - subject : Span - Subject. - verb : Span - Verb. - indirect_object : Span, optional - Indirect object, The default is None. - direct_object : Span, optional - Direct object. The default is None. - complement : Span, optional - Complement. The default is None. - adverbials : list, optional - List of adverbials. The default is []. - - Returns - ------- - None. - - """ - if adverbials is None: - adverbials = [] - - self.subject = subject - self.verb = verb - self.indirect_object = indirect_object - self.direct_object = direct_object - self.complement = complement - self.adverbials = adverbials - - self.doc = self.subject.doc - - self.type = self._get_clause_type() - - def _get_clause_type(self): - has_verb = self.verb is not None - has_complement = self.complement is not None - has_adverbial = len(self.adverbials) > 0 - has_direct_object = self.direct_object is not None - has_indirect_object = self.indirect_object is not None - has_object = has_direct_object or has_indirect_object - - clause_type = "undefined" - - if not has_verb: - clause_type = "SVC" - return clause_type - - if has_object: - if has_direct_object and has_indirect_object: - clause_type = "SVOO" - elif has_complement: - clause_type = "SVOC" - elif not has_adverbial or not has_direct_object: - clause_type = "SVO" - elif has_adverbial: - clause_type = "SVOA" - else: - clause_type = "SVO" - else: - if has_complement: - clause_type = "SVC" - elif not has_adverbial: - clause_type = "SV" - elif has_adverbial: - clause_type = "SVA" - else: - clause_type = "SV" - - return clause_type - - def __repr__(self): - return "<{}, {}, {}, {}, {}, {}, {}>".format( - self.type, - self.subject, - self.verb, - self.indirect_object, - self.direct_object, - self.complement, - self.adverbials, - ) - - def to_propositions( - self, as_text: bool = False, inflect: str or None = "VBD", capitalize: bool = False - ): - - if inflect and not as_text: - logging.warning("`inflect' argument is ignored when `as_text==False'. To suppress this warning call `to_propositions' with the argument `inflect=None'") - if capitalize and not as_text: - logging.warning("`capitalize' argument is ignored when `as_text==False'. To suppress this warning call `to_propositions' with the argument `capitalize=False") - - propositions = [] - - subjects = extract_ccs_from_token_at_root(self.subject) - direct_objects = extract_ccs_from_token_at_root(self.direct_object) - indirect_objects = extract_ccs_from_token_at_root(self.indirect_object) - complements = extract_ccs_from_token_at_root(self.complement) - verbs = [self.verb] if self.verb else [] - - # synthetic verb - tobe_verb = nlp(TOBE_VERB) - - for subj in subjects: - if complements and not verbs: - for c in complements: - propositions.append((subj, tobe_verb, c)) - propositions.append((subj, tobe_verb) + tuple(complements)) - - for verb in verbs: - prop = [subj, verb] - if self.type in ["SV", "SVA"]: - if self.adverbials: - for a in self.adverbials: - propositions.append(tuple(prop + [a])) - propositions.append(tuple(prop + self.adverbials)) - else: - propositions.append(tuple(prop)) - - elif self.type == "SVOO": - for iobj in indirect_objects: - for dobj in direct_objects: - propositions.append((subj, verb, iobj, dobj)) - elif self.type == "SVO": - for obj in direct_objects + indirect_objects: - propositions.append((subj, verb, obj)) - for a in self.adverbials: - propositions.append((subj, verb, obj, a)) - elif self.type == "SVOA": - for obj in direct_objects: - if self.adverbials: - for a in self.adverbials: - propositions.append(tuple(prop + [obj, a])) - propositions.append(tuple(prop + [obj] + self.adverbials)) - - elif self.type == "SVOC": - for obj in indirect_objects + direct_objects: - if complements: - for c in complements: - propositions.append(tuple(prop + [obj, c])) - propositions.append(tuple(prop + [obj] + complements)) - elif self.type == "SVC": - if complements: - for c in complements: - propositions.append(tuple(prop + [c])) - propositions.append(tuple(prop + complements)) - - # Remove doubles - propositions = list(set(propositions)) - - if as_text: - return _convert_clauses_to_text( - propositions, inflect=inflect, capitalize=capitalize - ) - - return propositions - -def inflect_token(token, inflect): - if ( - inflect - and token.pos_ == "VERB" - and "AUX" not in [tt.pos_ for tt in token.lefts] - # t is not preceded by an auxiliary verb (e.g. `the birds were ailing`) - ): # t `dreamed of becoming a dancer` - return str(token._.inflect(inflect)) - else: - return str(token) - - -def _convert_clauses_to_text(propositions, inflect, capitalize): - proposition_texts = [] - for proposition in propositions: - span_texts = [] - for span in proposition: - - token_texts = [] - for token in span: - token_texts.append(inflect_token(token, inflect)) - - span_texts.append(" ".join(token_texts)) - proposition_texts.append(" ".join(span_texts)) - - if capitalize: # Capitalize and add a full stop. - proposition_texts = [text.capitalize() + "." for text in proposition_texts] - - return proposition_texts - - -def _get_verb_matches(span): - # 1. Find verb phrases in the span - # (see mdmjsh answer here: https://stackoverflow.com/questions/47856247/extract-verb-phrases-using-spacy) - verb_matcher = Matcher(span.vocab) - pattern = [ - #[{"POS": "AUX"}], - #[{"POS": "VERB"}], - #[{"POS": "VERB", "OP": "+"}], - [{"POS": "AUX", "OP": "+"}, - {"POS": "VERB", "OP": "*"}, - {"POS": "ADV", "OP": "*"}, - {"POS": "ADJ", "OP": "*"}, - {"POS": "DET", "OP": "*"}, - {"POS": "NOUN", "OP": "*"}], - [{"POS": "VERB", "OP": "+"}, - {"POS": "ADV", "OP": "*"}, - {"POS": "ADJ", "OP": "*"}, - {"POS": "DET", "OP": "*"}, - {"POS": "NOUN", "OP": "*"}] - #[{"POS": "AUX"}, {"POS": "NOUN"}], - #[{"POS": "AUX"}, {"POS": "DET"}, {"POS": "NOUN"}] - ] - verb_matcher.add("Verb phrase", pattern) - return verb_matcher(span) - - -def _get_verb_chunks(span): - matches = _get_verb_matches(span) - - # Filter matches (e.g. do not have both "has won" and "won" in verbs) - verb_chunks = [] - for match in [span[start:end] for _, start, end in matches]: - if match.root not in [vp.root for vp in verb_chunks]: - verb_chunks.append(match) - return verb_chunks - - -def _get_subject(verb): - # get verb root token - root = verb.root - - # if it is a copulate verb, we should climb the tree. - if root.dep_ in COPULAR_DEPREL: - children = root.head.children - else: - children = verb.root.children - - # default subject in SV format - for c in children: - if c.dep_ in SUBJECT_DEPREL: - subject = extract_span_from_entity(c) - # if relative pronoun: return left - if (subject.root.pos_ == PRONOUN_POS) and (subject.root.lemma_ in RELATIVE_PRONOUN): - return extract_span_from_entity(subject.doc[:subject.root.i]) - else: - return subject - - while root.dep_ in CONJ_DEPREL: - for c in root.children: - if c.dep_ in SUBJECT_DEPREL: - subject = extract_span_from_entity(c) - return subject - - if c.dep_ in ['acl', 'acl:relcl', 'advcl']: - subject = find_verb_subject(c) - return extract_span_from_entity(subject) if subject else None - - if root == verb.root.head: - if root.pos_ == VERB_POS: - root = root.head - else: - break - else: - root = verb.root.head - - for c in root.children: - if c.dep_ in SUBJECT_DEPREL: - subject = extract_span_from_entity(c) - return subject - return None - -def _find_matching_child(root, allowed_types): - for c in root.children: - if c.dep_ in allowed_types: - return extract_span_from_entity(c) - - for c in root.children: - if (c.dep_ in CONJ_DEPREL) and (c.pos_ == root.pos_): - return _find_matching_child(c, allowed_types=allowed_types) - - return None - -def _find_matching_parent(root, allowed_types): - sub_tree = _find_matching_child(root.head, allowed_types=allowed_types) - if root.head.i > sub_tree.end: - return None - else: - return Span(root.doc, root.head.i, sub_tree.end) - -def extract_clauses(span): - clauses = [] - verb_chunks = _get_verb_chunks(span) - for verb in verb_chunks: - - subject = _get_subject(verb) - if not subject: - continue - - # Check if there are phrases of the form, "AE, a scientist of ..." - # If so, add a new clause of the form: - # - for c in subject.root.children: - if c.dep_ in APPOSITIVE_DEPREL: - appos = extract_span_from_entity(c) - complement = extract_span_from_entity_no_appos(subject.root) - # Change subject to appos for informative order in relationship - if (subject.root.pos_ == 'NOUN') and (appos.root.pos_ == 'PROPN'): - subject = appos - clause = Clause(subject=subject, complement=complement) - clauses.append(clause) - - indirect_object = _find_matching_child(verb.root, IOBJECT_DEPREL) - direct_object = _find_matching_child(verb.root, DOBJECT_DEPREL) - - # complement or "predicate of the subject" - if (verb.root.dep_ in COPULAR_DEPREL): - right = verb.doc[verb.root.i:].root - # if rigth token is not a verb: finding the parent - if (right.pos_ != 'VERB'): - complement = _find_matching_parent(right, COMPLEMENT_DEPREL) - else: - complement = _find_matching_child(verb.root, COMPLEMENT_DEPREL) - - adverbials = [ - extract_span_from_entity(c) - for c in verb.root.children - if c.dep_ in ADVERBIAL_DEPREL - ] - - clause = Clause( - subject=subject, - verb=verb, - indirect_object=indirect_object, - direct_object=direct_object, - complement=complement, - adverbials=adverbials, - ) - clauses.append(clause) - return clauses - -@Language.component('openie') -def do_extract_clauses(doc): - for sent in doc.sents: - clauses = extract_clauses(sent) - sent._.clauses = clauses - doc._.clauses += clauses - return doc - -def extract_span_from_entity(token): - ent_subtree = sorted([c for c in token.subtree if c.pos_ != 'PUNCT'], key=lambda x: x.i) - return Span(token.doc, start=ent_subtree[0].i, end=ent_subtree[-1].i + 1) - -def extract_span_from_entity_no_appos(token): - ent_subtree = sorted( - [token] + [c for c in token.children if c.dep_ not in APPOSITIVE_DEPREL], - key=lambda x: x.i, - ) - return Span(token.doc, start=ent_subtree[0].i, end=ent_subtree[-1].i + 1) - -def extract_ccs_from_token_at_root(span): - if span is None: - return [] - else: - return [span] - #return extract_ccs_from_token(span.root) - -def find_verb_subject(v): - """ - Returns the subject of the verb. If it does not exist and the root is a head, - find the subject of that verb instead. - """ - if v.dep_ in SUBJECT_DEPREL: - return v - # guard against infinite recursion on root token - elif v.dep_ in ["advcl", "acl", "acl:relcl"] and v.head.dep_ != "root": - return find_verb_subject(v.head) - - for c in v.children: - if c.dep_ in SUBJECT_DEPREL: - return c - elif c.dep_ in ["advcl", "acl", "acl:relcl"] and v.head.dep_ != "root": - return find_verb_subject(v.head) - -"""# Run!""" - -if __name__ == "__main__": - import spacy - - nlp = spacy_stanza.load_pipeline("pt") - nlp.add_pipe("openie") - - text = [ - "Pinoquio disse que o heroi Super-man nasceu na extinta Kripton.", - "Em 21 de maio de 2013, os proprietários da NFL em suas reuniões de primavera em Boston votaram e premiaram o jogo no Levi's Stadium.", - "EA morreu em Princeton em 1995.", - "O diretor do filme, Mohsen Makhmalbaf, decide realizar uma chamada aberta para escalar os atores de seu próximo filme através de um anúncio de jornal.", - "No imenso desacerto que foi a defesa do Penafiel, o capitão Vasco foi o homem que ainda segurou as pontas.", - "Daniela Barreiro Claro é professora da UFBA e ensina Banco de Dados.", - "Os alunos querem aprender Matemática.", - "A intervenção de Pequim é, possivelmente, a de maior alcance, desde a entrega de Hong Kong pelo Reino Unido em 1997.", - "O dono da fazenda viajou para Salvador ontem.", - "Eu compro, empresto e vendo ouro.", - "Eu gosto de banana, pera e maça." - ] - - with open('out.txt', 'w') as output: - - for s in text: - doc = nlp(s) - #explacy.print_parse_info(nlp, s) - output.write(s + '\n') - for prop in doc._.clauses: - output.write('\t' + str(prop.to_propositions(inflect=None)) + '\n') - - output.close() \ No newline at end of file