From b919ddd5136bbd555052ca93ba246444fa91a2eb Mon Sep 17 00:00:00 2001 From: alpcentaur Date: Wed, 4 Nov 2020 21:28:35 +0100 Subject: [PATCH] some unnecessary changes that did not work as expected regarding graphics and some new datapoints --- Prototyp/.Prototype-0.ipynb | 2373 +++++++++++++++++ Prototyp/.Prototype-1.ipynb | 2373 +++++++++++++++++ Prototyp/.Prototype-10.ipynb | 2313 ++++++++++++++++ Prototyp/.Prototype-11.ipynb | 2313 ++++++++++++++++ Prototyp/.Prototype-12.ipynb | 2313 ++++++++++++++++ Prototyp/.Prototype-13.ipynb | 2313 ++++++++++++++++ Prototyp/.Prototype-14.ipynb | 2313 ++++++++++++++++ Prototyp/.Prototype-2.ipynb | 2373 +++++++++++++++++ Prototyp/.Prototype-3.ipynb | 2373 +++++++++++++++++ Prototyp/.Prototype-4.ipynb | 2373 +++++++++++++++++ Prototyp/.Prototype-5.ipynb | 2313 ++++++++++++++++ Prototyp/.Prototype-6.ipynb | 2313 ++++++++++++++++ Prototyp/.Prototype-7.ipynb | 2313 ++++++++++++++++ Prototyp/.Prototype-8.ipynb | 2313 ++++++++++++++++ Prototyp/.Prototype-9.ipynb | 2313 ++++++++++++++++ .../.Prototype-0-checkpoint.ipynb | 2373 +++++++++++++++++ .../.Prototype-1-checkpoint.ipynb | 2373 +++++++++++++++++ .../.Prototype-10-checkpoint.ipynb | 2313 ++++++++++++++++ .../.Prototype-11-checkpoint.ipynb | 2313 ++++++++++++++++ .../.Prototype-12-checkpoint.ipynb | 2313 ++++++++++++++++ .../.Prototype-13-checkpoint.ipynb | 2313 ++++++++++++++++ .../.Prototype-14-checkpoint.ipynb | 2313 ++++++++++++++++ .../.Prototype-2-checkpoint.ipynb | 2373 +++++++++++++++++ .../.Prototype-3-checkpoint.ipynb | 2373 +++++++++++++++++ .../.Prototype-4-checkpoint.ipynb | 2373 +++++++++++++++++ .../.Prototype-5-checkpoint.ipynb | 2313 ++++++++++++++++ .../.Prototype-6-checkpoint.ipynb | 2313 ++++++++++++++++ .../.Prototype-7-checkpoint.ipynb | 2313 ++++++++++++++++ .../.Prototype-8-checkpoint.ipynb | 2313 ++++++++++++++++ .../.Prototype-9-checkpoint.ipynb | 2313 ++++++++++++++++ .../Prototype-checkpoint.ipynb | 1385 +++++++++- Prototyp/Prototype.ipynb | 1385 +++++++++- Prototyp/Use_Fremd_WB.ipynb | 90 + Prototyp/Verbesserungen/Input152.txt | 1 + Prototyp/Verbesserungen/Input153.txt | 1 + Prototyp/Verbesserungen/Input154.txt | 1 + Prototyp/Verbesserungen/Input155.txt | 7 + Prototyp/Verbesserungen/Input156.txt | 4 + Prototyp/Verbesserungen/Input157.txt | 7 + Prototyp/Verbesserungen/Input158.txt | 8 + Prototyp/Verbesserungen/Output152.txt | 6 + Prototyp/Verbesserungen/Output153.txt | 2 + Prototyp/Verbesserungen/Output154.txt | 2 + Prototyp/Verbesserungen/Output155.txt | 16 + Prototyp/Verbesserungen/Output156.txt | 7 + Prototyp/Verbesserungen/Output157.txt | 13 + Prototyp/Verbesserungen/Output158.txt | 27 + Prototyp/Verbesserungen/Verbesserungen152.txt | 6 + Prototyp/Verbesserungen/Verbesserungen153.txt | 2 + Prototyp/Verbesserungen/Verbesserungen154.txt | 2 + Prototyp/Verbesserungen/Verbesserungen155.txt | 17 + Prototyp/Verbesserungen/Verbesserungen156.txt | 9 + Prototyp/Verbesserungen/Verbesserungen157.txt | 14 + Prototyp/Verbesserungen/Verbesserungen158.txt | 27 + .../Verbesserungen/indexDerVerbesserungen.txt | 2 +- Prototyp/hkldbFremd_WB1.hkl | Bin 5828008 -> 5828008 bytes Prototyp/hkldbFremd_WB2.hkl | Bin 6043136 -> 2362761 bytes Prototyp/hkldbFremd_WB_All.hkl | Bin 14251768 -> 14247664 bytes Prototyp/html/example.html | 560 ++++ Prototyp/html/pathformer.js | 276 ++ Prototyp/html/vivus.js | 859 ++++++ Prototyp/svg.py | 5 + 62 files changed, 74468 insertions(+), 263 deletions(-) create mode 100644 Prototyp/.Prototype-0.ipynb create mode 100644 Prototyp/.Prototype-1.ipynb create mode 100644 Prototyp/.Prototype-10.ipynb create mode 100644 Prototyp/.Prototype-11.ipynb create mode 100644 Prototyp/.Prototype-12.ipynb create mode 100644 Prototyp/.Prototype-13.ipynb create mode 100644 Prototyp/.Prototype-14.ipynb create mode 100644 Prototyp/.Prototype-2.ipynb create mode 100644 Prototyp/.Prototype-3.ipynb create mode 100644 Prototyp/.Prototype-4.ipynb create mode 100644 Prototyp/.Prototype-5.ipynb create mode 100644 Prototyp/.Prototype-6.ipynb create mode 100644 Prototyp/.Prototype-7.ipynb create mode 100644 Prototyp/.Prototype-8.ipynb create mode 100644 Prototyp/.Prototype-9.ipynb create mode 100644 Prototyp/.ipynb_checkpoints/.Prototype-0-checkpoint.ipynb create mode 100644 Prototyp/.ipynb_checkpoints/.Prototype-1-checkpoint.ipynb create mode 100644 Prototyp/.ipynb_checkpoints/.Prototype-10-checkpoint.ipynb create mode 100644 Prototyp/.ipynb_checkpoints/.Prototype-11-checkpoint.ipynb create mode 100644 Prototyp/.ipynb_checkpoints/.Prototype-12-checkpoint.ipynb create mode 100644 Prototyp/.ipynb_checkpoints/.Prototype-13-checkpoint.ipynb create mode 100644 Prototyp/.ipynb_checkpoints/.Prototype-14-checkpoint.ipynb create mode 100644 Prototyp/.ipynb_checkpoints/.Prototype-2-checkpoint.ipynb create mode 100644 Prototyp/.ipynb_checkpoints/.Prototype-3-checkpoint.ipynb create mode 100644 Prototyp/.ipynb_checkpoints/.Prototype-4-checkpoint.ipynb create mode 100644 Prototyp/.ipynb_checkpoints/.Prototype-5-checkpoint.ipynb create mode 100644 Prototyp/.ipynb_checkpoints/.Prototype-6-checkpoint.ipynb create mode 100644 Prototyp/.ipynb_checkpoints/.Prototype-7-checkpoint.ipynb create mode 100644 Prototyp/.ipynb_checkpoints/.Prototype-8-checkpoint.ipynb create mode 100644 Prototyp/.ipynb_checkpoints/.Prototype-9-checkpoint.ipynb create mode 100644 Prototyp/Verbesserungen/Input152.txt create mode 100644 Prototyp/Verbesserungen/Input153.txt create mode 100644 Prototyp/Verbesserungen/Input154.txt create mode 100644 Prototyp/Verbesserungen/Input155.txt create mode 100644 Prototyp/Verbesserungen/Input156.txt create mode 100644 Prototyp/Verbesserungen/Input157.txt create mode 100644 Prototyp/Verbesserungen/Input158.txt create mode 100644 Prototyp/Verbesserungen/Output152.txt create mode 100644 Prototyp/Verbesserungen/Output153.txt create mode 100644 Prototyp/Verbesserungen/Output154.txt create mode 100644 Prototyp/Verbesserungen/Output155.txt create mode 100644 Prototyp/Verbesserungen/Output156.txt create mode 100644 Prototyp/Verbesserungen/Output157.txt create mode 100644 Prototyp/Verbesserungen/Output158.txt create mode 100644 Prototyp/Verbesserungen/Verbesserungen152.txt create mode 100644 Prototyp/Verbesserungen/Verbesserungen153.txt create mode 100644 Prototyp/Verbesserungen/Verbesserungen154.txt create mode 100644 Prototyp/Verbesserungen/Verbesserungen155.txt create mode 100644 Prototyp/Verbesserungen/Verbesserungen156.txt create mode 100644 Prototyp/Verbesserungen/Verbesserungen157.txt create mode 100644 Prototyp/Verbesserungen/Verbesserungen158.txt create mode 100644 Prototyp/html/example.html create mode 100644 Prototyp/html/pathformer.js create mode 100644 Prototyp/html/vivus.js create mode 100644 Prototyp/svg.py diff --git a/Prototyp/.Prototype-0.ipynb b/Prototyp/.Prototype-0.ipynb new file mode 100644 index 00000000..37cbca29 --- /dev/null +++ b/Prototyp/.Prototype-0.ipynb @@ -0,0 +1,2373 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "#from oi import *\n", + "\n", + "#oi = oi()\n", + "\n", + "#import ipyvuetify as v\n", + "\n", + "#state = False\n", + "#oi.toggle_code(state)\n", + "\n", + "#button = widgets.ToggleButton(state, description = button_descriptions[state])\n", + "\n", + "\n", + "#button.observe(oi.button_action, \"value\")\n", + "\n", + "#button.layout.height = '50px'\n", + "#button.layout.width = '100%'\n", + "#button.add_class(\"thobutton\")\n", + "\n", + "#display(button)\n", + "#button.button_style = 'danger'\n" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "\n", + "

Ein Klick auf das Logo - und es geht zum Code

\n", + "\n", + "\n", + " \n", + "\n", + " \n", + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%html\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "\n", + "

Ein Klick auf das Logo - und es geht zum Code

\n", + "\n", + "\n", + " \n", + "\n", + " \n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "#%%html\n", + "#\n", + "#\n", + "#\n", + "#\n", + "#\n", + "#

Ein Klick auf das Logo - und es geht zum Code

\n", + "#" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%html\n", + "\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "#%%html\n", + "#" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "#from ipywidgets import widgets\n", + "#button = widgets.Button(description='Click me')\n", + "#display(button)\n", + "\n", + "#def on_button_clicked(b):\n", + "# print('button clicked')\n", + "\n", + "#button.on_click(on_button_clicked)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "\n", + "# importing the libraries\n", + "#print('importing libraries')\n", + "#from SolveShorts import *\n", + "#import SentSeg\n", + "#from SayYes import *\n", + "#from Passiv2Aktiv import *\n", + "#from GenitivSolve import *\n", + "#from ConjunctSolve import *\n", + "#from FremdWB import *\n", + "#from Medio import *\n", + "#from oi import *\n", + "#print('done')\n", + "\n", + "\n", + "# Initializing the libraries\n", + "#print('initializing the libraries')\n", + "#print('1')\n", + "#solSh = SolveShorts('hkldbShorts.hkl', 'hkldbShorts_All.hkl')\n", + "#print('2')\n", + "#sent_seg = SentSeg.SentSeg('de')\n", + "#print('3')\n", + "#sy = SayYes(None, None)\n", + "#print('4')\n", + "#p2a = Passiv2Aktiv(None, None, None)\n", + "#print('5')\n", + "#gs = GenitivSolve()\n", + "#print('6')\n", + "#cs = ConjunctSolve(None,None)\n", + "#print('7')\n", + "#oi = oi()\n", + "#print('8')\n", + "#fwb = FremdWB(None,None)\n", + "#print('9')\n", + "#medi = Medio(None,None)\n", + "#print('done')\n", + "\n", + "\n", + "# loading the databases and models\n", + "#print('loading SolveShorts Databases')\n", + "#solSh.load_DB_into_FASTsearch()\n", + "#print('loading SentSeg Databases')\n", + "#sent_seg.LoadSentGlueSGDandGSUtils()\n", + "#print('loading SayYes Databases')\n", + "#sy.load_DB_into_FASTsearch()\n", + "#print('loading passiv2active Databases')\n", + "#p2a.load_DB_into_FASTsearch()\n", + "#print('loading conjunctivesolve Databases')\n", + "#cs.load_DB_into_FASTsearch()\n", + "#print('loading the fremdwb Databases')\n", + "#fwb.load_DB_into_FASTsearch()\n", + "#print('loading the mediodot Databases')\n", + "#medi.load_DB_into_FASTsearch()\n", + "\n", + "#print('done')\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "6a24b25b44a846aea1b396e744d222e4", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Textarea(value='', layout=Layout(height='180px', width='99%'), placeholder='Hier den Text eingeben, darunter k…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "\n", + "#print('done')\n", + "\n", + "#print('loading passiv2active Databases')\n", + "#from Passiv2Aktiv import *\n", + "#p2a = Passiv2Aktiv(None, None, None)\n", + "#p2a.load_DB_into_FASTsearch()\n", + "#print('done')\n", + "#print('loading genitiv solve')\n", + "#from GenitivSolve import *\n", + "#gs = GenitivSolve()\n", + "\n", + "#from FremdWB import *\n", + "#fwb = FremdWB(None,None)\n", + "#fwb.load_DB_into_FASTsearch()\n", + "\n", + "#from SolveShorts import *\n", + "#print('loading SolveShorts Databases')\n", + "#solSh.load_DB_into_FASTsearch()\n", + "\n", + "#from SayYes import *\n", + "#sy = SayYes(None, None)\n", + "#print('loading SayYes Databases')\n", + "#sy.load_DB_into_FASTsearch()\n", + "\n", + "#import SentSeg\n", + "#sent_seg = SentSeg.SentSeg('de')\n", + "#print('loading SentSeg Databases')\n", + "#sent_seg.LoadSentGlueSGDandGSUtils()\n", + "#print('loading conjunctsolve')\n", + "#from ConjunctSolve import *\n", + "#cs = ConjunctSolve(None,None)\n", + "#print('done')\n", + "#print('loading conjunctivesolve Databases')\n", + "#cs.load_DB_into_FASTsearch()\n", + "#print('done')\n", + "#from oi import *\n", + "#oi = oi()\n", + "\n", + "#print('loading session..')\n", + "\n", + "#print('done')\n", + "import dill\n", + "dill.load_session('voilastate.db')\n", + "\n", + "#from SolveShorts import *\n", + "#print('loading SolveShorts Databases')\n", + "#solSh.load_DB_into_FASTsearch()\n", + "\n", + "#import SentSeg\n", + "#sent_seg = SentSeg.SentSeg('de')\n", + "#print('loading SentSeg Databases')\n", + "#sent_seg.LoadSentGlueSGDandGSUtils()\n", + "\n", + "#from FremdWB import *\n", + "#fwb = FremdWB(None,None)\n", + "#fwb.load_DB_into_FASTsearch()\n", + "\n", + "#from Medio import *\n", + "#medi = Medio(None,None)\n", + "#medi.load_DB_into_FASTsearch()\n", + "\n", + "\n", + "#import dill\n", + "#print('dumping the session')\n", + "#dill.dump_session('voilastate.db')\n", + "#print('done')\n", + "\n", + "#from oi import *\n", + "#oi = oi()\n", + "\n", + "import ipywidgets as widgets\n", + "\n", + "TextFeld = widgets.Textarea(placeholder='Hier den Text eingeben, darunter können die Module aktiviert(grün) oder deaktiviert(pink) werden', disabled=False)\n", + "#print(TextFeld.layout.height)\n", + "TextFeld.layout.height = '180px'\n", + "TextFeld.layout.width = '99%'\n", + "\n", + "TextFelddouble = widgets.Textarea(placeholder='Hier den Text eingeben, darunter können die Module aktiviert(grün) oder deaktiviert(pink) werden', disabled=False)\n", + "#print(TextFeld.layout.height)\n", + "TextFelddouble.layout.height = '180px'\n", + "TextFelddouble.layout.width = '99%'\n", + "TextFelddouble.disabled=True\n", + "\n", + "display(TextFeld)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "\n", + "dawidth = '100%'\n", + "daheight = '100%'\n", + "KonjunktiveErsetzen = widgets.ToggleButton(\n", + " value=False,\n", + " description='Konjunktive ersetzen',\n", + " disabled=False,\n", + ")\n", + "KonjunktiveErsetzen.layout.width = dawidth\n", + "KonjunktiveErsetzen.layout.height = '80%'\n", + "\n", + "GenitiveErsetzen = widgets.ToggleButton(\n", + " value=True,\n", + " description='Genitiv ersetzen',\n", + " disabled=False\n", + ")\n", + "GenitiveErsetzen.layout.width = '60%'\n", + "GenitiveErsetzen.layout.height = daheight\n", + "\n", + "PassivErsetzen = widgets.ToggleButton(\n", + " value=True,\n", + " description='Passiv ersetzen',\n", + " disabled=False\n", + ")\n", + "PassivErsetzen.layout.width = '70%'\n", + "PassivErsetzen.layout.height = '90%'\n", + "\n", + "SayYes = widgets.ToggleButton(\n", + " value=True,\n", + " description='Verneinungen ersetzen',\n", + " disabled=False\n", + ")\n", + "SayYes.layout.width = '80%'\n", + "SayYes.layout.height = '80%'\n", + "SentSeg = widgets.ToggleButton(\n", + " value=True,\n", + " description='Eine Aussage pro Satz',\n", + " disabled=False\n", + ")\n", + "SentSeg.layout.width = '60%'\n", + "SentSeg.layout.height = daheight\n", + "SolveShorts = widgets.ToggleButton(\n", + " value=False,\n", + " description='Abkürzungen erklären',\n", + " disabled=False\n", + ")\n", + "SolveShorts.layout.width = '80%'\n", + "SolveShorts.layout.height = '90%'\n", + "FremdWB = widgets.ToggleButton(\n", + " value=True,\n", + " description='FremdWoerterbuch',\n", + " disabled=False\n", + ")\n", + "FremdWB.layout.width = '90%'\n", + "FremdWB.layout.height = '90%'\n", + "\n", + "Appendixes = widgets.ToggleButton(\n", + " value=True,\n", + " description='Charakterisierung pro Satz',\n", + " disabled=False\n", + ")\n", + "Appendixes.layout.width = '120%'\n", + "Appendixes.layout.height = '80%'\n", + "\n", + "Medio = widgets.ToggleButton(\n", + " value=True,\n", + " description='Mediopunkte',\n", + " disabled=False\n", + ")\n", + "Medio.layout.width = '50%'\n", + "Medio.layout.height = '90%'\n", + "\n", + "#items1 = [SentSeg, SolveShorts]\n", + "#items2 = [SayYes, PassivErsetzen]\n", + "#items3 = [GenitiveErsetzen, KonjunktiveErsetzen]\n", + "#items = [Textfeld, SentSeg, SolveShorts, SayYes, PassivErsetzen, GenitiveErsetzen, KonjunktiveErsetzen]\n", + "#display(SentSeg, SolveShorts, SayYes, PassivErsetzen, GenitiveErsetzen, KonjunktiveErsetzen)\n", + "#widgets.GridBox(items, layout=widgets.Layout(grid_template_columns=\"repeat(3, 100px)\"))\n", + "\n", + "\n", + "\n", + "#widgets.HBox(items1)\n", + "#widgets.HBox(items2)\n", + "#widgets.HBox(items3)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "import ipywidgets\n", + "out = 'Hier kommt der übersetzte Text heraus.'\n", + "\n", + "TextFeld.add_class(\"thotext\")\n", + "TextFelddouble.add_class(\"thotext\")\n", + "#display(OutTextFeld)\n", + "items = [SentSeg, SolveShorts, SayYes, PassivErsetzen, GenitiveErsetzen, KonjunktiveErsetzen, FremdWB, Appendixes, Medio] \n", + "#display(SentSeg, SolveShorts, SayYes, PassivErsetzen, GenitiveErsetzen, KonjunktiveErsetzen)\n", + "Grid = widgets.GridBox(items, layout=widgets.Layout(justify_items=\"center\", grid_template_columns=\"repeat(3, 30%)\", grid_gap=\"4.5%\", height=\"320px\"))\n" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "2bfcacdb87c640bb93cde56d3dd5aeaf", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "GridBox(children=(ToggleButton(value=True, description='Eine Aussage pro Satz', layout=Layout(height='100%', w…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "\n", + "display(HTML('
'))\n", + "display(Grid)\n", + "\n", + "\n", + "\n", + "\n", + "def function():\n", + " out = 'Wählen Sie ein Kästchen aus!'\n", + " try:\n", + " insentences, punctuations = oi.CellInputText2SplitsentencesWithspacy(TextFeld.value)\n", + " except:\n", + " OutTextFeld.placeholder = 'Bitte auf die Zeichensetzung achten! '\n", + " return\n", + " \n", + " check = 0\n", + " #print('insentences',insentences)\n", + " #print(punctuations)\n", + " if SayYes.value == True:\n", + " \n", + " print('ersetze Gegenteile..')\n", + " outsentences = sy.replaceOpposites(insentences)\n", + " check = 1\n", + " \n", + " \n", + " \n", + " \n", + " if Appendixes.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('generiere ist-Aussagen..')\n", + " outsentences, punctuations = sent_seg.putAppendixesIntoOwnSentences(insentences, punctuations)\n", + " \n", + " if SentSeg.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('forme zu einem Satz pro Aussage um..')\n", + " sentsegformattedsentences = []\n", + " for sentence in insentences:\n", + " \n", + " sentsegformattedsentences.append([sentence])\n", + " \n", + " #print(sentsegformattedsentences)\n", + " sentences = sent_seg.CommaSentenceOrNot(sentsegformattedsentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetUtteranceNumber(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetQuestionOrNot(sentences)\n", + " #print(sentences)\n", + " sentences, punctuations = sent_seg.AndOrSolver(sentences, punctuations)\n", + " #print(len(punctuations))\n", + " #print('sentences after AndOrSolver', sentences, punctuations)\n", + " sentences = sent_seg.CommaSentenceOrNot(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetUtteranceNumber(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetQuestionOrNot(sentences)\n", + " #print(sentences)\n", + " sentences, punctuations = sent_seg.SplitSentencesIntoHauptNebenTuple(sentences, punctuations)\n", + " #print(len(punctuations))\n", + " #print('sentences after split haupt neben', sentences)\n", + " sentences = sent_seg.CommaSentenceOrNot(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetUtteranceNumber(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetQuestionOrNot(sentences)\n", + " #print(sentences)\n", + " outsentences, punctuations = sent_seg.SplitCommatas(sentences, punctuations)\n", + " #print(len(punctuations))\n", + " #print('out',outsentences)\n", + " #print('out', punctuations)\n", + " check = 1\n", + " \n", + " \n", + " if SolveShorts.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('erklaere Abkuerzungen..')\n", + " outsentences = solSh.ExplainShortsInSentencesWithBrackets(insentences)\n", + " check = 1\n", + " #print(len(punctuations)) \n", + " #print('sentences after solveshorts', outsentences)\n", + " \n", + " if PassivErsetzen.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('ersetze Passiv Formen..')\n", + " outsentences = p2a.replacePassivForms(insentences)\n", + " check = 1\n", + " #print(len(punctuations))\n", + " #print('sentences after p2a', outsentences)\n", + " \n", + " if GenitiveErsetzen.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " #print('replacing genitiv forms with dativ..')\n", + " outsentences = gs.ReplaceGenitivWithDativ(insentences)\n", + " check = 1\n", + " #print(len(punctuations))\n", + " #print('sentences after gs', outsentences)\n", + " \n", + " if check == 1:\n", + " newinsentences = []\n", + " for sentence in outsentences: \n", + " newinsentences.append([word.replace('ö','oe').replace('ü','ue').replace('ä','ae').replace('ß','ss') for word in sentence])\n", + " \n", + " outsentences =newinsentences\n", + " if check != 1:\n", + " newinsentences = []\n", + " for sentence in insentences: \n", + " newinsentences.append([word.replace('ö','oe').replace('ü','ue').replace('ä','ae').replace('ß','ss') for word in sentence])\n", + " \n", + " insentences =newinsentences\n", + " #print()\n", + " if KonjunktiveErsetzen.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('ersetze Konjunktive..')\n", + " \n", + " outsentences = cs.replaceConjunctives(insentences)\n", + " #print('outsentences')\n", + " check = 1\n", + " \n", + " #print('sentences after cs', outsentences)\n", + " print(len(punctuations))\n", + " \n", + " if FremdWB.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('Suche Woerterbucheintraege..')\n", + " \n", + " outsentences, punctuations = fwb.fremdEintragAppend(insentences, punctuations)\n", + " #print('outsentences')\n", + " check = 1\n", + " \n", + " if Medio.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('Ersetze lange Woerter mit Mediopunkten..')\n", + " \n", + " outsentences, punctuations = medi.Medioreplace(insentences, punctuations)\n", + " #print('outsentences')\n", + " check = 1\n", + " #print('sentences after medios', outsentences)\n", + " \n", + " \n", + " #print('sentences after fwb', outsentences)\n", + " \n", + " print(len(punctuations))\n", + " \n", + " if check == 1:\n", + " out = ''\n", + " #print('just before looking if the lenght is the same')\n", + " #print(len(outsentences), len(punctuations))\n", + " if len(outsentences) == len(punctuations):\n", + " #print('the length is the same')\n", + " for n in range(len(outsentences)):\n", + " outsentence = outsentences[n]\n", + " outsentence[0] = outsentence[0].title()\n", + " out += ' '.join(outsentence) + punctuations[n] + '\\n'\n", + " \n", + " \n", + " OutTextFeld.value = out\n", + " TextFelddouble.value = TextFeld.value\n", + " display(TextFelddouble)\n", + " \n", + " return \n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "scrolled": false + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "2da49b6bc0c64b468368c639db95a1a6", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "interactive(children=(Button(description='Übersetzen in Leichte Sprache', style=ButtonStyle()), Output()), _do…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "#from IPython.display import Image\n", + "#i = Image(filename='Babelfish.png')\n", + "\n", + "#i.width = '60%'\n", + "#display(i)\n", + "\n", + "#print(widgets.interact_manual.opts)\n", + "\n", + "widgets.interact_manual.opts['manual_name']= 'Übersetzen in Leichte Sprache'\n", + "ola = widgets.interact_manual(function)\n", + "ola.widget.children[0].style.button_color = 'lightgreen'\n", + "ola.widget.children[0].layout.height = '60px'\n", + "ola.widget.children[0].layout.width = '99%'\n", + "\n", + "#widgets.GridBox([ola], layout=widgets.Layout(grid_template_columns=\"repeat(2, 300px)\"))" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "16d4e37ff391417f8844c35944a3f1af", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Textarea(value='', layout=Layout(height='180px', width='99%'), placeholder='Hier kommt der übersetzte Text her…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "OutTextFeld = ipywidgets.Textarea(placeholder=out, disabled=False)\n", + "OutTextFeld.layout.height = '180px'\n", + "OutTextFeld.layout.width = '99%'\n", + "OutTextFeld.add_class(\"thetext\")\n", + "display(OutTextFeld)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [], + "source": [ + "beschreibung = 'Textfeld für die verbesserte Übersetzung. Satzzeichen bitte nicht vergessen! \\nFalls ein neuer Eintrag ins Fremdwörterbuch vorgenommen werden soll, schreibe einfach unter die Verbesserungen einen Eintrag der Form: [\\'Abfall\\', \\'Abfall sind Sachen die wir nicht mehr brauchen\\'] \\nFalls ein neuer Eintrag in die Mediopunkte-Datenbank vorgenommen werden soll, bitte schreibe unter die Verbesserungen einen Eintrag der Form: [\\'Mediopunkt\\', \\'Medio·punkt\\']' \n", + "VerbeTextFeld = ipywidgets.Textarea(placeholder=beschreibung, disabled=False)\n", + "VerbeTextFeld.layout.height = '180px'\n", + "VerbeTextFeld.layout.width = '99%'\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "\n", + "def Absendefunction():\n", + " \n", + " \n", + "\n", + " \n", + " #print(VerbeTextFeld.value)\n", + " #print(TextFeld.value)\n", + " #print(OutTextFeld.value)\n", + " \n", + " try:\n", + "\n", + " insentences, punctuations = oi.CellInputText2SplitsentencesWithspacy(VerbeTextFeld.value)\n", + " insentences1, punctuations1 = oi.CellInputText2SplitsentencesWithspacy(TextFeld.value)\n", + " insentences2, punctuations2 = oi.CellInputText2SplitsentencesWithspacy(OutTextFeld.value)\n", + "\n", + " #print(insentences2)\n", + "\n", + " #print(insentences, punctuations)\n", + " indexDerVerbesserungen = 0\n", + " number = 0\n", + " with open('Verbesserungen/indexDerVerbesserungen.txt', 'r') as dok:\n", + " for number in dok:\n", + " number = int(number)\n", + " if number >= 0:\n", + " indexDerVerbesserungen = number\n", + " number += 1\n", + "\n", + " with open('Verbesserungen/indexDerVerbesserungen.txt', 'w') as dokk:\n", + " dokk.write(str(number))\n", + "\n", + "\n", + " with open('Verbesserungen/Verbesserungen' + str(number) + '.txt','w+') as doc:\n", + " for n in range(len(insentences)):\n", + " npunct = punctuations[n]\n", + " writeline = insentences[n]+ [npunct]\n", + "\n", + " writestring = ' '.join(writeline)\n", + "\n", + " doc.write(writestring + '\\n')\n", + "\n", + " with open('Verbesserungen/Input' + str(number) + '.txt','w+') as docc:\n", + " for n in range(len(insentences1)):\n", + " npunct = punctuations1[n]\n", + " writeline = insentences1[n]+ [npunct]\n", + "\n", + " writestring = ' '.join(writeline)\n", + "\n", + " docc.write(writestring + '\\n')\n", + " with open('Verbesserungen/Output' + str(number) + '.txt','w+') as dock:\n", + " #print(insentences2)\n", + " for n in range(len(insentences2)):\n", + " #print(len(insentences2))\n", + "\n", + " #print(punctuations2)\n", + " npunct = punctuations2[n]\n", + " writeline = insentences2[n]+ [npunct]\n", + "\n", + " writestring = ' '.join(writeline)\n", + "\n", + " dock.write(writestring + '\\n')\n", + "\n", + " VerbeTextFeld.value = ''\n", + " OutTextFeld.value = ''\n", + " VerbeTextFeld.placeholder = beschreibung\n", + " OutTextFeld.placeholder = 'Hier kommt der übersetzte Text raus.'\n", + " except:\n", + " VerbeTextFeld.placeholder = 'Es gab einen Fehler. Eventuell ist die Zeichensetzung nicht ok. \\n \\n' + beschreibung\n", + " \n", + " \n", + " return \n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "dd913832ab444630a3842fcf7fd8609b", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Textarea(value='', layout=Layout(height='180px', width='99%'), placeholder=\"Textfeld für die verbesserte Übers…" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "79ed4f2f30324ca582faa59671224d92", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "interactive(children=(Button(description='Absenden', style=ButtonStyle()), Output()), _dom_classes=('widget-in…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "VerbeTextFeld.add_class(\"thetext3\")\n", + "display(VerbeTextFeld)\n", + "display(HTML('
'))\n", + "widgets.interact_manual.opts['manual_name']= 'Absenden'\n", + "AbsendenUndSchreiben = widgets.interact_manual(Absendefunction)\n", + "AbsendenUndSchreiben.widget.children[0].style.button_color = 'lightblue'\n", + "AbsendenUndSchreiben.widget.children[0].layout.height = '60px'\n", + "AbsendenUndSchreiben.widget.children[0].layout.width = '99%'\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%html\n", + "" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%html\n", + "" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "data": { + "text/html": [ + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%html\n", + "" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "celltoolbar": "Raw Cell Format", + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.5.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/Prototyp/.Prototype-1.ipynb b/Prototyp/.Prototype-1.ipynb new file mode 100644 index 00000000..37cbca29 --- /dev/null +++ b/Prototyp/.Prototype-1.ipynb @@ -0,0 +1,2373 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "#from oi import *\n", + "\n", + "#oi = oi()\n", + "\n", + "#import ipyvuetify as v\n", + "\n", + "#state = False\n", + "#oi.toggle_code(state)\n", + "\n", + "#button = widgets.ToggleButton(state, description = button_descriptions[state])\n", + "\n", + "\n", + "#button.observe(oi.button_action, \"value\")\n", + "\n", + "#button.layout.height = '50px'\n", + "#button.layout.width = '100%'\n", + "#button.add_class(\"thobutton\")\n", + "\n", + "#display(button)\n", + "#button.button_style = 'danger'\n" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "\n", + "

Ein Klick auf das Logo - und es geht zum Code

\n", + "\n", + "\n", + " \n", + "\n", + " \n", + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%html\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "\n", + "

Ein Klick auf das Logo - und es geht zum Code

\n", + "\n", + "\n", + " \n", + "\n", + " \n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "#%%html\n", + "#\n", + "#\n", + "#\n", + "#\n", + "#\n", + "#

Ein Klick auf das Logo - und es geht zum Code

\n", + "#" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%html\n", + "\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "#%%html\n", + "#" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "#from ipywidgets import widgets\n", + "#button = widgets.Button(description='Click me')\n", + "#display(button)\n", + "\n", + "#def on_button_clicked(b):\n", + "# print('button clicked')\n", + "\n", + "#button.on_click(on_button_clicked)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "\n", + "# importing the libraries\n", + "#print('importing libraries')\n", + "#from SolveShorts import *\n", + "#import SentSeg\n", + "#from SayYes import *\n", + "#from Passiv2Aktiv import *\n", + "#from GenitivSolve import *\n", + "#from ConjunctSolve import *\n", + "#from FremdWB import *\n", + "#from Medio import *\n", + "#from oi import *\n", + "#print('done')\n", + "\n", + "\n", + "# Initializing the libraries\n", + "#print('initializing the libraries')\n", + "#print('1')\n", + "#solSh = SolveShorts('hkldbShorts.hkl', 'hkldbShorts_All.hkl')\n", + "#print('2')\n", + "#sent_seg = SentSeg.SentSeg('de')\n", + "#print('3')\n", + "#sy = SayYes(None, None)\n", + "#print('4')\n", + "#p2a = Passiv2Aktiv(None, None, None)\n", + "#print('5')\n", + "#gs = GenitivSolve()\n", + "#print('6')\n", + "#cs = ConjunctSolve(None,None)\n", + "#print('7')\n", + "#oi = oi()\n", + "#print('8')\n", + "#fwb = FremdWB(None,None)\n", + "#print('9')\n", + "#medi = Medio(None,None)\n", + "#print('done')\n", + "\n", + "\n", + "# loading the databases and models\n", + "#print('loading SolveShorts Databases')\n", + "#solSh.load_DB_into_FASTsearch()\n", + "#print('loading SentSeg Databases')\n", + "#sent_seg.LoadSentGlueSGDandGSUtils()\n", + "#print('loading SayYes Databases')\n", + "#sy.load_DB_into_FASTsearch()\n", + "#print('loading passiv2active Databases')\n", + "#p2a.load_DB_into_FASTsearch()\n", + "#print('loading conjunctivesolve Databases')\n", + "#cs.load_DB_into_FASTsearch()\n", + "#print('loading the fremdwb Databases')\n", + "#fwb.load_DB_into_FASTsearch()\n", + "#print('loading the mediodot Databases')\n", + "#medi.load_DB_into_FASTsearch()\n", + "\n", + "#print('done')\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "6a24b25b44a846aea1b396e744d222e4", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Textarea(value='', layout=Layout(height='180px', width='99%'), placeholder='Hier den Text eingeben, darunter k…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "\n", + "#print('done')\n", + "\n", + "#print('loading passiv2active Databases')\n", + "#from Passiv2Aktiv import *\n", + "#p2a = Passiv2Aktiv(None, None, None)\n", + "#p2a.load_DB_into_FASTsearch()\n", + "#print('done')\n", + "#print('loading genitiv solve')\n", + "#from GenitivSolve import *\n", + "#gs = GenitivSolve()\n", + "\n", + "#from FremdWB import *\n", + "#fwb = FremdWB(None,None)\n", + "#fwb.load_DB_into_FASTsearch()\n", + "\n", + "#from SolveShorts import *\n", + "#print('loading SolveShorts Databases')\n", + "#solSh.load_DB_into_FASTsearch()\n", + "\n", + "#from SayYes import *\n", + "#sy = SayYes(None, None)\n", + "#print('loading SayYes Databases')\n", + "#sy.load_DB_into_FASTsearch()\n", + "\n", + "#import SentSeg\n", + "#sent_seg = SentSeg.SentSeg('de')\n", + "#print('loading SentSeg Databases')\n", + "#sent_seg.LoadSentGlueSGDandGSUtils()\n", + "#print('loading conjunctsolve')\n", + "#from ConjunctSolve import *\n", + "#cs = ConjunctSolve(None,None)\n", + "#print('done')\n", + "#print('loading conjunctivesolve Databases')\n", + "#cs.load_DB_into_FASTsearch()\n", + "#print('done')\n", + "#from oi import *\n", + "#oi = oi()\n", + "\n", + "#print('loading session..')\n", + "\n", + "#print('done')\n", + "import dill\n", + "dill.load_session('voilastate.db')\n", + "\n", + "#from SolveShorts import *\n", + "#print('loading SolveShorts Databases')\n", + "#solSh.load_DB_into_FASTsearch()\n", + "\n", + "#import SentSeg\n", + "#sent_seg = SentSeg.SentSeg('de')\n", + "#print('loading SentSeg Databases')\n", + "#sent_seg.LoadSentGlueSGDandGSUtils()\n", + "\n", + "#from FremdWB import *\n", + "#fwb = FremdWB(None,None)\n", + "#fwb.load_DB_into_FASTsearch()\n", + "\n", + "#from Medio import *\n", + "#medi = Medio(None,None)\n", + "#medi.load_DB_into_FASTsearch()\n", + "\n", + "\n", + "#import dill\n", + "#print('dumping the session')\n", + "#dill.dump_session('voilastate.db')\n", + "#print('done')\n", + "\n", + "#from oi import *\n", + "#oi = oi()\n", + "\n", + "import ipywidgets as widgets\n", + "\n", + "TextFeld = widgets.Textarea(placeholder='Hier den Text eingeben, darunter können die Module aktiviert(grün) oder deaktiviert(pink) werden', disabled=False)\n", + "#print(TextFeld.layout.height)\n", + "TextFeld.layout.height = '180px'\n", + "TextFeld.layout.width = '99%'\n", + "\n", + "TextFelddouble = widgets.Textarea(placeholder='Hier den Text eingeben, darunter können die Module aktiviert(grün) oder deaktiviert(pink) werden', disabled=False)\n", + "#print(TextFeld.layout.height)\n", + "TextFelddouble.layout.height = '180px'\n", + "TextFelddouble.layout.width = '99%'\n", + "TextFelddouble.disabled=True\n", + "\n", + "display(TextFeld)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "\n", + "dawidth = '100%'\n", + "daheight = '100%'\n", + "KonjunktiveErsetzen = widgets.ToggleButton(\n", + " value=False,\n", + " description='Konjunktive ersetzen',\n", + " disabled=False,\n", + ")\n", + "KonjunktiveErsetzen.layout.width = dawidth\n", + "KonjunktiveErsetzen.layout.height = '80%'\n", + "\n", + "GenitiveErsetzen = widgets.ToggleButton(\n", + " value=True,\n", + " description='Genitiv ersetzen',\n", + " disabled=False\n", + ")\n", + "GenitiveErsetzen.layout.width = '60%'\n", + "GenitiveErsetzen.layout.height = daheight\n", + "\n", + "PassivErsetzen = widgets.ToggleButton(\n", + " value=True,\n", + " description='Passiv ersetzen',\n", + " disabled=False\n", + ")\n", + "PassivErsetzen.layout.width = '70%'\n", + "PassivErsetzen.layout.height = '90%'\n", + "\n", + "SayYes = widgets.ToggleButton(\n", + " value=True,\n", + " description='Verneinungen ersetzen',\n", + " disabled=False\n", + ")\n", + "SayYes.layout.width = '80%'\n", + "SayYes.layout.height = '80%'\n", + "SentSeg = widgets.ToggleButton(\n", + " value=True,\n", + " description='Eine Aussage pro Satz',\n", + " disabled=False\n", + ")\n", + "SentSeg.layout.width = '60%'\n", + "SentSeg.layout.height = daheight\n", + "SolveShorts = widgets.ToggleButton(\n", + " value=False,\n", + " description='Abkürzungen erklären',\n", + " disabled=False\n", + ")\n", + "SolveShorts.layout.width = '80%'\n", + "SolveShorts.layout.height = '90%'\n", + "FremdWB = widgets.ToggleButton(\n", + " value=True,\n", + " description='FremdWoerterbuch',\n", + " disabled=False\n", + ")\n", + "FremdWB.layout.width = '90%'\n", + "FremdWB.layout.height = '90%'\n", + "\n", + "Appendixes = widgets.ToggleButton(\n", + " value=True,\n", + " description='Charakterisierung pro Satz',\n", + " disabled=False\n", + ")\n", + "Appendixes.layout.width = '120%'\n", + "Appendixes.layout.height = '80%'\n", + "\n", + "Medio = widgets.ToggleButton(\n", + " value=True,\n", + " description='Mediopunkte',\n", + " disabled=False\n", + ")\n", + "Medio.layout.width = '50%'\n", + "Medio.layout.height = '90%'\n", + "\n", + "#items1 = [SentSeg, SolveShorts]\n", + "#items2 = [SayYes, PassivErsetzen]\n", + "#items3 = [GenitiveErsetzen, KonjunktiveErsetzen]\n", + "#items = [Textfeld, SentSeg, SolveShorts, SayYes, PassivErsetzen, GenitiveErsetzen, KonjunktiveErsetzen]\n", + "#display(SentSeg, SolveShorts, SayYes, PassivErsetzen, GenitiveErsetzen, KonjunktiveErsetzen)\n", + "#widgets.GridBox(items, layout=widgets.Layout(grid_template_columns=\"repeat(3, 100px)\"))\n", + "\n", + "\n", + "\n", + "#widgets.HBox(items1)\n", + "#widgets.HBox(items2)\n", + "#widgets.HBox(items3)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "import ipywidgets\n", + "out = 'Hier kommt der übersetzte Text heraus.'\n", + "\n", + "TextFeld.add_class(\"thotext\")\n", + "TextFelddouble.add_class(\"thotext\")\n", + "#display(OutTextFeld)\n", + "items = [SentSeg, SolveShorts, SayYes, PassivErsetzen, GenitiveErsetzen, KonjunktiveErsetzen, FremdWB, Appendixes, Medio] \n", + "#display(SentSeg, SolveShorts, SayYes, PassivErsetzen, GenitiveErsetzen, KonjunktiveErsetzen)\n", + "Grid = widgets.GridBox(items, layout=widgets.Layout(justify_items=\"center\", grid_template_columns=\"repeat(3, 30%)\", grid_gap=\"4.5%\", height=\"320px\"))\n" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "2bfcacdb87c640bb93cde56d3dd5aeaf", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "GridBox(children=(ToggleButton(value=True, description='Eine Aussage pro Satz', layout=Layout(height='100%', w…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "\n", + "display(HTML('
'))\n", + "display(Grid)\n", + "\n", + "\n", + "\n", + "\n", + "def function():\n", + " out = 'Wählen Sie ein Kästchen aus!'\n", + " try:\n", + " insentences, punctuations = oi.CellInputText2SplitsentencesWithspacy(TextFeld.value)\n", + " except:\n", + " OutTextFeld.placeholder = 'Bitte auf die Zeichensetzung achten! '\n", + " return\n", + " \n", + " check = 0\n", + " #print('insentences',insentences)\n", + " #print(punctuations)\n", + " if SayYes.value == True:\n", + " \n", + " print('ersetze Gegenteile..')\n", + " outsentences = sy.replaceOpposites(insentences)\n", + " check = 1\n", + " \n", + " \n", + " \n", + " \n", + " if Appendixes.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('generiere ist-Aussagen..')\n", + " outsentences, punctuations = sent_seg.putAppendixesIntoOwnSentences(insentences, punctuations)\n", + " \n", + " if SentSeg.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('forme zu einem Satz pro Aussage um..')\n", + " sentsegformattedsentences = []\n", + " for sentence in insentences:\n", + " \n", + " sentsegformattedsentences.append([sentence])\n", + " \n", + " #print(sentsegformattedsentences)\n", + " sentences = sent_seg.CommaSentenceOrNot(sentsegformattedsentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetUtteranceNumber(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetQuestionOrNot(sentences)\n", + " #print(sentences)\n", + " sentences, punctuations = sent_seg.AndOrSolver(sentences, punctuations)\n", + " #print(len(punctuations))\n", + " #print('sentences after AndOrSolver', sentences, punctuations)\n", + " sentences = sent_seg.CommaSentenceOrNot(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetUtteranceNumber(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetQuestionOrNot(sentences)\n", + " #print(sentences)\n", + " sentences, punctuations = sent_seg.SplitSentencesIntoHauptNebenTuple(sentences, punctuations)\n", + " #print(len(punctuations))\n", + " #print('sentences after split haupt neben', sentences)\n", + " sentences = sent_seg.CommaSentenceOrNot(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetUtteranceNumber(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetQuestionOrNot(sentences)\n", + " #print(sentences)\n", + " outsentences, punctuations = sent_seg.SplitCommatas(sentences, punctuations)\n", + " #print(len(punctuations))\n", + " #print('out',outsentences)\n", + " #print('out', punctuations)\n", + " check = 1\n", + " \n", + " \n", + " if SolveShorts.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('erklaere Abkuerzungen..')\n", + " outsentences = solSh.ExplainShortsInSentencesWithBrackets(insentences)\n", + " check = 1\n", + " #print(len(punctuations)) \n", + " #print('sentences after solveshorts', outsentences)\n", + " \n", + " if PassivErsetzen.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('ersetze Passiv Formen..')\n", + " outsentences = p2a.replacePassivForms(insentences)\n", + " check = 1\n", + " #print(len(punctuations))\n", + " #print('sentences after p2a', outsentences)\n", + " \n", + " if GenitiveErsetzen.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " #print('replacing genitiv forms with dativ..')\n", + " outsentences = gs.ReplaceGenitivWithDativ(insentences)\n", + " check = 1\n", + " #print(len(punctuations))\n", + " #print('sentences after gs', outsentences)\n", + " \n", + " if check == 1:\n", + " newinsentences = []\n", + " for sentence in outsentences: \n", + " newinsentences.append([word.replace('ö','oe').replace('ü','ue').replace('ä','ae').replace('ß','ss') for word in sentence])\n", + " \n", + " outsentences =newinsentences\n", + " if check != 1:\n", + " newinsentences = []\n", + " for sentence in insentences: \n", + " newinsentences.append([word.replace('ö','oe').replace('ü','ue').replace('ä','ae').replace('ß','ss') for word in sentence])\n", + " \n", + " insentences =newinsentences\n", + " #print()\n", + " if KonjunktiveErsetzen.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('ersetze Konjunktive..')\n", + " \n", + " outsentences = cs.replaceConjunctives(insentences)\n", + " #print('outsentences')\n", + " check = 1\n", + " \n", + " #print('sentences after cs', outsentences)\n", + " print(len(punctuations))\n", + " \n", + " if FremdWB.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('Suche Woerterbucheintraege..')\n", + " \n", + " outsentences, punctuations = fwb.fremdEintragAppend(insentences, punctuations)\n", + " #print('outsentences')\n", + " check = 1\n", + " \n", + " if Medio.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('Ersetze lange Woerter mit Mediopunkten..')\n", + " \n", + " outsentences, punctuations = medi.Medioreplace(insentences, punctuations)\n", + " #print('outsentences')\n", + " check = 1\n", + " #print('sentences after medios', outsentences)\n", + " \n", + " \n", + " #print('sentences after fwb', outsentences)\n", + " \n", + " print(len(punctuations))\n", + " \n", + " if check == 1:\n", + " out = ''\n", + " #print('just before looking if the lenght is the same')\n", + " #print(len(outsentences), len(punctuations))\n", + " if len(outsentences) == len(punctuations):\n", + " #print('the length is the same')\n", + " for n in range(len(outsentences)):\n", + " outsentence = outsentences[n]\n", + " outsentence[0] = outsentence[0].title()\n", + " out += ' '.join(outsentence) + punctuations[n] + '\\n'\n", + " \n", + " \n", + " OutTextFeld.value = out\n", + " TextFelddouble.value = TextFeld.value\n", + " display(TextFelddouble)\n", + " \n", + " return \n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "scrolled": false + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "2da49b6bc0c64b468368c639db95a1a6", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "interactive(children=(Button(description='Übersetzen in Leichte Sprache', style=ButtonStyle()), Output()), _do…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "#from IPython.display import Image\n", + "#i = Image(filename='Babelfish.png')\n", + "\n", + "#i.width = '60%'\n", + "#display(i)\n", + "\n", + "#print(widgets.interact_manual.opts)\n", + "\n", + "widgets.interact_manual.opts['manual_name']= 'Übersetzen in Leichte Sprache'\n", + "ola = widgets.interact_manual(function)\n", + "ola.widget.children[0].style.button_color = 'lightgreen'\n", + "ola.widget.children[0].layout.height = '60px'\n", + "ola.widget.children[0].layout.width = '99%'\n", + "\n", + "#widgets.GridBox([ola], layout=widgets.Layout(grid_template_columns=\"repeat(2, 300px)\"))" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "16d4e37ff391417f8844c35944a3f1af", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Textarea(value='', layout=Layout(height='180px', width='99%'), placeholder='Hier kommt der übersetzte Text her…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "OutTextFeld = ipywidgets.Textarea(placeholder=out, disabled=False)\n", + "OutTextFeld.layout.height = '180px'\n", + "OutTextFeld.layout.width = '99%'\n", + "OutTextFeld.add_class(\"thetext\")\n", + "display(OutTextFeld)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [], + "source": [ + "beschreibung = 'Textfeld für die verbesserte Übersetzung. Satzzeichen bitte nicht vergessen! \\nFalls ein neuer Eintrag ins Fremdwörterbuch vorgenommen werden soll, schreibe einfach unter die Verbesserungen einen Eintrag der Form: [\\'Abfall\\', \\'Abfall sind Sachen die wir nicht mehr brauchen\\'] \\nFalls ein neuer Eintrag in die Mediopunkte-Datenbank vorgenommen werden soll, bitte schreibe unter die Verbesserungen einen Eintrag der Form: [\\'Mediopunkt\\', \\'Medio·punkt\\']' \n", + "VerbeTextFeld = ipywidgets.Textarea(placeholder=beschreibung, disabled=False)\n", + "VerbeTextFeld.layout.height = '180px'\n", + "VerbeTextFeld.layout.width = '99%'\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "\n", + "def Absendefunction():\n", + " \n", + " \n", + "\n", + " \n", + " #print(VerbeTextFeld.value)\n", + " #print(TextFeld.value)\n", + " #print(OutTextFeld.value)\n", + " \n", + " try:\n", + "\n", + " insentences, punctuations = oi.CellInputText2SplitsentencesWithspacy(VerbeTextFeld.value)\n", + " insentences1, punctuations1 = oi.CellInputText2SplitsentencesWithspacy(TextFeld.value)\n", + " insentences2, punctuations2 = oi.CellInputText2SplitsentencesWithspacy(OutTextFeld.value)\n", + "\n", + " #print(insentences2)\n", + "\n", + " #print(insentences, punctuations)\n", + " indexDerVerbesserungen = 0\n", + " number = 0\n", + " with open('Verbesserungen/indexDerVerbesserungen.txt', 'r') as dok:\n", + " for number in dok:\n", + " number = int(number)\n", + " if number >= 0:\n", + " indexDerVerbesserungen = number\n", + " number += 1\n", + "\n", + " with open('Verbesserungen/indexDerVerbesserungen.txt', 'w') as dokk:\n", + " dokk.write(str(number))\n", + "\n", + "\n", + " with open('Verbesserungen/Verbesserungen' + str(number) + '.txt','w+') as doc:\n", + " for n in range(len(insentences)):\n", + " npunct = punctuations[n]\n", + " writeline = insentences[n]+ [npunct]\n", + "\n", + " writestring = ' '.join(writeline)\n", + "\n", + " doc.write(writestring + '\\n')\n", + "\n", + " with open('Verbesserungen/Input' + str(number) + '.txt','w+') as docc:\n", + " for n in range(len(insentences1)):\n", + " npunct = punctuations1[n]\n", + " writeline = insentences1[n]+ [npunct]\n", + "\n", + " writestring = ' '.join(writeline)\n", + "\n", + " docc.write(writestring + '\\n')\n", + " with open('Verbesserungen/Output' + str(number) + '.txt','w+') as dock:\n", + " #print(insentences2)\n", + " for n in range(len(insentences2)):\n", + " #print(len(insentences2))\n", + "\n", + " #print(punctuations2)\n", + " npunct = punctuations2[n]\n", + " writeline = insentences2[n]+ [npunct]\n", + "\n", + " writestring = ' '.join(writeline)\n", + "\n", + " dock.write(writestring + '\\n')\n", + "\n", + " VerbeTextFeld.value = ''\n", + " OutTextFeld.value = ''\n", + " VerbeTextFeld.placeholder = beschreibung\n", + " OutTextFeld.placeholder = 'Hier kommt der übersetzte Text raus.'\n", + " except:\n", + " VerbeTextFeld.placeholder = 'Es gab einen Fehler. Eventuell ist die Zeichensetzung nicht ok. \\n \\n' + beschreibung\n", + " \n", + " \n", + " return \n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "dd913832ab444630a3842fcf7fd8609b", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Textarea(value='', layout=Layout(height='180px', width='99%'), placeholder=\"Textfeld für die verbesserte Übers…" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "79ed4f2f30324ca582faa59671224d92", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "interactive(children=(Button(description='Absenden', style=ButtonStyle()), Output()), _dom_classes=('widget-in…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "VerbeTextFeld.add_class(\"thetext3\")\n", + "display(VerbeTextFeld)\n", + "display(HTML('
'))\n", + "widgets.interact_manual.opts['manual_name']= 'Absenden'\n", + "AbsendenUndSchreiben = widgets.interact_manual(Absendefunction)\n", + "AbsendenUndSchreiben.widget.children[0].style.button_color = 'lightblue'\n", + "AbsendenUndSchreiben.widget.children[0].layout.height = '60px'\n", + "AbsendenUndSchreiben.widget.children[0].layout.width = '99%'\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%html\n", + "" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%html\n", + "" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "data": { + "text/html": [ + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%html\n", + "" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "celltoolbar": "Raw Cell Format", + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.5.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/Prototyp/.Prototype-10.ipynb b/Prototyp/.Prototype-10.ipynb new file mode 100644 index 00000000..50a76c09 --- /dev/null +++ b/Prototyp/.Prototype-10.ipynb @@ -0,0 +1,2313 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "#from oi import *\n", + "\n", + "#oi = oi()\n", + "\n", + "#import ipyvuetify as v\n", + "\n", + "#state = False\n", + "#oi.toggle_code(state)\n", + "\n", + "#button = widgets.ToggleButton(state, description = button_descriptions[state])\n", + "\n", + "\n", + "#button.observe(oi.button_action, \"value\")\n", + "\n", + "#button.layout.height = '50px'\n", + "#button.layout.width = '100%'\n", + "#button.add_class(\"thobutton\")\n", + "\n", + "#display(button)\n", + "#button.button_style = 'danger'\n" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "\n", + "

Ein Klick auf das Logo - und es geht zum Code

\n", + "\n", + "\n", + " \n", + "\n", + " \n", + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%html\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "\n", + "

Ein Klick auf das Logo - und es geht zum Code

\n", + "\n", + "\n", + " \n", + "\n", + " \n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "#%%html\n", + "#\n", + "#\n", + "#\n", + "#\n", + "#\n", + "#

Ein Klick auf das Logo - und es geht zum Code

\n", + "#" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [], + "source": [ + "#%%html\n", + "#" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "#from ipywidgets import widgets\n", + "#button = widgets.Button(description='Click me')\n", + "#display(button)\n", + "\n", + "#def on_button_clicked(b):\n", + "# print('button clicked')\n", + "\n", + "#button.on_click(on_button_clicked)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "\n", + "# importing the libraries\n", + "#print('importing libraries')\n", + "#from SolveShorts import *\n", + "#import SentSeg\n", + "#from SayYes import *\n", + "#from Passiv2Aktiv import *\n", + "#from GenitivSolve import *\n", + "#from ConjunctSolve import *\n", + "#from FremdWB import *\n", + "#from Medio import *\n", + "#from oi import *\n", + "#print('done')\n", + "\n", + "\n", + "# Initializing the libraries\n", + "#print('initializing the libraries')\n", + "#print('1')\n", + "#solSh = SolveShorts('hkldbShorts.hkl', 'hkldbShorts_All.hkl')\n", + "#print('2')\n", + "#sent_seg = SentSeg.SentSeg('de')\n", + "#print('3')\n", + "#sy = SayYes(None, None)\n", + "#print('4')\n", + "#p2a = Passiv2Aktiv(None, None, None)\n", + "#print('5')\n", + "#gs = GenitivSolve()\n", + "#print('6')\n", + "#cs = ConjunctSolve(None,None)\n", + "#print('7')\n", + "#oi = oi()\n", + "#print('8')\n", + "#fwb = FremdWB(None,None)\n", + "#print('9')\n", + "#medi = Medio(None,None)\n", + "#print('done')\n", + "\n", + "\n", + "# loading the databases and models\n", + "#print('loading SolveShorts Databases')\n", + "#solSh.load_DB_into_FASTsearch()\n", + "#print('loading SentSeg Databases')\n", + "#sent_seg.LoadSentGlueSGDandGSUtils()\n", + "#print('loading SayYes Databases')\n", + "#sy.load_DB_into_FASTsearch()\n", + "#print('loading passiv2active Databases')\n", + "#p2a.load_DB_into_FASTsearch()\n", + "#print('loading conjunctivesolve Databases')\n", + "#cs.load_DB_into_FASTsearch()\n", + "#print('loading the fremdwb Databases')\n", + "#fwb.load_DB_into_FASTsearch()\n", + "#print('loading the mediodot Databases')\n", + "#medi.load_DB_into_FASTsearch()\n", + "\n", + "#print('done')\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "106e70dd208f4de29ae10874823d30a8", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Textarea(value='', layout=Layout(height='180px', width='99%'), placeholder='Hier den Text eingeben, darunter k…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "\n", + "#print('done')\n", + "\n", + "#print('loading passiv2active Databases')\n", + "#from Passiv2Aktiv import *\n", + "#p2a = Passiv2Aktiv(None, None, None)\n", + "#p2a.load_DB_into_FASTsearch()\n", + "#print('done')\n", + "#print('loading genitiv solve')\n", + "#from GenitivSolve import *\n", + "#gs = GenitivSolve()\n", + "\n", + "#from FremdWB import *\n", + "#fwb = FremdWB(None,None)\n", + "#fwb.load_DB_into_FASTsearch()\n", + "\n", + "#from SolveShorts import *\n", + "#print('loading SolveShorts Databases')\n", + "#solSh.load_DB_into_FASTsearch()\n", + "\n", + "#from SayYes import *\n", + "#sy = SayYes(None, None)\n", + "#print('loading SayYes Databases')\n", + "#sy.load_DB_into_FASTsearch()\n", + "\n", + "#import SentSeg\n", + "#sent_seg = SentSeg.SentSeg('de')\n", + "#print('loading SentSeg Databases')\n", + "#sent_seg.LoadSentGlueSGDandGSUtils()\n", + "#print('loading conjunctsolve')\n", + "#from ConjunctSolve import *\n", + "#cs = ConjunctSolve(None,None)\n", + "#print('done')\n", + "#print('loading conjunctivesolve Databases')\n", + "#cs.load_DB_into_FASTsearch()\n", + "#print('done')\n", + "#from oi import *\n", + "#oi = oi()\n", + "\n", + "#print('loading session..')\n", + "\n", + "#print('done')\n", + "import dill\n", + "dill.load_session('voilastate.db')\n", + "\n", + "#from SolveShorts import *\n", + "#print('loading SolveShorts Databases')\n", + "#solSh.load_DB_into_FASTsearch()\n", + "\n", + "#import SentSeg\n", + "#sent_seg = SentSeg.SentSeg('de')\n", + "#print('loading SentSeg Databases')\n", + "#sent_seg.LoadSentGlueSGDandGSUtils()\n", + "\n", + "#from FremdWB import *\n", + "#fwb = FremdWB(None,None)\n", + "#fwb.load_DB_into_FASTsearch()\n", + "\n", + "#from Medio import *\n", + "#medi = Medio(None,None)\n", + "#medi.load_DB_into_FASTsearch()\n", + "\n", + "\n", + "#import dill\n", + "#print('dumping the session')\n", + "#dill.dump_session('voilastate.db')\n", + "#print('done')\n", + "\n", + "#from oi import *\n", + "#oi = oi()\n", + "\n", + "import ipywidgets as widgets\n", + "\n", + "TextFeld = widgets.Textarea(placeholder='Hier den Text eingeben, darunter können die Module aktiviert(grün) oder deaktiviert(pink) werden', disabled=False)\n", + "#print(TextFeld.layout.height)\n", + "TextFeld.layout.height = '180px'\n", + "TextFeld.layout.width = '99%'\n", + "\n", + "TextFelddouble = widgets.Textarea(placeholder='Hier den Text eingeben, darunter können die Module aktiviert(grün) oder deaktiviert(pink) werden', disabled=False)\n", + "#print(TextFeld.layout.height)\n", + "TextFelddouble.layout.height = '180px'\n", + "TextFelddouble.layout.width = '99%'\n", + "TextFelddouble.disabled=True\n", + "\n", + "display(TextFeld)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "\n", + "dawidth = '100%'\n", + "daheight = '100%'\n", + "KonjunktiveErsetzen = widgets.ToggleButton(\n", + " value=False,\n", + " description='Konjunktive ersetzen',\n", + " disabled=False,\n", + ")\n", + "KonjunktiveErsetzen.layout.width = dawidth\n", + "KonjunktiveErsetzen.layout.height = '80%'\n", + "\n", + "GenitiveErsetzen = widgets.ToggleButton(\n", + " value=True,\n", + " description='Genitiv ersetzen',\n", + " disabled=False\n", + ")\n", + "GenitiveErsetzen.layout.width = '60%'\n", + "GenitiveErsetzen.layout.height = daheight\n", + "\n", + "PassivErsetzen = widgets.ToggleButton(\n", + " value=True,\n", + " description='Passiv ersetzen',\n", + " disabled=False\n", + ")\n", + "PassivErsetzen.layout.width = '70%'\n", + "PassivErsetzen.layout.height = '90%'\n", + "\n", + "SayYes = widgets.ToggleButton(\n", + " value=True,\n", + " description='Verneinungen ersetzen',\n", + " disabled=False\n", + ")\n", + "SayYes.layout.width = '80%'\n", + "SayYes.layout.height = '80%'\n", + "SentSeg = widgets.ToggleButton(\n", + " value=True,\n", + " description='Eine Aussage pro Satz',\n", + " disabled=False\n", + ")\n", + "SentSeg.layout.width = '60%'\n", + "SentSeg.layout.height = daheight\n", + "SolveShorts = widgets.ToggleButton(\n", + " value=False,\n", + " description='Abkürzungen erklären',\n", + " disabled=False\n", + ")\n", + "SolveShorts.layout.width = '80%'\n", + "SolveShorts.layout.height = '90%'\n", + "FremdWB = widgets.ToggleButton(\n", + " value=True,\n", + " description='FremdWoerterbuch',\n", + " disabled=False\n", + ")\n", + "FremdWB.layout.width = '90%'\n", + "FremdWB.layout.height = '90%'\n", + "\n", + "Appendixes = widgets.ToggleButton(\n", + " value=True,\n", + " description='Charakterisierung pro Satz',\n", + " disabled=False\n", + ")\n", + "Appendixes.layout.width = '120%'\n", + "Appendixes.layout.height = '80%'\n", + "\n", + "Medio = widgets.ToggleButton(\n", + " value=True,\n", + " description='Mediopunkte',\n", + " disabled=False\n", + ")\n", + "Medio.layout.width = '50%'\n", + "Medio.layout.height = '90%'\n", + "\n", + "#items1 = [SentSeg, SolveShorts]\n", + "#items2 = [SayYes, PassivErsetzen]\n", + "#items3 = [GenitiveErsetzen, KonjunktiveErsetzen]\n", + "#items = [Textfeld, SentSeg, SolveShorts, SayYes, PassivErsetzen, GenitiveErsetzen, KonjunktiveErsetzen]\n", + "#display(SentSeg, SolveShorts, SayYes, PassivErsetzen, GenitiveErsetzen, KonjunktiveErsetzen)\n", + "#widgets.GridBox(items, layout=widgets.Layout(grid_template_columns=\"repeat(3, 100px)\"))\n", + "\n", + "\n", + "\n", + "#widgets.HBox(items1)\n", + "#widgets.HBox(items2)\n", + "#widgets.HBox(items3)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "import ipywidgets\n", + "out = 'Hier kommt der übersetzte Text heraus.'\n", + "\n", + "TextFeld.add_class(\"thotext\")\n", + "TextFelddouble.add_class(\"thotext\")\n", + "#display(OutTextFeld)\n", + "items = [SentSeg, SolveShorts, SayYes, PassivErsetzen, GenitiveErsetzen, KonjunktiveErsetzen, FremdWB, Appendixes, Medio] \n", + "#display(SentSeg, SolveShorts, SayYes, PassivErsetzen, GenitiveErsetzen, KonjunktiveErsetzen)\n", + "Grid = widgets.GridBox(items, layout=widgets.Layout(justify_items=\"center\", grid_template_columns=\"repeat(3, 30%)\", grid_gap=\"4.5%\", height=\"320px\"))\n" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "c08292c98ddf447ca1c19117241980b8", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "GridBox(children=(ToggleButton(value=True, description='Eine Aussage pro Satz', layout=Layout(height='100%', w…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "\n", + "display(HTML('
'))\n", + "display(Grid)\n", + "\n", + "\n", + "\n", + "\n", + "def function():\n", + " out = 'Wählen Sie ein Kästchen aus!'\n", + " try:\n", + " insentences, punctuations = oi.CellInputText2SplitsentencesWithspacy(TextFeld.value)\n", + " except:\n", + " OutTextFeld.placeholder = 'Bitte auf die Zeichensetzung achten! '\n", + " return\n", + " \n", + " check = 0\n", + " #print('insentences',insentences)\n", + " #print(punctuations)\n", + " if SayYes.value == True:\n", + " \n", + " print('ersetze Gegenteile..')\n", + " outsentences = sy.replaceOpposites(insentences)\n", + " check = 1\n", + " \n", + " \n", + " \n", + " \n", + " if Appendixes.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('generiere ist-Aussagen..')\n", + " outsentences, punctuations = sent_seg.putAppendixesIntoOwnSentences(insentences, punctuations)\n", + " \n", + " if SentSeg.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('forme zu einem Satz pro Aussage um..')\n", + " sentsegformattedsentences = []\n", + " for sentence in insentences:\n", + " \n", + " sentsegformattedsentences.append([sentence])\n", + " \n", + " #print(sentsegformattedsentences)\n", + " sentences = sent_seg.CommaSentenceOrNot(sentsegformattedsentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetUtteranceNumber(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetQuestionOrNot(sentences)\n", + " #print(sentences)\n", + " sentences, punctuations = sent_seg.AndOrSolver(sentences, punctuations)\n", + " #print(len(punctuations))\n", + " #print('sentences after AndOrSolver', sentences, punctuations)\n", + " sentences = sent_seg.CommaSentenceOrNot(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetUtteranceNumber(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetQuestionOrNot(sentences)\n", + " #print(sentences)\n", + " sentences, punctuations = sent_seg.SplitSentencesIntoHauptNebenTuple(sentences, punctuations)\n", + " #print(len(punctuations))\n", + " #print('sentences after split haupt neben', sentences)\n", + " sentences = sent_seg.CommaSentenceOrNot(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetUtteranceNumber(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetQuestionOrNot(sentences)\n", + " #print(sentences)\n", + " outsentences, punctuations = sent_seg.SplitCommatas(sentences, punctuations)\n", + " #print(len(punctuations))\n", + " #print('out',outsentences)\n", + " #print('out', punctuations)\n", + " check = 1\n", + " \n", + " \n", + " if SolveShorts.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('erklaere Abkuerzungen..')\n", + " outsentences = solSh.ExplainShortsInSentencesWithBrackets(insentences)\n", + " check = 1\n", + " #print(len(punctuations)) \n", + " #print('sentences after solveshorts', outsentences)\n", + " \n", + " if PassivErsetzen.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('ersetze Passiv Formen..')\n", + " outsentences = p2a.replacePassivForms(insentences)\n", + " check = 1\n", + " #print(len(punctuations))\n", + " #print('sentences after p2a', outsentences)\n", + " \n", + " if GenitiveErsetzen.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " #print('replacing genitiv forms with dativ..')\n", + " outsentences = gs.ReplaceGenitivWithDativ(insentences)\n", + " check = 1\n", + " #print(len(punctuations))\n", + " #print('sentences after gs', outsentences)\n", + " \n", + " if check == 1:\n", + " newinsentences = []\n", + " for sentence in outsentences: \n", + " newinsentences.append([word.replace('ö','oe').replace('ü','ue').replace('ä','ae').replace('ß','ss') for word in sentence])\n", + " \n", + " outsentences =newinsentences\n", + " if check != 1:\n", + " newinsentences = []\n", + " for sentence in insentences: \n", + " newinsentences.append([word.replace('ö','oe').replace('ü','ue').replace('ä','ae').replace('ß','ss') for word in sentence])\n", + " \n", + " insentences =newinsentences\n", + " #print()\n", + " if KonjunktiveErsetzen.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('ersetze Konjunktive..')\n", + " \n", + " outsentences = cs.replaceConjunctives(insentences)\n", + " #print('outsentences')\n", + " check = 1\n", + " \n", + " #print('sentences after cs', outsentences)\n", + " print(len(punctuations))\n", + " \n", + " if FremdWB.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('Suche Woerterbucheintraege..')\n", + " \n", + " outsentences, punctuations = fwb.fremdEintragAppend(insentences, punctuations)\n", + " #print('outsentences')\n", + " check = 1\n", + " \n", + " if Medio.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('Ersetze lange Woerter mit Mediopunkten..')\n", + " \n", + " outsentences, punctuations = medi.Medioreplace(insentences, punctuations)\n", + " #print('outsentences')\n", + " check = 1\n", + " #print('sentences after medios', outsentences)\n", + " \n", + " \n", + " #print('sentences after fwb', outsentences)\n", + " \n", + " print(len(punctuations))\n", + " \n", + " if check == 1:\n", + " out = ''\n", + " #print('just before looking if the lenght is the same')\n", + " #print(len(outsentences), len(punctuations))\n", + " if len(outsentences) == len(punctuations):\n", + " #print('the length is the same')\n", + " for n in range(len(outsentences)):\n", + " outsentence = outsentences[n]\n", + " outsentence[0] = outsentence[0].title()\n", + " out += ' '.join(outsentence) + punctuations[n] + '\\n'\n", + " \n", + " \n", + " OutTextFeld.value = out\n", + " TextFelddouble.value = TextFeld.value\n", + " display(TextFelddouble)\n", + " \n", + " return \n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "3ca86c6e7e39437eafa36439e3337b42", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "interactive(children=(Button(description='Übersetzen in Leichte Sprache', style=ButtonStyle()), Output()), _do…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "#from IPython.display import Image\n", + "#i = Image(filename='Babelfish.png')\n", + "\n", + "#i.width = '60%'\n", + "#display(i)\n", + "\n", + "#print(widgets.interact_manual.opts)\n", + "\n", + "widgets.interact_manual.opts['manual_name']= 'Übersetzen in Leichte Sprache'\n", + "ola = widgets.interact_manual(function)\n", + "ola.widget.children[0].style.button_color = 'lightgreen'\n", + "ola.widget.children[0].layout.height = '60px'\n", + "ola.widget.children[0].layout.width = '99%'\n", + "\n", + "#widgets.GridBox([ola], layout=widgets.Layout(grid_template_columns=\"repeat(2, 300px)\"))" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "0d6f03c93f0147cd9f33d2a053672b0c", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Textarea(value='', layout=Layout(height='180px', width='99%'), placeholder='Hier kommt der übersetzte Text her…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "OutTextFeld = ipywidgets.Textarea(placeholder=out, disabled=False)\n", + "OutTextFeld.layout.height = '180px'\n", + "OutTextFeld.layout.width = '99%'\n", + "OutTextFeld.add_class(\"thetext\")\n", + "display(OutTextFeld)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [], + "source": [ + "beschreibung = 'Textfeld für die verbesserte Übersetzung. Satzzeichen bitte nicht vergessen! \\nFalls ein neuer Eintrag ins Fremdwörterbuch vorgenommen werden soll, schreibe einfach unter die Verbesserungen einen Eintrag der Form: [\\'Abfall\\', \\'Abfall sind Sachen die wir nicht mehr brauchen\\'] \\nFalls ein neuer Eintrag in die Mediopunkte-Datenbank vorgenommen werden soll, bitte schreibe unter die Verbesserungen einen Eintrag der Form: [\\'Mediopunkt\\', \\'Medio·punkt\\']' \n", + "VerbeTextFeld = ipywidgets.Textarea(placeholder=beschreibung, disabled=False)\n", + "VerbeTextFeld.layout.height = '180px'\n", + "VerbeTextFeld.layout.width = '99%'\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "\n", + "def Absendefunction():\n", + " \n", + " \n", + "\n", + " \n", + " #print(VerbeTextFeld.value)\n", + " #print(TextFeld.value)\n", + " #print(OutTextFeld.value)\n", + " \n", + " try:\n", + "\n", + " insentences, punctuations = oi.CellInputText2SplitsentencesWithspacy(VerbeTextFeld.value)\n", + " insentences1, punctuations1 = oi.CellInputText2SplitsentencesWithspacy(TextFeld.value)\n", + " insentences2, punctuations2 = oi.CellInputText2SplitsentencesWithspacy(OutTextFeld.value)\n", + "\n", + " #print(insentences2)\n", + "\n", + " #print(insentences, punctuations)\n", + " indexDerVerbesserungen = 0\n", + " number = 0\n", + " with open('Verbesserungen/indexDerVerbesserungen.txt', 'r') as dok:\n", + " for number in dok:\n", + " number = int(number)\n", + " if number >= 0:\n", + " indexDerVerbesserungen = number\n", + " number += 1\n", + "\n", + " with open('Verbesserungen/indexDerVerbesserungen.txt', 'w') as dokk:\n", + " dokk.write(str(number))\n", + "\n", + "\n", + " with open('Verbesserungen/Verbesserungen' + str(number) + '.txt','w+') as doc:\n", + " for n in range(len(insentences)):\n", + " npunct = punctuations[n]\n", + " writeline = insentences[n]+ [npunct]\n", + "\n", + " writestring = ' '.join(writeline)\n", + "\n", + " doc.write(writestring + '\\n')\n", + "\n", + " with open('Verbesserungen/Input' + str(number) + '.txt','w+') as docc:\n", + " for n in range(len(insentences1)):\n", + " npunct = punctuations1[n]\n", + " writeline = insentences1[n]+ [npunct]\n", + "\n", + " writestring = ' '.join(writeline)\n", + "\n", + " docc.write(writestring + '\\n')\n", + " with open('Verbesserungen/Output' + str(number) + '.txt','w+') as dock:\n", + " #print(insentences2)\n", + " for n in range(len(insentences2)):\n", + " #print(len(insentences2))\n", + "\n", + " #print(punctuations2)\n", + " npunct = punctuations2[n]\n", + " writeline = insentences2[n]+ [npunct]\n", + "\n", + " writestring = ' '.join(writeline)\n", + "\n", + " dock.write(writestring + '\\n')\n", + "\n", + " VerbeTextFeld.value = ''\n", + " OutTextFeld.value = ''\n", + " VerbeTextFeld.placeholder = beschreibung\n", + " OutTextFeld.placeholder = 'Hier kommt der übersetzte Text raus.'\n", + " except:\n", + " VerbeTextFeld.placeholder = 'Es gab einen Fehler. Eventuell ist die Zeichensetzung nicht ok. \\n \\n' + beschreibung\n", + " \n", + " \n", + " return \n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "1713cde35a884104b20056d5694d168a", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Textarea(value='', layout=Layout(height='180px', width='99%'), placeholder=\"Textfeld für die verbesserte Übers…" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "d4100a2d84d34630acf974f78d316abc", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "interactive(children=(Button(description='Absenden', style=ButtonStyle()), Output()), _dom_classes=('widget-in…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "VerbeTextFeld.add_class(\"thetext3\")\n", + "display(VerbeTextFeld)\n", + "display(HTML('
'))\n", + "widgets.interact_manual.opts['manual_name']= 'Absenden'\n", + "AbsendenUndSchreiben = widgets.interact_manual(Absendefunction)\n", + "AbsendenUndSchreiben.widget.children[0].style.button_color = 'lightblue'\n", + "AbsendenUndSchreiben.widget.children[0].layout.height = '60px'\n", + "AbsendenUndSchreiben.widget.children[0].layout.width = '99%'\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%html\n", + "" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%html\n", + "" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "data": { + "text/html": [ + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%html\n", + "" + ] + } + ], + "metadata": { + "celltoolbar": "Raw Cell Format", + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.5.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/Prototyp/.Prototype-11.ipynb b/Prototyp/.Prototype-11.ipynb new file mode 100644 index 00000000..50a76c09 --- /dev/null +++ b/Prototyp/.Prototype-11.ipynb @@ -0,0 +1,2313 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "#from oi import *\n", + "\n", + "#oi = oi()\n", + "\n", + "#import ipyvuetify as v\n", + "\n", + "#state = False\n", + "#oi.toggle_code(state)\n", + "\n", + "#button = widgets.ToggleButton(state, description = button_descriptions[state])\n", + "\n", + "\n", + "#button.observe(oi.button_action, \"value\")\n", + "\n", + "#button.layout.height = '50px'\n", + "#button.layout.width = '100%'\n", + "#button.add_class(\"thobutton\")\n", + "\n", + "#display(button)\n", + "#button.button_style = 'danger'\n" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "\n", + "

Ein Klick auf das Logo - und es geht zum Code

\n", + "\n", + "\n", + " \n", + "\n", + " \n", + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%html\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "\n", + "

Ein Klick auf das Logo - und es geht zum Code

\n", + "\n", + "\n", + " \n", + "\n", + " \n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "#%%html\n", + "#\n", + "#\n", + "#\n", + "#\n", + "#\n", + "#

Ein Klick auf das Logo - und es geht zum Code

\n", + "#" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [], + "source": [ + "#%%html\n", + "#" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "#from ipywidgets import widgets\n", + "#button = widgets.Button(description='Click me')\n", + "#display(button)\n", + "\n", + "#def on_button_clicked(b):\n", + "# print('button clicked')\n", + "\n", + "#button.on_click(on_button_clicked)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "\n", + "# importing the libraries\n", + "#print('importing libraries')\n", + "#from SolveShorts import *\n", + "#import SentSeg\n", + "#from SayYes import *\n", + "#from Passiv2Aktiv import *\n", + "#from GenitivSolve import *\n", + "#from ConjunctSolve import *\n", + "#from FremdWB import *\n", + "#from Medio import *\n", + "#from oi import *\n", + "#print('done')\n", + "\n", + "\n", + "# Initializing the libraries\n", + "#print('initializing the libraries')\n", + "#print('1')\n", + "#solSh = SolveShorts('hkldbShorts.hkl', 'hkldbShorts_All.hkl')\n", + "#print('2')\n", + "#sent_seg = SentSeg.SentSeg('de')\n", + "#print('3')\n", + "#sy = SayYes(None, None)\n", + "#print('4')\n", + "#p2a = Passiv2Aktiv(None, None, None)\n", + "#print('5')\n", + "#gs = GenitivSolve()\n", + "#print('6')\n", + "#cs = ConjunctSolve(None,None)\n", + "#print('7')\n", + "#oi = oi()\n", + "#print('8')\n", + "#fwb = FremdWB(None,None)\n", + "#print('9')\n", + "#medi = Medio(None,None)\n", + "#print('done')\n", + "\n", + "\n", + "# loading the databases and models\n", + "#print('loading SolveShorts Databases')\n", + "#solSh.load_DB_into_FASTsearch()\n", + "#print('loading SentSeg Databases')\n", + "#sent_seg.LoadSentGlueSGDandGSUtils()\n", + "#print('loading SayYes Databases')\n", + "#sy.load_DB_into_FASTsearch()\n", + "#print('loading passiv2active Databases')\n", + "#p2a.load_DB_into_FASTsearch()\n", + "#print('loading conjunctivesolve Databases')\n", + "#cs.load_DB_into_FASTsearch()\n", + "#print('loading the fremdwb Databases')\n", + "#fwb.load_DB_into_FASTsearch()\n", + "#print('loading the mediodot Databases')\n", + "#medi.load_DB_into_FASTsearch()\n", + "\n", + "#print('done')\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "106e70dd208f4de29ae10874823d30a8", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Textarea(value='', layout=Layout(height='180px', width='99%'), placeholder='Hier den Text eingeben, darunter k…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "\n", + "#print('done')\n", + "\n", + "#print('loading passiv2active Databases')\n", + "#from Passiv2Aktiv import *\n", + "#p2a = Passiv2Aktiv(None, None, None)\n", + "#p2a.load_DB_into_FASTsearch()\n", + "#print('done')\n", + "#print('loading genitiv solve')\n", + "#from GenitivSolve import *\n", + "#gs = GenitivSolve()\n", + "\n", + "#from FremdWB import *\n", + "#fwb = FremdWB(None,None)\n", + "#fwb.load_DB_into_FASTsearch()\n", + "\n", + "#from SolveShorts import *\n", + "#print('loading SolveShorts Databases')\n", + "#solSh.load_DB_into_FASTsearch()\n", + "\n", + "#from SayYes import *\n", + "#sy = SayYes(None, None)\n", + "#print('loading SayYes Databases')\n", + "#sy.load_DB_into_FASTsearch()\n", + "\n", + "#import SentSeg\n", + "#sent_seg = SentSeg.SentSeg('de')\n", + "#print('loading SentSeg Databases')\n", + "#sent_seg.LoadSentGlueSGDandGSUtils()\n", + "#print('loading conjunctsolve')\n", + "#from ConjunctSolve import *\n", + "#cs = ConjunctSolve(None,None)\n", + "#print('done')\n", + "#print('loading conjunctivesolve Databases')\n", + "#cs.load_DB_into_FASTsearch()\n", + "#print('done')\n", + "#from oi import *\n", + "#oi = oi()\n", + "\n", + "#print('loading session..')\n", + "\n", + "#print('done')\n", + "import dill\n", + "dill.load_session('voilastate.db')\n", + "\n", + "#from SolveShorts import *\n", + "#print('loading SolveShorts Databases')\n", + "#solSh.load_DB_into_FASTsearch()\n", + "\n", + "#import SentSeg\n", + "#sent_seg = SentSeg.SentSeg('de')\n", + "#print('loading SentSeg Databases')\n", + "#sent_seg.LoadSentGlueSGDandGSUtils()\n", + "\n", + "#from FremdWB import *\n", + "#fwb = FremdWB(None,None)\n", + "#fwb.load_DB_into_FASTsearch()\n", + "\n", + "#from Medio import *\n", + "#medi = Medio(None,None)\n", + "#medi.load_DB_into_FASTsearch()\n", + "\n", + "\n", + "#import dill\n", + "#print('dumping the session')\n", + "#dill.dump_session('voilastate.db')\n", + "#print('done')\n", + "\n", + "#from oi import *\n", + "#oi = oi()\n", + "\n", + "import ipywidgets as widgets\n", + "\n", + "TextFeld = widgets.Textarea(placeholder='Hier den Text eingeben, darunter können die Module aktiviert(grün) oder deaktiviert(pink) werden', disabled=False)\n", + "#print(TextFeld.layout.height)\n", + "TextFeld.layout.height = '180px'\n", + "TextFeld.layout.width = '99%'\n", + "\n", + "TextFelddouble = widgets.Textarea(placeholder='Hier den Text eingeben, darunter können die Module aktiviert(grün) oder deaktiviert(pink) werden', disabled=False)\n", + "#print(TextFeld.layout.height)\n", + "TextFelddouble.layout.height = '180px'\n", + "TextFelddouble.layout.width = '99%'\n", + "TextFelddouble.disabled=True\n", + "\n", + "display(TextFeld)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "\n", + "dawidth = '100%'\n", + "daheight = '100%'\n", + "KonjunktiveErsetzen = widgets.ToggleButton(\n", + " value=False,\n", + " description='Konjunktive ersetzen',\n", + " disabled=False,\n", + ")\n", + "KonjunktiveErsetzen.layout.width = dawidth\n", + "KonjunktiveErsetzen.layout.height = '80%'\n", + "\n", + "GenitiveErsetzen = widgets.ToggleButton(\n", + " value=True,\n", + " description='Genitiv ersetzen',\n", + " disabled=False\n", + ")\n", + "GenitiveErsetzen.layout.width = '60%'\n", + "GenitiveErsetzen.layout.height = daheight\n", + "\n", + "PassivErsetzen = widgets.ToggleButton(\n", + " value=True,\n", + " description='Passiv ersetzen',\n", + " disabled=False\n", + ")\n", + "PassivErsetzen.layout.width = '70%'\n", + "PassivErsetzen.layout.height = '90%'\n", + "\n", + "SayYes = widgets.ToggleButton(\n", + " value=True,\n", + " description='Verneinungen ersetzen',\n", + " disabled=False\n", + ")\n", + "SayYes.layout.width = '80%'\n", + "SayYes.layout.height = '80%'\n", + "SentSeg = widgets.ToggleButton(\n", + " value=True,\n", + " description='Eine Aussage pro Satz',\n", + " disabled=False\n", + ")\n", + "SentSeg.layout.width = '60%'\n", + "SentSeg.layout.height = daheight\n", + "SolveShorts = widgets.ToggleButton(\n", + " value=False,\n", + " description='Abkürzungen erklären',\n", + " disabled=False\n", + ")\n", + "SolveShorts.layout.width = '80%'\n", + "SolveShorts.layout.height = '90%'\n", + "FremdWB = widgets.ToggleButton(\n", + " value=True,\n", + " description='FremdWoerterbuch',\n", + " disabled=False\n", + ")\n", + "FremdWB.layout.width = '90%'\n", + "FremdWB.layout.height = '90%'\n", + "\n", + "Appendixes = widgets.ToggleButton(\n", + " value=True,\n", + " description='Charakterisierung pro Satz',\n", + " disabled=False\n", + ")\n", + "Appendixes.layout.width = '120%'\n", + "Appendixes.layout.height = '80%'\n", + "\n", + "Medio = widgets.ToggleButton(\n", + " value=True,\n", + " description='Mediopunkte',\n", + " disabled=False\n", + ")\n", + "Medio.layout.width = '50%'\n", + "Medio.layout.height = '90%'\n", + "\n", + "#items1 = [SentSeg, SolveShorts]\n", + "#items2 = [SayYes, PassivErsetzen]\n", + "#items3 = [GenitiveErsetzen, KonjunktiveErsetzen]\n", + "#items = [Textfeld, SentSeg, SolveShorts, SayYes, PassivErsetzen, GenitiveErsetzen, KonjunktiveErsetzen]\n", + "#display(SentSeg, SolveShorts, SayYes, PassivErsetzen, GenitiveErsetzen, KonjunktiveErsetzen)\n", + "#widgets.GridBox(items, layout=widgets.Layout(grid_template_columns=\"repeat(3, 100px)\"))\n", + "\n", + "\n", + "\n", + "#widgets.HBox(items1)\n", + "#widgets.HBox(items2)\n", + "#widgets.HBox(items3)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "import ipywidgets\n", + "out = 'Hier kommt der übersetzte Text heraus.'\n", + "\n", + "TextFeld.add_class(\"thotext\")\n", + "TextFelddouble.add_class(\"thotext\")\n", + "#display(OutTextFeld)\n", + "items = [SentSeg, SolveShorts, SayYes, PassivErsetzen, GenitiveErsetzen, KonjunktiveErsetzen, FremdWB, Appendixes, Medio] \n", + "#display(SentSeg, SolveShorts, SayYes, PassivErsetzen, GenitiveErsetzen, KonjunktiveErsetzen)\n", + "Grid = widgets.GridBox(items, layout=widgets.Layout(justify_items=\"center\", grid_template_columns=\"repeat(3, 30%)\", grid_gap=\"4.5%\", height=\"320px\"))\n" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "c08292c98ddf447ca1c19117241980b8", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "GridBox(children=(ToggleButton(value=True, description='Eine Aussage pro Satz', layout=Layout(height='100%', w…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "\n", + "display(HTML('
'))\n", + "display(Grid)\n", + "\n", + "\n", + "\n", + "\n", + "def function():\n", + " out = 'Wählen Sie ein Kästchen aus!'\n", + " try:\n", + " insentences, punctuations = oi.CellInputText2SplitsentencesWithspacy(TextFeld.value)\n", + " except:\n", + " OutTextFeld.placeholder = 'Bitte auf die Zeichensetzung achten! '\n", + " return\n", + " \n", + " check = 0\n", + " #print('insentences',insentences)\n", + " #print(punctuations)\n", + " if SayYes.value == True:\n", + " \n", + " print('ersetze Gegenteile..')\n", + " outsentences = sy.replaceOpposites(insentences)\n", + " check = 1\n", + " \n", + " \n", + " \n", + " \n", + " if Appendixes.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('generiere ist-Aussagen..')\n", + " outsentences, punctuations = sent_seg.putAppendixesIntoOwnSentences(insentences, punctuations)\n", + " \n", + " if SentSeg.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('forme zu einem Satz pro Aussage um..')\n", + " sentsegformattedsentences = []\n", + " for sentence in insentences:\n", + " \n", + " sentsegformattedsentences.append([sentence])\n", + " \n", + " #print(sentsegformattedsentences)\n", + " sentences = sent_seg.CommaSentenceOrNot(sentsegformattedsentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetUtteranceNumber(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetQuestionOrNot(sentences)\n", + " #print(sentences)\n", + " sentences, punctuations = sent_seg.AndOrSolver(sentences, punctuations)\n", + " #print(len(punctuations))\n", + " #print('sentences after AndOrSolver', sentences, punctuations)\n", + " sentences = sent_seg.CommaSentenceOrNot(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetUtteranceNumber(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetQuestionOrNot(sentences)\n", + " #print(sentences)\n", + " sentences, punctuations = sent_seg.SplitSentencesIntoHauptNebenTuple(sentences, punctuations)\n", + " #print(len(punctuations))\n", + " #print('sentences after split haupt neben', sentences)\n", + " sentences = sent_seg.CommaSentenceOrNot(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetUtteranceNumber(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetQuestionOrNot(sentences)\n", + " #print(sentences)\n", + " outsentences, punctuations = sent_seg.SplitCommatas(sentences, punctuations)\n", + " #print(len(punctuations))\n", + " #print('out',outsentences)\n", + " #print('out', punctuations)\n", + " check = 1\n", + " \n", + " \n", + " if SolveShorts.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('erklaere Abkuerzungen..')\n", + " outsentences = solSh.ExplainShortsInSentencesWithBrackets(insentences)\n", + " check = 1\n", + " #print(len(punctuations)) \n", + " #print('sentences after solveshorts', outsentences)\n", + " \n", + " if PassivErsetzen.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('ersetze Passiv Formen..')\n", + " outsentences = p2a.replacePassivForms(insentences)\n", + " check = 1\n", + " #print(len(punctuations))\n", + " #print('sentences after p2a', outsentences)\n", + " \n", + " if GenitiveErsetzen.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " #print('replacing genitiv forms with dativ..')\n", + " outsentences = gs.ReplaceGenitivWithDativ(insentences)\n", + " check = 1\n", + " #print(len(punctuations))\n", + " #print('sentences after gs', outsentences)\n", + " \n", + " if check == 1:\n", + " newinsentences = []\n", + " for sentence in outsentences: \n", + " newinsentences.append([word.replace('ö','oe').replace('ü','ue').replace('ä','ae').replace('ß','ss') for word in sentence])\n", + " \n", + " outsentences =newinsentences\n", + " if check != 1:\n", + " newinsentences = []\n", + " for sentence in insentences: \n", + " newinsentences.append([word.replace('ö','oe').replace('ü','ue').replace('ä','ae').replace('ß','ss') for word in sentence])\n", + " \n", + " insentences =newinsentences\n", + " #print()\n", + " if KonjunktiveErsetzen.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('ersetze Konjunktive..')\n", + " \n", + " outsentences = cs.replaceConjunctives(insentences)\n", + " #print('outsentences')\n", + " check = 1\n", + " \n", + " #print('sentences after cs', outsentences)\n", + " print(len(punctuations))\n", + " \n", + " if FremdWB.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('Suche Woerterbucheintraege..')\n", + " \n", + " outsentences, punctuations = fwb.fremdEintragAppend(insentences, punctuations)\n", + " #print('outsentences')\n", + " check = 1\n", + " \n", + " if Medio.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('Ersetze lange Woerter mit Mediopunkten..')\n", + " \n", + " outsentences, punctuations = medi.Medioreplace(insentences, punctuations)\n", + " #print('outsentences')\n", + " check = 1\n", + " #print('sentences after medios', outsentences)\n", + " \n", + " \n", + " #print('sentences after fwb', outsentences)\n", + " \n", + " print(len(punctuations))\n", + " \n", + " if check == 1:\n", + " out = ''\n", + " #print('just before looking if the lenght is the same')\n", + " #print(len(outsentences), len(punctuations))\n", + " if len(outsentences) == len(punctuations):\n", + " #print('the length is the same')\n", + " for n in range(len(outsentences)):\n", + " outsentence = outsentences[n]\n", + " outsentence[0] = outsentence[0].title()\n", + " out += ' '.join(outsentence) + punctuations[n] + '\\n'\n", + " \n", + " \n", + " OutTextFeld.value = out\n", + " TextFelddouble.value = TextFeld.value\n", + " display(TextFelddouble)\n", + " \n", + " return \n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "3ca86c6e7e39437eafa36439e3337b42", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "interactive(children=(Button(description='Übersetzen in Leichte Sprache', style=ButtonStyle()), Output()), _do…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "#from IPython.display import Image\n", + "#i = Image(filename='Babelfish.png')\n", + "\n", + "#i.width = '60%'\n", + "#display(i)\n", + "\n", + "#print(widgets.interact_manual.opts)\n", + "\n", + "widgets.interact_manual.opts['manual_name']= 'Übersetzen in Leichte Sprache'\n", + "ola = widgets.interact_manual(function)\n", + "ola.widget.children[0].style.button_color = 'lightgreen'\n", + "ola.widget.children[0].layout.height = '60px'\n", + "ola.widget.children[0].layout.width = '99%'\n", + "\n", + "#widgets.GridBox([ola], layout=widgets.Layout(grid_template_columns=\"repeat(2, 300px)\"))" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "0d6f03c93f0147cd9f33d2a053672b0c", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Textarea(value='', layout=Layout(height='180px', width='99%'), placeholder='Hier kommt der übersetzte Text her…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "OutTextFeld = ipywidgets.Textarea(placeholder=out, disabled=False)\n", + "OutTextFeld.layout.height = '180px'\n", + "OutTextFeld.layout.width = '99%'\n", + "OutTextFeld.add_class(\"thetext\")\n", + "display(OutTextFeld)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [], + "source": [ + "beschreibung = 'Textfeld für die verbesserte Übersetzung. Satzzeichen bitte nicht vergessen! \\nFalls ein neuer Eintrag ins Fremdwörterbuch vorgenommen werden soll, schreibe einfach unter die Verbesserungen einen Eintrag der Form: [\\'Abfall\\', \\'Abfall sind Sachen die wir nicht mehr brauchen\\'] \\nFalls ein neuer Eintrag in die Mediopunkte-Datenbank vorgenommen werden soll, bitte schreibe unter die Verbesserungen einen Eintrag der Form: [\\'Mediopunkt\\', \\'Medio·punkt\\']' \n", + "VerbeTextFeld = ipywidgets.Textarea(placeholder=beschreibung, disabled=False)\n", + "VerbeTextFeld.layout.height = '180px'\n", + "VerbeTextFeld.layout.width = '99%'\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "\n", + "def Absendefunction():\n", + " \n", + " \n", + "\n", + " \n", + " #print(VerbeTextFeld.value)\n", + " #print(TextFeld.value)\n", + " #print(OutTextFeld.value)\n", + " \n", + " try:\n", + "\n", + " insentences, punctuations = oi.CellInputText2SplitsentencesWithspacy(VerbeTextFeld.value)\n", + " insentences1, punctuations1 = oi.CellInputText2SplitsentencesWithspacy(TextFeld.value)\n", + " insentences2, punctuations2 = oi.CellInputText2SplitsentencesWithspacy(OutTextFeld.value)\n", + "\n", + " #print(insentences2)\n", + "\n", + " #print(insentences, punctuations)\n", + " indexDerVerbesserungen = 0\n", + " number = 0\n", + " with open('Verbesserungen/indexDerVerbesserungen.txt', 'r') as dok:\n", + " for number in dok:\n", + " number = int(number)\n", + " if number >= 0:\n", + " indexDerVerbesserungen = number\n", + " number += 1\n", + "\n", + " with open('Verbesserungen/indexDerVerbesserungen.txt', 'w') as dokk:\n", + " dokk.write(str(number))\n", + "\n", + "\n", + " with open('Verbesserungen/Verbesserungen' + str(number) + '.txt','w+') as doc:\n", + " for n in range(len(insentences)):\n", + " npunct = punctuations[n]\n", + " writeline = insentences[n]+ [npunct]\n", + "\n", + " writestring = ' '.join(writeline)\n", + "\n", + " doc.write(writestring + '\\n')\n", + "\n", + " with open('Verbesserungen/Input' + str(number) + '.txt','w+') as docc:\n", + " for n in range(len(insentences1)):\n", + " npunct = punctuations1[n]\n", + " writeline = insentences1[n]+ [npunct]\n", + "\n", + " writestring = ' '.join(writeline)\n", + "\n", + " docc.write(writestring + '\\n')\n", + " with open('Verbesserungen/Output' + str(number) + '.txt','w+') as dock:\n", + " #print(insentences2)\n", + " for n in range(len(insentences2)):\n", + " #print(len(insentences2))\n", + "\n", + " #print(punctuations2)\n", + " npunct = punctuations2[n]\n", + " writeline = insentences2[n]+ [npunct]\n", + "\n", + " writestring = ' '.join(writeline)\n", + "\n", + " dock.write(writestring + '\\n')\n", + "\n", + " VerbeTextFeld.value = ''\n", + " OutTextFeld.value = ''\n", + " VerbeTextFeld.placeholder = beschreibung\n", + " OutTextFeld.placeholder = 'Hier kommt der übersetzte Text raus.'\n", + " except:\n", + " VerbeTextFeld.placeholder = 'Es gab einen Fehler. Eventuell ist die Zeichensetzung nicht ok. \\n \\n' + beschreibung\n", + " \n", + " \n", + " return \n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "1713cde35a884104b20056d5694d168a", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Textarea(value='', layout=Layout(height='180px', width='99%'), placeholder=\"Textfeld für die verbesserte Übers…" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "d4100a2d84d34630acf974f78d316abc", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "interactive(children=(Button(description='Absenden', style=ButtonStyle()), Output()), _dom_classes=('widget-in…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "VerbeTextFeld.add_class(\"thetext3\")\n", + "display(VerbeTextFeld)\n", + "display(HTML('
'))\n", + "widgets.interact_manual.opts['manual_name']= 'Absenden'\n", + "AbsendenUndSchreiben = widgets.interact_manual(Absendefunction)\n", + "AbsendenUndSchreiben.widget.children[0].style.button_color = 'lightblue'\n", + "AbsendenUndSchreiben.widget.children[0].layout.height = '60px'\n", + "AbsendenUndSchreiben.widget.children[0].layout.width = '99%'\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%html\n", + "" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%html\n", + "" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "data": { + "text/html": [ + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%html\n", + "" + ] + } + ], + "metadata": { + "celltoolbar": "Raw Cell Format", + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.5.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/Prototyp/.Prototype-12.ipynb b/Prototyp/.Prototype-12.ipynb new file mode 100644 index 00000000..50a76c09 --- /dev/null +++ b/Prototyp/.Prototype-12.ipynb @@ -0,0 +1,2313 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "#from oi import *\n", + "\n", + "#oi = oi()\n", + "\n", + "#import ipyvuetify as v\n", + "\n", + "#state = False\n", + "#oi.toggle_code(state)\n", + "\n", + "#button = widgets.ToggleButton(state, description = button_descriptions[state])\n", + "\n", + "\n", + "#button.observe(oi.button_action, \"value\")\n", + "\n", + "#button.layout.height = '50px'\n", + "#button.layout.width = '100%'\n", + "#button.add_class(\"thobutton\")\n", + "\n", + "#display(button)\n", + "#button.button_style = 'danger'\n" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "\n", + "

Ein Klick auf das Logo - und es geht zum Code

\n", + "\n", + "\n", + " \n", + "\n", + " \n", + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%html\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "\n", + "

Ein Klick auf das Logo - und es geht zum Code

\n", + "\n", + "\n", + " \n", + "\n", + " \n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "#%%html\n", + "#\n", + "#\n", + "#\n", + "#\n", + "#\n", + "#

Ein Klick auf das Logo - und es geht zum Code

\n", + "#" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [], + "source": [ + "#%%html\n", + "#" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "#from ipywidgets import widgets\n", + "#button = widgets.Button(description='Click me')\n", + "#display(button)\n", + "\n", + "#def on_button_clicked(b):\n", + "# print('button clicked')\n", + "\n", + "#button.on_click(on_button_clicked)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "\n", + "# importing the libraries\n", + "#print('importing libraries')\n", + "#from SolveShorts import *\n", + "#import SentSeg\n", + "#from SayYes import *\n", + "#from Passiv2Aktiv import *\n", + "#from GenitivSolve import *\n", + "#from ConjunctSolve import *\n", + "#from FremdWB import *\n", + "#from Medio import *\n", + "#from oi import *\n", + "#print('done')\n", + "\n", + "\n", + "# Initializing the libraries\n", + "#print('initializing the libraries')\n", + "#print('1')\n", + "#solSh = SolveShorts('hkldbShorts.hkl', 'hkldbShorts_All.hkl')\n", + "#print('2')\n", + "#sent_seg = SentSeg.SentSeg('de')\n", + "#print('3')\n", + "#sy = SayYes(None, None)\n", + "#print('4')\n", + "#p2a = Passiv2Aktiv(None, None, None)\n", + "#print('5')\n", + "#gs = GenitivSolve()\n", + "#print('6')\n", + "#cs = ConjunctSolve(None,None)\n", + "#print('7')\n", + "#oi = oi()\n", + "#print('8')\n", + "#fwb = FremdWB(None,None)\n", + "#print('9')\n", + "#medi = Medio(None,None)\n", + "#print('done')\n", + "\n", + "\n", + "# loading the databases and models\n", + "#print('loading SolveShorts Databases')\n", + "#solSh.load_DB_into_FASTsearch()\n", + "#print('loading SentSeg Databases')\n", + "#sent_seg.LoadSentGlueSGDandGSUtils()\n", + "#print('loading SayYes Databases')\n", + "#sy.load_DB_into_FASTsearch()\n", + "#print('loading passiv2active Databases')\n", + "#p2a.load_DB_into_FASTsearch()\n", + "#print('loading conjunctivesolve Databases')\n", + "#cs.load_DB_into_FASTsearch()\n", + "#print('loading the fremdwb Databases')\n", + "#fwb.load_DB_into_FASTsearch()\n", + "#print('loading the mediodot Databases')\n", + "#medi.load_DB_into_FASTsearch()\n", + "\n", + "#print('done')\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "106e70dd208f4de29ae10874823d30a8", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Textarea(value='', layout=Layout(height='180px', width='99%'), placeholder='Hier den Text eingeben, darunter k…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "\n", + "#print('done')\n", + "\n", + "#print('loading passiv2active Databases')\n", + "#from Passiv2Aktiv import *\n", + "#p2a = Passiv2Aktiv(None, None, None)\n", + "#p2a.load_DB_into_FASTsearch()\n", + "#print('done')\n", + "#print('loading genitiv solve')\n", + "#from GenitivSolve import *\n", + "#gs = GenitivSolve()\n", + "\n", + "#from FremdWB import *\n", + "#fwb = FremdWB(None,None)\n", + "#fwb.load_DB_into_FASTsearch()\n", + "\n", + "#from SolveShorts import *\n", + "#print('loading SolveShorts Databases')\n", + "#solSh.load_DB_into_FASTsearch()\n", + "\n", + "#from SayYes import *\n", + "#sy = SayYes(None, None)\n", + "#print('loading SayYes Databases')\n", + "#sy.load_DB_into_FASTsearch()\n", + "\n", + "#import SentSeg\n", + "#sent_seg = SentSeg.SentSeg('de')\n", + "#print('loading SentSeg Databases')\n", + "#sent_seg.LoadSentGlueSGDandGSUtils()\n", + "#print('loading conjunctsolve')\n", + "#from ConjunctSolve import *\n", + "#cs = ConjunctSolve(None,None)\n", + "#print('done')\n", + "#print('loading conjunctivesolve Databases')\n", + "#cs.load_DB_into_FASTsearch()\n", + "#print('done')\n", + "#from oi import *\n", + "#oi = oi()\n", + "\n", + "#print('loading session..')\n", + "\n", + "#print('done')\n", + "import dill\n", + "dill.load_session('voilastate.db')\n", + "\n", + "#from SolveShorts import *\n", + "#print('loading SolveShorts Databases')\n", + "#solSh.load_DB_into_FASTsearch()\n", + "\n", + "#import SentSeg\n", + "#sent_seg = SentSeg.SentSeg('de')\n", + "#print('loading SentSeg Databases')\n", + "#sent_seg.LoadSentGlueSGDandGSUtils()\n", + "\n", + "#from FremdWB import *\n", + "#fwb = FremdWB(None,None)\n", + "#fwb.load_DB_into_FASTsearch()\n", + "\n", + "#from Medio import *\n", + "#medi = Medio(None,None)\n", + "#medi.load_DB_into_FASTsearch()\n", + "\n", + "\n", + "#import dill\n", + "#print('dumping the session')\n", + "#dill.dump_session('voilastate.db')\n", + "#print('done')\n", + "\n", + "#from oi import *\n", + "#oi = oi()\n", + "\n", + "import ipywidgets as widgets\n", + "\n", + "TextFeld = widgets.Textarea(placeholder='Hier den Text eingeben, darunter können die Module aktiviert(grün) oder deaktiviert(pink) werden', disabled=False)\n", + "#print(TextFeld.layout.height)\n", + "TextFeld.layout.height = '180px'\n", + "TextFeld.layout.width = '99%'\n", + "\n", + "TextFelddouble = widgets.Textarea(placeholder='Hier den Text eingeben, darunter können die Module aktiviert(grün) oder deaktiviert(pink) werden', disabled=False)\n", + "#print(TextFeld.layout.height)\n", + "TextFelddouble.layout.height = '180px'\n", + "TextFelddouble.layout.width = '99%'\n", + "TextFelddouble.disabled=True\n", + "\n", + "display(TextFeld)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "\n", + "dawidth = '100%'\n", + "daheight = '100%'\n", + "KonjunktiveErsetzen = widgets.ToggleButton(\n", + " value=False,\n", + " description='Konjunktive ersetzen',\n", + " disabled=False,\n", + ")\n", + "KonjunktiveErsetzen.layout.width = dawidth\n", + "KonjunktiveErsetzen.layout.height = '80%'\n", + "\n", + "GenitiveErsetzen = widgets.ToggleButton(\n", + " value=True,\n", + " description='Genitiv ersetzen',\n", + " disabled=False\n", + ")\n", + "GenitiveErsetzen.layout.width = '60%'\n", + "GenitiveErsetzen.layout.height = daheight\n", + "\n", + "PassivErsetzen = widgets.ToggleButton(\n", + " value=True,\n", + " description='Passiv ersetzen',\n", + " disabled=False\n", + ")\n", + "PassivErsetzen.layout.width = '70%'\n", + "PassivErsetzen.layout.height = '90%'\n", + "\n", + "SayYes = widgets.ToggleButton(\n", + " value=True,\n", + " description='Verneinungen ersetzen',\n", + " disabled=False\n", + ")\n", + "SayYes.layout.width = '80%'\n", + "SayYes.layout.height = '80%'\n", + "SentSeg = widgets.ToggleButton(\n", + " value=True,\n", + " description='Eine Aussage pro Satz',\n", + " disabled=False\n", + ")\n", + "SentSeg.layout.width = '60%'\n", + "SentSeg.layout.height = daheight\n", + "SolveShorts = widgets.ToggleButton(\n", + " value=False,\n", + " description='Abkürzungen erklären',\n", + " disabled=False\n", + ")\n", + "SolveShorts.layout.width = '80%'\n", + "SolveShorts.layout.height = '90%'\n", + "FremdWB = widgets.ToggleButton(\n", + " value=True,\n", + " description='FremdWoerterbuch',\n", + " disabled=False\n", + ")\n", + "FremdWB.layout.width = '90%'\n", + "FremdWB.layout.height = '90%'\n", + "\n", + "Appendixes = widgets.ToggleButton(\n", + " value=True,\n", + " description='Charakterisierung pro Satz',\n", + " disabled=False\n", + ")\n", + "Appendixes.layout.width = '120%'\n", + "Appendixes.layout.height = '80%'\n", + "\n", + "Medio = widgets.ToggleButton(\n", + " value=True,\n", + " description='Mediopunkte',\n", + " disabled=False\n", + ")\n", + "Medio.layout.width = '50%'\n", + "Medio.layout.height = '90%'\n", + "\n", + "#items1 = [SentSeg, SolveShorts]\n", + "#items2 = [SayYes, PassivErsetzen]\n", + "#items3 = [GenitiveErsetzen, KonjunktiveErsetzen]\n", + "#items = [Textfeld, SentSeg, SolveShorts, SayYes, PassivErsetzen, GenitiveErsetzen, KonjunktiveErsetzen]\n", + "#display(SentSeg, SolveShorts, SayYes, PassivErsetzen, GenitiveErsetzen, KonjunktiveErsetzen)\n", + "#widgets.GridBox(items, layout=widgets.Layout(grid_template_columns=\"repeat(3, 100px)\"))\n", + "\n", + "\n", + "\n", + "#widgets.HBox(items1)\n", + "#widgets.HBox(items2)\n", + "#widgets.HBox(items3)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "import ipywidgets\n", + "out = 'Hier kommt der übersetzte Text heraus.'\n", + "\n", + "TextFeld.add_class(\"thotext\")\n", + "TextFelddouble.add_class(\"thotext\")\n", + "#display(OutTextFeld)\n", + "items = [SentSeg, SolveShorts, SayYes, PassivErsetzen, GenitiveErsetzen, KonjunktiveErsetzen, FremdWB, Appendixes, Medio] \n", + "#display(SentSeg, SolveShorts, SayYes, PassivErsetzen, GenitiveErsetzen, KonjunktiveErsetzen)\n", + "Grid = widgets.GridBox(items, layout=widgets.Layout(justify_items=\"center\", grid_template_columns=\"repeat(3, 30%)\", grid_gap=\"4.5%\", height=\"320px\"))\n" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "c08292c98ddf447ca1c19117241980b8", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "GridBox(children=(ToggleButton(value=True, description='Eine Aussage pro Satz', layout=Layout(height='100%', w…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "\n", + "display(HTML('
'))\n", + "display(Grid)\n", + "\n", + "\n", + "\n", + "\n", + "def function():\n", + " out = 'Wählen Sie ein Kästchen aus!'\n", + " try:\n", + " insentences, punctuations = oi.CellInputText2SplitsentencesWithspacy(TextFeld.value)\n", + " except:\n", + " OutTextFeld.placeholder = 'Bitte auf die Zeichensetzung achten! '\n", + " return\n", + " \n", + " check = 0\n", + " #print('insentences',insentences)\n", + " #print(punctuations)\n", + " if SayYes.value == True:\n", + " \n", + " print('ersetze Gegenteile..')\n", + " outsentences = sy.replaceOpposites(insentences)\n", + " check = 1\n", + " \n", + " \n", + " \n", + " \n", + " if Appendixes.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('generiere ist-Aussagen..')\n", + " outsentences, punctuations = sent_seg.putAppendixesIntoOwnSentences(insentences, punctuations)\n", + " \n", + " if SentSeg.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('forme zu einem Satz pro Aussage um..')\n", + " sentsegformattedsentences = []\n", + " for sentence in insentences:\n", + " \n", + " sentsegformattedsentences.append([sentence])\n", + " \n", + " #print(sentsegformattedsentences)\n", + " sentences = sent_seg.CommaSentenceOrNot(sentsegformattedsentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetUtteranceNumber(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetQuestionOrNot(sentences)\n", + " #print(sentences)\n", + " sentences, punctuations = sent_seg.AndOrSolver(sentences, punctuations)\n", + " #print(len(punctuations))\n", + " #print('sentences after AndOrSolver', sentences, punctuations)\n", + " sentences = sent_seg.CommaSentenceOrNot(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetUtteranceNumber(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetQuestionOrNot(sentences)\n", + " #print(sentences)\n", + " sentences, punctuations = sent_seg.SplitSentencesIntoHauptNebenTuple(sentences, punctuations)\n", + " #print(len(punctuations))\n", + " #print('sentences after split haupt neben', sentences)\n", + " sentences = sent_seg.CommaSentenceOrNot(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetUtteranceNumber(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetQuestionOrNot(sentences)\n", + " #print(sentences)\n", + " outsentences, punctuations = sent_seg.SplitCommatas(sentences, punctuations)\n", + " #print(len(punctuations))\n", + " #print('out',outsentences)\n", + " #print('out', punctuations)\n", + " check = 1\n", + " \n", + " \n", + " if SolveShorts.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('erklaere Abkuerzungen..')\n", + " outsentences = solSh.ExplainShortsInSentencesWithBrackets(insentences)\n", + " check = 1\n", + " #print(len(punctuations)) \n", + " #print('sentences after solveshorts', outsentences)\n", + " \n", + " if PassivErsetzen.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('ersetze Passiv Formen..')\n", + " outsentences = p2a.replacePassivForms(insentences)\n", + " check = 1\n", + " #print(len(punctuations))\n", + " #print('sentences after p2a', outsentences)\n", + " \n", + " if GenitiveErsetzen.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " #print('replacing genitiv forms with dativ..')\n", + " outsentences = gs.ReplaceGenitivWithDativ(insentences)\n", + " check = 1\n", + " #print(len(punctuations))\n", + " #print('sentences after gs', outsentences)\n", + " \n", + " if check == 1:\n", + " newinsentences = []\n", + " for sentence in outsentences: \n", + " newinsentences.append([word.replace('ö','oe').replace('ü','ue').replace('ä','ae').replace('ß','ss') for word in sentence])\n", + " \n", + " outsentences =newinsentences\n", + " if check != 1:\n", + " newinsentences = []\n", + " for sentence in insentences: \n", + " newinsentences.append([word.replace('ö','oe').replace('ü','ue').replace('ä','ae').replace('ß','ss') for word in sentence])\n", + " \n", + " insentences =newinsentences\n", + " #print()\n", + " if KonjunktiveErsetzen.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('ersetze Konjunktive..')\n", + " \n", + " outsentences = cs.replaceConjunctives(insentences)\n", + " #print('outsentences')\n", + " check = 1\n", + " \n", + " #print('sentences after cs', outsentences)\n", + " print(len(punctuations))\n", + " \n", + " if FremdWB.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('Suche Woerterbucheintraege..')\n", + " \n", + " outsentences, punctuations = fwb.fremdEintragAppend(insentences, punctuations)\n", + " #print('outsentences')\n", + " check = 1\n", + " \n", + " if Medio.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('Ersetze lange Woerter mit Mediopunkten..')\n", + " \n", + " outsentences, punctuations = medi.Medioreplace(insentences, punctuations)\n", + " #print('outsentences')\n", + " check = 1\n", + " #print('sentences after medios', outsentences)\n", + " \n", + " \n", + " #print('sentences after fwb', outsentences)\n", + " \n", + " print(len(punctuations))\n", + " \n", + " if check == 1:\n", + " out = ''\n", + " #print('just before looking if the lenght is the same')\n", + " #print(len(outsentences), len(punctuations))\n", + " if len(outsentences) == len(punctuations):\n", + " #print('the length is the same')\n", + " for n in range(len(outsentences)):\n", + " outsentence = outsentences[n]\n", + " outsentence[0] = outsentence[0].title()\n", + " out += ' '.join(outsentence) + punctuations[n] + '\\n'\n", + " \n", + " \n", + " OutTextFeld.value = out\n", + " TextFelddouble.value = TextFeld.value\n", + " display(TextFelddouble)\n", + " \n", + " return \n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "3ca86c6e7e39437eafa36439e3337b42", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "interactive(children=(Button(description='Übersetzen in Leichte Sprache', style=ButtonStyle()), Output()), _do…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "#from IPython.display import Image\n", + "#i = Image(filename='Babelfish.png')\n", + "\n", + "#i.width = '60%'\n", + "#display(i)\n", + "\n", + "#print(widgets.interact_manual.opts)\n", + "\n", + "widgets.interact_manual.opts['manual_name']= 'Übersetzen in Leichte Sprache'\n", + "ola = widgets.interact_manual(function)\n", + "ola.widget.children[0].style.button_color = 'lightgreen'\n", + "ola.widget.children[0].layout.height = '60px'\n", + "ola.widget.children[0].layout.width = '99%'\n", + "\n", + "#widgets.GridBox([ola], layout=widgets.Layout(grid_template_columns=\"repeat(2, 300px)\"))" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "0d6f03c93f0147cd9f33d2a053672b0c", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Textarea(value='', layout=Layout(height='180px', width='99%'), placeholder='Hier kommt der übersetzte Text her…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "OutTextFeld = ipywidgets.Textarea(placeholder=out, disabled=False)\n", + "OutTextFeld.layout.height = '180px'\n", + "OutTextFeld.layout.width = '99%'\n", + "OutTextFeld.add_class(\"thetext\")\n", + "display(OutTextFeld)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [], + "source": [ + "beschreibung = 'Textfeld für die verbesserte Übersetzung. Satzzeichen bitte nicht vergessen! \\nFalls ein neuer Eintrag ins Fremdwörterbuch vorgenommen werden soll, schreibe einfach unter die Verbesserungen einen Eintrag der Form: [\\'Abfall\\', \\'Abfall sind Sachen die wir nicht mehr brauchen\\'] \\nFalls ein neuer Eintrag in die Mediopunkte-Datenbank vorgenommen werden soll, bitte schreibe unter die Verbesserungen einen Eintrag der Form: [\\'Mediopunkt\\', \\'Medio·punkt\\']' \n", + "VerbeTextFeld = ipywidgets.Textarea(placeholder=beschreibung, disabled=False)\n", + "VerbeTextFeld.layout.height = '180px'\n", + "VerbeTextFeld.layout.width = '99%'\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "\n", + "def Absendefunction():\n", + " \n", + " \n", + "\n", + " \n", + " #print(VerbeTextFeld.value)\n", + " #print(TextFeld.value)\n", + " #print(OutTextFeld.value)\n", + " \n", + " try:\n", + "\n", + " insentences, punctuations = oi.CellInputText2SplitsentencesWithspacy(VerbeTextFeld.value)\n", + " insentences1, punctuations1 = oi.CellInputText2SplitsentencesWithspacy(TextFeld.value)\n", + " insentences2, punctuations2 = oi.CellInputText2SplitsentencesWithspacy(OutTextFeld.value)\n", + "\n", + " #print(insentences2)\n", + "\n", + " #print(insentences, punctuations)\n", + " indexDerVerbesserungen = 0\n", + " number = 0\n", + " with open('Verbesserungen/indexDerVerbesserungen.txt', 'r') as dok:\n", + " for number in dok:\n", + " number = int(number)\n", + " if number >= 0:\n", + " indexDerVerbesserungen = number\n", + " number += 1\n", + "\n", + " with open('Verbesserungen/indexDerVerbesserungen.txt', 'w') as dokk:\n", + " dokk.write(str(number))\n", + "\n", + "\n", + " with open('Verbesserungen/Verbesserungen' + str(number) + '.txt','w+') as doc:\n", + " for n in range(len(insentences)):\n", + " npunct = punctuations[n]\n", + " writeline = insentences[n]+ [npunct]\n", + "\n", + " writestring = ' '.join(writeline)\n", + "\n", + " doc.write(writestring + '\\n')\n", + "\n", + " with open('Verbesserungen/Input' + str(number) + '.txt','w+') as docc:\n", + " for n in range(len(insentences1)):\n", + " npunct = punctuations1[n]\n", + " writeline = insentences1[n]+ [npunct]\n", + "\n", + " writestring = ' '.join(writeline)\n", + "\n", + " docc.write(writestring + '\\n')\n", + " with open('Verbesserungen/Output' + str(number) + '.txt','w+') as dock:\n", + " #print(insentences2)\n", + " for n in range(len(insentences2)):\n", + " #print(len(insentences2))\n", + "\n", + " #print(punctuations2)\n", + " npunct = punctuations2[n]\n", + " writeline = insentences2[n]+ [npunct]\n", + "\n", + " writestring = ' '.join(writeline)\n", + "\n", + " dock.write(writestring + '\\n')\n", + "\n", + " VerbeTextFeld.value = ''\n", + " OutTextFeld.value = ''\n", + " VerbeTextFeld.placeholder = beschreibung\n", + " OutTextFeld.placeholder = 'Hier kommt der übersetzte Text raus.'\n", + " except:\n", + " VerbeTextFeld.placeholder = 'Es gab einen Fehler. Eventuell ist die Zeichensetzung nicht ok. \\n \\n' + beschreibung\n", + " \n", + " \n", + " return \n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "1713cde35a884104b20056d5694d168a", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Textarea(value='', layout=Layout(height='180px', width='99%'), placeholder=\"Textfeld für die verbesserte Übers…" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "d4100a2d84d34630acf974f78d316abc", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "interactive(children=(Button(description='Absenden', style=ButtonStyle()), Output()), _dom_classes=('widget-in…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "VerbeTextFeld.add_class(\"thetext3\")\n", + "display(VerbeTextFeld)\n", + "display(HTML('
'))\n", + "widgets.interact_manual.opts['manual_name']= 'Absenden'\n", + "AbsendenUndSchreiben = widgets.interact_manual(Absendefunction)\n", + "AbsendenUndSchreiben.widget.children[0].style.button_color = 'lightblue'\n", + "AbsendenUndSchreiben.widget.children[0].layout.height = '60px'\n", + "AbsendenUndSchreiben.widget.children[0].layout.width = '99%'\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%html\n", + "" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%html\n", + "" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "data": { + "text/html": [ + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%html\n", + "" + ] + } + ], + "metadata": { + "celltoolbar": "Raw Cell Format", + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.5.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/Prototyp/.Prototype-13.ipynb b/Prototyp/.Prototype-13.ipynb new file mode 100644 index 00000000..50a76c09 --- /dev/null +++ b/Prototyp/.Prototype-13.ipynb @@ -0,0 +1,2313 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "#from oi import *\n", + "\n", + "#oi = oi()\n", + "\n", + "#import ipyvuetify as v\n", + "\n", + "#state = False\n", + "#oi.toggle_code(state)\n", + "\n", + "#button = widgets.ToggleButton(state, description = button_descriptions[state])\n", + "\n", + "\n", + "#button.observe(oi.button_action, \"value\")\n", + "\n", + "#button.layout.height = '50px'\n", + "#button.layout.width = '100%'\n", + "#button.add_class(\"thobutton\")\n", + "\n", + "#display(button)\n", + "#button.button_style = 'danger'\n" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "\n", + "

Ein Klick auf das Logo - und es geht zum Code

\n", + "\n", + "\n", + " \n", + "\n", + " \n", + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%html\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "\n", + "

Ein Klick auf das Logo - und es geht zum Code

\n", + "\n", + "\n", + " \n", + "\n", + " \n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "#%%html\n", + "#\n", + "#\n", + "#\n", + "#\n", + "#\n", + "#

Ein Klick auf das Logo - und es geht zum Code

\n", + "#" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [], + "source": [ + "#%%html\n", + "#" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "#from ipywidgets import widgets\n", + "#button = widgets.Button(description='Click me')\n", + "#display(button)\n", + "\n", + "#def on_button_clicked(b):\n", + "# print('button clicked')\n", + "\n", + "#button.on_click(on_button_clicked)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "\n", + "# importing the libraries\n", + "#print('importing libraries')\n", + "#from SolveShorts import *\n", + "#import SentSeg\n", + "#from SayYes import *\n", + "#from Passiv2Aktiv import *\n", + "#from GenitivSolve import *\n", + "#from ConjunctSolve import *\n", + "#from FremdWB import *\n", + "#from Medio import *\n", + "#from oi import *\n", + "#print('done')\n", + "\n", + "\n", + "# Initializing the libraries\n", + "#print('initializing the libraries')\n", + "#print('1')\n", + "#solSh = SolveShorts('hkldbShorts.hkl', 'hkldbShorts_All.hkl')\n", + "#print('2')\n", + "#sent_seg = SentSeg.SentSeg('de')\n", + "#print('3')\n", + "#sy = SayYes(None, None)\n", + "#print('4')\n", + "#p2a = Passiv2Aktiv(None, None, None)\n", + "#print('5')\n", + "#gs = GenitivSolve()\n", + "#print('6')\n", + "#cs = ConjunctSolve(None,None)\n", + "#print('7')\n", + "#oi = oi()\n", + "#print('8')\n", + "#fwb = FremdWB(None,None)\n", + "#print('9')\n", + "#medi = Medio(None,None)\n", + "#print('done')\n", + "\n", + "\n", + "# loading the databases and models\n", + "#print('loading SolveShorts Databases')\n", + "#solSh.load_DB_into_FASTsearch()\n", + "#print('loading SentSeg Databases')\n", + "#sent_seg.LoadSentGlueSGDandGSUtils()\n", + "#print('loading SayYes Databases')\n", + "#sy.load_DB_into_FASTsearch()\n", + "#print('loading passiv2active Databases')\n", + "#p2a.load_DB_into_FASTsearch()\n", + "#print('loading conjunctivesolve Databases')\n", + "#cs.load_DB_into_FASTsearch()\n", + "#print('loading the fremdwb Databases')\n", + "#fwb.load_DB_into_FASTsearch()\n", + "#print('loading the mediodot Databases')\n", + "#medi.load_DB_into_FASTsearch()\n", + "\n", + "#print('done')\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "106e70dd208f4de29ae10874823d30a8", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Textarea(value='', layout=Layout(height='180px', width='99%'), placeholder='Hier den Text eingeben, darunter k…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "\n", + "#print('done')\n", + "\n", + "#print('loading passiv2active Databases')\n", + "#from Passiv2Aktiv import *\n", + "#p2a = Passiv2Aktiv(None, None, None)\n", + "#p2a.load_DB_into_FASTsearch()\n", + "#print('done')\n", + "#print('loading genitiv solve')\n", + "#from GenitivSolve import *\n", + "#gs = GenitivSolve()\n", + "\n", + "#from FremdWB import *\n", + "#fwb = FremdWB(None,None)\n", + "#fwb.load_DB_into_FASTsearch()\n", + "\n", + "#from SolveShorts import *\n", + "#print('loading SolveShorts Databases')\n", + "#solSh.load_DB_into_FASTsearch()\n", + "\n", + "#from SayYes import *\n", + "#sy = SayYes(None, None)\n", + "#print('loading SayYes Databases')\n", + "#sy.load_DB_into_FASTsearch()\n", + "\n", + "#import SentSeg\n", + "#sent_seg = SentSeg.SentSeg('de')\n", + "#print('loading SentSeg Databases')\n", + "#sent_seg.LoadSentGlueSGDandGSUtils()\n", + "#print('loading conjunctsolve')\n", + "#from ConjunctSolve import *\n", + "#cs = ConjunctSolve(None,None)\n", + "#print('done')\n", + "#print('loading conjunctivesolve Databases')\n", + "#cs.load_DB_into_FASTsearch()\n", + "#print('done')\n", + "#from oi import *\n", + "#oi = oi()\n", + "\n", + "#print('loading session..')\n", + "\n", + "#print('done')\n", + "import dill\n", + "dill.load_session('voilastate.db')\n", + "\n", + "#from SolveShorts import *\n", + "#print('loading SolveShorts Databases')\n", + "#solSh.load_DB_into_FASTsearch()\n", + "\n", + "#import SentSeg\n", + "#sent_seg = SentSeg.SentSeg('de')\n", + "#print('loading SentSeg Databases')\n", + "#sent_seg.LoadSentGlueSGDandGSUtils()\n", + "\n", + "#from FremdWB import *\n", + "#fwb = FremdWB(None,None)\n", + "#fwb.load_DB_into_FASTsearch()\n", + "\n", + "#from Medio import *\n", + "#medi = Medio(None,None)\n", + "#medi.load_DB_into_FASTsearch()\n", + "\n", + "\n", + "#import dill\n", + "#print('dumping the session')\n", + "#dill.dump_session('voilastate.db')\n", + "#print('done')\n", + "\n", + "#from oi import *\n", + "#oi = oi()\n", + "\n", + "import ipywidgets as widgets\n", + "\n", + "TextFeld = widgets.Textarea(placeholder='Hier den Text eingeben, darunter können die Module aktiviert(grün) oder deaktiviert(pink) werden', disabled=False)\n", + "#print(TextFeld.layout.height)\n", + "TextFeld.layout.height = '180px'\n", + "TextFeld.layout.width = '99%'\n", + "\n", + "TextFelddouble = widgets.Textarea(placeholder='Hier den Text eingeben, darunter können die Module aktiviert(grün) oder deaktiviert(pink) werden', disabled=False)\n", + "#print(TextFeld.layout.height)\n", + "TextFelddouble.layout.height = '180px'\n", + "TextFelddouble.layout.width = '99%'\n", + "TextFelddouble.disabled=True\n", + "\n", + "display(TextFeld)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "\n", + "dawidth = '100%'\n", + "daheight = '100%'\n", + "KonjunktiveErsetzen = widgets.ToggleButton(\n", + " value=False,\n", + " description='Konjunktive ersetzen',\n", + " disabled=False,\n", + ")\n", + "KonjunktiveErsetzen.layout.width = dawidth\n", + "KonjunktiveErsetzen.layout.height = '80%'\n", + "\n", + "GenitiveErsetzen = widgets.ToggleButton(\n", + " value=True,\n", + " description='Genitiv ersetzen',\n", + " disabled=False\n", + ")\n", + "GenitiveErsetzen.layout.width = '60%'\n", + "GenitiveErsetzen.layout.height = daheight\n", + "\n", + "PassivErsetzen = widgets.ToggleButton(\n", + " value=True,\n", + " description='Passiv ersetzen',\n", + " disabled=False\n", + ")\n", + "PassivErsetzen.layout.width = '70%'\n", + "PassivErsetzen.layout.height = '90%'\n", + "\n", + "SayYes = widgets.ToggleButton(\n", + " value=True,\n", + " description='Verneinungen ersetzen',\n", + " disabled=False\n", + ")\n", + "SayYes.layout.width = '80%'\n", + "SayYes.layout.height = '80%'\n", + "SentSeg = widgets.ToggleButton(\n", + " value=True,\n", + " description='Eine Aussage pro Satz',\n", + " disabled=False\n", + ")\n", + "SentSeg.layout.width = '60%'\n", + "SentSeg.layout.height = daheight\n", + "SolveShorts = widgets.ToggleButton(\n", + " value=False,\n", + " description='Abkürzungen erklären',\n", + " disabled=False\n", + ")\n", + "SolveShorts.layout.width = '80%'\n", + "SolveShorts.layout.height = '90%'\n", + "FremdWB = widgets.ToggleButton(\n", + " value=True,\n", + " description='FremdWoerterbuch',\n", + " disabled=False\n", + ")\n", + "FremdWB.layout.width = '90%'\n", + "FremdWB.layout.height = '90%'\n", + "\n", + "Appendixes = widgets.ToggleButton(\n", + " value=True,\n", + " description='Charakterisierung pro Satz',\n", + " disabled=False\n", + ")\n", + "Appendixes.layout.width = '120%'\n", + "Appendixes.layout.height = '80%'\n", + "\n", + "Medio = widgets.ToggleButton(\n", + " value=True,\n", + " description='Mediopunkte',\n", + " disabled=False\n", + ")\n", + "Medio.layout.width = '50%'\n", + "Medio.layout.height = '90%'\n", + "\n", + "#items1 = [SentSeg, SolveShorts]\n", + "#items2 = [SayYes, PassivErsetzen]\n", + "#items3 = [GenitiveErsetzen, KonjunktiveErsetzen]\n", + "#items = [Textfeld, SentSeg, SolveShorts, SayYes, PassivErsetzen, GenitiveErsetzen, KonjunktiveErsetzen]\n", + "#display(SentSeg, SolveShorts, SayYes, PassivErsetzen, GenitiveErsetzen, KonjunktiveErsetzen)\n", + "#widgets.GridBox(items, layout=widgets.Layout(grid_template_columns=\"repeat(3, 100px)\"))\n", + "\n", + "\n", + "\n", + "#widgets.HBox(items1)\n", + "#widgets.HBox(items2)\n", + "#widgets.HBox(items3)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "import ipywidgets\n", + "out = 'Hier kommt der übersetzte Text heraus.'\n", + "\n", + "TextFeld.add_class(\"thotext\")\n", + "TextFelddouble.add_class(\"thotext\")\n", + "#display(OutTextFeld)\n", + "items = [SentSeg, SolveShorts, SayYes, PassivErsetzen, GenitiveErsetzen, KonjunktiveErsetzen, FremdWB, Appendixes, Medio] \n", + "#display(SentSeg, SolveShorts, SayYes, PassivErsetzen, GenitiveErsetzen, KonjunktiveErsetzen)\n", + "Grid = widgets.GridBox(items, layout=widgets.Layout(justify_items=\"center\", grid_template_columns=\"repeat(3, 30%)\", grid_gap=\"4.5%\", height=\"320px\"))\n" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "c08292c98ddf447ca1c19117241980b8", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "GridBox(children=(ToggleButton(value=True, description='Eine Aussage pro Satz', layout=Layout(height='100%', w…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "\n", + "display(HTML('
'))\n", + "display(Grid)\n", + "\n", + "\n", + "\n", + "\n", + "def function():\n", + " out = 'Wählen Sie ein Kästchen aus!'\n", + " try:\n", + " insentences, punctuations = oi.CellInputText2SplitsentencesWithspacy(TextFeld.value)\n", + " except:\n", + " OutTextFeld.placeholder = 'Bitte auf die Zeichensetzung achten! '\n", + " return\n", + " \n", + " check = 0\n", + " #print('insentences',insentences)\n", + " #print(punctuations)\n", + " if SayYes.value == True:\n", + " \n", + " print('ersetze Gegenteile..')\n", + " outsentences = sy.replaceOpposites(insentences)\n", + " check = 1\n", + " \n", + " \n", + " \n", + " \n", + " if Appendixes.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('generiere ist-Aussagen..')\n", + " outsentences, punctuations = sent_seg.putAppendixesIntoOwnSentences(insentences, punctuations)\n", + " \n", + " if SentSeg.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('forme zu einem Satz pro Aussage um..')\n", + " sentsegformattedsentences = []\n", + " for sentence in insentences:\n", + " \n", + " sentsegformattedsentences.append([sentence])\n", + " \n", + " #print(sentsegformattedsentences)\n", + " sentences = sent_seg.CommaSentenceOrNot(sentsegformattedsentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetUtteranceNumber(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetQuestionOrNot(sentences)\n", + " #print(sentences)\n", + " sentences, punctuations = sent_seg.AndOrSolver(sentences, punctuations)\n", + " #print(len(punctuations))\n", + " #print('sentences after AndOrSolver', sentences, punctuations)\n", + " sentences = sent_seg.CommaSentenceOrNot(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetUtteranceNumber(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetQuestionOrNot(sentences)\n", + " #print(sentences)\n", + " sentences, punctuations = sent_seg.SplitSentencesIntoHauptNebenTuple(sentences, punctuations)\n", + " #print(len(punctuations))\n", + " #print('sentences after split haupt neben', sentences)\n", + " sentences = sent_seg.CommaSentenceOrNot(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetUtteranceNumber(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetQuestionOrNot(sentences)\n", + " #print(sentences)\n", + " outsentences, punctuations = sent_seg.SplitCommatas(sentences, punctuations)\n", + " #print(len(punctuations))\n", + " #print('out',outsentences)\n", + " #print('out', punctuations)\n", + " check = 1\n", + " \n", + " \n", + " if SolveShorts.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('erklaere Abkuerzungen..')\n", + " outsentences = solSh.ExplainShortsInSentencesWithBrackets(insentences)\n", + " check = 1\n", + " #print(len(punctuations)) \n", + " #print('sentences after solveshorts', outsentences)\n", + " \n", + " if PassivErsetzen.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('ersetze Passiv Formen..')\n", + " outsentences = p2a.replacePassivForms(insentences)\n", + " check = 1\n", + " #print(len(punctuations))\n", + " #print('sentences after p2a', outsentences)\n", + " \n", + " if GenitiveErsetzen.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " #print('replacing genitiv forms with dativ..')\n", + " outsentences = gs.ReplaceGenitivWithDativ(insentences)\n", + " check = 1\n", + " #print(len(punctuations))\n", + " #print('sentences after gs', outsentences)\n", + " \n", + " if check == 1:\n", + " newinsentences = []\n", + " for sentence in outsentences: \n", + " newinsentences.append([word.replace('ö','oe').replace('ü','ue').replace('ä','ae').replace('ß','ss') for word in sentence])\n", + " \n", + " outsentences =newinsentences\n", + " if check != 1:\n", + " newinsentences = []\n", + " for sentence in insentences: \n", + " newinsentences.append([word.replace('ö','oe').replace('ü','ue').replace('ä','ae').replace('ß','ss') for word in sentence])\n", + " \n", + " insentences =newinsentences\n", + " #print()\n", + " if KonjunktiveErsetzen.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('ersetze Konjunktive..')\n", + " \n", + " outsentences = cs.replaceConjunctives(insentences)\n", + " #print('outsentences')\n", + " check = 1\n", + " \n", + " #print('sentences after cs', outsentences)\n", + " print(len(punctuations))\n", + " \n", + " if FremdWB.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('Suche Woerterbucheintraege..')\n", + " \n", + " outsentences, punctuations = fwb.fremdEintragAppend(insentences, punctuations)\n", + " #print('outsentences')\n", + " check = 1\n", + " \n", + " if Medio.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('Ersetze lange Woerter mit Mediopunkten..')\n", + " \n", + " outsentences, punctuations = medi.Medioreplace(insentences, punctuations)\n", + " #print('outsentences')\n", + " check = 1\n", + " #print('sentences after medios', outsentences)\n", + " \n", + " \n", + " #print('sentences after fwb', outsentences)\n", + " \n", + " print(len(punctuations))\n", + " \n", + " if check == 1:\n", + " out = ''\n", + " #print('just before looking if the lenght is the same')\n", + " #print(len(outsentences), len(punctuations))\n", + " if len(outsentences) == len(punctuations):\n", + " #print('the length is the same')\n", + " for n in range(len(outsentences)):\n", + " outsentence = outsentences[n]\n", + " outsentence[0] = outsentence[0].title()\n", + " out += ' '.join(outsentence) + punctuations[n] + '\\n'\n", + " \n", + " \n", + " OutTextFeld.value = out\n", + " TextFelddouble.value = TextFeld.value\n", + " display(TextFelddouble)\n", + " \n", + " return \n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "3ca86c6e7e39437eafa36439e3337b42", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "interactive(children=(Button(description='Übersetzen in Leichte Sprache', style=ButtonStyle()), Output()), _do…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "#from IPython.display import Image\n", + "#i = Image(filename='Babelfish.png')\n", + "\n", + "#i.width = '60%'\n", + "#display(i)\n", + "\n", + "#print(widgets.interact_manual.opts)\n", + "\n", + "widgets.interact_manual.opts['manual_name']= 'Übersetzen in Leichte Sprache'\n", + "ola = widgets.interact_manual(function)\n", + "ola.widget.children[0].style.button_color = 'lightgreen'\n", + "ola.widget.children[0].layout.height = '60px'\n", + "ola.widget.children[0].layout.width = '99%'\n", + "\n", + "#widgets.GridBox([ola], layout=widgets.Layout(grid_template_columns=\"repeat(2, 300px)\"))" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "0d6f03c93f0147cd9f33d2a053672b0c", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Textarea(value='', layout=Layout(height='180px', width='99%'), placeholder='Hier kommt der übersetzte Text her…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "OutTextFeld = ipywidgets.Textarea(placeholder=out, disabled=False)\n", + "OutTextFeld.layout.height = '180px'\n", + "OutTextFeld.layout.width = '99%'\n", + "OutTextFeld.add_class(\"thetext\")\n", + "display(OutTextFeld)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [], + "source": [ + "beschreibung = 'Textfeld für die verbesserte Übersetzung. Satzzeichen bitte nicht vergessen! \\nFalls ein neuer Eintrag ins Fremdwörterbuch vorgenommen werden soll, schreibe einfach unter die Verbesserungen einen Eintrag der Form: [\\'Abfall\\', \\'Abfall sind Sachen die wir nicht mehr brauchen\\'] \\nFalls ein neuer Eintrag in die Mediopunkte-Datenbank vorgenommen werden soll, bitte schreibe unter die Verbesserungen einen Eintrag der Form: [\\'Mediopunkt\\', \\'Medio·punkt\\']' \n", + "VerbeTextFeld = ipywidgets.Textarea(placeholder=beschreibung, disabled=False)\n", + "VerbeTextFeld.layout.height = '180px'\n", + "VerbeTextFeld.layout.width = '99%'\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "\n", + "def Absendefunction():\n", + " \n", + " \n", + "\n", + " \n", + " #print(VerbeTextFeld.value)\n", + " #print(TextFeld.value)\n", + " #print(OutTextFeld.value)\n", + " \n", + " try:\n", + "\n", + " insentences, punctuations = oi.CellInputText2SplitsentencesWithspacy(VerbeTextFeld.value)\n", + " insentences1, punctuations1 = oi.CellInputText2SplitsentencesWithspacy(TextFeld.value)\n", + " insentences2, punctuations2 = oi.CellInputText2SplitsentencesWithspacy(OutTextFeld.value)\n", + "\n", + " #print(insentences2)\n", + "\n", + " #print(insentences, punctuations)\n", + " indexDerVerbesserungen = 0\n", + " number = 0\n", + " with open('Verbesserungen/indexDerVerbesserungen.txt', 'r') as dok:\n", + " for number in dok:\n", + " number = int(number)\n", + " if number >= 0:\n", + " indexDerVerbesserungen = number\n", + " number += 1\n", + "\n", + " with open('Verbesserungen/indexDerVerbesserungen.txt', 'w') as dokk:\n", + " dokk.write(str(number))\n", + "\n", + "\n", + " with open('Verbesserungen/Verbesserungen' + str(number) + '.txt','w+') as doc:\n", + " for n in range(len(insentences)):\n", + " npunct = punctuations[n]\n", + " writeline = insentences[n]+ [npunct]\n", + "\n", + " writestring = ' '.join(writeline)\n", + "\n", + " doc.write(writestring + '\\n')\n", + "\n", + " with open('Verbesserungen/Input' + str(number) + '.txt','w+') as docc:\n", + " for n in range(len(insentences1)):\n", + " npunct = punctuations1[n]\n", + " writeline = insentences1[n]+ [npunct]\n", + "\n", + " writestring = ' '.join(writeline)\n", + "\n", + " docc.write(writestring + '\\n')\n", + " with open('Verbesserungen/Output' + str(number) + '.txt','w+') as dock:\n", + " #print(insentences2)\n", + " for n in range(len(insentences2)):\n", + " #print(len(insentences2))\n", + "\n", + " #print(punctuations2)\n", + " npunct = punctuations2[n]\n", + " writeline = insentences2[n]+ [npunct]\n", + "\n", + " writestring = ' '.join(writeline)\n", + "\n", + " dock.write(writestring + '\\n')\n", + "\n", + " VerbeTextFeld.value = ''\n", + " OutTextFeld.value = ''\n", + " VerbeTextFeld.placeholder = beschreibung\n", + " OutTextFeld.placeholder = 'Hier kommt der übersetzte Text raus.'\n", + " except:\n", + " VerbeTextFeld.placeholder = 'Es gab einen Fehler. Eventuell ist die Zeichensetzung nicht ok. \\n \\n' + beschreibung\n", + " \n", + " \n", + " return \n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "1713cde35a884104b20056d5694d168a", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Textarea(value='', layout=Layout(height='180px', width='99%'), placeholder=\"Textfeld für die verbesserte Übers…" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "d4100a2d84d34630acf974f78d316abc", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "interactive(children=(Button(description='Absenden', style=ButtonStyle()), Output()), _dom_classes=('widget-in…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "VerbeTextFeld.add_class(\"thetext3\")\n", + "display(VerbeTextFeld)\n", + "display(HTML('
'))\n", + "widgets.interact_manual.opts['manual_name']= 'Absenden'\n", + "AbsendenUndSchreiben = widgets.interact_manual(Absendefunction)\n", + "AbsendenUndSchreiben.widget.children[0].style.button_color = 'lightblue'\n", + "AbsendenUndSchreiben.widget.children[0].layout.height = '60px'\n", + "AbsendenUndSchreiben.widget.children[0].layout.width = '99%'\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%html\n", + "" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%html\n", + "" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "data": { + "text/html": [ + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%html\n", + "" + ] + } + ], + "metadata": { + "celltoolbar": "Raw Cell Format", + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.5.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/Prototyp/.Prototype-14.ipynb b/Prototyp/.Prototype-14.ipynb new file mode 100644 index 00000000..50a76c09 --- /dev/null +++ b/Prototyp/.Prototype-14.ipynb @@ -0,0 +1,2313 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "#from oi import *\n", + "\n", + "#oi = oi()\n", + "\n", + "#import ipyvuetify as v\n", + "\n", + "#state = False\n", + "#oi.toggle_code(state)\n", + "\n", + "#button = widgets.ToggleButton(state, description = button_descriptions[state])\n", + "\n", + "\n", + "#button.observe(oi.button_action, \"value\")\n", + "\n", + "#button.layout.height = '50px'\n", + "#button.layout.width = '100%'\n", + "#button.add_class(\"thobutton\")\n", + "\n", + "#display(button)\n", + "#button.button_style = 'danger'\n" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "\n", + "

Ein Klick auf das Logo - und es geht zum Code

\n", + "\n", + "\n", + " \n", + "\n", + " \n", + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%html\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "\n", + "

Ein Klick auf das Logo - und es geht zum Code

\n", + "\n", + "\n", + " \n", + "\n", + " \n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "#%%html\n", + "#\n", + "#\n", + "#\n", + "#\n", + "#\n", + "#

Ein Klick auf das Logo - und es geht zum Code

\n", + "#" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [], + "source": [ + "#%%html\n", + "#" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "#from ipywidgets import widgets\n", + "#button = widgets.Button(description='Click me')\n", + "#display(button)\n", + "\n", + "#def on_button_clicked(b):\n", + "# print('button clicked')\n", + "\n", + "#button.on_click(on_button_clicked)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "\n", + "# importing the libraries\n", + "#print('importing libraries')\n", + "#from SolveShorts import *\n", + "#import SentSeg\n", + "#from SayYes import *\n", + "#from Passiv2Aktiv import *\n", + "#from GenitivSolve import *\n", + "#from ConjunctSolve import *\n", + "#from FremdWB import *\n", + "#from Medio import *\n", + "#from oi import *\n", + "#print('done')\n", + "\n", + "\n", + "# Initializing the libraries\n", + "#print('initializing the libraries')\n", + "#print('1')\n", + "#solSh = SolveShorts('hkldbShorts.hkl', 'hkldbShorts_All.hkl')\n", + "#print('2')\n", + "#sent_seg = SentSeg.SentSeg('de')\n", + "#print('3')\n", + "#sy = SayYes(None, None)\n", + "#print('4')\n", + "#p2a = Passiv2Aktiv(None, None, None)\n", + "#print('5')\n", + "#gs = GenitivSolve()\n", + "#print('6')\n", + "#cs = ConjunctSolve(None,None)\n", + "#print('7')\n", + "#oi = oi()\n", + "#print('8')\n", + "#fwb = FremdWB(None,None)\n", + "#print('9')\n", + "#medi = Medio(None,None)\n", + "#print('done')\n", + "\n", + "\n", + "# loading the databases and models\n", + "#print('loading SolveShorts Databases')\n", + "#solSh.load_DB_into_FASTsearch()\n", + "#print('loading SentSeg Databases')\n", + "#sent_seg.LoadSentGlueSGDandGSUtils()\n", + "#print('loading SayYes Databases')\n", + "#sy.load_DB_into_FASTsearch()\n", + "#print('loading passiv2active Databases')\n", + "#p2a.load_DB_into_FASTsearch()\n", + "#print('loading conjunctivesolve Databases')\n", + "#cs.load_DB_into_FASTsearch()\n", + "#print('loading the fremdwb Databases')\n", + "#fwb.load_DB_into_FASTsearch()\n", + "#print('loading the mediodot Databases')\n", + "#medi.load_DB_into_FASTsearch()\n", + "\n", + "#print('done')\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "106e70dd208f4de29ae10874823d30a8", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Textarea(value='', layout=Layout(height='180px', width='99%'), placeholder='Hier den Text eingeben, darunter k…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "\n", + "#print('done')\n", + "\n", + "#print('loading passiv2active Databases')\n", + "#from Passiv2Aktiv import *\n", + "#p2a = Passiv2Aktiv(None, None, None)\n", + "#p2a.load_DB_into_FASTsearch()\n", + "#print('done')\n", + "#print('loading genitiv solve')\n", + "#from GenitivSolve import *\n", + "#gs = GenitivSolve()\n", + "\n", + "#from FremdWB import *\n", + "#fwb = FremdWB(None,None)\n", + "#fwb.load_DB_into_FASTsearch()\n", + "\n", + "#from SolveShorts import *\n", + "#print('loading SolveShorts Databases')\n", + "#solSh.load_DB_into_FASTsearch()\n", + "\n", + "#from SayYes import *\n", + "#sy = SayYes(None, None)\n", + "#print('loading SayYes Databases')\n", + "#sy.load_DB_into_FASTsearch()\n", + "\n", + "#import SentSeg\n", + "#sent_seg = SentSeg.SentSeg('de')\n", + "#print('loading SentSeg Databases')\n", + "#sent_seg.LoadSentGlueSGDandGSUtils()\n", + "#print('loading conjunctsolve')\n", + "#from ConjunctSolve import *\n", + "#cs = ConjunctSolve(None,None)\n", + "#print('done')\n", + "#print('loading conjunctivesolve Databases')\n", + "#cs.load_DB_into_FASTsearch()\n", + "#print('done')\n", + "#from oi import *\n", + "#oi = oi()\n", + "\n", + "#print('loading session..')\n", + "\n", + "#print('done')\n", + "import dill\n", + "dill.load_session('voilastate.db')\n", + "\n", + "#from SolveShorts import *\n", + "#print('loading SolveShorts Databases')\n", + "#solSh.load_DB_into_FASTsearch()\n", + "\n", + "#import SentSeg\n", + "#sent_seg = SentSeg.SentSeg('de')\n", + "#print('loading SentSeg Databases')\n", + "#sent_seg.LoadSentGlueSGDandGSUtils()\n", + "\n", + "#from FremdWB import *\n", + "#fwb = FremdWB(None,None)\n", + "#fwb.load_DB_into_FASTsearch()\n", + "\n", + "#from Medio import *\n", + "#medi = Medio(None,None)\n", + "#medi.load_DB_into_FASTsearch()\n", + "\n", + "\n", + "#import dill\n", + "#print('dumping the session')\n", + "#dill.dump_session('voilastate.db')\n", + "#print('done')\n", + "\n", + "#from oi import *\n", + "#oi = oi()\n", + "\n", + "import ipywidgets as widgets\n", + "\n", + "TextFeld = widgets.Textarea(placeholder='Hier den Text eingeben, darunter können die Module aktiviert(grün) oder deaktiviert(pink) werden', disabled=False)\n", + "#print(TextFeld.layout.height)\n", + "TextFeld.layout.height = '180px'\n", + "TextFeld.layout.width = '99%'\n", + "\n", + "TextFelddouble = widgets.Textarea(placeholder='Hier den Text eingeben, darunter können die Module aktiviert(grün) oder deaktiviert(pink) werden', disabled=False)\n", + "#print(TextFeld.layout.height)\n", + "TextFelddouble.layout.height = '180px'\n", + "TextFelddouble.layout.width = '99%'\n", + "TextFelddouble.disabled=True\n", + "\n", + "display(TextFeld)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "\n", + "dawidth = '100%'\n", + "daheight = '100%'\n", + "KonjunktiveErsetzen = widgets.ToggleButton(\n", + " value=False,\n", + " description='Konjunktive ersetzen',\n", + " disabled=False,\n", + ")\n", + "KonjunktiveErsetzen.layout.width = dawidth\n", + "KonjunktiveErsetzen.layout.height = '80%'\n", + "\n", + "GenitiveErsetzen = widgets.ToggleButton(\n", + " value=True,\n", + " description='Genitiv ersetzen',\n", + " disabled=False\n", + ")\n", + "GenitiveErsetzen.layout.width = '60%'\n", + "GenitiveErsetzen.layout.height = daheight\n", + "\n", + "PassivErsetzen = widgets.ToggleButton(\n", + " value=True,\n", + " description='Passiv ersetzen',\n", + " disabled=False\n", + ")\n", + "PassivErsetzen.layout.width = '70%'\n", + "PassivErsetzen.layout.height = '90%'\n", + "\n", + "SayYes = widgets.ToggleButton(\n", + " value=True,\n", + " description='Verneinungen ersetzen',\n", + " disabled=False\n", + ")\n", + "SayYes.layout.width = '80%'\n", + "SayYes.layout.height = '80%'\n", + "SentSeg = widgets.ToggleButton(\n", + " value=True,\n", + " description='Eine Aussage pro Satz',\n", + " disabled=False\n", + ")\n", + "SentSeg.layout.width = '60%'\n", + "SentSeg.layout.height = daheight\n", + "SolveShorts = widgets.ToggleButton(\n", + " value=False,\n", + " description='Abkürzungen erklären',\n", + " disabled=False\n", + ")\n", + "SolveShorts.layout.width = '80%'\n", + "SolveShorts.layout.height = '90%'\n", + "FremdWB = widgets.ToggleButton(\n", + " value=True,\n", + " description='FremdWoerterbuch',\n", + " disabled=False\n", + ")\n", + "FremdWB.layout.width = '90%'\n", + "FremdWB.layout.height = '90%'\n", + "\n", + "Appendixes = widgets.ToggleButton(\n", + " value=True,\n", + " description='Charakterisierung pro Satz',\n", + " disabled=False\n", + ")\n", + "Appendixes.layout.width = '120%'\n", + "Appendixes.layout.height = '80%'\n", + "\n", + "Medio = widgets.ToggleButton(\n", + " value=True,\n", + " description='Mediopunkte',\n", + " disabled=False\n", + ")\n", + "Medio.layout.width = '50%'\n", + "Medio.layout.height = '90%'\n", + "\n", + "#items1 = [SentSeg, SolveShorts]\n", + "#items2 = [SayYes, PassivErsetzen]\n", + "#items3 = [GenitiveErsetzen, KonjunktiveErsetzen]\n", + "#items = [Textfeld, SentSeg, SolveShorts, SayYes, PassivErsetzen, GenitiveErsetzen, KonjunktiveErsetzen]\n", + "#display(SentSeg, SolveShorts, SayYes, PassivErsetzen, GenitiveErsetzen, KonjunktiveErsetzen)\n", + "#widgets.GridBox(items, layout=widgets.Layout(grid_template_columns=\"repeat(3, 100px)\"))\n", + "\n", + "\n", + "\n", + "#widgets.HBox(items1)\n", + "#widgets.HBox(items2)\n", + "#widgets.HBox(items3)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "import ipywidgets\n", + "out = 'Hier kommt der übersetzte Text heraus.'\n", + "\n", + "TextFeld.add_class(\"thotext\")\n", + "TextFelddouble.add_class(\"thotext\")\n", + "#display(OutTextFeld)\n", + "items = [SentSeg, SolveShorts, SayYes, PassivErsetzen, GenitiveErsetzen, KonjunktiveErsetzen, FremdWB, Appendixes, Medio] \n", + "#display(SentSeg, SolveShorts, SayYes, PassivErsetzen, GenitiveErsetzen, KonjunktiveErsetzen)\n", + "Grid = widgets.GridBox(items, layout=widgets.Layout(justify_items=\"center\", grid_template_columns=\"repeat(3, 30%)\", grid_gap=\"4.5%\", height=\"320px\"))\n" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "c08292c98ddf447ca1c19117241980b8", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "GridBox(children=(ToggleButton(value=True, description='Eine Aussage pro Satz', layout=Layout(height='100%', w…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "\n", + "display(HTML('
'))\n", + "display(Grid)\n", + "\n", + "\n", + "\n", + "\n", + "def function():\n", + " out = 'Wählen Sie ein Kästchen aus!'\n", + " try:\n", + " insentences, punctuations = oi.CellInputText2SplitsentencesWithspacy(TextFeld.value)\n", + " except:\n", + " OutTextFeld.placeholder = 'Bitte auf die Zeichensetzung achten! '\n", + " return\n", + " \n", + " check = 0\n", + " #print('insentences',insentences)\n", + " #print(punctuations)\n", + " if SayYes.value == True:\n", + " \n", + " print('ersetze Gegenteile..')\n", + " outsentences = sy.replaceOpposites(insentences)\n", + " check = 1\n", + " \n", + " \n", + " \n", + " \n", + " if Appendixes.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('generiere ist-Aussagen..')\n", + " outsentences, punctuations = sent_seg.putAppendixesIntoOwnSentences(insentences, punctuations)\n", + " \n", + " if SentSeg.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('forme zu einem Satz pro Aussage um..')\n", + " sentsegformattedsentences = []\n", + " for sentence in insentences:\n", + " \n", + " sentsegformattedsentences.append([sentence])\n", + " \n", + " #print(sentsegformattedsentences)\n", + " sentences = sent_seg.CommaSentenceOrNot(sentsegformattedsentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetUtteranceNumber(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetQuestionOrNot(sentences)\n", + " #print(sentences)\n", + " sentences, punctuations = sent_seg.AndOrSolver(sentences, punctuations)\n", + " #print(len(punctuations))\n", + " #print('sentences after AndOrSolver', sentences, punctuations)\n", + " sentences = sent_seg.CommaSentenceOrNot(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetUtteranceNumber(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetQuestionOrNot(sentences)\n", + " #print(sentences)\n", + " sentences, punctuations = sent_seg.SplitSentencesIntoHauptNebenTuple(sentences, punctuations)\n", + " #print(len(punctuations))\n", + " #print('sentences after split haupt neben', sentences)\n", + " sentences = sent_seg.CommaSentenceOrNot(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetUtteranceNumber(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetQuestionOrNot(sentences)\n", + " #print(sentences)\n", + " outsentences, punctuations = sent_seg.SplitCommatas(sentences, punctuations)\n", + " #print(len(punctuations))\n", + " #print('out',outsentences)\n", + " #print('out', punctuations)\n", + " check = 1\n", + " \n", + " \n", + " if SolveShorts.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('erklaere Abkuerzungen..')\n", + " outsentences = solSh.ExplainShortsInSentencesWithBrackets(insentences)\n", + " check = 1\n", + " #print(len(punctuations)) \n", + " #print('sentences after solveshorts', outsentences)\n", + " \n", + " if PassivErsetzen.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('ersetze Passiv Formen..')\n", + " outsentences = p2a.replacePassivForms(insentences)\n", + " check = 1\n", + " #print(len(punctuations))\n", + " #print('sentences after p2a', outsentences)\n", + " \n", + " if GenitiveErsetzen.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " #print('replacing genitiv forms with dativ..')\n", + " outsentences = gs.ReplaceGenitivWithDativ(insentences)\n", + " check = 1\n", + " #print(len(punctuations))\n", + " #print('sentences after gs', outsentences)\n", + " \n", + " if check == 1:\n", + " newinsentences = []\n", + " for sentence in outsentences: \n", + " newinsentences.append([word.replace('ö','oe').replace('ü','ue').replace('ä','ae').replace('ß','ss') for word in sentence])\n", + " \n", + " outsentences =newinsentences\n", + " if check != 1:\n", + " newinsentences = []\n", + " for sentence in insentences: \n", + " newinsentences.append([word.replace('ö','oe').replace('ü','ue').replace('ä','ae').replace('ß','ss') for word in sentence])\n", + " \n", + " insentences =newinsentences\n", + " #print()\n", + " if KonjunktiveErsetzen.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('ersetze Konjunktive..')\n", + " \n", + " outsentences = cs.replaceConjunctives(insentences)\n", + " #print('outsentences')\n", + " check = 1\n", + " \n", + " #print('sentences after cs', outsentences)\n", + " print(len(punctuations))\n", + " \n", + " if FremdWB.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('Suche Woerterbucheintraege..')\n", + " \n", + " outsentences, punctuations = fwb.fremdEintragAppend(insentences, punctuations)\n", + " #print('outsentences')\n", + " check = 1\n", + " \n", + " if Medio.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('Ersetze lange Woerter mit Mediopunkten..')\n", + " \n", + " outsentences, punctuations = medi.Medioreplace(insentences, punctuations)\n", + " #print('outsentences')\n", + " check = 1\n", + " #print('sentences after medios', outsentences)\n", + " \n", + " \n", + " #print('sentences after fwb', outsentences)\n", + " \n", + " print(len(punctuations))\n", + " \n", + " if check == 1:\n", + " out = ''\n", + " #print('just before looking if the lenght is the same')\n", + " #print(len(outsentences), len(punctuations))\n", + " if len(outsentences) == len(punctuations):\n", + " #print('the length is the same')\n", + " for n in range(len(outsentences)):\n", + " outsentence = outsentences[n]\n", + " outsentence[0] = outsentence[0].title()\n", + " out += ' '.join(outsentence) + punctuations[n] + '\\n'\n", + " \n", + " \n", + " OutTextFeld.value = out\n", + " TextFelddouble.value = TextFeld.value\n", + " display(TextFelddouble)\n", + " \n", + " return \n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "3ca86c6e7e39437eafa36439e3337b42", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "interactive(children=(Button(description='Übersetzen in Leichte Sprache', style=ButtonStyle()), Output()), _do…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "#from IPython.display import Image\n", + "#i = Image(filename='Babelfish.png')\n", + "\n", + "#i.width = '60%'\n", + "#display(i)\n", + "\n", + "#print(widgets.interact_manual.opts)\n", + "\n", + "widgets.interact_manual.opts['manual_name']= 'Übersetzen in Leichte Sprache'\n", + "ola = widgets.interact_manual(function)\n", + "ola.widget.children[0].style.button_color = 'lightgreen'\n", + "ola.widget.children[0].layout.height = '60px'\n", + "ola.widget.children[0].layout.width = '99%'\n", + "\n", + "#widgets.GridBox([ola], layout=widgets.Layout(grid_template_columns=\"repeat(2, 300px)\"))" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "0d6f03c93f0147cd9f33d2a053672b0c", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Textarea(value='', layout=Layout(height='180px', width='99%'), placeholder='Hier kommt der übersetzte Text her…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "OutTextFeld = ipywidgets.Textarea(placeholder=out, disabled=False)\n", + "OutTextFeld.layout.height = '180px'\n", + "OutTextFeld.layout.width = '99%'\n", + "OutTextFeld.add_class(\"thetext\")\n", + "display(OutTextFeld)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [], + "source": [ + "beschreibung = 'Textfeld für die verbesserte Übersetzung. Satzzeichen bitte nicht vergessen! \\nFalls ein neuer Eintrag ins Fremdwörterbuch vorgenommen werden soll, schreibe einfach unter die Verbesserungen einen Eintrag der Form: [\\'Abfall\\', \\'Abfall sind Sachen die wir nicht mehr brauchen\\'] \\nFalls ein neuer Eintrag in die Mediopunkte-Datenbank vorgenommen werden soll, bitte schreibe unter die Verbesserungen einen Eintrag der Form: [\\'Mediopunkt\\', \\'Medio·punkt\\']' \n", + "VerbeTextFeld = ipywidgets.Textarea(placeholder=beschreibung, disabled=False)\n", + "VerbeTextFeld.layout.height = '180px'\n", + "VerbeTextFeld.layout.width = '99%'\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "\n", + "def Absendefunction():\n", + " \n", + " \n", + "\n", + " \n", + " #print(VerbeTextFeld.value)\n", + " #print(TextFeld.value)\n", + " #print(OutTextFeld.value)\n", + " \n", + " try:\n", + "\n", + " insentences, punctuations = oi.CellInputText2SplitsentencesWithspacy(VerbeTextFeld.value)\n", + " insentences1, punctuations1 = oi.CellInputText2SplitsentencesWithspacy(TextFeld.value)\n", + " insentences2, punctuations2 = oi.CellInputText2SplitsentencesWithspacy(OutTextFeld.value)\n", + "\n", + " #print(insentences2)\n", + "\n", + " #print(insentences, punctuations)\n", + " indexDerVerbesserungen = 0\n", + " number = 0\n", + " with open('Verbesserungen/indexDerVerbesserungen.txt', 'r') as dok:\n", + " for number in dok:\n", + " number = int(number)\n", + " if number >= 0:\n", + " indexDerVerbesserungen = number\n", + " number += 1\n", + "\n", + " with open('Verbesserungen/indexDerVerbesserungen.txt', 'w') as dokk:\n", + " dokk.write(str(number))\n", + "\n", + "\n", + " with open('Verbesserungen/Verbesserungen' + str(number) + '.txt','w+') as doc:\n", + " for n in range(len(insentences)):\n", + " npunct = punctuations[n]\n", + " writeline = insentences[n]+ [npunct]\n", + "\n", + " writestring = ' '.join(writeline)\n", + "\n", + " doc.write(writestring + '\\n')\n", + "\n", + " with open('Verbesserungen/Input' + str(number) + '.txt','w+') as docc:\n", + " for n in range(len(insentences1)):\n", + " npunct = punctuations1[n]\n", + " writeline = insentences1[n]+ [npunct]\n", + "\n", + " writestring = ' '.join(writeline)\n", + "\n", + " docc.write(writestring + '\\n')\n", + " with open('Verbesserungen/Output' + str(number) + '.txt','w+') as dock:\n", + " #print(insentences2)\n", + " for n in range(len(insentences2)):\n", + " #print(len(insentences2))\n", + "\n", + " #print(punctuations2)\n", + " npunct = punctuations2[n]\n", + " writeline = insentences2[n]+ [npunct]\n", + "\n", + " writestring = ' '.join(writeline)\n", + "\n", + " dock.write(writestring + '\\n')\n", + "\n", + " VerbeTextFeld.value = ''\n", + " OutTextFeld.value = ''\n", + " VerbeTextFeld.placeholder = beschreibung\n", + " OutTextFeld.placeholder = 'Hier kommt der übersetzte Text raus.'\n", + " except:\n", + " VerbeTextFeld.placeholder = 'Es gab einen Fehler. Eventuell ist die Zeichensetzung nicht ok. \\n \\n' + beschreibung\n", + " \n", + " \n", + " return \n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "1713cde35a884104b20056d5694d168a", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Textarea(value='', layout=Layout(height='180px', width='99%'), placeholder=\"Textfeld für die verbesserte Übers…" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "d4100a2d84d34630acf974f78d316abc", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "interactive(children=(Button(description='Absenden', style=ButtonStyle()), Output()), _dom_classes=('widget-in…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "VerbeTextFeld.add_class(\"thetext3\")\n", + "display(VerbeTextFeld)\n", + "display(HTML('
'))\n", + "widgets.interact_manual.opts['manual_name']= 'Absenden'\n", + "AbsendenUndSchreiben = widgets.interact_manual(Absendefunction)\n", + "AbsendenUndSchreiben.widget.children[0].style.button_color = 'lightblue'\n", + "AbsendenUndSchreiben.widget.children[0].layout.height = '60px'\n", + "AbsendenUndSchreiben.widget.children[0].layout.width = '99%'\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%html\n", + "" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%html\n", + "" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "data": { + "text/html": [ + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%html\n", + "" + ] + } + ], + "metadata": { + "celltoolbar": "Raw Cell Format", + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.5.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/Prototyp/.Prototype-2.ipynb b/Prototyp/.Prototype-2.ipynb new file mode 100644 index 00000000..37cbca29 --- /dev/null +++ b/Prototyp/.Prototype-2.ipynb @@ -0,0 +1,2373 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "#from oi import *\n", + "\n", + "#oi = oi()\n", + "\n", + "#import ipyvuetify as v\n", + "\n", + "#state = False\n", + "#oi.toggle_code(state)\n", + "\n", + "#button = widgets.ToggleButton(state, description = button_descriptions[state])\n", + "\n", + "\n", + "#button.observe(oi.button_action, \"value\")\n", + "\n", + "#button.layout.height = '50px'\n", + "#button.layout.width = '100%'\n", + "#button.add_class(\"thobutton\")\n", + "\n", + "#display(button)\n", + "#button.button_style = 'danger'\n" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "\n", + "

Ein Klick auf das Logo - und es geht zum Code

\n", + "\n", + "\n", + " \n", + "\n", + " \n", + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%html\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "\n", + "

Ein Klick auf das Logo - und es geht zum Code

\n", + "\n", + "\n", + " \n", + "\n", + " \n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "#%%html\n", + "#\n", + "#\n", + "#\n", + "#\n", + "#\n", + "#

Ein Klick auf das Logo - und es geht zum Code

\n", + "#" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%html\n", + "\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "#%%html\n", + "#" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "#from ipywidgets import widgets\n", + "#button = widgets.Button(description='Click me')\n", + "#display(button)\n", + "\n", + "#def on_button_clicked(b):\n", + "# print('button clicked')\n", + "\n", + "#button.on_click(on_button_clicked)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "\n", + "# importing the libraries\n", + "#print('importing libraries')\n", + "#from SolveShorts import *\n", + "#import SentSeg\n", + "#from SayYes import *\n", + "#from Passiv2Aktiv import *\n", + "#from GenitivSolve import *\n", + "#from ConjunctSolve import *\n", + "#from FremdWB import *\n", + "#from Medio import *\n", + "#from oi import *\n", + "#print('done')\n", + "\n", + "\n", + "# Initializing the libraries\n", + "#print('initializing the libraries')\n", + "#print('1')\n", + "#solSh = SolveShorts('hkldbShorts.hkl', 'hkldbShorts_All.hkl')\n", + "#print('2')\n", + "#sent_seg = SentSeg.SentSeg('de')\n", + "#print('3')\n", + "#sy = SayYes(None, None)\n", + "#print('4')\n", + "#p2a = Passiv2Aktiv(None, None, None)\n", + "#print('5')\n", + "#gs = GenitivSolve()\n", + "#print('6')\n", + "#cs = ConjunctSolve(None,None)\n", + "#print('7')\n", + "#oi = oi()\n", + "#print('8')\n", + "#fwb = FremdWB(None,None)\n", + "#print('9')\n", + "#medi = Medio(None,None)\n", + "#print('done')\n", + "\n", + "\n", + "# loading the databases and models\n", + "#print('loading SolveShorts Databases')\n", + "#solSh.load_DB_into_FASTsearch()\n", + "#print('loading SentSeg Databases')\n", + "#sent_seg.LoadSentGlueSGDandGSUtils()\n", + "#print('loading SayYes Databases')\n", + "#sy.load_DB_into_FASTsearch()\n", + "#print('loading passiv2active Databases')\n", + "#p2a.load_DB_into_FASTsearch()\n", + "#print('loading conjunctivesolve Databases')\n", + "#cs.load_DB_into_FASTsearch()\n", + "#print('loading the fremdwb Databases')\n", + "#fwb.load_DB_into_FASTsearch()\n", + "#print('loading the mediodot Databases')\n", + "#medi.load_DB_into_FASTsearch()\n", + "\n", + "#print('done')\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "6a24b25b44a846aea1b396e744d222e4", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Textarea(value='', layout=Layout(height='180px', width='99%'), placeholder='Hier den Text eingeben, darunter k…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "\n", + "#print('done')\n", + "\n", + "#print('loading passiv2active Databases')\n", + "#from Passiv2Aktiv import *\n", + "#p2a = Passiv2Aktiv(None, None, None)\n", + "#p2a.load_DB_into_FASTsearch()\n", + "#print('done')\n", + "#print('loading genitiv solve')\n", + "#from GenitivSolve import *\n", + "#gs = GenitivSolve()\n", + "\n", + "#from FremdWB import *\n", + "#fwb = FremdWB(None,None)\n", + "#fwb.load_DB_into_FASTsearch()\n", + "\n", + "#from SolveShorts import *\n", + "#print('loading SolveShorts Databases')\n", + "#solSh.load_DB_into_FASTsearch()\n", + "\n", + "#from SayYes import *\n", + "#sy = SayYes(None, None)\n", + "#print('loading SayYes Databases')\n", + "#sy.load_DB_into_FASTsearch()\n", + "\n", + "#import SentSeg\n", + "#sent_seg = SentSeg.SentSeg('de')\n", + "#print('loading SentSeg Databases')\n", + "#sent_seg.LoadSentGlueSGDandGSUtils()\n", + "#print('loading conjunctsolve')\n", + "#from ConjunctSolve import *\n", + "#cs = ConjunctSolve(None,None)\n", + "#print('done')\n", + "#print('loading conjunctivesolve Databases')\n", + "#cs.load_DB_into_FASTsearch()\n", + "#print('done')\n", + "#from oi import *\n", + "#oi = oi()\n", + "\n", + "#print('loading session..')\n", + "\n", + "#print('done')\n", + "import dill\n", + "dill.load_session('voilastate.db')\n", + "\n", + "#from SolveShorts import *\n", + "#print('loading SolveShorts Databases')\n", + "#solSh.load_DB_into_FASTsearch()\n", + "\n", + "#import SentSeg\n", + "#sent_seg = SentSeg.SentSeg('de')\n", + "#print('loading SentSeg Databases')\n", + "#sent_seg.LoadSentGlueSGDandGSUtils()\n", + "\n", + "#from FremdWB import *\n", + "#fwb = FremdWB(None,None)\n", + "#fwb.load_DB_into_FASTsearch()\n", + "\n", + "#from Medio import *\n", + "#medi = Medio(None,None)\n", + "#medi.load_DB_into_FASTsearch()\n", + "\n", + "\n", + "#import dill\n", + "#print('dumping the session')\n", + "#dill.dump_session('voilastate.db')\n", + "#print('done')\n", + "\n", + "#from oi import *\n", + "#oi = oi()\n", + "\n", + "import ipywidgets as widgets\n", + "\n", + "TextFeld = widgets.Textarea(placeholder='Hier den Text eingeben, darunter können die Module aktiviert(grün) oder deaktiviert(pink) werden', disabled=False)\n", + "#print(TextFeld.layout.height)\n", + "TextFeld.layout.height = '180px'\n", + "TextFeld.layout.width = '99%'\n", + "\n", + "TextFelddouble = widgets.Textarea(placeholder='Hier den Text eingeben, darunter können die Module aktiviert(grün) oder deaktiviert(pink) werden', disabled=False)\n", + "#print(TextFeld.layout.height)\n", + "TextFelddouble.layout.height = '180px'\n", + "TextFelddouble.layout.width = '99%'\n", + "TextFelddouble.disabled=True\n", + "\n", + "display(TextFeld)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "\n", + "dawidth = '100%'\n", + "daheight = '100%'\n", + "KonjunktiveErsetzen = widgets.ToggleButton(\n", + " value=False,\n", + " description='Konjunktive ersetzen',\n", + " disabled=False,\n", + ")\n", + "KonjunktiveErsetzen.layout.width = dawidth\n", + "KonjunktiveErsetzen.layout.height = '80%'\n", + "\n", + "GenitiveErsetzen = widgets.ToggleButton(\n", + " value=True,\n", + " description='Genitiv ersetzen',\n", + " disabled=False\n", + ")\n", + "GenitiveErsetzen.layout.width = '60%'\n", + "GenitiveErsetzen.layout.height = daheight\n", + "\n", + "PassivErsetzen = widgets.ToggleButton(\n", + " value=True,\n", + " description='Passiv ersetzen',\n", + " disabled=False\n", + ")\n", + "PassivErsetzen.layout.width = '70%'\n", + "PassivErsetzen.layout.height = '90%'\n", + "\n", + "SayYes = widgets.ToggleButton(\n", + " value=True,\n", + " description='Verneinungen ersetzen',\n", + " disabled=False\n", + ")\n", + "SayYes.layout.width = '80%'\n", + "SayYes.layout.height = '80%'\n", + "SentSeg = widgets.ToggleButton(\n", + " value=True,\n", + " description='Eine Aussage pro Satz',\n", + " disabled=False\n", + ")\n", + "SentSeg.layout.width = '60%'\n", + "SentSeg.layout.height = daheight\n", + "SolveShorts = widgets.ToggleButton(\n", + " value=False,\n", + " description='Abkürzungen erklären',\n", + " disabled=False\n", + ")\n", + "SolveShorts.layout.width = '80%'\n", + "SolveShorts.layout.height = '90%'\n", + "FremdWB = widgets.ToggleButton(\n", + " value=True,\n", + " description='FremdWoerterbuch',\n", + " disabled=False\n", + ")\n", + "FremdWB.layout.width = '90%'\n", + "FremdWB.layout.height = '90%'\n", + "\n", + "Appendixes = widgets.ToggleButton(\n", + " value=True,\n", + " description='Charakterisierung pro Satz',\n", + " disabled=False\n", + ")\n", + "Appendixes.layout.width = '120%'\n", + "Appendixes.layout.height = '80%'\n", + "\n", + "Medio = widgets.ToggleButton(\n", + " value=True,\n", + " description='Mediopunkte',\n", + " disabled=False\n", + ")\n", + "Medio.layout.width = '50%'\n", + "Medio.layout.height = '90%'\n", + "\n", + "#items1 = [SentSeg, SolveShorts]\n", + "#items2 = [SayYes, PassivErsetzen]\n", + "#items3 = [GenitiveErsetzen, KonjunktiveErsetzen]\n", + "#items = [Textfeld, SentSeg, SolveShorts, SayYes, PassivErsetzen, GenitiveErsetzen, KonjunktiveErsetzen]\n", + "#display(SentSeg, SolveShorts, SayYes, PassivErsetzen, GenitiveErsetzen, KonjunktiveErsetzen)\n", + "#widgets.GridBox(items, layout=widgets.Layout(grid_template_columns=\"repeat(3, 100px)\"))\n", + "\n", + "\n", + "\n", + "#widgets.HBox(items1)\n", + "#widgets.HBox(items2)\n", + "#widgets.HBox(items3)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "import ipywidgets\n", + "out = 'Hier kommt der übersetzte Text heraus.'\n", + "\n", + "TextFeld.add_class(\"thotext\")\n", + "TextFelddouble.add_class(\"thotext\")\n", + "#display(OutTextFeld)\n", + "items = [SentSeg, SolveShorts, SayYes, PassivErsetzen, GenitiveErsetzen, KonjunktiveErsetzen, FremdWB, Appendixes, Medio] \n", + "#display(SentSeg, SolveShorts, SayYes, PassivErsetzen, GenitiveErsetzen, KonjunktiveErsetzen)\n", + "Grid = widgets.GridBox(items, layout=widgets.Layout(justify_items=\"center\", grid_template_columns=\"repeat(3, 30%)\", grid_gap=\"4.5%\", height=\"320px\"))\n" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "2bfcacdb87c640bb93cde56d3dd5aeaf", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "GridBox(children=(ToggleButton(value=True, description='Eine Aussage pro Satz', layout=Layout(height='100%', w…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "\n", + "display(HTML('
'))\n", + "display(Grid)\n", + "\n", + "\n", + "\n", + "\n", + "def function():\n", + " out = 'Wählen Sie ein Kästchen aus!'\n", + " try:\n", + " insentences, punctuations = oi.CellInputText2SplitsentencesWithspacy(TextFeld.value)\n", + " except:\n", + " OutTextFeld.placeholder = 'Bitte auf die Zeichensetzung achten! '\n", + " return\n", + " \n", + " check = 0\n", + " #print('insentences',insentences)\n", + " #print(punctuations)\n", + " if SayYes.value == True:\n", + " \n", + " print('ersetze Gegenteile..')\n", + " outsentences = sy.replaceOpposites(insentences)\n", + " check = 1\n", + " \n", + " \n", + " \n", + " \n", + " if Appendixes.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('generiere ist-Aussagen..')\n", + " outsentences, punctuations = sent_seg.putAppendixesIntoOwnSentences(insentences, punctuations)\n", + " \n", + " if SentSeg.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('forme zu einem Satz pro Aussage um..')\n", + " sentsegformattedsentences = []\n", + " for sentence in insentences:\n", + " \n", + " sentsegformattedsentences.append([sentence])\n", + " \n", + " #print(sentsegformattedsentences)\n", + " sentences = sent_seg.CommaSentenceOrNot(sentsegformattedsentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetUtteranceNumber(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetQuestionOrNot(sentences)\n", + " #print(sentences)\n", + " sentences, punctuations = sent_seg.AndOrSolver(sentences, punctuations)\n", + " #print(len(punctuations))\n", + " #print('sentences after AndOrSolver', sentences, punctuations)\n", + " sentences = sent_seg.CommaSentenceOrNot(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetUtteranceNumber(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetQuestionOrNot(sentences)\n", + " #print(sentences)\n", + " sentences, punctuations = sent_seg.SplitSentencesIntoHauptNebenTuple(sentences, punctuations)\n", + " #print(len(punctuations))\n", + " #print('sentences after split haupt neben', sentences)\n", + " sentences = sent_seg.CommaSentenceOrNot(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetUtteranceNumber(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetQuestionOrNot(sentences)\n", + " #print(sentences)\n", + " outsentences, punctuations = sent_seg.SplitCommatas(sentences, punctuations)\n", + " #print(len(punctuations))\n", + " #print('out',outsentences)\n", + " #print('out', punctuations)\n", + " check = 1\n", + " \n", + " \n", + " if SolveShorts.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('erklaere Abkuerzungen..')\n", + " outsentences = solSh.ExplainShortsInSentencesWithBrackets(insentences)\n", + " check = 1\n", + " #print(len(punctuations)) \n", + " #print('sentences after solveshorts', outsentences)\n", + " \n", + " if PassivErsetzen.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('ersetze Passiv Formen..')\n", + " outsentences = p2a.replacePassivForms(insentences)\n", + " check = 1\n", + " #print(len(punctuations))\n", + " #print('sentences after p2a', outsentences)\n", + " \n", + " if GenitiveErsetzen.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " #print('replacing genitiv forms with dativ..')\n", + " outsentences = gs.ReplaceGenitivWithDativ(insentences)\n", + " check = 1\n", + " #print(len(punctuations))\n", + " #print('sentences after gs', outsentences)\n", + " \n", + " if check == 1:\n", + " newinsentences = []\n", + " for sentence in outsentences: \n", + " newinsentences.append([word.replace('ö','oe').replace('ü','ue').replace('ä','ae').replace('ß','ss') for word in sentence])\n", + " \n", + " outsentences =newinsentences\n", + " if check != 1:\n", + " newinsentences = []\n", + " for sentence in insentences: \n", + " newinsentences.append([word.replace('ö','oe').replace('ü','ue').replace('ä','ae').replace('ß','ss') for word in sentence])\n", + " \n", + " insentences =newinsentences\n", + " #print()\n", + " if KonjunktiveErsetzen.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('ersetze Konjunktive..')\n", + " \n", + " outsentences = cs.replaceConjunctives(insentences)\n", + " #print('outsentences')\n", + " check = 1\n", + " \n", + " #print('sentences after cs', outsentences)\n", + " print(len(punctuations))\n", + " \n", + " if FremdWB.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('Suche Woerterbucheintraege..')\n", + " \n", + " outsentences, punctuations = fwb.fremdEintragAppend(insentences, punctuations)\n", + " #print('outsentences')\n", + " check = 1\n", + " \n", + " if Medio.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('Ersetze lange Woerter mit Mediopunkten..')\n", + " \n", + " outsentences, punctuations = medi.Medioreplace(insentences, punctuations)\n", + " #print('outsentences')\n", + " check = 1\n", + " #print('sentences after medios', outsentences)\n", + " \n", + " \n", + " #print('sentences after fwb', outsentences)\n", + " \n", + " print(len(punctuations))\n", + " \n", + " if check == 1:\n", + " out = ''\n", + " #print('just before looking if the lenght is the same')\n", + " #print(len(outsentences), len(punctuations))\n", + " if len(outsentences) == len(punctuations):\n", + " #print('the length is the same')\n", + " for n in range(len(outsentences)):\n", + " outsentence = outsentences[n]\n", + " outsentence[0] = outsentence[0].title()\n", + " out += ' '.join(outsentence) + punctuations[n] + '\\n'\n", + " \n", + " \n", + " OutTextFeld.value = out\n", + " TextFelddouble.value = TextFeld.value\n", + " display(TextFelddouble)\n", + " \n", + " return \n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "scrolled": false + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "2da49b6bc0c64b468368c639db95a1a6", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "interactive(children=(Button(description='Übersetzen in Leichte Sprache', style=ButtonStyle()), Output()), _do…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "#from IPython.display import Image\n", + "#i = Image(filename='Babelfish.png')\n", + "\n", + "#i.width = '60%'\n", + "#display(i)\n", + "\n", + "#print(widgets.interact_manual.opts)\n", + "\n", + "widgets.interact_manual.opts['manual_name']= 'Übersetzen in Leichte Sprache'\n", + "ola = widgets.interact_manual(function)\n", + "ola.widget.children[0].style.button_color = 'lightgreen'\n", + "ola.widget.children[0].layout.height = '60px'\n", + "ola.widget.children[0].layout.width = '99%'\n", + "\n", + "#widgets.GridBox([ola], layout=widgets.Layout(grid_template_columns=\"repeat(2, 300px)\"))" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "16d4e37ff391417f8844c35944a3f1af", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Textarea(value='', layout=Layout(height='180px', width='99%'), placeholder='Hier kommt der übersetzte Text her…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "OutTextFeld = ipywidgets.Textarea(placeholder=out, disabled=False)\n", + "OutTextFeld.layout.height = '180px'\n", + "OutTextFeld.layout.width = '99%'\n", + "OutTextFeld.add_class(\"thetext\")\n", + "display(OutTextFeld)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [], + "source": [ + "beschreibung = 'Textfeld für die verbesserte Übersetzung. Satzzeichen bitte nicht vergessen! \\nFalls ein neuer Eintrag ins Fremdwörterbuch vorgenommen werden soll, schreibe einfach unter die Verbesserungen einen Eintrag der Form: [\\'Abfall\\', \\'Abfall sind Sachen die wir nicht mehr brauchen\\'] \\nFalls ein neuer Eintrag in die Mediopunkte-Datenbank vorgenommen werden soll, bitte schreibe unter die Verbesserungen einen Eintrag der Form: [\\'Mediopunkt\\', \\'Medio·punkt\\']' \n", + "VerbeTextFeld = ipywidgets.Textarea(placeholder=beschreibung, disabled=False)\n", + "VerbeTextFeld.layout.height = '180px'\n", + "VerbeTextFeld.layout.width = '99%'\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "\n", + "def Absendefunction():\n", + " \n", + " \n", + "\n", + " \n", + " #print(VerbeTextFeld.value)\n", + " #print(TextFeld.value)\n", + " #print(OutTextFeld.value)\n", + " \n", + " try:\n", + "\n", + " insentences, punctuations = oi.CellInputText2SplitsentencesWithspacy(VerbeTextFeld.value)\n", + " insentences1, punctuations1 = oi.CellInputText2SplitsentencesWithspacy(TextFeld.value)\n", + " insentences2, punctuations2 = oi.CellInputText2SplitsentencesWithspacy(OutTextFeld.value)\n", + "\n", + " #print(insentences2)\n", + "\n", + " #print(insentences, punctuations)\n", + " indexDerVerbesserungen = 0\n", + " number = 0\n", + " with open('Verbesserungen/indexDerVerbesserungen.txt', 'r') as dok:\n", + " for number in dok:\n", + " number = int(number)\n", + " if number >= 0:\n", + " indexDerVerbesserungen = number\n", + " number += 1\n", + "\n", + " with open('Verbesserungen/indexDerVerbesserungen.txt', 'w') as dokk:\n", + " dokk.write(str(number))\n", + "\n", + "\n", + " with open('Verbesserungen/Verbesserungen' + str(number) + '.txt','w+') as doc:\n", + " for n in range(len(insentences)):\n", + " npunct = punctuations[n]\n", + " writeline = insentences[n]+ [npunct]\n", + "\n", + " writestring = ' '.join(writeline)\n", + "\n", + " doc.write(writestring + '\\n')\n", + "\n", + " with open('Verbesserungen/Input' + str(number) + '.txt','w+') as docc:\n", + " for n in range(len(insentences1)):\n", + " npunct = punctuations1[n]\n", + " writeline = insentences1[n]+ [npunct]\n", + "\n", + " writestring = ' '.join(writeline)\n", + "\n", + " docc.write(writestring + '\\n')\n", + " with open('Verbesserungen/Output' + str(number) + '.txt','w+') as dock:\n", + " #print(insentences2)\n", + " for n in range(len(insentences2)):\n", + " #print(len(insentences2))\n", + "\n", + " #print(punctuations2)\n", + " npunct = punctuations2[n]\n", + " writeline = insentences2[n]+ [npunct]\n", + "\n", + " writestring = ' '.join(writeline)\n", + "\n", + " dock.write(writestring + '\\n')\n", + "\n", + " VerbeTextFeld.value = ''\n", + " OutTextFeld.value = ''\n", + " VerbeTextFeld.placeholder = beschreibung\n", + " OutTextFeld.placeholder = 'Hier kommt der übersetzte Text raus.'\n", + " except:\n", + " VerbeTextFeld.placeholder = 'Es gab einen Fehler. Eventuell ist die Zeichensetzung nicht ok. \\n \\n' + beschreibung\n", + " \n", + " \n", + " return \n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "dd913832ab444630a3842fcf7fd8609b", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Textarea(value='', layout=Layout(height='180px', width='99%'), placeholder=\"Textfeld für die verbesserte Übers…" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "79ed4f2f30324ca582faa59671224d92", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "interactive(children=(Button(description='Absenden', style=ButtonStyle()), Output()), _dom_classes=('widget-in…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "VerbeTextFeld.add_class(\"thetext3\")\n", + "display(VerbeTextFeld)\n", + "display(HTML('
'))\n", + "widgets.interact_manual.opts['manual_name']= 'Absenden'\n", + "AbsendenUndSchreiben = widgets.interact_manual(Absendefunction)\n", + "AbsendenUndSchreiben.widget.children[0].style.button_color = 'lightblue'\n", + "AbsendenUndSchreiben.widget.children[0].layout.height = '60px'\n", + "AbsendenUndSchreiben.widget.children[0].layout.width = '99%'\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%html\n", + "" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%html\n", + "" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "data": { + "text/html": [ + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%html\n", + "" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "celltoolbar": "Raw Cell Format", + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.5.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/Prototyp/.Prototype-3.ipynb b/Prototyp/.Prototype-3.ipynb new file mode 100644 index 00000000..37cbca29 --- /dev/null +++ b/Prototyp/.Prototype-3.ipynb @@ -0,0 +1,2373 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "#from oi import *\n", + "\n", + "#oi = oi()\n", + "\n", + "#import ipyvuetify as v\n", + "\n", + "#state = False\n", + "#oi.toggle_code(state)\n", + "\n", + "#button = widgets.ToggleButton(state, description = button_descriptions[state])\n", + "\n", + "\n", + "#button.observe(oi.button_action, \"value\")\n", + "\n", + "#button.layout.height = '50px'\n", + "#button.layout.width = '100%'\n", + "#button.add_class(\"thobutton\")\n", + "\n", + "#display(button)\n", + "#button.button_style = 'danger'\n" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "\n", + "

Ein Klick auf das Logo - und es geht zum Code

\n", + "\n", + "\n", + " \n", + "\n", + " \n", + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%html\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "\n", + "

Ein Klick auf das Logo - und es geht zum Code

\n", + "\n", + "\n", + " \n", + "\n", + " \n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "#%%html\n", + "#\n", + "#\n", + "#\n", + "#\n", + "#\n", + "#

Ein Klick auf das Logo - und es geht zum Code

\n", + "#" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%html\n", + "\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "#%%html\n", + "#" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "#from ipywidgets import widgets\n", + "#button = widgets.Button(description='Click me')\n", + "#display(button)\n", + "\n", + "#def on_button_clicked(b):\n", + "# print('button clicked')\n", + "\n", + "#button.on_click(on_button_clicked)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "\n", + "# importing the libraries\n", + "#print('importing libraries')\n", + "#from SolveShorts import *\n", + "#import SentSeg\n", + "#from SayYes import *\n", + "#from Passiv2Aktiv import *\n", + "#from GenitivSolve import *\n", + "#from ConjunctSolve import *\n", + "#from FremdWB import *\n", + "#from Medio import *\n", + "#from oi import *\n", + "#print('done')\n", + "\n", + "\n", + "# Initializing the libraries\n", + "#print('initializing the libraries')\n", + "#print('1')\n", + "#solSh = SolveShorts('hkldbShorts.hkl', 'hkldbShorts_All.hkl')\n", + "#print('2')\n", + "#sent_seg = SentSeg.SentSeg('de')\n", + "#print('3')\n", + "#sy = SayYes(None, None)\n", + "#print('4')\n", + "#p2a = Passiv2Aktiv(None, None, None)\n", + "#print('5')\n", + "#gs = GenitivSolve()\n", + "#print('6')\n", + "#cs = ConjunctSolve(None,None)\n", + "#print('7')\n", + "#oi = oi()\n", + "#print('8')\n", + "#fwb = FremdWB(None,None)\n", + "#print('9')\n", + "#medi = Medio(None,None)\n", + "#print('done')\n", + "\n", + "\n", + "# loading the databases and models\n", + "#print('loading SolveShorts Databases')\n", + "#solSh.load_DB_into_FASTsearch()\n", + "#print('loading SentSeg Databases')\n", + "#sent_seg.LoadSentGlueSGDandGSUtils()\n", + "#print('loading SayYes Databases')\n", + "#sy.load_DB_into_FASTsearch()\n", + "#print('loading passiv2active Databases')\n", + "#p2a.load_DB_into_FASTsearch()\n", + "#print('loading conjunctivesolve Databases')\n", + "#cs.load_DB_into_FASTsearch()\n", + "#print('loading the fremdwb Databases')\n", + "#fwb.load_DB_into_FASTsearch()\n", + "#print('loading the mediodot Databases')\n", + "#medi.load_DB_into_FASTsearch()\n", + "\n", + "#print('done')\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "6a24b25b44a846aea1b396e744d222e4", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Textarea(value='', layout=Layout(height='180px', width='99%'), placeholder='Hier den Text eingeben, darunter k…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "\n", + "#print('done')\n", + "\n", + "#print('loading passiv2active Databases')\n", + "#from Passiv2Aktiv import *\n", + "#p2a = Passiv2Aktiv(None, None, None)\n", + "#p2a.load_DB_into_FASTsearch()\n", + "#print('done')\n", + "#print('loading genitiv solve')\n", + "#from GenitivSolve import *\n", + "#gs = GenitivSolve()\n", + "\n", + "#from FremdWB import *\n", + "#fwb = FremdWB(None,None)\n", + "#fwb.load_DB_into_FASTsearch()\n", + "\n", + "#from SolveShorts import *\n", + "#print('loading SolveShorts Databases')\n", + "#solSh.load_DB_into_FASTsearch()\n", + "\n", + "#from SayYes import *\n", + "#sy = SayYes(None, None)\n", + "#print('loading SayYes Databases')\n", + "#sy.load_DB_into_FASTsearch()\n", + "\n", + "#import SentSeg\n", + "#sent_seg = SentSeg.SentSeg('de')\n", + "#print('loading SentSeg Databases')\n", + "#sent_seg.LoadSentGlueSGDandGSUtils()\n", + "#print('loading conjunctsolve')\n", + "#from ConjunctSolve import *\n", + "#cs = ConjunctSolve(None,None)\n", + "#print('done')\n", + "#print('loading conjunctivesolve Databases')\n", + "#cs.load_DB_into_FASTsearch()\n", + "#print('done')\n", + "#from oi import *\n", + "#oi = oi()\n", + "\n", + "#print('loading session..')\n", + "\n", + "#print('done')\n", + "import dill\n", + "dill.load_session('voilastate.db')\n", + "\n", + "#from SolveShorts import *\n", + "#print('loading SolveShorts Databases')\n", + "#solSh.load_DB_into_FASTsearch()\n", + "\n", + "#import SentSeg\n", + "#sent_seg = SentSeg.SentSeg('de')\n", + "#print('loading SentSeg Databases')\n", + "#sent_seg.LoadSentGlueSGDandGSUtils()\n", + "\n", + "#from FremdWB import *\n", + "#fwb = FremdWB(None,None)\n", + "#fwb.load_DB_into_FASTsearch()\n", + "\n", + "#from Medio import *\n", + "#medi = Medio(None,None)\n", + "#medi.load_DB_into_FASTsearch()\n", + "\n", + "\n", + "#import dill\n", + "#print('dumping the session')\n", + "#dill.dump_session('voilastate.db')\n", + "#print('done')\n", + "\n", + "#from oi import *\n", + "#oi = oi()\n", + "\n", + "import ipywidgets as widgets\n", + "\n", + "TextFeld = widgets.Textarea(placeholder='Hier den Text eingeben, darunter können die Module aktiviert(grün) oder deaktiviert(pink) werden', disabled=False)\n", + "#print(TextFeld.layout.height)\n", + "TextFeld.layout.height = '180px'\n", + "TextFeld.layout.width = '99%'\n", + "\n", + "TextFelddouble = widgets.Textarea(placeholder='Hier den Text eingeben, darunter können die Module aktiviert(grün) oder deaktiviert(pink) werden', disabled=False)\n", + "#print(TextFeld.layout.height)\n", + "TextFelddouble.layout.height = '180px'\n", + "TextFelddouble.layout.width = '99%'\n", + "TextFelddouble.disabled=True\n", + "\n", + "display(TextFeld)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "\n", + "dawidth = '100%'\n", + "daheight = '100%'\n", + "KonjunktiveErsetzen = widgets.ToggleButton(\n", + " value=False,\n", + " description='Konjunktive ersetzen',\n", + " disabled=False,\n", + ")\n", + "KonjunktiveErsetzen.layout.width = dawidth\n", + "KonjunktiveErsetzen.layout.height = '80%'\n", + "\n", + "GenitiveErsetzen = widgets.ToggleButton(\n", + " value=True,\n", + " description='Genitiv ersetzen',\n", + " disabled=False\n", + ")\n", + "GenitiveErsetzen.layout.width = '60%'\n", + "GenitiveErsetzen.layout.height = daheight\n", + "\n", + "PassivErsetzen = widgets.ToggleButton(\n", + " value=True,\n", + " description='Passiv ersetzen',\n", + " disabled=False\n", + ")\n", + "PassivErsetzen.layout.width = '70%'\n", + "PassivErsetzen.layout.height = '90%'\n", + "\n", + "SayYes = widgets.ToggleButton(\n", + " value=True,\n", + " description='Verneinungen ersetzen',\n", + " disabled=False\n", + ")\n", + "SayYes.layout.width = '80%'\n", + "SayYes.layout.height = '80%'\n", + "SentSeg = widgets.ToggleButton(\n", + " value=True,\n", + " description='Eine Aussage pro Satz',\n", + " disabled=False\n", + ")\n", + "SentSeg.layout.width = '60%'\n", + "SentSeg.layout.height = daheight\n", + "SolveShorts = widgets.ToggleButton(\n", + " value=False,\n", + " description='Abkürzungen erklären',\n", + " disabled=False\n", + ")\n", + "SolveShorts.layout.width = '80%'\n", + "SolveShorts.layout.height = '90%'\n", + "FremdWB = widgets.ToggleButton(\n", + " value=True,\n", + " description='FremdWoerterbuch',\n", + " disabled=False\n", + ")\n", + "FremdWB.layout.width = '90%'\n", + "FremdWB.layout.height = '90%'\n", + "\n", + "Appendixes = widgets.ToggleButton(\n", + " value=True,\n", + " description='Charakterisierung pro Satz',\n", + " disabled=False\n", + ")\n", + "Appendixes.layout.width = '120%'\n", + "Appendixes.layout.height = '80%'\n", + "\n", + "Medio = widgets.ToggleButton(\n", + " value=True,\n", + " description='Mediopunkte',\n", + " disabled=False\n", + ")\n", + "Medio.layout.width = '50%'\n", + "Medio.layout.height = '90%'\n", + "\n", + "#items1 = [SentSeg, SolveShorts]\n", + "#items2 = [SayYes, PassivErsetzen]\n", + "#items3 = [GenitiveErsetzen, KonjunktiveErsetzen]\n", + "#items = [Textfeld, SentSeg, SolveShorts, SayYes, PassivErsetzen, GenitiveErsetzen, KonjunktiveErsetzen]\n", + "#display(SentSeg, SolveShorts, SayYes, PassivErsetzen, GenitiveErsetzen, KonjunktiveErsetzen)\n", + "#widgets.GridBox(items, layout=widgets.Layout(grid_template_columns=\"repeat(3, 100px)\"))\n", + "\n", + "\n", + "\n", + "#widgets.HBox(items1)\n", + "#widgets.HBox(items2)\n", + "#widgets.HBox(items3)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "import ipywidgets\n", + "out = 'Hier kommt der übersetzte Text heraus.'\n", + "\n", + "TextFeld.add_class(\"thotext\")\n", + "TextFelddouble.add_class(\"thotext\")\n", + "#display(OutTextFeld)\n", + "items = [SentSeg, SolveShorts, SayYes, PassivErsetzen, GenitiveErsetzen, KonjunktiveErsetzen, FremdWB, Appendixes, Medio] \n", + "#display(SentSeg, SolveShorts, SayYes, PassivErsetzen, GenitiveErsetzen, KonjunktiveErsetzen)\n", + "Grid = widgets.GridBox(items, layout=widgets.Layout(justify_items=\"center\", grid_template_columns=\"repeat(3, 30%)\", grid_gap=\"4.5%\", height=\"320px\"))\n" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "2bfcacdb87c640bb93cde56d3dd5aeaf", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "GridBox(children=(ToggleButton(value=True, description='Eine Aussage pro Satz', layout=Layout(height='100%', w…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "\n", + "display(HTML('
'))\n", + "display(Grid)\n", + "\n", + "\n", + "\n", + "\n", + "def function():\n", + " out = 'Wählen Sie ein Kästchen aus!'\n", + " try:\n", + " insentences, punctuations = oi.CellInputText2SplitsentencesWithspacy(TextFeld.value)\n", + " except:\n", + " OutTextFeld.placeholder = 'Bitte auf die Zeichensetzung achten! '\n", + " return\n", + " \n", + " check = 0\n", + " #print('insentences',insentences)\n", + " #print(punctuations)\n", + " if SayYes.value == True:\n", + " \n", + " print('ersetze Gegenteile..')\n", + " outsentences = sy.replaceOpposites(insentences)\n", + " check = 1\n", + " \n", + " \n", + " \n", + " \n", + " if Appendixes.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('generiere ist-Aussagen..')\n", + " outsentences, punctuations = sent_seg.putAppendixesIntoOwnSentences(insentences, punctuations)\n", + " \n", + " if SentSeg.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('forme zu einem Satz pro Aussage um..')\n", + " sentsegformattedsentences = []\n", + " for sentence in insentences:\n", + " \n", + " sentsegformattedsentences.append([sentence])\n", + " \n", + " #print(sentsegformattedsentences)\n", + " sentences = sent_seg.CommaSentenceOrNot(sentsegformattedsentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetUtteranceNumber(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetQuestionOrNot(sentences)\n", + " #print(sentences)\n", + " sentences, punctuations = sent_seg.AndOrSolver(sentences, punctuations)\n", + " #print(len(punctuations))\n", + " #print('sentences after AndOrSolver', sentences, punctuations)\n", + " sentences = sent_seg.CommaSentenceOrNot(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetUtteranceNumber(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetQuestionOrNot(sentences)\n", + " #print(sentences)\n", + " sentences, punctuations = sent_seg.SplitSentencesIntoHauptNebenTuple(sentences, punctuations)\n", + " #print(len(punctuations))\n", + " #print('sentences after split haupt neben', sentences)\n", + " sentences = sent_seg.CommaSentenceOrNot(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetUtteranceNumber(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetQuestionOrNot(sentences)\n", + " #print(sentences)\n", + " outsentences, punctuations = sent_seg.SplitCommatas(sentences, punctuations)\n", + " #print(len(punctuations))\n", + " #print('out',outsentences)\n", + " #print('out', punctuations)\n", + " check = 1\n", + " \n", + " \n", + " if SolveShorts.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('erklaere Abkuerzungen..')\n", + " outsentences = solSh.ExplainShortsInSentencesWithBrackets(insentences)\n", + " check = 1\n", + " #print(len(punctuations)) \n", + " #print('sentences after solveshorts', outsentences)\n", + " \n", + " if PassivErsetzen.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('ersetze Passiv Formen..')\n", + " outsentences = p2a.replacePassivForms(insentences)\n", + " check = 1\n", + " #print(len(punctuations))\n", + " #print('sentences after p2a', outsentences)\n", + " \n", + " if GenitiveErsetzen.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " #print('replacing genitiv forms with dativ..')\n", + " outsentences = gs.ReplaceGenitivWithDativ(insentences)\n", + " check = 1\n", + " #print(len(punctuations))\n", + " #print('sentences after gs', outsentences)\n", + " \n", + " if check == 1:\n", + " newinsentences = []\n", + " for sentence in outsentences: \n", + " newinsentences.append([word.replace('ö','oe').replace('ü','ue').replace('ä','ae').replace('ß','ss') for word in sentence])\n", + " \n", + " outsentences =newinsentences\n", + " if check != 1:\n", + " newinsentences = []\n", + " for sentence in insentences: \n", + " newinsentences.append([word.replace('ö','oe').replace('ü','ue').replace('ä','ae').replace('ß','ss') for word in sentence])\n", + " \n", + " insentences =newinsentences\n", + " #print()\n", + " if KonjunktiveErsetzen.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('ersetze Konjunktive..')\n", + " \n", + " outsentences = cs.replaceConjunctives(insentences)\n", + " #print('outsentences')\n", + " check = 1\n", + " \n", + " #print('sentences after cs', outsentences)\n", + " print(len(punctuations))\n", + " \n", + " if FremdWB.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('Suche Woerterbucheintraege..')\n", + " \n", + " outsentences, punctuations = fwb.fremdEintragAppend(insentences, punctuations)\n", + " #print('outsentences')\n", + " check = 1\n", + " \n", + " if Medio.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('Ersetze lange Woerter mit Mediopunkten..')\n", + " \n", + " outsentences, punctuations = medi.Medioreplace(insentences, punctuations)\n", + " #print('outsentences')\n", + " check = 1\n", + " #print('sentences after medios', outsentences)\n", + " \n", + " \n", + " #print('sentences after fwb', outsentences)\n", + " \n", + " print(len(punctuations))\n", + " \n", + " if check == 1:\n", + " out = ''\n", + " #print('just before looking if the lenght is the same')\n", + " #print(len(outsentences), len(punctuations))\n", + " if len(outsentences) == len(punctuations):\n", + " #print('the length is the same')\n", + " for n in range(len(outsentences)):\n", + " outsentence = outsentences[n]\n", + " outsentence[0] = outsentence[0].title()\n", + " out += ' '.join(outsentence) + punctuations[n] + '\\n'\n", + " \n", + " \n", + " OutTextFeld.value = out\n", + " TextFelddouble.value = TextFeld.value\n", + " display(TextFelddouble)\n", + " \n", + " return \n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "scrolled": false + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "2da49b6bc0c64b468368c639db95a1a6", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "interactive(children=(Button(description='Übersetzen in Leichte Sprache', style=ButtonStyle()), Output()), _do…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "#from IPython.display import Image\n", + "#i = Image(filename='Babelfish.png')\n", + "\n", + "#i.width = '60%'\n", + "#display(i)\n", + "\n", + "#print(widgets.interact_manual.opts)\n", + "\n", + "widgets.interact_manual.opts['manual_name']= 'Übersetzen in Leichte Sprache'\n", + "ola = widgets.interact_manual(function)\n", + "ola.widget.children[0].style.button_color = 'lightgreen'\n", + "ola.widget.children[0].layout.height = '60px'\n", + "ola.widget.children[0].layout.width = '99%'\n", + "\n", + "#widgets.GridBox([ola], layout=widgets.Layout(grid_template_columns=\"repeat(2, 300px)\"))" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "16d4e37ff391417f8844c35944a3f1af", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Textarea(value='', layout=Layout(height='180px', width='99%'), placeholder='Hier kommt der übersetzte Text her…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "OutTextFeld = ipywidgets.Textarea(placeholder=out, disabled=False)\n", + "OutTextFeld.layout.height = '180px'\n", + "OutTextFeld.layout.width = '99%'\n", + "OutTextFeld.add_class(\"thetext\")\n", + "display(OutTextFeld)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [], + "source": [ + "beschreibung = 'Textfeld für die verbesserte Übersetzung. Satzzeichen bitte nicht vergessen! \\nFalls ein neuer Eintrag ins Fremdwörterbuch vorgenommen werden soll, schreibe einfach unter die Verbesserungen einen Eintrag der Form: [\\'Abfall\\', \\'Abfall sind Sachen die wir nicht mehr brauchen\\'] \\nFalls ein neuer Eintrag in die Mediopunkte-Datenbank vorgenommen werden soll, bitte schreibe unter die Verbesserungen einen Eintrag der Form: [\\'Mediopunkt\\', \\'Medio·punkt\\']' \n", + "VerbeTextFeld = ipywidgets.Textarea(placeholder=beschreibung, disabled=False)\n", + "VerbeTextFeld.layout.height = '180px'\n", + "VerbeTextFeld.layout.width = '99%'\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "\n", + "def Absendefunction():\n", + " \n", + " \n", + "\n", + " \n", + " #print(VerbeTextFeld.value)\n", + " #print(TextFeld.value)\n", + " #print(OutTextFeld.value)\n", + " \n", + " try:\n", + "\n", + " insentences, punctuations = oi.CellInputText2SplitsentencesWithspacy(VerbeTextFeld.value)\n", + " insentences1, punctuations1 = oi.CellInputText2SplitsentencesWithspacy(TextFeld.value)\n", + " insentences2, punctuations2 = oi.CellInputText2SplitsentencesWithspacy(OutTextFeld.value)\n", + "\n", + " #print(insentences2)\n", + "\n", + " #print(insentences, punctuations)\n", + " indexDerVerbesserungen = 0\n", + " number = 0\n", + " with open('Verbesserungen/indexDerVerbesserungen.txt', 'r') as dok:\n", + " for number in dok:\n", + " number = int(number)\n", + " if number >= 0:\n", + " indexDerVerbesserungen = number\n", + " number += 1\n", + "\n", + " with open('Verbesserungen/indexDerVerbesserungen.txt', 'w') as dokk:\n", + " dokk.write(str(number))\n", + "\n", + "\n", + " with open('Verbesserungen/Verbesserungen' + str(number) + '.txt','w+') as doc:\n", + " for n in range(len(insentences)):\n", + " npunct = punctuations[n]\n", + " writeline = insentences[n]+ [npunct]\n", + "\n", + " writestring = ' '.join(writeline)\n", + "\n", + " doc.write(writestring + '\\n')\n", + "\n", + " with open('Verbesserungen/Input' + str(number) + '.txt','w+') as docc:\n", + " for n in range(len(insentences1)):\n", + " npunct = punctuations1[n]\n", + " writeline = insentences1[n]+ [npunct]\n", + "\n", + " writestring = ' '.join(writeline)\n", + "\n", + " docc.write(writestring + '\\n')\n", + " with open('Verbesserungen/Output' + str(number) + '.txt','w+') as dock:\n", + " #print(insentences2)\n", + " for n in range(len(insentences2)):\n", + " #print(len(insentences2))\n", + "\n", + " #print(punctuations2)\n", + " npunct = punctuations2[n]\n", + " writeline = insentences2[n]+ [npunct]\n", + "\n", + " writestring = ' '.join(writeline)\n", + "\n", + " dock.write(writestring + '\\n')\n", + "\n", + " VerbeTextFeld.value = ''\n", + " OutTextFeld.value = ''\n", + " VerbeTextFeld.placeholder = beschreibung\n", + " OutTextFeld.placeholder = 'Hier kommt der übersetzte Text raus.'\n", + " except:\n", + " VerbeTextFeld.placeholder = 'Es gab einen Fehler. Eventuell ist die Zeichensetzung nicht ok. \\n \\n' + beschreibung\n", + " \n", + " \n", + " return \n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "dd913832ab444630a3842fcf7fd8609b", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Textarea(value='', layout=Layout(height='180px', width='99%'), placeholder=\"Textfeld für die verbesserte Übers…" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "79ed4f2f30324ca582faa59671224d92", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "interactive(children=(Button(description='Absenden', style=ButtonStyle()), Output()), _dom_classes=('widget-in…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "VerbeTextFeld.add_class(\"thetext3\")\n", + "display(VerbeTextFeld)\n", + "display(HTML('
'))\n", + "widgets.interact_manual.opts['manual_name']= 'Absenden'\n", + "AbsendenUndSchreiben = widgets.interact_manual(Absendefunction)\n", + "AbsendenUndSchreiben.widget.children[0].style.button_color = 'lightblue'\n", + "AbsendenUndSchreiben.widget.children[0].layout.height = '60px'\n", + "AbsendenUndSchreiben.widget.children[0].layout.width = '99%'\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%html\n", + "" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%html\n", + "" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "data": { + "text/html": [ + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%html\n", + "" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "celltoolbar": "Raw Cell Format", + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.5.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/Prototyp/.Prototype-4.ipynb b/Prototyp/.Prototype-4.ipynb new file mode 100644 index 00000000..37cbca29 --- /dev/null +++ b/Prototyp/.Prototype-4.ipynb @@ -0,0 +1,2373 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "#from oi import *\n", + "\n", + "#oi = oi()\n", + "\n", + "#import ipyvuetify as v\n", + "\n", + "#state = False\n", + "#oi.toggle_code(state)\n", + "\n", + "#button = widgets.ToggleButton(state, description = button_descriptions[state])\n", + "\n", + "\n", + "#button.observe(oi.button_action, \"value\")\n", + "\n", + "#button.layout.height = '50px'\n", + "#button.layout.width = '100%'\n", + "#button.add_class(\"thobutton\")\n", + "\n", + "#display(button)\n", + "#button.button_style = 'danger'\n" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "\n", + "

Ein Klick auf das Logo - und es geht zum Code

\n", + "\n", + "\n", + " \n", + "\n", + " \n", + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%html\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "\n", + "

Ein Klick auf das Logo - und es geht zum Code

\n", + "\n", + "\n", + " \n", + "\n", + " \n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "#%%html\n", + "#\n", + "#\n", + "#\n", + "#\n", + "#\n", + "#

Ein Klick auf das Logo - und es geht zum Code

\n", + "#" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%html\n", + "\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "#%%html\n", + "#" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "#from ipywidgets import widgets\n", + "#button = widgets.Button(description='Click me')\n", + "#display(button)\n", + "\n", + "#def on_button_clicked(b):\n", + "# print('button clicked')\n", + "\n", + "#button.on_click(on_button_clicked)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "\n", + "# importing the libraries\n", + "#print('importing libraries')\n", + "#from SolveShorts import *\n", + "#import SentSeg\n", + "#from SayYes import *\n", + "#from Passiv2Aktiv import *\n", + "#from GenitivSolve import *\n", + "#from ConjunctSolve import *\n", + "#from FremdWB import *\n", + "#from Medio import *\n", + "#from oi import *\n", + "#print('done')\n", + "\n", + "\n", + "# Initializing the libraries\n", + "#print('initializing the libraries')\n", + "#print('1')\n", + "#solSh = SolveShorts('hkldbShorts.hkl', 'hkldbShorts_All.hkl')\n", + "#print('2')\n", + "#sent_seg = SentSeg.SentSeg('de')\n", + "#print('3')\n", + "#sy = SayYes(None, None)\n", + "#print('4')\n", + "#p2a = Passiv2Aktiv(None, None, None)\n", + "#print('5')\n", + "#gs = GenitivSolve()\n", + "#print('6')\n", + "#cs = ConjunctSolve(None,None)\n", + "#print('7')\n", + "#oi = oi()\n", + "#print('8')\n", + "#fwb = FremdWB(None,None)\n", + "#print('9')\n", + "#medi = Medio(None,None)\n", + "#print('done')\n", + "\n", + "\n", + "# loading the databases and models\n", + "#print('loading SolveShorts Databases')\n", + "#solSh.load_DB_into_FASTsearch()\n", + "#print('loading SentSeg Databases')\n", + "#sent_seg.LoadSentGlueSGDandGSUtils()\n", + "#print('loading SayYes Databases')\n", + "#sy.load_DB_into_FASTsearch()\n", + "#print('loading passiv2active Databases')\n", + "#p2a.load_DB_into_FASTsearch()\n", + "#print('loading conjunctivesolve Databases')\n", + "#cs.load_DB_into_FASTsearch()\n", + "#print('loading the fremdwb Databases')\n", + "#fwb.load_DB_into_FASTsearch()\n", + "#print('loading the mediodot Databases')\n", + "#medi.load_DB_into_FASTsearch()\n", + "\n", + "#print('done')\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "6a24b25b44a846aea1b396e744d222e4", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Textarea(value='', layout=Layout(height='180px', width='99%'), placeholder='Hier den Text eingeben, darunter k…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "\n", + "#print('done')\n", + "\n", + "#print('loading passiv2active Databases')\n", + "#from Passiv2Aktiv import *\n", + "#p2a = Passiv2Aktiv(None, None, None)\n", + "#p2a.load_DB_into_FASTsearch()\n", + "#print('done')\n", + "#print('loading genitiv solve')\n", + "#from GenitivSolve import *\n", + "#gs = GenitivSolve()\n", + "\n", + "#from FremdWB import *\n", + "#fwb = FremdWB(None,None)\n", + "#fwb.load_DB_into_FASTsearch()\n", + "\n", + "#from SolveShorts import *\n", + "#print('loading SolveShorts Databases')\n", + "#solSh.load_DB_into_FASTsearch()\n", + "\n", + "#from SayYes import *\n", + "#sy = SayYes(None, None)\n", + "#print('loading SayYes Databases')\n", + "#sy.load_DB_into_FASTsearch()\n", + "\n", + "#import SentSeg\n", + "#sent_seg = SentSeg.SentSeg('de')\n", + "#print('loading SentSeg Databases')\n", + "#sent_seg.LoadSentGlueSGDandGSUtils()\n", + "#print('loading conjunctsolve')\n", + "#from ConjunctSolve import *\n", + "#cs = ConjunctSolve(None,None)\n", + "#print('done')\n", + "#print('loading conjunctivesolve Databases')\n", + "#cs.load_DB_into_FASTsearch()\n", + "#print('done')\n", + "#from oi import *\n", + "#oi = oi()\n", + "\n", + "#print('loading session..')\n", + "\n", + "#print('done')\n", + "import dill\n", + "dill.load_session('voilastate.db')\n", + "\n", + "#from SolveShorts import *\n", + "#print('loading SolveShorts Databases')\n", + "#solSh.load_DB_into_FASTsearch()\n", + "\n", + "#import SentSeg\n", + "#sent_seg = SentSeg.SentSeg('de')\n", + "#print('loading SentSeg Databases')\n", + "#sent_seg.LoadSentGlueSGDandGSUtils()\n", + "\n", + "#from FremdWB import *\n", + "#fwb = FremdWB(None,None)\n", + "#fwb.load_DB_into_FASTsearch()\n", + "\n", + "#from Medio import *\n", + "#medi = Medio(None,None)\n", + "#medi.load_DB_into_FASTsearch()\n", + "\n", + "\n", + "#import dill\n", + "#print('dumping the session')\n", + "#dill.dump_session('voilastate.db')\n", + "#print('done')\n", + "\n", + "#from oi import *\n", + "#oi = oi()\n", + "\n", + "import ipywidgets as widgets\n", + "\n", + "TextFeld = widgets.Textarea(placeholder='Hier den Text eingeben, darunter können die Module aktiviert(grün) oder deaktiviert(pink) werden', disabled=False)\n", + "#print(TextFeld.layout.height)\n", + "TextFeld.layout.height = '180px'\n", + "TextFeld.layout.width = '99%'\n", + "\n", + "TextFelddouble = widgets.Textarea(placeholder='Hier den Text eingeben, darunter können die Module aktiviert(grün) oder deaktiviert(pink) werden', disabled=False)\n", + "#print(TextFeld.layout.height)\n", + "TextFelddouble.layout.height = '180px'\n", + "TextFelddouble.layout.width = '99%'\n", + "TextFelddouble.disabled=True\n", + "\n", + "display(TextFeld)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "\n", + "dawidth = '100%'\n", + "daheight = '100%'\n", + "KonjunktiveErsetzen = widgets.ToggleButton(\n", + " value=False,\n", + " description='Konjunktive ersetzen',\n", + " disabled=False,\n", + ")\n", + "KonjunktiveErsetzen.layout.width = dawidth\n", + "KonjunktiveErsetzen.layout.height = '80%'\n", + "\n", + "GenitiveErsetzen = widgets.ToggleButton(\n", + " value=True,\n", + " description='Genitiv ersetzen',\n", + " disabled=False\n", + ")\n", + "GenitiveErsetzen.layout.width = '60%'\n", + "GenitiveErsetzen.layout.height = daheight\n", + "\n", + "PassivErsetzen = widgets.ToggleButton(\n", + " value=True,\n", + " description='Passiv ersetzen',\n", + " disabled=False\n", + ")\n", + "PassivErsetzen.layout.width = '70%'\n", + "PassivErsetzen.layout.height = '90%'\n", + "\n", + "SayYes = widgets.ToggleButton(\n", + " value=True,\n", + " description='Verneinungen ersetzen',\n", + " disabled=False\n", + ")\n", + "SayYes.layout.width = '80%'\n", + "SayYes.layout.height = '80%'\n", + "SentSeg = widgets.ToggleButton(\n", + " value=True,\n", + " description='Eine Aussage pro Satz',\n", + " disabled=False\n", + ")\n", + "SentSeg.layout.width = '60%'\n", + "SentSeg.layout.height = daheight\n", + "SolveShorts = widgets.ToggleButton(\n", + " value=False,\n", + " description='Abkürzungen erklären',\n", + " disabled=False\n", + ")\n", + "SolveShorts.layout.width = '80%'\n", + "SolveShorts.layout.height = '90%'\n", + "FremdWB = widgets.ToggleButton(\n", + " value=True,\n", + " description='FremdWoerterbuch',\n", + " disabled=False\n", + ")\n", + "FremdWB.layout.width = '90%'\n", + "FremdWB.layout.height = '90%'\n", + "\n", + "Appendixes = widgets.ToggleButton(\n", + " value=True,\n", + " description='Charakterisierung pro Satz',\n", + " disabled=False\n", + ")\n", + "Appendixes.layout.width = '120%'\n", + "Appendixes.layout.height = '80%'\n", + "\n", + "Medio = widgets.ToggleButton(\n", + " value=True,\n", + " description='Mediopunkte',\n", + " disabled=False\n", + ")\n", + "Medio.layout.width = '50%'\n", + "Medio.layout.height = '90%'\n", + "\n", + "#items1 = [SentSeg, SolveShorts]\n", + "#items2 = [SayYes, PassivErsetzen]\n", + "#items3 = [GenitiveErsetzen, KonjunktiveErsetzen]\n", + "#items = [Textfeld, SentSeg, SolveShorts, SayYes, PassivErsetzen, GenitiveErsetzen, KonjunktiveErsetzen]\n", + "#display(SentSeg, SolveShorts, SayYes, PassivErsetzen, GenitiveErsetzen, KonjunktiveErsetzen)\n", + "#widgets.GridBox(items, layout=widgets.Layout(grid_template_columns=\"repeat(3, 100px)\"))\n", + "\n", + "\n", + "\n", + "#widgets.HBox(items1)\n", + "#widgets.HBox(items2)\n", + "#widgets.HBox(items3)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "import ipywidgets\n", + "out = 'Hier kommt der übersetzte Text heraus.'\n", + "\n", + "TextFeld.add_class(\"thotext\")\n", + "TextFelddouble.add_class(\"thotext\")\n", + "#display(OutTextFeld)\n", + "items = [SentSeg, SolveShorts, SayYes, PassivErsetzen, GenitiveErsetzen, KonjunktiveErsetzen, FremdWB, Appendixes, Medio] \n", + "#display(SentSeg, SolveShorts, SayYes, PassivErsetzen, GenitiveErsetzen, KonjunktiveErsetzen)\n", + "Grid = widgets.GridBox(items, layout=widgets.Layout(justify_items=\"center\", grid_template_columns=\"repeat(3, 30%)\", grid_gap=\"4.5%\", height=\"320px\"))\n" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "2bfcacdb87c640bb93cde56d3dd5aeaf", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "GridBox(children=(ToggleButton(value=True, description='Eine Aussage pro Satz', layout=Layout(height='100%', w…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "\n", + "display(HTML('
'))\n", + "display(Grid)\n", + "\n", + "\n", + "\n", + "\n", + "def function():\n", + " out = 'Wählen Sie ein Kästchen aus!'\n", + " try:\n", + " insentences, punctuations = oi.CellInputText2SplitsentencesWithspacy(TextFeld.value)\n", + " except:\n", + " OutTextFeld.placeholder = 'Bitte auf die Zeichensetzung achten! '\n", + " return\n", + " \n", + " check = 0\n", + " #print('insentences',insentences)\n", + " #print(punctuations)\n", + " if SayYes.value == True:\n", + " \n", + " print('ersetze Gegenteile..')\n", + " outsentences = sy.replaceOpposites(insentences)\n", + " check = 1\n", + " \n", + " \n", + " \n", + " \n", + " if Appendixes.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('generiere ist-Aussagen..')\n", + " outsentences, punctuations = sent_seg.putAppendixesIntoOwnSentences(insentences, punctuations)\n", + " \n", + " if SentSeg.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('forme zu einem Satz pro Aussage um..')\n", + " sentsegformattedsentences = []\n", + " for sentence in insentences:\n", + " \n", + " sentsegformattedsentences.append([sentence])\n", + " \n", + " #print(sentsegformattedsentences)\n", + " sentences = sent_seg.CommaSentenceOrNot(sentsegformattedsentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetUtteranceNumber(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetQuestionOrNot(sentences)\n", + " #print(sentences)\n", + " sentences, punctuations = sent_seg.AndOrSolver(sentences, punctuations)\n", + " #print(len(punctuations))\n", + " #print('sentences after AndOrSolver', sentences, punctuations)\n", + " sentences = sent_seg.CommaSentenceOrNot(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetUtteranceNumber(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetQuestionOrNot(sentences)\n", + " #print(sentences)\n", + " sentences, punctuations = sent_seg.SplitSentencesIntoHauptNebenTuple(sentences, punctuations)\n", + " #print(len(punctuations))\n", + " #print('sentences after split haupt neben', sentences)\n", + " sentences = sent_seg.CommaSentenceOrNot(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetUtteranceNumber(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetQuestionOrNot(sentences)\n", + " #print(sentences)\n", + " outsentences, punctuations = sent_seg.SplitCommatas(sentences, punctuations)\n", + " #print(len(punctuations))\n", + " #print('out',outsentences)\n", + " #print('out', punctuations)\n", + " check = 1\n", + " \n", + " \n", + " if SolveShorts.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('erklaere Abkuerzungen..')\n", + " outsentences = solSh.ExplainShortsInSentencesWithBrackets(insentences)\n", + " check = 1\n", + " #print(len(punctuations)) \n", + " #print('sentences after solveshorts', outsentences)\n", + " \n", + " if PassivErsetzen.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('ersetze Passiv Formen..')\n", + " outsentences = p2a.replacePassivForms(insentences)\n", + " check = 1\n", + " #print(len(punctuations))\n", + " #print('sentences after p2a', outsentences)\n", + " \n", + " if GenitiveErsetzen.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " #print('replacing genitiv forms with dativ..')\n", + " outsentences = gs.ReplaceGenitivWithDativ(insentences)\n", + " check = 1\n", + " #print(len(punctuations))\n", + " #print('sentences after gs', outsentences)\n", + " \n", + " if check == 1:\n", + " newinsentences = []\n", + " for sentence in outsentences: \n", + " newinsentences.append([word.replace('ö','oe').replace('ü','ue').replace('ä','ae').replace('ß','ss') for word in sentence])\n", + " \n", + " outsentences =newinsentences\n", + " if check != 1:\n", + " newinsentences = []\n", + " for sentence in insentences: \n", + " newinsentences.append([word.replace('ö','oe').replace('ü','ue').replace('ä','ae').replace('ß','ss') for word in sentence])\n", + " \n", + " insentences =newinsentences\n", + " #print()\n", + " if KonjunktiveErsetzen.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('ersetze Konjunktive..')\n", + " \n", + " outsentences = cs.replaceConjunctives(insentences)\n", + " #print('outsentences')\n", + " check = 1\n", + " \n", + " #print('sentences after cs', outsentences)\n", + " print(len(punctuations))\n", + " \n", + " if FremdWB.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('Suche Woerterbucheintraege..')\n", + " \n", + " outsentences, punctuations = fwb.fremdEintragAppend(insentences, punctuations)\n", + " #print('outsentences')\n", + " check = 1\n", + " \n", + " if Medio.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('Ersetze lange Woerter mit Mediopunkten..')\n", + " \n", + " outsentences, punctuations = medi.Medioreplace(insentences, punctuations)\n", + " #print('outsentences')\n", + " check = 1\n", + " #print('sentences after medios', outsentences)\n", + " \n", + " \n", + " #print('sentences after fwb', outsentences)\n", + " \n", + " print(len(punctuations))\n", + " \n", + " if check == 1:\n", + " out = ''\n", + " #print('just before looking if the lenght is the same')\n", + " #print(len(outsentences), len(punctuations))\n", + " if len(outsentences) == len(punctuations):\n", + " #print('the length is the same')\n", + " for n in range(len(outsentences)):\n", + " outsentence = outsentences[n]\n", + " outsentence[0] = outsentence[0].title()\n", + " out += ' '.join(outsentence) + punctuations[n] + '\\n'\n", + " \n", + " \n", + " OutTextFeld.value = out\n", + " TextFelddouble.value = TextFeld.value\n", + " display(TextFelddouble)\n", + " \n", + " return \n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "scrolled": false + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "2da49b6bc0c64b468368c639db95a1a6", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "interactive(children=(Button(description='Übersetzen in Leichte Sprache', style=ButtonStyle()), Output()), _do…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "#from IPython.display import Image\n", + "#i = Image(filename='Babelfish.png')\n", + "\n", + "#i.width = '60%'\n", + "#display(i)\n", + "\n", + "#print(widgets.interact_manual.opts)\n", + "\n", + "widgets.interact_manual.opts['manual_name']= 'Übersetzen in Leichte Sprache'\n", + "ola = widgets.interact_manual(function)\n", + "ola.widget.children[0].style.button_color = 'lightgreen'\n", + "ola.widget.children[0].layout.height = '60px'\n", + "ola.widget.children[0].layout.width = '99%'\n", + "\n", + "#widgets.GridBox([ola], layout=widgets.Layout(grid_template_columns=\"repeat(2, 300px)\"))" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "16d4e37ff391417f8844c35944a3f1af", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Textarea(value='', layout=Layout(height='180px', width='99%'), placeholder='Hier kommt der übersetzte Text her…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "OutTextFeld = ipywidgets.Textarea(placeholder=out, disabled=False)\n", + "OutTextFeld.layout.height = '180px'\n", + "OutTextFeld.layout.width = '99%'\n", + "OutTextFeld.add_class(\"thetext\")\n", + "display(OutTextFeld)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [], + "source": [ + "beschreibung = 'Textfeld für die verbesserte Übersetzung. Satzzeichen bitte nicht vergessen! \\nFalls ein neuer Eintrag ins Fremdwörterbuch vorgenommen werden soll, schreibe einfach unter die Verbesserungen einen Eintrag der Form: [\\'Abfall\\', \\'Abfall sind Sachen die wir nicht mehr brauchen\\'] \\nFalls ein neuer Eintrag in die Mediopunkte-Datenbank vorgenommen werden soll, bitte schreibe unter die Verbesserungen einen Eintrag der Form: [\\'Mediopunkt\\', \\'Medio·punkt\\']' \n", + "VerbeTextFeld = ipywidgets.Textarea(placeholder=beschreibung, disabled=False)\n", + "VerbeTextFeld.layout.height = '180px'\n", + "VerbeTextFeld.layout.width = '99%'\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "\n", + "def Absendefunction():\n", + " \n", + " \n", + "\n", + " \n", + " #print(VerbeTextFeld.value)\n", + " #print(TextFeld.value)\n", + " #print(OutTextFeld.value)\n", + " \n", + " try:\n", + "\n", + " insentences, punctuations = oi.CellInputText2SplitsentencesWithspacy(VerbeTextFeld.value)\n", + " insentences1, punctuations1 = oi.CellInputText2SplitsentencesWithspacy(TextFeld.value)\n", + " insentences2, punctuations2 = oi.CellInputText2SplitsentencesWithspacy(OutTextFeld.value)\n", + "\n", + " #print(insentences2)\n", + "\n", + " #print(insentences, punctuations)\n", + " indexDerVerbesserungen = 0\n", + " number = 0\n", + " with open('Verbesserungen/indexDerVerbesserungen.txt', 'r') as dok:\n", + " for number in dok:\n", + " number = int(number)\n", + " if number >= 0:\n", + " indexDerVerbesserungen = number\n", + " number += 1\n", + "\n", + " with open('Verbesserungen/indexDerVerbesserungen.txt', 'w') as dokk:\n", + " dokk.write(str(number))\n", + "\n", + "\n", + " with open('Verbesserungen/Verbesserungen' + str(number) + '.txt','w+') as doc:\n", + " for n in range(len(insentences)):\n", + " npunct = punctuations[n]\n", + " writeline = insentences[n]+ [npunct]\n", + "\n", + " writestring = ' '.join(writeline)\n", + "\n", + " doc.write(writestring + '\\n')\n", + "\n", + " with open('Verbesserungen/Input' + str(number) + '.txt','w+') as docc:\n", + " for n in range(len(insentences1)):\n", + " npunct = punctuations1[n]\n", + " writeline = insentences1[n]+ [npunct]\n", + "\n", + " writestring = ' '.join(writeline)\n", + "\n", + " docc.write(writestring + '\\n')\n", + " with open('Verbesserungen/Output' + str(number) + '.txt','w+') as dock:\n", + " #print(insentences2)\n", + " for n in range(len(insentences2)):\n", + " #print(len(insentences2))\n", + "\n", + " #print(punctuations2)\n", + " npunct = punctuations2[n]\n", + " writeline = insentences2[n]+ [npunct]\n", + "\n", + " writestring = ' '.join(writeline)\n", + "\n", + " dock.write(writestring + '\\n')\n", + "\n", + " VerbeTextFeld.value = ''\n", + " OutTextFeld.value = ''\n", + " VerbeTextFeld.placeholder = beschreibung\n", + " OutTextFeld.placeholder = 'Hier kommt der übersetzte Text raus.'\n", + " except:\n", + " VerbeTextFeld.placeholder = 'Es gab einen Fehler. Eventuell ist die Zeichensetzung nicht ok. \\n \\n' + beschreibung\n", + " \n", + " \n", + " return \n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "dd913832ab444630a3842fcf7fd8609b", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Textarea(value='', layout=Layout(height='180px', width='99%'), placeholder=\"Textfeld für die verbesserte Übers…" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "79ed4f2f30324ca582faa59671224d92", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "interactive(children=(Button(description='Absenden', style=ButtonStyle()), Output()), _dom_classes=('widget-in…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "VerbeTextFeld.add_class(\"thetext3\")\n", + "display(VerbeTextFeld)\n", + "display(HTML('
'))\n", + "widgets.interact_manual.opts['manual_name']= 'Absenden'\n", + "AbsendenUndSchreiben = widgets.interact_manual(Absendefunction)\n", + "AbsendenUndSchreiben.widget.children[0].style.button_color = 'lightblue'\n", + "AbsendenUndSchreiben.widget.children[0].layout.height = '60px'\n", + "AbsendenUndSchreiben.widget.children[0].layout.width = '99%'\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%html\n", + "" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%html\n", + "" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "data": { + "text/html": [ + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%html\n", + "" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "celltoolbar": "Raw Cell Format", + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.5.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/Prototyp/.Prototype-5.ipynb b/Prototyp/.Prototype-5.ipynb new file mode 100644 index 00000000..50a76c09 --- /dev/null +++ b/Prototyp/.Prototype-5.ipynb @@ -0,0 +1,2313 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "#from oi import *\n", + "\n", + "#oi = oi()\n", + "\n", + "#import ipyvuetify as v\n", + "\n", + "#state = False\n", + "#oi.toggle_code(state)\n", + "\n", + "#button = widgets.ToggleButton(state, description = button_descriptions[state])\n", + "\n", + "\n", + "#button.observe(oi.button_action, \"value\")\n", + "\n", + "#button.layout.height = '50px'\n", + "#button.layout.width = '100%'\n", + "#button.add_class(\"thobutton\")\n", + "\n", + "#display(button)\n", + "#button.button_style = 'danger'\n" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "\n", + "

Ein Klick auf das Logo - und es geht zum Code

\n", + "\n", + "\n", + " \n", + "\n", + " \n", + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%html\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "\n", + "

Ein Klick auf das Logo - und es geht zum Code

\n", + "\n", + "\n", + " \n", + "\n", + " \n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "#%%html\n", + "#\n", + "#\n", + "#\n", + "#\n", + "#\n", + "#

Ein Klick auf das Logo - und es geht zum Code

\n", + "#" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [], + "source": [ + "#%%html\n", + "#" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "#from ipywidgets import widgets\n", + "#button = widgets.Button(description='Click me')\n", + "#display(button)\n", + "\n", + "#def on_button_clicked(b):\n", + "# print('button clicked')\n", + "\n", + "#button.on_click(on_button_clicked)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "\n", + "# importing the libraries\n", + "#print('importing libraries')\n", + "#from SolveShorts import *\n", + "#import SentSeg\n", + "#from SayYes import *\n", + "#from Passiv2Aktiv import *\n", + "#from GenitivSolve import *\n", + "#from ConjunctSolve import *\n", + "#from FremdWB import *\n", + "#from Medio import *\n", + "#from oi import *\n", + "#print('done')\n", + "\n", + "\n", + "# Initializing the libraries\n", + "#print('initializing the libraries')\n", + "#print('1')\n", + "#solSh = SolveShorts('hkldbShorts.hkl', 'hkldbShorts_All.hkl')\n", + "#print('2')\n", + "#sent_seg = SentSeg.SentSeg('de')\n", + "#print('3')\n", + "#sy = SayYes(None, None)\n", + "#print('4')\n", + "#p2a = Passiv2Aktiv(None, None, None)\n", + "#print('5')\n", + "#gs = GenitivSolve()\n", + "#print('6')\n", + "#cs = ConjunctSolve(None,None)\n", + "#print('7')\n", + "#oi = oi()\n", + "#print('8')\n", + "#fwb = FremdWB(None,None)\n", + "#print('9')\n", + "#medi = Medio(None,None)\n", + "#print('done')\n", + "\n", + "\n", + "# loading the databases and models\n", + "#print('loading SolveShorts Databases')\n", + "#solSh.load_DB_into_FASTsearch()\n", + "#print('loading SentSeg Databases')\n", + "#sent_seg.LoadSentGlueSGDandGSUtils()\n", + "#print('loading SayYes Databases')\n", + "#sy.load_DB_into_FASTsearch()\n", + "#print('loading passiv2active Databases')\n", + "#p2a.load_DB_into_FASTsearch()\n", + "#print('loading conjunctivesolve Databases')\n", + "#cs.load_DB_into_FASTsearch()\n", + "#print('loading the fremdwb Databases')\n", + "#fwb.load_DB_into_FASTsearch()\n", + "#print('loading the mediodot Databases')\n", + "#medi.load_DB_into_FASTsearch()\n", + "\n", + "#print('done')\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "106e70dd208f4de29ae10874823d30a8", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Textarea(value='', layout=Layout(height='180px', width='99%'), placeholder='Hier den Text eingeben, darunter k…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "\n", + "#print('done')\n", + "\n", + "#print('loading passiv2active Databases')\n", + "#from Passiv2Aktiv import *\n", + "#p2a = Passiv2Aktiv(None, None, None)\n", + "#p2a.load_DB_into_FASTsearch()\n", + "#print('done')\n", + "#print('loading genitiv solve')\n", + "#from GenitivSolve import *\n", + "#gs = GenitivSolve()\n", + "\n", + "#from FremdWB import *\n", + "#fwb = FremdWB(None,None)\n", + "#fwb.load_DB_into_FASTsearch()\n", + "\n", + "#from SolveShorts import *\n", + "#print('loading SolveShorts Databases')\n", + "#solSh.load_DB_into_FASTsearch()\n", + "\n", + "#from SayYes import *\n", + "#sy = SayYes(None, None)\n", + "#print('loading SayYes Databases')\n", + "#sy.load_DB_into_FASTsearch()\n", + "\n", + "#import SentSeg\n", + "#sent_seg = SentSeg.SentSeg('de')\n", + "#print('loading SentSeg Databases')\n", + "#sent_seg.LoadSentGlueSGDandGSUtils()\n", + "#print('loading conjunctsolve')\n", + "#from ConjunctSolve import *\n", + "#cs = ConjunctSolve(None,None)\n", + "#print('done')\n", + "#print('loading conjunctivesolve Databases')\n", + "#cs.load_DB_into_FASTsearch()\n", + "#print('done')\n", + "#from oi import *\n", + "#oi = oi()\n", + "\n", + "#print('loading session..')\n", + "\n", + "#print('done')\n", + "import dill\n", + "dill.load_session('voilastate.db')\n", + "\n", + "#from SolveShorts import *\n", + "#print('loading SolveShorts Databases')\n", + "#solSh.load_DB_into_FASTsearch()\n", + "\n", + "#import SentSeg\n", + "#sent_seg = SentSeg.SentSeg('de')\n", + "#print('loading SentSeg Databases')\n", + "#sent_seg.LoadSentGlueSGDandGSUtils()\n", + "\n", + "#from FremdWB import *\n", + "#fwb = FremdWB(None,None)\n", + "#fwb.load_DB_into_FASTsearch()\n", + "\n", + "#from Medio import *\n", + "#medi = Medio(None,None)\n", + "#medi.load_DB_into_FASTsearch()\n", + "\n", + "\n", + "#import dill\n", + "#print('dumping the session')\n", + "#dill.dump_session('voilastate.db')\n", + "#print('done')\n", + "\n", + "#from oi import *\n", + "#oi = oi()\n", + "\n", + "import ipywidgets as widgets\n", + "\n", + "TextFeld = widgets.Textarea(placeholder='Hier den Text eingeben, darunter können die Module aktiviert(grün) oder deaktiviert(pink) werden', disabled=False)\n", + "#print(TextFeld.layout.height)\n", + "TextFeld.layout.height = '180px'\n", + "TextFeld.layout.width = '99%'\n", + "\n", + "TextFelddouble = widgets.Textarea(placeholder='Hier den Text eingeben, darunter können die Module aktiviert(grün) oder deaktiviert(pink) werden', disabled=False)\n", + "#print(TextFeld.layout.height)\n", + "TextFelddouble.layout.height = '180px'\n", + "TextFelddouble.layout.width = '99%'\n", + "TextFelddouble.disabled=True\n", + "\n", + "display(TextFeld)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "\n", + "dawidth = '100%'\n", + "daheight = '100%'\n", + "KonjunktiveErsetzen = widgets.ToggleButton(\n", + " value=False,\n", + " description='Konjunktive ersetzen',\n", + " disabled=False,\n", + ")\n", + "KonjunktiveErsetzen.layout.width = dawidth\n", + "KonjunktiveErsetzen.layout.height = '80%'\n", + "\n", + "GenitiveErsetzen = widgets.ToggleButton(\n", + " value=True,\n", + " description='Genitiv ersetzen',\n", + " disabled=False\n", + ")\n", + "GenitiveErsetzen.layout.width = '60%'\n", + "GenitiveErsetzen.layout.height = daheight\n", + "\n", + "PassivErsetzen = widgets.ToggleButton(\n", + " value=True,\n", + " description='Passiv ersetzen',\n", + " disabled=False\n", + ")\n", + "PassivErsetzen.layout.width = '70%'\n", + "PassivErsetzen.layout.height = '90%'\n", + "\n", + "SayYes = widgets.ToggleButton(\n", + " value=True,\n", + " description='Verneinungen ersetzen',\n", + " disabled=False\n", + ")\n", + "SayYes.layout.width = '80%'\n", + "SayYes.layout.height = '80%'\n", + "SentSeg = widgets.ToggleButton(\n", + " value=True,\n", + " description='Eine Aussage pro Satz',\n", + " disabled=False\n", + ")\n", + "SentSeg.layout.width = '60%'\n", + "SentSeg.layout.height = daheight\n", + "SolveShorts = widgets.ToggleButton(\n", + " value=False,\n", + " description='Abkürzungen erklären',\n", + " disabled=False\n", + ")\n", + "SolveShorts.layout.width = '80%'\n", + "SolveShorts.layout.height = '90%'\n", + "FremdWB = widgets.ToggleButton(\n", + " value=True,\n", + " description='FremdWoerterbuch',\n", + " disabled=False\n", + ")\n", + "FremdWB.layout.width = '90%'\n", + "FremdWB.layout.height = '90%'\n", + "\n", + "Appendixes = widgets.ToggleButton(\n", + " value=True,\n", + " description='Charakterisierung pro Satz',\n", + " disabled=False\n", + ")\n", + "Appendixes.layout.width = '120%'\n", + "Appendixes.layout.height = '80%'\n", + "\n", + "Medio = widgets.ToggleButton(\n", + " value=True,\n", + " description='Mediopunkte',\n", + " disabled=False\n", + ")\n", + "Medio.layout.width = '50%'\n", + "Medio.layout.height = '90%'\n", + "\n", + "#items1 = [SentSeg, SolveShorts]\n", + "#items2 = [SayYes, PassivErsetzen]\n", + "#items3 = [GenitiveErsetzen, KonjunktiveErsetzen]\n", + "#items = [Textfeld, SentSeg, SolveShorts, SayYes, PassivErsetzen, GenitiveErsetzen, KonjunktiveErsetzen]\n", + "#display(SentSeg, SolveShorts, SayYes, PassivErsetzen, GenitiveErsetzen, KonjunktiveErsetzen)\n", + "#widgets.GridBox(items, layout=widgets.Layout(grid_template_columns=\"repeat(3, 100px)\"))\n", + "\n", + "\n", + "\n", + "#widgets.HBox(items1)\n", + "#widgets.HBox(items2)\n", + "#widgets.HBox(items3)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "import ipywidgets\n", + "out = 'Hier kommt der übersetzte Text heraus.'\n", + "\n", + "TextFeld.add_class(\"thotext\")\n", + "TextFelddouble.add_class(\"thotext\")\n", + "#display(OutTextFeld)\n", + "items = [SentSeg, SolveShorts, SayYes, PassivErsetzen, GenitiveErsetzen, KonjunktiveErsetzen, FremdWB, Appendixes, Medio] \n", + "#display(SentSeg, SolveShorts, SayYes, PassivErsetzen, GenitiveErsetzen, KonjunktiveErsetzen)\n", + "Grid = widgets.GridBox(items, layout=widgets.Layout(justify_items=\"center\", grid_template_columns=\"repeat(3, 30%)\", grid_gap=\"4.5%\", height=\"320px\"))\n" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "c08292c98ddf447ca1c19117241980b8", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "GridBox(children=(ToggleButton(value=True, description='Eine Aussage pro Satz', layout=Layout(height='100%', w…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "\n", + "display(HTML('
'))\n", + "display(Grid)\n", + "\n", + "\n", + "\n", + "\n", + "def function():\n", + " out = 'Wählen Sie ein Kästchen aus!'\n", + " try:\n", + " insentences, punctuations = oi.CellInputText2SplitsentencesWithspacy(TextFeld.value)\n", + " except:\n", + " OutTextFeld.placeholder = 'Bitte auf die Zeichensetzung achten! '\n", + " return\n", + " \n", + " check = 0\n", + " #print('insentences',insentences)\n", + " #print(punctuations)\n", + " if SayYes.value == True:\n", + " \n", + " print('ersetze Gegenteile..')\n", + " outsentences = sy.replaceOpposites(insentences)\n", + " check = 1\n", + " \n", + " \n", + " \n", + " \n", + " if Appendixes.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('generiere ist-Aussagen..')\n", + " outsentences, punctuations = sent_seg.putAppendixesIntoOwnSentences(insentences, punctuations)\n", + " \n", + " if SentSeg.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('forme zu einem Satz pro Aussage um..')\n", + " sentsegformattedsentences = []\n", + " for sentence in insentences:\n", + " \n", + " sentsegformattedsentences.append([sentence])\n", + " \n", + " #print(sentsegformattedsentences)\n", + " sentences = sent_seg.CommaSentenceOrNot(sentsegformattedsentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetUtteranceNumber(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetQuestionOrNot(sentences)\n", + " #print(sentences)\n", + " sentences, punctuations = sent_seg.AndOrSolver(sentences, punctuations)\n", + " #print(len(punctuations))\n", + " #print('sentences after AndOrSolver', sentences, punctuations)\n", + " sentences = sent_seg.CommaSentenceOrNot(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetUtteranceNumber(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetQuestionOrNot(sentences)\n", + " #print(sentences)\n", + " sentences, punctuations = sent_seg.SplitSentencesIntoHauptNebenTuple(sentences, punctuations)\n", + " #print(len(punctuations))\n", + " #print('sentences after split haupt neben', sentences)\n", + " sentences = sent_seg.CommaSentenceOrNot(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetUtteranceNumber(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetQuestionOrNot(sentences)\n", + " #print(sentences)\n", + " outsentences, punctuations = sent_seg.SplitCommatas(sentences, punctuations)\n", + " #print(len(punctuations))\n", + " #print('out',outsentences)\n", + " #print('out', punctuations)\n", + " check = 1\n", + " \n", + " \n", + " if SolveShorts.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('erklaere Abkuerzungen..')\n", + " outsentences = solSh.ExplainShortsInSentencesWithBrackets(insentences)\n", + " check = 1\n", + " #print(len(punctuations)) \n", + " #print('sentences after solveshorts', outsentences)\n", + " \n", + " if PassivErsetzen.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('ersetze Passiv Formen..')\n", + " outsentences = p2a.replacePassivForms(insentences)\n", + " check = 1\n", + " #print(len(punctuations))\n", + " #print('sentences after p2a', outsentences)\n", + " \n", + " if GenitiveErsetzen.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " #print('replacing genitiv forms with dativ..')\n", + " outsentences = gs.ReplaceGenitivWithDativ(insentences)\n", + " check = 1\n", + " #print(len(punctuations))\n", + " #print('sentences after gs', outsentences)\n", + " \n", + " if check == 1:\n", + " newinsentences = []\n", + " for sentence in outsentences: \n", + " newinsentences.append([word.replace('ö','oe').replace('ü','ue').replace('ä','ae').replace('ß','ss') for word in sentence])\n", + " \n", + " outsentences =newinsentences\n", + " if check != 1:\n", + " newinsentences = []\n", + " for sentence in insentences: \n", + " newinsentences.append([word.replace('ö','oe').replace('ü','ue').replace('ä','ae').replace('ß','ss') for word in sentence])\n", + " \n", + " insentences =newinsentences\n", + " #print()\n", + " if KonjunktiveErsetzen.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('ersetze Konjunktive..')\n", + " \n", + " outsentences = cs.replaceConjunctives(insentences)\n", + " #print('outsentences')\n", + " check = 1\n", + " \n", + " #print('sentences after cs', outsentences)\n", + " print(len(punctuations))\n", + " \n", + " if FremdWB.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('Suche Woerterbucheintraege..')\n", + " \n", + " outsentences, punctuations = fwb.fremdEintragAppend(insentences, punctuations)\n", + " #print('outsentences')\n", + " check = 1\n", + " \n", + " if Medio.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('Ersetze lange Woerter mit Mediopunkten..')\n", + " \n", + " outsentences, punctuations = medi.Medioreplace(insentences, punctuations)\n", + " #print('outsentences')\n", + " check = 1\n", + " #print('sentences after medios', outsentences)\n", + " \n", + " \n", + " #print('sentences after fwb', outsentences)\n", + " \n", + " print(len(punctuations))\n", + " \n", + " if check == 1:\n", + " out = ''\n", + " #print('just before looking if the lenght is the same')\n", + " #print(len(outsentences), len(punctuations))\n", + " if len(outsentences) == len(punctuations):\n", + " #print('the length is the same')\n", + " for n in range(len(outsentences)):\n", + " outsentence = outsentences[n]\n", + " outsentence[0] = outsentence[0].title()\n", + " out += ' '.join(outsentence) + punctuations[n] + '\\n'\n", + " \n", + " \n", + " OutTextFeld.value = out\n", + " TextFelddouble.value = TextFeld.value\n", + " display(TextFelddouble)\n", + " \n", + " return \n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "3ca86c6e7e39437eafa36439e3337b42", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "interactive(children=(Button(description='Übersetzen in Leichte Sprache', style=ButtonStyle()), Output()), _do…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "#from IPython.display import Image\n", + "#i = Image(filename='Babelfish.png')\n", + "\n", + "#i.width = '60%'\n", + "#display(i)\n", + "\n", + "#print(widgets.interact_manual.opts)\n", + "\n", + "widgets.interact_manual.opts['manual_name']= 'Übersetzen in Leichte Sprache'\n", + "ola = widgets.interact_manual(function)\n", + "ola.widget.children[0].style.button_color = 'lightgreen'\n", + "ola.widget.children[0].layout.height = '60px'\n", + "ola.widget.children[0].layout.width = '99%'\n", + "\n", + "#widgets.GridBox([ola], layout=widgets.Layout(grid_template_columns=\"repeat(2, 300px)\"))" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "0d6f03c93f0147cd9f33d2a053672b0c", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Textarea(value='', layout=Layout(height='180px', width='99%'), placeholder='Hier kommt der übersetzte Text her…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "OutTextFeld = ipywidgets.Textarea(placeholder=out, disabled=False)\n", + "OutTextFeld.layout.height = '180px'\n", + "OutTextFeld.layout.width = '99%'\n", + "OutTextFeld.add_class(\"thetext\")\n", + "display(OutTextFeld)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [], + "source": [ + "beschreibung = 'Textfeld für die verbesserte Übersetzung. Satzzeichen bitte nicht vergessen! \\nFalls ein neuer Eintrag ins Fremdwörterbuch vorgenommen werden soll, schreibe einfach unter die Verbesserungen einen Eintrag der Form: [\\'Abfall\\', \\'Abfall sind Sachen die wir nicht mehr brauchen\\'] \\nFalls ein neuer Eintrag in die Mediopunkte-Datenbank vorgenommen werden soll, bitte schreibe unter die Verbesserungen einen Eintrag der Form: [\\'Mediopunkt\\', \\'Medio·punkt\\']' \n", + "VerbeTextFeld = ipywidgets.Textarea(placeholder=beschreibung, disabled=False)\n", + "VerbeTextFeld.layout.height = '180px'\n", + "VerbeTextFeld.layout.width = '99%'\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "\n", + "def Absendefunction():\n", + " \n", + " \n", + "\n", + " \n", + " #print(VerbeTextFeld.value)\n", + " #print(TextFeld.value)\n", + " #print(OutTextFeld.value)\n", + " \n", + " try:\n", + "\n", + " insentences, punctuations = oi.CellInputText2SplitsentencesWithspacy(VerbeTextFeld.value)\n", + " insentences1, punctuations1 = oi.CellInputText2SplitsentencesWithspacy(TextFeld.value)\n", + " insentences2, punctuations2 = oi.CellInputText2SplitsentencesWithspacy(OutTextFeld.value)\n", + "\n", + " #print(insentences2)\n", + "\n", + " #print(insentences, punctuations)\n", + " indexDerVerbesserungen = 0\n", + " number = 0\n", + " with open('Verbesserungen/indexDerVerbesserungen.txt', 'r') as dok:\n", + " for number in dok:\n", + " number = int(number)\n", + " if number >= 0:\n", + " indexDerVerbesserungen = number\n", + " number += 1\n", + "\n", + " with open('Verbesserungen/indexDerVerbesserungen.txt', 'w') as dokk:\n", + " dokk.write(str(number))\n", + "\n", + "\n", + " with open('Verbesserungen/Verbesserungen' + str(number) + '.txt','w+') as doc:\n", + " for n in range(len(insentences)):\n", + " npunct = punctuations[n]\n", + " writeline = insentences[n]+ [npunct]\n", + "\n", + " writestring = ' '.join(writeline)\n", + "\n", + " doc.write(writestring + '\\n')\n", + "\n", + " with open('Verbesserungen/Input' + str(number) + '.txt','w+') as docc:\n", + " for n in range(len(insentences1)):\n", + " npunct = punctuations1[n]\n", + " writeline = insentences1[n]+ [npunct]\n", + "\n", + " writestring = ' '.join(writeline)\n", + "\n", + " docc.write(writestring + '\\n')\n", + " with open('Verbesserungen/Output' + str(number) + '.txt','w+') as dock:\n", + " #print(insentences2)\n", + " for n in range(len(insentences2)):\n", + " #print(len(insentences2))\n", + "\n", + " #print(punctuations2)\n", + " npunct = punctuations2[n]\n", + " writeline = insentences2[n]+ [npunct]\n", + "\n", + " writestring = ' '.join(writeline)\n", + "\n", + " dock.write(writestring + '\\n')\n", + "\n", + " VerbeTextFeld.value = ''\n", + " OutTextFeld.value = ''\n", + " VerbeTextFeld.placeholder = beschreibung\n", + " OutTextFeld.placeholder = 'Hier kommt der übersetzte Text raus.'\n", + " except:\n", + " VerbeTextFeld.placeholder = 'Es gab einen Fehler. Eventuell ist die Zeichensetzung nicht ok. \\n \\n' + beschreibung\n", + " \n", + " \n", + " return \n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "1713cde35a884104b20056d5694d168a", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Textarea(value='', layout=Layout(height='180px', width='99%'), placeholder=\"Textfeld für die verbesserte Übers…" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "d4100a2d84d34630acf974f78d316abc", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "interactive(children=(Button(description='Absenden', style=ButtonStyle()), Output()), _dom_classes=('widget-in…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "VerbeTextFeld.add_class(\"thetext3\")\n", + "display(VerbeTextFeld)\n", + "display(HTML('
'))\n", + "widgets.interact_manual.opts['manual_name']= 'Absenden'\n", + "AbsendenUndSchreiben = widgets.interact_manual(Absendefunction)\n", + "AbsendenUndSchreiben.widget.children[0].style.button_color = 'lightblue'\n", + "AbsendenUndSchreiben.widget.children[0].layout.height = '60px'\n", + "AbsendenUndSchreiben.widget.children[0].layout.width = '99%'\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%html\n", + "" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%html\n", + "" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "data": { + "text/html": [ + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%html\n", + "" + ] + } + ], + "metadata": { + "celltoolbar": "Raw Cell Format", + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.5.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/Prototyp/.Prototype-6.ipynb b/Prototyp/.Prototype-6.ipynb new file mode 100644 index 00000000..50a76c09 --- /dev/null +++ b/Prototyp/.Prototype-6.ipynb @@ -0,0 +1,2313 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "#from oi import *\n", + "\n", + "#oi = oi()\n", + "\n", + "#import ipyvuetify as v\n", + "\n", + "#state = False\n", + "#oi.toggle_code(state)\n", + "\n", + "#button = widgets.ToggleButton(state, description = button_descriptions[state])\n", + "\n", + "\n", + "#button.observe(oi.button_action, \"value\")\n", + "\n", + "#button.layout.height = '50px'\n", + "#button.layout.width = '100%'\n", + "#button.add_class(\"thobutton\")\n", + "\n", + "#display(button)\n", + "#button.button_style = 'danger'\n" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "\n", + "

Ein Klick auf das Logo - und es geht zum Code

\n", + "\n", + "\n", + " \n", + "\n", + " \n", + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%html\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "\n", + "

Ein Klick auf das Logo - und es geht zum Code

\n", + "\n", + "\n", + " \n", + "\n", + " \n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "#%%html\n", + "#\n", + "#\n", + "#\n", + "#\n", + "#\n", + "#

Ein Klick auf das Logo - und es geht zum Code

\n", + "#" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [], + "source": [ + "#%%html\n", + "#" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "#from ipywidgets import widgets\n", + "#button = widgets.Button(description='Click me')\n", + "#display(button)\n", + "\n", + "#def on_button_clicked(b):\n", + "# print('button clicked')\n", + "\n", + "#button.on_click(on_button_clicked)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "\n", + "# importing the libraries\n", + "#print('importing libraries')\n", + "#from SolveShorts import *\n", + "#import SentSeg\n", + "#from SayYes import *\n", + "#from Passiv2Aktiv import *\n", + "#from GenitivSolve import *\n", + "#from ConjunctSolve import *\n", + "#from FremdWB import *\n", + "#from Medio import *\n", + "#from oi import *\n", + "#print('done')\n", + "\n", + "\n", + "# Initializing the libraries\n", + "#print('initializing the libraries')\n", + "#print('1')\n", + "#solSh = SolveShorts('hkldbShorts.hkl', 'hkldbShorts_All.hkl')\n", + "#print('2')\n", + "#sent_seg = SentSeg.SentSeg('de')\n", + "#print('3')\n", + "#sy = SayYes(None, None)\n", + "#print('4')\n", + "#p2a = Passiv2Aktiv(None, None, None)\n", + "#print('5')\n", + "#gs = GenitivSolve()\n", + "#print('6')\n", + "#cs = ConjunctSolve(None,None)\n", + "#print('7')\n", + "#oi = oi()\n", + "#print('8')\n", + "#fwb = FremdWB(None,None)\n", + "#print('9')\n", + "#medi = Medio(None,None)\n", + "#print('done')\n", + "\n", + "\n", + "# loading the databases and models\n", + "#print('loading SolveShorts Databases')\n", + "#solSh.load_DB_into_FASTsearch()\n", + "#print('loading SentSeg Databases')\n", + "#sent_seg.LoadSentGlueSGDandGSUtils()\n", + "#print('loading SayYes Databases')\n", + "#sy.load_DB_into_FASTsearch()\n", + "#print('loading passiv2active Databases')\n", + "#p2a.load_DB_into_FASTsearch()\n", + "#print('loading conjunctivesolve Databases')\n", + "#cs.load_DB_into_FASTsearch()\n", + "#print('loading the fremdwb Databases')\n", + "#fwb.load_DB_into_FASTsearch()\n", + "#print('loading the mediodot Databases')\n", + "#medi.load_DB_into_FASTsearch()\n", + "\n", + "#print('done')\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "106e70dd208f4de29ae10874823d30a8", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Textarea(value='', layout=Layout(height='180px', width='99%'), placeholder='Hier den Text eingeben, darunter k…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "\n", + "#print('done')\n", + "\n", + "#print('loading passiv2active Databases')\n", + "#from Passiv2Aktiv import *\n", + "#p2a = Passiv2Aktiv(None, None, None)\n", + "#p2a.load_DB_into_FASTsearch()\n", + "#print('done')\n", + "#print('loading genitiv solve')\n", + "#from GenitivSolve import *\n", + "#gs = GenitivSolve()\n", + "\n", + "#from FremdWB import *\n", + "#fwb = FremdWB(None,None)\n", + "#fwb.load_DB_into_FASTsearch()\n", + "\n", + "#from SolveShorts import *\n", + "#print('loading SolveShorts Databases')\n", + "#solSh.load_DB_into_FASTsearch()\n", + "\n", + "#from SayYes import *\n", + "#sy = SayYes(None, None)\n", + "#print('loading SayYes Databases')\n", + "#sy.load_DB_into_FASTsearch()\n", + "\n", + "#import SentSeg\n", + "#sent_seg = SentSeg.SentSeg('de')\n", + "#print('loading SentSeg Databases')\n", + "#sent_seg.LoadSentGlueSGDandGSUtils()\n", + "#print('loading conjunctsolve')\n", + "#from ConjunctSolve import *\n", + "#cs = ConjunctSolve(None,None)\n", + "#print('done')\n", + "#print('loading conjunctivesolve Databases')\n", + "#cs.load_DB_into_FASTsearch()\n", + "#print('done')\n", + "#from oi import *\n", + "#oi = oi()\n", + "\n", + "#print('loading session..')\n", + "\n", + "#print('done')\n", + "import dill\n", + "dill.load_session('voilastate.db')\n", + "\n", + "#from SolveShorts import *\n", + "#print('loading SolveShorts Databases')\n", + "#solSh.load_DB_into_FASTsearch()\n", + "\n", + "#import SentSeg\n", + "#sent_seg = SentSeg.SentSeg('de')\n", + "#print('loading SentSeg Databases')\n", + "#sent_seg.LoadSentGlueSGDandGSUtils()\n", + "\n", + "#from FremdWB import *\n", + "#fwb = FremdWB(None,None)\n", + "#fwb.load_DB_into_FASTsearch()\n", + "\n", + "#from Medio import *\n", + "#medi = Medio(None,None)\n", + "#medi.load_DB_into_FASTsearch()\n", + "\n", + "\n", + "#import dill\n", + "#print('dumping the session')\n", + "#dill.dump_session('voilastate.db')\n", + "#print('done')\n", + "\n", + "#from oi import *\n", + "#oi = oi()\n", + "\n", + "import ipywidgets as widgets\n", + "\n", + "TextFeld = widgets.Textarea(placeholder='Hier den Text eingeben, darunter können die Module aktiviert(grün) oder deaktiviert(pink) werden', disabled=False)\n", + "#print(TextFeld.layout.height)\n", + "TextFeld.layout.height = '180px'\n", + "TextFeld.layout.width = '99%'\n", + "\n", + "TextFelddouble = widgets.Textarea(placeholder='Hier den Text eingeben, darunter können die Module aktiviert(grün) oder deaktiviert(pink) werden', disabled=False)\n", + "#print(TextFeld.layout.height)\n", + "TextFelddouble.layout.height = '180px'\n", + "TextFelddouble.layout.width = '99%'\n", + "TextFelddouble.disabled=True\n", + "\n", + "display(TextFeld)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "\n", + "dawidth = '100%'\n", + "daheight = '100%'\n", + "KonjunktiveErsetzen = widgets.ToggleButton(\n", + " value=False,\n", + " description='Konjunktive ersetzen',\n", + " disabled=False,\n", + ")\n", + "KonjunktiveErsetzen.layout.width = dawidth\n", + "KonjunktiveErsetzen.layout.height = '80%'\n", + "\n", + "GenitiveErsetzen = widgets.ToggleButton(\n", + " value=True,\n", + " description='Genitiv ersetzen',\n", + " disabled=False\n", + ")\n", + "GenitiveErsetzen.layout.width = '60%'\n", + "GenitiveErsetzen.layout.height = daheight\n", + "\n", + "PassivErsetzen = widgets.ToggleButton(\n", + " value=True,\n", + " description='Passiv ersetzen',\n", + " disabled=False\n", + ")\n", + "PassivErsetzen.layout.width = '70%'\n", + "PassivErsetzen.layout.height = '90%'\n", + "\n", + "SayYes = widgets.ToggleButton(\n", + " value=True,\n", + " description='Verneinungen ersetzen',\n", + " disabled=False\n", + ")\n", + "SayYes.layout.width = '80%'\n", + "SayYes.layout.height = '80%'\n", + "SentSeg = widgets.ToggleButton(\n", + " value=True,\n", + " description='Eine Aussage pro Satz',\n", + " disabled=False\n", + ")\n", + "SentSeg.layout.width = '60%'\n", + "SentSeg.layout.height = daheight\n", + "SolveShorts = widgets.ToggleButton(\n", + " value=False,\n", + " description='Abkürzungen erklären',\n", + " disabled=False\n", + ")\n", + "SolveShorts.layout.width = '80%'\n", + "SolveShorts.layout.height = '90%'\n", + "FremdWB = widgets.ToggleButton(\n", + " value=True,\n", + " description='FremdWoerterbuch',\n", + " disabled=False\n", + ")\n", + "FremdWB.layout.width = '90%'\n", + "FremdWB.layout.height = '90%'\n", + "\n", + "Appendixes = widgets.ToggleButton(\n", + " value=True,\n", + " description='Charakterisierung pro Satz',\n", + " disabled=False\n", + ")\n", + "Appendixes.layout.width = '120%'\n", + "Appendixes.layout.height = '80%'\n", + "\n", + "Medio = widgets.ToggleButton(\n", + " value=True,\n", + " description='Mediopunkte',\n", + " disabled=False\n", + ")\n", + "Medio.layout.width = '50%'\n", + "Medio.layout.height = '90%'\n", + "\n", + "#items1 = [SentSeg, SolveShorts]\n", + "#items2 = [SayYes, PassivErsetzen]\n", + "#items3 = [GenitiveErsetzen, KonjunktiveErsetzen]\n", + "#items = [Textfeld, SentSeg, SolveShorts, SayYes, PassivErsetzen, GenitiveErsetzen, KonjunktiveErsetzen]\n", + "#display(SentSeg, SolveShorts, SayYes, PassivErsetzen, GenitiveErsetzen, KonjunktiveErsetzen)\n", + "#widgets.GridBox(items, layout=widgets.Layout(grid_template_columns=\"repeat(3, 100px)\"))\n", + "\n", + "\n", + "\n", + "#widgets.HBox(items1)\n", + "#widgets.HBox(items2)\n", + "#widgets.HBox(items3)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "import ipywidgets\n", + "out = 'Hier kommt der übersetzte Text heraus.'\n", + "\n", + "TextFeld.add_class(\"thotext\")\n", + "TextFelddouble.add_class(\"thotext\")\n", + "#display(OutTextFeld)\n", + "items = [SentSeg, SolveShorts, SayYes, PassivErsetzen, GenitiveErsetzen, KonjunktiveErsetzen, FremdWB, Appendixes, Medio] \n", + "#display(SentSeg, SolveShorts, SayYes, PassivErsetzen, GenitiveErsetzen, KonjunktiveErsetzen)\n", + "Grid = widgets.GridBox(items, layout=widgets.Layout(justify_items=\"center\", grid_template_columns=\"repeat(3, 30%)\", grid_gap=\"4.5%\", height=\"320px\"))\n" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "c08292c98ddf447ca1c19117241980b8", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "GridBox(children=(ToggleButton(value=True, description='Eine Aussage pro Satz', layout=Layout(height='100%', w…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "\n", + "display(HTML('
'))\n", + "display(Grid)\n", + "\n", + "\n", + "\n", + "\n", + "def function():\n", + " out = 'Wählen Sie ein Kästchen aus!'\n", + " try:\n", + " insentences, punctuations = oi.CellInputText2SplitsentencesWithspacy(TextFeld.value)\n", + " except:\n", + " OutTextFeld.placeholder = 'Bitte auf die Zeichensetzung achten! '\n", + " return\n", + " \n", + " check = 0\n", + " #print('insentences',insentences)\n", + " #print(punctuations)\n", + " if SayYes.value == True:\n", + " \n", + " print('ersetze Gegenteile..')\n", + " outsentences = sy.replaceOpposites(insentences)\n", + " check = 1\n", + " \n", + " \n", + " \n", + " \n", + " if Appendixes.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('generiere ist-Aussagen..')\n", + " outsentences, punctuations = sent_seg.putAppendixesIntoOwnSentences(insentences, punctuations)\n", + " \n", + " if SentSeg.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('forme zu einem Satz pro Aussage um..')\n", + " sentsegformattedsentences = []\n", + " for sentence in insentences:\n", + " \n", + " sentsegformattedsentences.append([sentence])\n", + " \n", + " #print(sentsegformattedsentences)\n", + " sentences = sent_seg.CommaSentenceOrNot(sentsegformattedsentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetUtteranceNumber(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetQuestionOrNot(sentences)\n", + " #print(sentences)\n", + " sentences, punctuations = sent_seg.AndOrSolver(sentences, punctuations)\n", + " #print(len(punctuations))\n", + " #print('sentences after AndOrSolver', sentences, punctuations)\n", + " sentences = sent_seg.CommaSentenceOrNot(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetUtteranceNumber(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetQuestionOrNot(sentences)\n", + " #print(sentences)\n", + " sentences, punctuations = sent_seg.SplitSentencesIntoHauptNebenTuple(sentences, punctuations)\n", + " #print(len(punctuations))\n", + " #print('sentences after split haupt neben', sentences)\n", + " sentences = sent_seg.CommaSentenceOrNot(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetUtteranceNumber(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetQuestionOrNot(sentences)\n", + " #print(sentences)\n", + " outsentences, punctuations = sent_seg.SplitCommatas(sentences, punctuations)\n", + " #print(len(punctuations))\n", + " #print('out',outsentences)\n", + " #print('out', punctuations)\n", + " check = 1\n", + " \n", + " \n", + " if SolveShorts.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('erklaere Abkuerzungen..')\n", + " outsentences = solSh.ExplainShortsInSentencesWithBrackets(insentences)\n", + " check = 1\n", + " #print(len(punctuations)) \n", + " #print('sentences after solveshorts', outsentences)\n", + " \n", + " if PassivErsetzen.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('ersetze Passiv Formen..')\n", + " outsentences = p2a.replacePassivForms(insentences)\n", + " check = 1\n", + " #print(len(punctuations))\n", + " #print('sentences after p2a', outsentences)\n", + " \n", + " if GenitiveErsetzen.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " #print('replacing genitiv forms with dativ..')\n", + " outsentences = gs.ReplaceGenitivWithDativ(insentences)\n", + " check = 1\n", + " #print(len(punctuations))\n", + " #print('sentences after gs', outsentences)\n", + " \n", + " if check == 1:\n", + " newinsentences = []\n", + " for sentence in outsentences: \n", + " newinsentences.append([word.replace('ö','oe').replace('ü','ue').replace('ä','ae').replace('ß','ss') for word in sentence])\n", + " \n", + " outsentences =newinsentences\n", + " if check != 1:\n", + " newinsentences = []\n", + " for sentence in insentences: \n", + " newinsentences.append([word.replace('ö','oe').replace('ü','ue').replace('ä','ae').replace('ß','ss') for word in sentence])\n", + " \n", + " insentences =newinsentences\n", + " #print()\n", + " if KonjunktiveErsetzen.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('ersetze Konjunktive..')\n", + " \n", + " outsentences = cs.replaceConjunctives(insentences)\n", + " #print('outsentences')\n", + " check = 1\n", + " \n", + " #print('sentences after cs', outsentences)\n", + " print(len(punctuations))\n", + " \n", + " if FremdWB.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('Suche Woerterbucheintraege..')\n", + " \n", + " outsentences, punctuations = fwb.fremdEintragAppend(insentences, punctuations)\n", + " #print('outsentences')\n", + " check = 1\n", + " \n", + " if Medio.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('Ersetze lange Woerter mit Mediopunkten..')\n", + " \n", + " outsentences, punctuations = medi.Medioreplace(insentences, punctuations)\n", + " #print('outsentences')\n", + " check = 1\n", + " #print('sentences after medios', outsentences)\n", + " \n", + " \n", + " #print('sentences after fwb', outsentences)\n", + " \n", + " print(len(punctuations))\n", + " \n", + " if check == 1:\n", + " out = ''\n", + " #print('just before looking if the lenght is the same')\n", + " #print(len(outsentences), len(punctuations))\n", + " if len(outsentences) == len(punctuations):\n", + " #print('the length is the same')\n", + " for n in range(len(outsentences)):\n", + " outsentence = outsentences[n]\n", + " outsentence[0] = outsentence[0].title()\n", + " out += ' '.join(outsentence) + punctuations[n] + '\\n'\n", + " \n", + " \n", + " OutTextFeld.value = out\n", + " TextFelddouble.value = TextFeld.value\n", + " display(TextFelddouble)\n", + " \n", + " return \n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "3ca86c6e7e39437eafa36439e3337b42", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "interactive(children=(Button(description='Übersetzen in Leichte Sprache', style=ButtonStyle()), Output()), _do…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "#from IPython.display import Image\n", + "#i = Image(filename='Babelfish.png')\n", + "\n", + "#i.width = '60%'\n", + "#display(i)\n", + "\n", + "#print(widgets.interact_manual.opts)\n", + "\n", + "widgets.interact_manual.opts['manual_name']= 'Übersetzen in Leichte Sprache'\n", + "ola = widgets.interact_manual(function)\n", + "ola.widget.children[0].style.button_color = 'lightgreen'\n", + "ola.widget.children[0].layout.height = '60px'\n", + "ola.widget.children[0].layout.width = '99%'\n", + "\n", + "#widgets.GridBox([ola], layout=widgets.Layout(grid_template_columns=\"repeat(2, 300px)\"))" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "0d6f03c93f0147cd9f33d2a053672b0c", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Textarea(value='', layout=Layout(height='180px', width='99%'), placeholder='Hier kommt der übersetzte Text her…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "OutTextFeld = ipywidgets.Textarea(placeholder=out, disabled=False)\n", + "OutTextFeld.layout.height = '180px'\n", + "OutTextFeld.layout.width = '99%'\n", + "OutTextFeld.add_class(\"thetext\")\n", + "display(OutTextFeld)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [], + "source": [ + "beschreibung = 'Textfeld für die verbesserte Übersetzung. Satzzeichen bitte nicht vergessen! \\nFalls ein neuer Eintrag ins Fremdwörterbuch vorgenommen werden soll, schreibe einfach unter die Verbesserungen einen Eintrag der Form: [\\'Abfall\\', \\'Abfall sind Sachen die wir nicht mehr brauchen\\'] \\nFalls ein neuer Eintrag in die Mediopunkte-Datenbank vorgenommen werden soll, bitte schreibe unter die Verbesserungen einen Eintrag der Form: [\\'Mediopunkt\\', \\'Medio·punkt\\']' \n", + "VerbeTextFeld = ipywidgets.Textarea(placeholder=beschreibung, disabled=False)\n", + "VerbeTextFeld.layout.height = '180px'\n", + "VerbeTextFeld.layout.width = '99%'\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "\n", + "def Absendefunction():\n", + " \n", + " \n", + "\n", + " \n", + " #print(VerbeTextFeld.value)\n", + " #print(TextFeld.value)\n", + " #print(OutTextFeld.value)\n", + " \n", + " try:\n", + "\n", + " insentences, punctuations = oi.CellInputText2SplitsentencesWithspacy(VerbeTextFeld.value)\n", + " insentences1, punctuations1 = oi.CellInputText2SplitsentencesWithspacy(TextFeld.value)\n", + " insentences2, punctuations2 = oi.CellInputText2SplitsentencesWithspacy(OutTextFeld.value)\n", + "\n", + " #print(insentences2)\n", + "\n", + " #print(insentences, punctuations)\n", + " indexDerVerbesserungen = 0\n", + " number = 0\n", + " with open('Verbesserungen/indexDerVerbesserungen.txt', 'r') as dok:\n", + " for number in dok:\n", + " number = int(number)\n", + " if number >= 0:\n", + " indexDerVerbesserungen = number\n", + " number += 1\n", + "\n", + " with open('Verbesserungen/indexDerVerbesserungen.txt', 'w') as dokk:\n", + " dokk.write(str(number))\n", + "\n", + "\n", + " with open('Verbesserungen/Verbesserungen' + str(number) + '.txt','w+') as doc:\n", + " for n in range(len(insentences)):\n", + " npunct = punctuations[n]\n", + " writeline = insentences[n]+ [npunct]\n", + "\n", + " writestring = ' '.join(writeline)\n", + "\n", + " doc.write(writestring + '\\n')\n", + "\n", + " with open('Verbesserungen/Input' + str(number) + '.txt','w+') as docc:\n", + " for n in range(len(insentences1)):\n", + " npunct = punctuations1[n]\n", + " writeline = insentences1[n]+ [npunct]\n", + "\n", + " writestring = ' '.join(writeline)\n", + "\n", + " docc.write(writestring + '\\n')\n", + " with open('Verbesserungen/Output' + str(number) + '.txt','w+') as dock:\n", + " #print(insentences2)\n", + " for n in range(len(insentences2)):\n", + " #print(len(insentences2))\n", + "\n", + " #print(punctuations2)\n", + " npunct = punctuations2[n]\n", + " writeline = insentences2[n]+ [npunct]\n", + "\n", + " writestring = ' '.join(writeline)\n", + "\n", + " dock.write(writestring + '\\n')\n", + "\n", + " VerbeTextFeld.value = ''\n", + " OutTextFeld.value = ''\n", + " VerbeTextFeld.placeholder = beschreibung\n", + " OutTextFeld.placeholder = 'Hier kommt der übersetzte Text raus.'\n", + " except:\n", + " VerbeTextFeld.placeholder = 'Es gab einen Fehler. Eventuell ist die Zeichensetzung nicht ok. \\n \\n' + beschreibung\n", + " \n", + " \n", + " return \n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "1713cde35a884104b20056d5694d168a", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Textarea(value='', layout=Layout(height='180px', width='99%'), placeholder=\"Textfeld für die verbesserte Übers…" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "d4100a2d84d34630acf974f78d316abc", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "interactive(children=(Button(description='Absenden', style=ButtonStyle()), Output()), _dom_classes=('widget-in…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "VerbeTextFeld.add_class(\"thetext3\")\n", + "display(VerbeTextFeld)\n", + "display(HTML('
'))\n", + "widgets.interact_manual.opts['manual_name']= 'Absenden'\n", + "AbsendenUndSchreiben = widgets.interact_manual(Absendefunction)\n", + "AbsendenUndSchreiben.widget.children[0].style.button_color = 'lightblue'\n", + "AbsendenUndSchreiben.widget.children[0].layout.height = '60px'\n", + "AbsendenUndSchreiben.widget.children[0].layout.width = '99%'\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%html\n", + "" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%html\n", + "" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "data": { + "text/html": [ + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%html\n", + "" + ] + } + ], + "metadata": { + "celltoolbar": "Raw Cell Format", + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.5.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/Prototyp/.Prototype-7.ipynb b/Prototyp/.Prototype-7.ipynb new file mode 100644 index 00000000..50a76c09 --- /dev/null +++ b/Prototyp/.Prototype-7.ipynb @@ -0,0 +1,2313 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "#from oi import *\n", + "\n", + "#oi = oi()\n", + "\n", + "#import ipyvuetify as v\n", + "\n", + "#state = False\n", + "#oi.toggle_code(state)\n", + "\n", + "#button = widgets.ToggleButton(state, description = button_descriptions[state])\n", + "\n", + "\n", + "#button.observe(oi.button_action, \"value\")\n", + "\n", + "#button.layout.height = '50px'\n", + "#button.layout.width = '100%'\n", + "#button.add_class(\"thobutton\")\n", + "\n", + "#display(button)\n", + "#button.button_style = 'danger'\n" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "\n", + "

Ein Klick auf das Logo - und es geht zum Code

\n", + "\n", + "\n", + " \n", + "\n", + " \n", + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%html\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "\n", + "

Ein Klick auf das Logo - und es geht zum Code

\n", + "\n", + "\n", + " \n", + "\n", + " \n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "#%%html\n", + "#\n", + "#\n", + "#\n", + "#\n", + "#\n", + "#

Ein Klick auf das Logo - und es geht zum Code

\n", + "#" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [], + "source": [ + "#%%html\n", + "#" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "#from ipywidgets import widgets\n", + "#button = widgets.Button(description='Click me')\n", + "#display(button)\n", + "\n", + "#def on_button_clicked(b):\n", + "# print('button clicked')\n", + "\n", + "#button.on_click(on_button_clicked)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "\n", + "# importing the libraries\n", + "#print('importing libraries')\n", + "#from SolveShorts import *\n", + "#import SentSeg\n", + "#from SayYes import *\n", + "#from Passiv2Aktiv import *\n", + "#from GenitivSolve import *\n", + "#from ConjunctSolve import *\n", + "#from FremdWB import *\n", + "#from Medio import *\n", + "#from oi import *\n", + "#print('done')\n", + "\n", + "\n", + "# Initializing the libraries\n", + "#print('initializing the libraries')\n", + "#print('1')\n", + "#solSh = SolveShorts('hkldbShorts.hkl', 'hkldbShorts_All.hkl')\n", + "#print('2')\n", + "#sent_seg = SentSeg.SentSeg('de')\n", + "#print('3')\n", + "#sy = SayYes(None, None)\n", + "#print('4')\n", + "#p2a = Passiv2Aktiv(None, None, None)\n", + "#print('5')\n", + "#gs = GenitivSolve()\n", + "#print('6')\n", + "#cs = ConjunctSolve(None,None)\n", + "#print('7')\n", + "#oi = oi()\n", + "#print('8')\n", + "#fwb = FremdWB(None,None)\n", + "#print('9')\n", + "#medi = Medio(None,None)\n", + "#print('done')\n", + "\n", + "\n", + "# loading the databases and models\n", + "#print('loading SolveShorts Databases')\n", + "#solSh.load_DB_into_FASTsearch()\n", + "#print('loading SentSeg Databases')\n", + "#sent_seg.LoadSentGlueSGDandGSUtils()\n", + "#print('loading SayYes Databases')\n", + "#sy.load_DB_into_FASTsearch()\n", + "#print('loading passiv2active Databases')\n", + "#p2a.load_DB_into_FASTsearch()\n", + "#print('loading conjunctivesolve Databases')\n", + "#cs.load_DB_into_FASTsearch()\n", + "#print('loading the fremdwb Databases')\n", + "#fwb.load_DB_into_FASTsearch()\n", + "#print('loading the mediodot Databases')\n", + "#medi.load_DB_into_FASTsearch()\n", + "\n", + "#print('done')\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "106e70dd208f4de29ae10874823d30a8", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Textarea(value='', layout=Layout(height='180px', width='99%'), placeholder='Hier den Text eingeben, darunter k…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "\n", + "#print('done')\n", + "\n", + "#print('loading passiv2active Databases')\n", + "#from Passiv2Aktiv import *\n", + "#p2a = Passiv2Aktiv(None, None, None)\n", + "#p2a.load_DB_into_FASTsearch()\n", + "#print('done')\n", + "#print('loading genitiv solve')\n", + "#from GenitivSolve import *\n", + "#gs = GenitivSolve()\n", + "\n", + "#from FremdWB import *\n", + "#fwb = FremdWB(None,None)\n", + "#fwb.load_DB_into_FASTsearch()\n", + "\n", + "#from SolveShorts import *\n", + "#print('loading SolveShorts Databases')\n", + "#solSh.load_DB_into_FASTsearch()\n", + "\n", + "#from SayYes import *\n", + "#sy = SayYes(None, None)\n", + "#print('loading SayYes Databases')\n", + "#sy.load_DB_into_FASTsearch()\n", + "\n", + "#import SentSeg\n", + "#sent_seg = SentSeg.SentSeg('de')\n", + "#print('loading SentSeg Databases')\n", + "#sent_seg.LoadSentGlueSGDandGSUtils()\n", + "#print('loading conjunctsolve')\n", + "#from ConjunctSolve import *\n", + "#cs = ConjunctSolve(None,None)\n", + "#print('done')\n", + "#print('loading conjunctivesolve Databases')\n", + "#cs.load_DB_into_FASTsearch()\n", + "#print('done')\n", + "#from oi import *\n", + "#oi = oi()\n", + "\n", + "#print('loading session..')\n", + "\n", + "#print('done')\n", + "import dill\n", + "dill.load_session('voilastate.db')\n", + "\n", + "#from SolveShorts import *\n", + "#print('loading SolveShorts Databases')\n", + "#solSh.load_DB_into_FASTsearch()\n", + "\n", + "#import SentSeg\n", + "#sent_seg = SentSeg.SentSeg('de')\n", + "#print('loading SentSeg Databases')\n", + "#sent_seg.LoadSentGlueSGDandGSUtils()\n", + "\n", + "#from FremdWB import *\n", + "#fwb = FremdWB(None,None)\n", + "#fwb.load_DB_into_FASTsearch()\n", + "\n", + "#from Medio import *\n", + "#medi = Medio(None,None)\n", + "#medi.load_DB_into_FASTsearch()\n", + "\n", + "\n", + "#import dill\n", + "#print('dumping the session')\n", + "#dill.dump_session('voilastate.db')\n", + "#print('done')\n", + "\n", + "#from oi import *\n", + "#oi = oi()\n", + "\n", + "import ipywidgets as widgets\n", + "\n", + "TextFeld = widgets.Textarea(placeholder='Hier den Text eingeben, darunter können die Module aktiviert(grün) oder deaktiviert(pink) werden', disabled=False)\n", + "#print(TextFeld.layout.height)\n", + "TextFeld.layout.height = '180px'\n", + "TextFeld.layout.width = '99%'\n", + "\n", + "TextFelddouble = widgets.Textarea(placeholder='Hier den Text eingeben, darunter können die Module aktiviert(grün) oder deaktiviert(pink) werden', disabled=False)\n", + "#print(TextFeld.layout.height)\n", + "TextFelddouble.layout.height = '180px'\n", + "TextFelddouble.layout.width = '99%'\n", + "TextFelddouble.disabled=True\n", + "\n", + "display(TextFeld)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "\n", + "dawidth = '100%'\n", + "daheight = '100%'\n", + "KonjunktiveErsetzen = widgets.ToggleButton(\n", + " value=False,\n", + " description='Konjunktive ersetzen',\n", + " disabled=False,\n", + ")\n", + "KonjunktiveErsetzen.layout.width = dawidth\n", + "KonjunktiveErsetzen.layout.height = '80%'\n", + "\n", + "GenitiveErsetzen = widgets.ToggleButton(\n", + " value=True,\n", + " description='Genitiv ersetzen',\n", + " disabled=False\n", + ")\n", + "GenitiveErsetzen.layout.width = '60%'\n", + "GenitiveErsetzen.layout.height = daheight\n", + "\n", + "PassivErsetzen = widgets.ToggleButton(\n", + " value=True,\n", + " description='Passiv ersetzen',\n", + " disabled=False\n", + ")\n", + "PassivErsetzen.layout.width = '70%'\n", + "PassivErsetzen.layout.height = '90%'\n", + "\n", + "SayYes = widgets.ToggleButton(\n", + " value=True,\n", + " description='Verneinungen ersetzen',\n", + " disabled=False\n", + ")\n", + "SayYes.layout.width = '80%'\n", + "SayYes.layout.height = '80%'\n", + "SentSeg = widgets.ToggleButton(\n", + " value=True,\n", + " description='Eine Aussage pro Satz',\n", + " disabled=False\n", + ")\n", + "SentSeg.layout.width = '60%'\n", + "SentSeg.layout.height = daheight\n", + "SolveShorts = widgets.ToggleButton(\n", + " value=False,\n", + " description='Abkürzungen erklären',\n", + " disabled=False\n", + ")\n", + "SolveShorts.layout.width = '80%'\n", + "SolveShorts.layout.height = '90%'\n", + "FremdWB = widgets.ToggleButton(\n", + " value=True,\n", + " description='FremdWoerterbuch',\n", + " disabled=False\n", + ")\n", + "FremdWB.layout.width = '90%'\n", + "FremdWB.layout.height = '90%'\n", + "\n", + "Appendixes = widgets.ToggleButton(\n", + " value=True,\n", + " description='Charakterisierung pro Satz',\n", + " disabled=False\n", + ")\n", + "Appendixes.layout.width = '120%'\n", + "Appendixes.layout.height = '80%'\n", + "\n", + "Medio = widgets.ToggleButton(\n", + " value=True,\n", + " description='Mediopunkte',\n", + " disabled=False\n", + ")\n", + "Medio.layout.width = '50%'\n", + "Medio.layout.height = '90%'\n", + "\n", + "#items1 = [SentSeg, SolveShorts]\n", + "#items2 = [SayYes, PassivErsetzen]\n", + "#items3 = [GenitiveErsetzen, KonjunktiveErsetzen]\n", + "#items = [Textfeld, SentSeg, SolveShorts, SayYes, PassivErsetzen, GenitiveErsetzen, KonjunktiveErsetzen]\n", + "#display(SentSeg, SolveShorts, SayYes, PassivErsetzen, GenitiveErsetzen, KonjunktiveErsetzen)\n", + "#widgets.GridBox(items, layout=widgets.Layout(grid_template_columns=\"repeat(3, 100px)\"))\n", + "\n", + "\n", + "\n", + "#widgets.HBox(items1)\n", + "#widgets.HBox(items2)\n", + "#widgets.HBox(items3)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "import ipywidgets\n", + "out = 'Hier kommt der übersetzte Text heraus.'\n", + "\n", + "TextFeld.add_class(\"thotext\")\n", + "TextFelddouble.add_class(\"thotext\")\n", + "#display(OutTextFeld)\n", + "items = [SentSeg, SolveShorts, SayYes, PassivErsetzen, GenitiveErsetzen, KonjunktiveErsetzen, FremdWB, Appendixes, Medio] \n", + "#display(SentSeg, SolveShorts, SayYes, PassivErsetzen, GenitiveErsetzen, KonjunktiveErsetzen)\n", + "Grid = widgets.GridBox(items, layout=widgets.Layout(justify_items=\"center\", grid_template_columns=\"repeat(3, 30%)\", grid_gap=\"4.5%\", height=\"320px\"))\n" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "c08292c98ddf447ca1c19117241980b8", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "GridBox(children=(ToggleButton(value=True, description='Eine Aussage pro Satz', layout=Layout(height='100%', w…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "\n", + "display(HTML('
'))\n", + "display(Grid)\n", + "\n", + "\n", + "\n", + "\n", + "def function():\n", + " out = 'Wählen Sie ein Kästchen aus!'\n", + " try:\n", + " insentences, punctuations = oi.CellInputText2SplitsentencesWithspacy(TextFeld.value)\n", + " except:\n", + " OutTextFeld.placeholder = 'Bitte auf die Zeichensetzung achten! '\n", + " return\n", + " \n", + " check = 0\n", + " #print('insentences',insentences)\n", + " #print(punctuations)\n", + " if SayYes.value == True:\n", + " \n", + " print('ersetze Gegenteile..')\n", + " outsentences = sy.replaceOpposites(insentences)\n", + " check = 1\n", + " \n", + " \n", + " \n", + " \n", + " if Appendixes.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('generiere ist-Aussagen..')\n", + " outsentences, punctuations = sent_seg.putAppendixesIntoOwnSentences(insentences, punctuations)\n", + " \n", + " if SentSeg.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('forme zu einem Satz pro Aussage um..')\n", + " sentsegformattedsentences = []\n", + " for sentence in insentences:\n", + " \n", + " sentsegformattedsentences.append([sentence])\n", + " \n", + " #print(sentsegformattedsentences)\n", + " sentences = sent_seg.CommaSentenceOrNot(sentsegformattedsentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetUtteranceNumber(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetQuestionOrNot(sentences)\n", + " #print(sentences)\n", + " sentences, punctuations = sent_seg.AndOrSolver(sentences, punctuations)\n", + " #print(len(punctuations))\n", + " #print('sentences after AndOrSolver', sentences, punctuations)\n", + " sentences = sent_seg.CommaSentenceOrNot(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetUtteranceNumber(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetQuestionOrNot(sentences)\n", + " #print(sentences)\n", + " sentences, punctuations = sent_seg.SplitSentencesIntoHauptNebenTuple(sentences, punctuations)\n", + " #print(len(punctuations))\n", + " #print('sentences after split haupt neben', sentences)\n", + " sentences = sent_seg.CommaSentenceOrNot(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetUtteranceNumber(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetQuestionOrNot(sentences)\n", + " #print(sentences)\n", + " outsentences, punctuations = sent_seg.SplitCommatas(sentences, punctuations)\n", + " #print(len(punctuations))\n", + " #print('out',outsentences)\n", + " #print('out', punctuations)\n", + " check = 1\n", + " \n", + " \n", + " if SolveShorts.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('erklaere Abkuerzungen..')\n", + " outsentences = solSh.ExplainShortsInSentencesWithBrackets(insentences)\n", + " check = 1\n", + " #print(len(punctuations)) \n", + " #print('sentences after solveshorts', outsentences)\n", + " \n", + " if PassivErsetzen.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('ersetze Passiv Formen..')\n", + " outsentences = p2a.replacePassivForms(insentences)\n", + " check = 1\n", + " #print(len(punctuations))\n", + " #print('sentences after p2a', outsentences)\n", + " \n", + " if GenitiveErsetzen.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " #print('replacing genitiv forms with dativ..')\n", + " outsentences = gs.ReplaceGenitivWithDativ(insentences)\n", + " check = 1\n", + " #print(len(punctuations))\n", + " #print('sentences after gs', outsentences)\n", + " \n", + " if check == 1:\n", + " newinsentences = []\n", + " for sentence in outsentences: \n", + " newinsentences.append([word.replace('ö','oe').replace('ü','ue').replace('ä','ae').replace('ß','ss') for word in sentence])\n", + " \n", + " outsentences =newinsentences\n", + " if check != 1:\n", + " newinsentences = []\n", + " for sentence in insentences: \n", + " newinsentences.append([word.replace('ö','oe').replace('ü','ue').replace('ä','ae').replace('ß','ss') for word in sentence])\n", + " \n", + " insentences =newinsentences\n", + " #print()\n", + " if KonjunktiveErsetzen.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('ersetze Konjunktive..')\n", + " \n", + " outsentences = cs.replaceConjunctives(insentences)\n", + " #print('outsentences')\n", + " check = 1\n", + " \n", + " #print('sentences after cs', outsentences)\n", + " print(len(punctuations))\n", + " \n", + " if FremdWB.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('Suche Woerterbucheintraege..')\n", + " \n", + " outsentences, punctuations = fwb.fremdEintragAppend(insentences, punctuations)\n", + " #print('outsentences')\n", + " check = 1\n", + " \n", + " if Medio.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('Ersetze lange Woerter mit Mediopunkten..')\n", + " \n", + " outsentences, punctuations = medi.Medioreplace(insentences, punctuations)\n", + " #print('outsentences')\n", + " check = 1\n", + " #print('sentences after medios', outsentences)\n", + " \n", + " \n", + " #print('sentences after fwb', outsentences)\n", + " \n", + " print(len(punctuations))\n", + " \n", + " if check == 1:\n", + " out = ''\n", + " #print('just before looking if the lenght is the same')\n", + " #print(len(outsentences), len(punctuations))\n", + " if len(outsentences) == len(punctuations):\n", + " #print('the length is the same')\n", + " for n in range(len(outsentences)):\n", + " outsentence = outsentences[n]\n", + " outsentence[0] = outsentence[0].title()\n", + " out += ' '.join(outsentence) + punctuations[n] + '\\n'\n", + " \n", + " \n", + " OutTextFeld.value = out\n", + " TextFelddouble.value = TextFeld.value\n", + " display(TextFelddouble)\n", + " \n", + " return \n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "3ca86c6e7e39437eafa36439e3337b42", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "interactive(children=(Button(description='Übersetzen in Leichte Sprache', style=ButtonStyle()), Output()), _do…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "#from IPython.display import Image\n", + "#i = Image(filename='Babelfish.png')\n", + "\n", + "#i.width = '60%'\n", + "#display(i)\n", + "\n", + "#print(widgets.interact_manual.opts)\n", + "\n", + "widgets.interact_manual.opts['manual_name']= 'Übersetzen in Leichte Sprache'\n", + "ola = widgets.interact_manual(function)\n", + "ola.widget.children[0].style.button_color = 'lightgreen'\n", + "ola.widget.children[0].layout.height = '60px'\n", + "ola.widget.children[0].layout.width = '99%'\n", + "\n", + "#widgets.GridBox([ola], layout=widgets.Layout(grid_template_columns=\"repeat(2, 300px)\"))" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "0d6f03c93f0147cd9f33d2a053672b0c", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Textarea(value='', layout=Layout(height='180px', width='99%'), placeholder='Hier kommt der übersetzte Text her…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "OutTextFeld = ipywidgets.Textarea(placeholder=out, disabled=False)\n", + "OutTextFeld.layout.height = '180px'\n", + "OutTextFeld.layout.width = '99%'\n", + "OutTextFeld.add_class(\"thetext\")\n", + "display(OutTextFeld)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [], + "source": [ + "beschreibung = 'Textfeld für die verbesserte Übersetzung. Satzzeichen bitte nicht vergessen! \\nFalls ein neuer Eintrag ins Fremdwörterbuch vorgenommen werden soll, schreibe einfach unter die Verbesserungen einen Eintrag der Form: [\\'Abfall\\', \\'Abfall sind Sachen die wir nicht mehr brauchen\\'] \\nFalls ein neuer Eintrag in die Mediopunkte-Datenbank vorgenommen werden soll, bitte schreibe unter die Verbesserungen einen Eintrag der Form: [\\'Mediopunkt\\', \\'Medio·punkt\\']' \n", + "VerbeTextFeld = ipywidgets.Textarea(placeholder=beschreibung, disabled=False)\n", + "VerbeTextFeld.layout.height = '180px'\n", + "VerbeTextFeld.layout.width = '99%'\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "\n", + "def Absendefunction():\n", + " \n", + " \n", + "\n", + " \n", + " #print(VerbeTextFeld.value)\n", + " #print(TextFeld.value)\n", + " #print(OutTextFeld.value)\n", + " \n", + " try:\n", + "\n", + " insentences, punctuations = oi.CellInputText2SplitsentencesWithspacy(VerbeTextFeld.value)\n", + " insentences1, punctuations1 = oi.CellInputText2SplitsentencesWithspacy(TextFeld.value)\n", + " insentences2, punctuations2 = oi.CellInputText2SplitsentencesWithspacy(OutTextFeld.value)\n", + "\n", + " #print(insentences2)\n", + "\n", + " #print(insentences, punctuations)\n", + " indexDerVerbesserungen = 0\n", + " number = 0\n", + " with open('Verbesserungen/indexDerVerbesserungen.txt', 'r') as dok:\n", + " for number in dok:\n", + " number = int(number)\n", + " if number >= 0:\n", + " indexDerVerbesserungen = number\n", + " number += 1\n", + "\n", + " with open('Verbesserungen/indexDerVerbesserungen.txt', 'w') as dokk:\n", + " dokk.write(str(number))\n", + "\n", + "\n", + " with open('Verbesserungen/Verbesserungen' + str(number) + '.txt','w+') as doc:\n", + " for n in range(len(insentences)):\n", + " npunct = punctuations[n]\n", + " writeline = insentences[n]+ [npunct]\n", + "\n", + " writestring = ' '.join(writeline)\n", + "\n", + " doc.write(writestring + '\\n')\n", + "\n", + " with open('Verbesserungen/Input' + str(number) + '.txt','w+') as docc:\n", + " for n in range(len(insentences1)):\n", + " npunct = punctuations1[n]\n", + " writeline = insentences1[n]+ [npunct]\n", + "\n", + " writestring = ' '.join(writeline)\n", + "\n", + " docc.write(writestring + '\\n')\n", + " with open('Verbesserungen/Output' + str(number) + '.txt','w+') as dock:\n", + " #print(insentences2)\n", + " for n in range(len(insentences2)):\n", + " #print(len(insentences2))\n", + "\n", + " #print(punctuations2)\n", + " npunct = punctuations2[n]\n", + " writeline = insentences2[n]+ [npunct]\n", + "\n", + " writestring = ' '.join(writeline)\n", + "\n", + " dock.write(writestring + '\\n')\n", + "\n", + " VerbeTextFeld.value = ''\n", + " OutTextFeld.value = ''\n", + " VerbeTextFeld.placeholder = beschreibung\n", + " OutTextFeld.placeholder = 'Hier kommt der übersetzte Text raus.'\n", + " except:\n", + " VerbeTextFeld.placeholder = 'Es gab einen Fehler. Eventuell ist die Zeichensetzung nicht ok. \\n \\n' + beschreibung\n", + " \n", + " \n", + " return \n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "1713cde35a884104b20056d5694d168a", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Textarea(value='', layout=Layout(height='180px', width='99%'), placeholder=\"Textfeld für die verbesserte Übers…" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "d4100a2d84d34630acf974f78d316abc", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "interactive(children=(Button(description='Absenden', style=ButtonStyle()), Output()), _dom_classes=('widget-in…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "VerbeTextFeld.add_class(\"thetext3\")\n", + "display(VerbeTextFeld)\n", + "display(HTML('
'))\n", + "widgets.interact_manual.opts['manual_name']= 'Absenden'\n", + "AbsendenUndSchreiben = widgets.interact_manual(Absendefunction)\n", + "AbsendenUndSchreiben.widget.children[0].style.button_color = 'lightblue'\n", + "AbsendenUndSchreiben.widget.children[0].layout.height = '60px'\n", + "AbsendenUndSchreiben.widget.children[0].layout.width = '99%'\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%html\n", + "" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%html\n", + "" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "data": { + "text/html": [ + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%html\n", + "" + ] + } + ], + "metadata": { + "celltoolbar": "Raw Cell Format", + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.5.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/Prototyp/.Prototype-8.ipynb b/Prototyp/.Prototype-8.ipynb new file mode 100644 index 00000000..50a76c09 --- /dev/null +++ b/Prototyp/.Prototype-8.ipynb @@ -0,0 +1,2313 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "#from oi import *\n", + "\n", + "#oi = oi()\n", + "\n", + "#import ipyvuetify as v\n", + "\n", + "#state = False\n", + "#oi.toggle_code(state)\n", + "\n", + "#button = widgets.ToggleButton(state, description = button_descriptions[state])\n", + "\n", + "\n", + "#button.observe(oi.button_action, \"value\")\n", + "\n", + "#button.layout.height = '50px'\n", + "#button.layout.width = '100%'\n", + "#button.add_class(\"thobutton\")\n", + "\n", + "#display(button)\n", + "#button.button_style = 'danger'\n" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "\n", + "

Ein Klick auf das Logo - und es geht zum Code

\n", + "\n", + "\n", + " \n", + "\n", + " \n", + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%html\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "\n", + "

Ein Klick auf das Logo - und es geht zum Code

\n", + "\n", + "\n", + " \n", + "\n", + " \n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "#%%html\n", + "#\n", + "#\n", + "#\n", + "#\n", + "#\n", + "#

Ein Klick auf das Logo - und es geht zum Code

\n", + "#" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [], + "source": [ + "#%%html\n", + "#" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "#from ipywidgets import widgets\n", + "#button = widgets.Button(description='Click me')\n", + "#display(button)\n", + "\n", + "#def on_button_clicked(b):\n", + "# print('button clicked')\n", + "\n", + "#button.on_click(on_button_clicked)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "\n", + "# importing the libraries\n", + "#print('importing libraries')\n", + "#from SolveShorts import *\n", + "#import SentSeg\n", + "#from SayYes import *\n", + "#from Passiv2Aktiv import *\n", + "#from GenitivSolve import *\n", + "#from ConjunctSolve import *\n", + "#from FremdWB import *\n", + "#from Medio import *\n", + "#from oi import *\n", + "#print('done')\n", + "\n", + "\n", + "# Initializing the libraries\n", + "#print('initializing the libraries')\n", + "#print('1')\n", + "#solSh = SolveShorts('hkldbShorts.hkl', 'hkldbShorts_All.hkl')\n", + "#print('2')\n", + "#sent_seg = SentSeg.SentSeg('de')\n", + "#print('3')\n", + "#sy = SayYes(None, None)\n", + "#print('4')\n", + "#p2a = Passiv2Aktiv(None, None, None)\n", + "#print('5')\n", + "#gs = GenitivSolve()\n", + "#print('6')\n", + "#cs = ConjunctSolve(None,None)\n", + "#print('7')\n", + "#oi = oi()\n", + "#print('8')\n", + "#fwb = FremdWB(None,None)\n", + "#print('9')\n", + "#medi = Medio(None,None)\n", + "#print('done')\n", + "\n", + "\n", + "# loading the databases and models\n", + "#print('loading SolveShorts Databases')\n", + "#solSh.load_DB_into_FASTsearch()\n", + "#print('loading SentSeg Databases')\n", + "#sent_seg.LoadSentGlueSGDandGSUtils()\n", + "#print('loading SayYes Databases')\n", + "#sy.load_DB_into_FASTsearch()\n", + "#print('loading passiv2active Databases')\n", + "#p2a.load_DB_into_FASTsearch()\n", + "#print('loading conjunctivesolve Databases')\n", + "#cs.load_DB_into_FASTsearch()\n", + "#print('loading the fremdwb Databases')\n", + "#fwb.load_DB_into_FASTsearch()\n", + "#print('loading the mediodot Databases')\n", + "#medi.load_DB_into_FASTsearch()\n", + "\n", + "#print('done')\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "106e70dd208f4de29ae10874823d30a8", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Textarea(value='', layout=Layout(height='180px', width='99%'), placeholder='Hier den Text eingeben, darunter k…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "\n", + "#print('done')\n", + "\n", + "#print('loading passiv2active Databases')\n", + "#from Passiv2Aktiv import *\n", + "#p2a = Passiv2Aktiv(None, None, None)\n", + "#p2a.load_DB_into_FASTsearch()\n", + "#print('done')\n", + "#print('loading genitiv solve')\n", + "#from GenitivSolve import *\n", + "#gs = GenitivSolve()\n", + "\n", + "#from FremdWB import *\n", + "#fwb = FremdWB(None,None)\n", + "#fwb.load_DB_into_FASTsearch()\n", + "\n", + "#from SolveShorts import *\n", + "#print('loading SolveShorts Databases')\n", + "#solSh.load_DB_into_FASTsearch()\n", + "\n", + "#from SayYes import *\n", + "#sy = SayYes(None, None)\n", + "#print('loading SayYes Databases')\n", + "#sy.load_DB_into_FASTsearch()\n", + "\n", + "#import SentSeg\n", + "#sent_seg = SentSeg.SentSeg('de')\n", + "#print('loading SentSeg Databases')\n", + "#sent_seg.LoadSentGlueSGDandGSUtils()\n", + "#print('loading conjunctsolve')\n", + "#from ConjunctSolve import *\n", + "#cs = ConjunctSolve(None,None)\n", + "#print('done')\n", + "#print('loading conjunctivesolve Databases')\n", + "#cs.load_DB_into_FASTsearch()\n", + "#print('done')\n", + "#from oi import *\n", + "#oi = oi()\n", + "\n", + "#print('loading session..')\n", + "\n", + "#print('done')\n", + "import dill\n", + "dill.load_session('voilastate.db')\n", + "\n", + "#from SolveShorts import *\n", + "#print('loading SolveShorts Databases')\n", + "#solSh.load_DB_into_FASTsearch()\n", + "\n", + "#import SentSeg\n", + "#sent_seg = SentSeg.SentSeg('de')\n", + "#print('loading SentSeg Databases')\n", + "#sent_seg.LoadSentGlueSGDandGSUtils()\n", + "\n", + "#from FremdWB import *\n", + "#fwb = FremdWB(None,None)\n", + "#fwb.load_DB_into_FASTsearch()\n", + "\n", + "#from Medio import *\n", + "#medi = Medio(None,None)\n", + "#medi.load_DB_into_FASTsearch()\n", + "\n", + "\n", + "#import dill\n", + "#print('dumping the session')\n", + "#dill.dump_session('voilastate.db')\n", + "#print('done')\n", + "\n", + "#from oi import *\n", + "#oi = oi()\n", + "\n", + "import ipywidgets as widgets\n", + "\n", + "TextFeld = widgets.Textarea(placeholder='Hier den Text eingeben, darunter können die Module aktiviert(grün) oder deaktiviert(pink) werden', disabled=False)\n", + "#print(TextFeld.layout.height)\n", + "TextFeld.layout.height = '180px'\n", + "TextFeld.layout.width = '99%'\n", + "\n", + "TextFelddouble = widgets.Textarea(placeholder='Hier den Text eingeben, darunter können die Module aktiviert(grün) oder deaktiviert(pink) werden', disabled=False)\n", + "#print(TextFeld.layout.height)\n", + "TextFelddouble.layout.height = '180px'\n", + "TextFelddouble.layout.width = '99%'\n", + "TextFelddouble.disabled=True\n", + "\n", + "display(TextFeld)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "\n", + "dawidth = '100%'\n", + "daheight = '100%'\n", + "KonjunktiveErsetzen = widgets.ToggleButton(\n", + " value=False,\n", + " description='Konjunktive ersetzen',\n", + " disabled=False,\n", + ")\n", + "KonjunktiveErsetzen.layout.width = dawidth\n", + "KonjunktiveErsetzen.layout.height = '80%'\n", + "\n", + "GenitiveErsetzen = widgets.ToggleButton(\n", + " value=True,\n", + " description='Genitiv ersetzen',\n", + " disabled=False\n", + ")\n", + "GenitiveErsetzen.layout.width = '60%'\n", + "GenitiveErsetzen.layout.height = daheight\n", + "\n", + "PassivErsetzen = widgets.ToggleButton(\n", + " value=True,\n", + " description='Passiv ersetzen',\n", + " disabled=False\n", + ")\n", + "PassivErsetzen.layout.width = '70%'\n", + "PassivErsetzen.layout.height = '90%'\n", + "\n", + "SayYes = widgets.ToggleButton(\n", + " value=True,\n", + " description='Verneinungen ersetzen',\n", + " disabled=False\n", + ")\n", + "SayYes.layout.width = '80%'\n", + "SayYes.layout.height = '80%'\n", + "SentSeg = widgets.ToggleButton(\n", + " value=True,\n", + " description='Eine Aussage pro Satz',\n", + " disabled=False\n", + ")\n", + "SentSeg.layout.width = '60%'\n", + "SentSeg.layout.height = daheight\n", + "SolveShorts = widgets.ToggleButton(\n", + " value=False,\n", + " description='Abkürzungen erklären',\n", + " disabled=False\n", + ")\n", + "SolveShorts.layout.width = '80%'\n", + "SolveShorts.layout.height = '90%'\n", + "FremdWB = widgets.ToggleButton(\n", + " value=True,\n", + " description='FremdWoerterbuch',\n", + " disabled=False\n", + ")\n", + "FremdWB.layout.width = '90%'\n", + "FremdWB.layout.height = '90%'\n", + "\n", + "Appendixes = widgets.ToggleButton(\n", + " value=True,\n", + " description='Charakterisierung pro Satz',\n", + " disabled=False\n", + ")\n", + "Appendixes.layout.width = '120%'\n", + "Appendixes.layout.height = '80%'\n", + "\n", + "Medio = widgets.ToggleButton(\n", + " value=True,\n", + " description='Mediopunkte',\n", + " disabled=False\n", + ")\n", + "Medio.layout.width = '50%'\n", + "Medio.layout.height = '90%'\n", + "\n", + "#items1 = [SentSeg, SolveShorts]\n", + "#items2 = [SayYes, PassivErsetzen]\n", + "#items3 = [GenitiveErsetzen, KonjunktiveErsetzen]\n", + "#items = [Textfeld, SentSeg, SolveShorts, SayYes, PassivErsetzen, GenitiveErsetzen, KonjunktiveErsetzen]\n", + "#display(SentSeg, SolveShorts, SayYes, PassivErsetzen, GenitiveErsetzen, KonjunktiveErsetzen)\n", + "#widgets.GridBox(items, layout=widgets.Layout(grid_template_columns=\"repeat(3, 100px)\"))\n", + "\n", + "\n", + "\n", + "#widgets.HBox(items1)\n", + "#widgets.HBox(items2)\n", + "#widgets.HBox(items3)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "import ipywidgets\n", + "out = 'Hier kommt der übersetzte Text heraus.'\n", + "\n", + "TextFeld.add_class(\"thotext\")\n", + "TextFelddouble.add_class(\"thotext\")\n", + "#display(OutTextFeld)\n", + "items = [SentSeg, SolveShorts, SayYes, PassivErsetzen, GenitiveErsetzen, KonjunktiveErsetzen, FremdWB, Appendixes, Medio] \n", + "#display(SentSeg, SolveShorts, SayYes, PassivErsetzen, GenitiveErsetzen, KonjunktiveErsetzen)\n", + "Grid = widgets.GridBox(items, layout=widgets.Layout(justify_items=\"center\", grid_template_columns=\"repeat(3, 30%)\", grid_gap=\"4.5%\", height=\"320px\"))\n" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "c08292c98ddf447ca1c19117241980b8", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "GridBox(children=(ToggleButton(value=True, description='Eine Aussage pro Satz', layout=Layout(height='100%', w…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "\n", + "display(HTML('
'))\n", + "display(Grid)\n", + "\n", + "\n", + "\n", + "\n", + "def function():\n", + " out = 'Wählen Sie ein Kästchen aus!'\n", + " try:\n", + " insentences, punctuations = oi.CellInputText2SplitsentencesWithspacy(TextFeld.value)\n", + " except:\n", + " OutTextFeld.placeholder = 'Bitte auf die Zeichensetzung achten! '\n", + " return\n", + " \n", + " check = 0\n", + " #print('insentences',insentences)\n", + " #print(punctuations)\n", + " if SayYes.value == True:\n", + " \n", + " print('ersetze Gegenteile..')\n", + " outsentences = sy.replaceOpposites(insentences)\n", + " check = 1\n", + " \n", + " \n", + " \n", + " \n", + " if Appendixes.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('generiere ist-Aussagen..')\n", + " outsentences, punctuations = sent_seg.putAppendixesIntoOwnSentences(insentences, punctuations)\n", + " \n", + " if SentSeg.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('forme zu einem Satz pro Aussage um..')\n", + " sentsegformattedsentences = []\n", + " for sentence in insentences:\n", + " \n", + " sentsegformattedsentences.append([sentence])\n", + " \n", + " #print(sentsegformattedsentences)\n", + " sentences = sent_seg.CommaSentenceOrNot(sentsegformattedsentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetUtteranceNumber(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetQuestionOrNot(sentences)\n", + " #print(sentences)\n", + " sentences, punctuations = sent_seg.AndOrSolver(sentences, punctuations)\n", + " #print(len(punctuations))\n", + " #print('sentences after AndOrSolver', sentences, punctuations)\n", + " sentences = sent_seg.CommaSentenceOrNot(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetUtteranceNumber(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetQuestionOrNot(sentences)\n", + " #print(sentences)\n", + " sentences, punctuations = sent_seg.SplitSentencesIntoHauptNebenTuple(sentences, punctuations)\n", + " #print(len(punctuations))\n", + " #print('sentences after split haupt neben', sentences)\n", + " sentences = sent_seg.CommaSentenceOrNot(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetUtteranceNumber(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetQuestionOrNot(sentences)\n", + " #print(sentences)\n", + " outsentences, punctuations = sent_seg.SplitCommatas(sentences, punctuations)\n", + " #print(len(punctuations))\n", + " #print('out',outsentences)\n", + " #print('out', punctuations)\n", + " check = 1\n", + " \n", + " \n", + " if SolveShorts.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('erklaere Abkuerzungen..')\n", + " outsentences = solSh.ExplainShortsInSentencesWithBrackets(insentences)\n", + " check = 1\n", + " #print(len(punctuations)) \n", + " #print('sentences after solveshorts', outsentences)\n", + " \n", + " if PassivErsetzen.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('ersetze Passiv Formen..')\n", + " outsentences = p2a.replacePassivForms(insentences)\n", + " check = 1\n", + " #print(len(punctuations))\n", + " #print('sentences after p2a', outsentences)\n", + " \n", + " if GenitiveErsetzen.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " #print('replacing genitiv forms with dativ..')\n", + " outsentences = gs.ReplaceGenitivWithDativ(insentences)\n", + " check = 1\n", + " #print(len(punctuations))\n", + " #print('sentences after gs', outsentences)\n", + " \n", + " if check == 1:\n", + " newinsentences = []\n", + " for sentence in outsentences: \n", + " newinsentences.append([word.replace('ö','oe').replace('ü','ue').replace('ä','ae').replace('ß','ss') for word in sentence])\n", + " \n", + " outsentences =newinsentences\n", + " if check != 1:\n", + " newinsentences = []\n", + " for sentence in insentences: \n", + " newinsentences.append([word.replace('ö','oe').replace('ü','ue').replace('ä','ae').replace('ß','ss') for word in sentence])\n", + " \n", + " insentences =newinsentences\n", + " #print()\n", + " if KonjunktiveErsetzen.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('ersetze Konjunktive..')\n", + " \n", + " outsentences = cs.replaceConjunctives(insentences)\n", + " #print('outsentences')\n", + " check = 1\n", + " \n", + " #print('sentences after cs', outsentences)\n", + " print(len(punctuations))\n", + " \n", + " if FremdWB.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('Suche Woerterbucheintraege..')\n", + " \n", + " outsentences, punctuations = fwb.fremdEintragAppend(insentences, punctuations)\n", + " #print('outsentences')\n", + " check = 1\n", + " \n", + " if Medio.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('Ersetze lange Woerter mit Mediopunkten..')\n", + " \n", + " outsentences, punctuations = medi.Medioreplace(insentences, punctuations)\n", + " #print('outsentences')\n", + " check = 1\n", + " #print('sentences after medios', outsentences)\n", + " \n", + " \n", + " #print('sentences after fwb', outsentences)\n", + " \n", + " print(len(punctuations))\n", + " \n", + " if check == 1:\n", + " out = ''\n", + " #print('just before looking if the lenght is the same')\n", + " #print(len(outsentences), len(punctuations))\n", + " if len(outsentences) == len(punctuations):\n", + " #print('the length is the same')\n", + " for n in range(len(outsentences)):\n", + " outsentence = outsentences[n]\n", + " outsentence[0] = outsentence[0].title()\n", + " out += ' '.join(outsentence) + punctuations[n] + '\\n'\n", + " \n", + " \n", + " OutTextFeld.value = out\n", + " TextFelddouble.value = TextFeld.value\n", + " display(TextFelddouble)\n", + " \n", + " return \n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "3ca86c6e7e39437eafa36439e3337b42", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "interactive(children=(Button(description='Übersetzen in Leichte Sprache', style=ButtonStyle()), Output()), _do…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "#from IPython.display import Image\n", + "#i = Image(filename='Babelfish.png')\n", + "\n", + "#i.width = '60%'\n", + "#display(i)\n", + "\n", + "#print(widgets.interact_manual.opts)\n", + "\n", + "widgets.interact_manual.opts['manual_name']= 'Übersetzen in Leichte Sprache'\n", + "ola = widgets.interact_manual(function)\n", + "ola.widget.children[0].style.button_color = 'lightgreen'\n", + "ola.widget.children[0].layout.height = '60px'\n", + "ola.widget.children[0].layout.width = '99%'\n", + "\n", + "#widgets.GridBox([ola], layout=widgets.Layout(grid_template_columns=\"repeat(2, 300px)\"))" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "0d6f03c93f0147cd9f33d2a053672b0c", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Textarea(value='', layout=Layout(height='180px', width='99%'), placeholder='Hier kommt der übersetzte Text her…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "OutTextFeld = ipywidgets.Textarea(placeholder=out, disabled=False)\n", + "OutTextFeld.layout.height = '180px'\n", + "OutTextFeld.layout.width = '99%'\n", + "OutTextFeld.add_class(\"thetext\")\n", + "display(OutTextFeld)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [], + "source": [ + "beschreibung = 'Textfeld für die verbesserte Übersetzung. Satzzeichen bitte nicht vergessen! \\nFalls ein neuer Eintrag ins Fremdwörterbuch vorgenommen werden soll, schreibe einfach unter die Verbesserungen einen Eintrag der Form: [\\'Abfall\\', \\'Abfall sind Sachen die wir nicht mehr brauchen\\'] \\nFalls ein neuer Eintrag in die Mediopunkte-Datenbank vorgenommen werden soll, bitte schreibe unter die Verbesserungen einen Eintrag der Form: [\\'Mediopunkt\\', \\'Medio·punkt\\']' \n", + "VerbeTextFeld = ipywidgets.Textarea(placeholder=beschreibung, disabled=False)\n", + "VerbeTextFeld.layout.height = '180px'\n", + "VerbeTextFeld.layout.width = '99%'\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "\n", + "def Absendefunction():\n", + " \n", + " \n", + "\n", + " \n", + " #print(VerbeTextFeld.value)\n", + " #print(TextFeld.value)\n", + " #print(OutTextFeld.value)\n", + " \n", + " try:\n", + "\n", + " insentences, punctuations = oi.CellInputText2SplitsentencesWithspacy(VerbeTextFeld.value)\n", + " insentences1, punctuations1 = oi.CellInputText2SplitsentencesWithspacy(TextFeld.value)\n", + " insentences2, punctuations2 = oi.CellInputText2SplitsentencesWithspacy(OutTextFeld.value)\n", + "\n", + " #print(insentences2)\n", + "\n", + " #print(insentences, punctuations)\n", + " indexDerVerbesserungen = 0\n", + " number = 0\n", + " with open('Verbesserungen/indexDerVerbesserungen.txt', 'r') as dok:\n", + " for number in dok:\n", + " number = int(number)\n", + " if number >= 0:\n", + " indexDerVerbesserungen = number\n", + " number += 1\n", + "\n", + " with open('Verbesserungen/indexDerVerbesserungen.txt', 'w') as dokk:\n", + " dokk.write(str(number))\n", + "\n", + "\n", + " with open('Verbesserungen/Verbesserungen' + str(number) + '.txt','w+') as doc:\n", + " for n in range(len(insentences)):\n", + " npunct = punctuations[n]\n", + " writeline = insentences[n]+ [npunct]\n", + "\n", + " writestring = ' '.join(writeline)\n", + "\n", + " doc.write(writestring + '\\n')\n", + "\n", + " with open('Verbesserungen/Input' + str(number) + '.txt','w+') as docc:\n", + " for n in range(len(insentences1)):\n", + " npunct = punctuations1[n]\n", + " writeline = insentences1[n]+ [npunct]\n", + "\n", + " writestring = ' '.join(writeline)\n", + "\n", + " docc.write(writestring + '\\n')\n", + " with open('Verbesserungen/Output' + str(number) + '.txt','w+') as dock:\n", + " #print(insentences2)\n", + " for n in range(len(insentences2)):\n", + " #print(len(insentences2))\n", + "\n", + " #print(punctuations2)\n", + " npunct = punctuations2[n]\n", + " writeline = insentences2[n]+ [npunct]\n", + "\n", + " writestring = ' '.join(writeline)\n", + "\n", + " dock.write(writestring + '\\n')\n", + "\n", + " VerbeTextFeld.value = ''\n", + " OutTextFeld.value = ''\n", + " VerbeTextFeld.placeholder = beschreibung\n", + " OutTextFeld.placeholder = 'Hier kommt der übersetzte Text raus.'\n", + " except:\n", + " VerbeTextFeld.placeholder = 'Es gab einen Fehler. Eventuell ist die Zeichensetzung nicht ok. \\n \\n' + beschreibung\n", + " \n", + " \n", + " return \n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "1713cde35a884104b20056d5694d168a", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Textarea(value='', layout=Layout(height='180px', width='99%'), placeholder=\"Textfeld für die verbesserte Übers…" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "d4100a2d84d34630acf974f78d316abc", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "interactive(children=(Button(description='Absenden', style=ButtonStyle()), Output()), _dom_classes=('widget-in…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "VerbeTextFeld.add_class(\"thetext3\")\n", + "display(VerbeTextFeld)\n", + "display(HTML('
'))\n", + "widgets.interact_manual.opts['manual_name']= 'Absenden'\n", + "AbsendenUndSchreiben = widgets.interact_manual(Absendefunction)\n", + "AbsendenUndSchreiben.widget.children[0].style.button_color = 'lightblue'\n", + "AbsendenUndSchreiben.widget.children[0].layout.height = '60px'\n", + "AbsendenUndSchreiben.widget.children[0].layout.width = '99%'\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%html\n", + "" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%html\n", + "" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "data": { + "text/html": [ + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%html\n", + "" + ] + } + ], + "metadata": { + "celltoolbar": "Raw Cell Format", + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.5.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/Prototyp/.Prototype-9.ipynb b/Prototyp/.Prototype-9.ipynb new file mode 100644 index 00000000..50a76c09 --- /dev/null +++ b/Prototyp/.Prototype-9.ipynb @@ -0,0 +1,2313 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "#from oi import *\n", + "\n", + "#oi = oi()\n", + "\n", + "#import ipyvuetify as v\n", + "\n", + "#state = False\n", + "#oi.toggle_code(state)\n", + "\n", + "#button = widgets.ToggleButton(state, description = button_descriptions[state])\n", + "\n", + "\n", + "#button.observe(oi.button_action, \"value\")\n", + "\n", + "#button.layout.height = '50px'\n", + "#button.layout.width = '100%'\n", + "#button.add_class(\"thobutton\")\n", + "\n", + "#display(button)\n", + "#button.button_style = 'danger'\n" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "\n", + "

Ein Klick auf das Logo - und es geht zum Code

\n", + "\n", + "\n", + " \n", + "\n", + " \n", + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%html\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "\n", + "

Ein Klick auf das Logo - und es geht zum Code

\n", + "\n", + "\n", + " \n", + "\n", + " \n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "#%%html\n", + "#\n", + "#\n", + "#\n", + "#\n", + "#\n", + "#

Ein Klick auf das Logo - und es geht zum Code

\n", + "#" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [], + "source": [ + "#%%html\n", + "#" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "#from ipywidgets import widgets\n", + "#button = widgets.Button(description='Click me')\n", + "#display(button)\n", + "\n", + "#def on_button_clicked(b):\n", + "# print('button clicked')\n", + "\n", + "#button.on_click(on_button_clicked)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "\n", + "# importing the libraries\n", + "#print('importing libraries')\n", + "#from SolveShorts import *\n", + "#import SentSeg\n", + "#from SayYes import *\n", + "#from Passiv2Aktiv import *\n", + "#from GenitivSolve import *\n", + "#from ConjunctSolve import *\n", + "#from FremdWB import *\n", + "#from Medio import *\n", + "#from oi import *\n", + "#print('done')\n", + "\n", + "\n", + "# Initializing the libraries\n", + "#print('initializing the libraries')\n", + "#print('1')\n", + "#solSh = SolveShorts('hkldbShorts.hkl', 'hkldbShorts_All.hkl')\n", + "#print('2')\n", + "#sent_seg = SentSeg.SentSeg('de')\n", + "#print('3')\n", + "#sy = SayYes(None, None)\n", + "#print('4')\n", + "#p2a = Passiv2Aktiv(None, None, None)\n", + "#print('5')\n", + "#gs = GenitivSolve()\n", + "#print('6')\n", + "#cs = ConjunctSolve(None,None)\n", + "#print('7')\n", + "#oi = oi()\n", + "#print('8')\n", + "#fwb = FremdWB(None,None)\n", + "#print('9')\n", + "#medi = Medio(None,None)\n", + "#print('done')\n", + "\n", + "\n", + "# loading the databases and models\n", + "#print('loading SolveShorts Databases')\n", + "#solSh.load_DB_into_FASTsearch()\n", + "#print('loading SentSeg Databases')\n", + "#sent_seg.LoadSentGlueSGDandGSUtils()\n", + "#print('loading SayYes Databases')\n", + "#sy.load_DB_into_FASTsearch()\n", + "#print('loading passiv2active Databases')\n", + "#p2a.load_DB_into_FASTsearch()\n", + "#print('loading conjunctivesolve Databases')\n", + "#cs.load_DB_into_FASTsearch()\n", + "#print('loading the fremdwb Databases')\n", + "#fwb.load_DB_into_FASTsearch()\n", + "#print('loading the mediodot Databases')\n", + "#medi.load_DB_into_FASTsearch()\n", + "\n", + "#print('done')\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "106e70dd208f4de29ae10874823d30a8", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Textarea(value='', layout=Layout(height='180px', width='99%'), placeholder='Hier den Text eingeben, darunter k…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "\n", + "#print('done')\n", + "\n", + "#print('loading passiv2active Databases')\n", + "#from Passiv2Aktiv import *\n", + "#p2a = Passiv2Aktiv(None, None, None)\n", + "#p2a.load_DB_into_FASTsearch()\n", + "#print('done')\n", + "#print('loading genitiv solve')\n", + "#from GenitivSolve import *\n", + "#gs = GenitivSolve()\n", + "\n", + "#from FremdWB import *\n", + "#fwb = FremdWB(None,None)\n", + "#fwb.load_DB_into_FASTsearch()\n", + "\n", + "#from SolveShorts import *\n", + "#print('loading SolveShorts Databases')\n", + "#solSh.load_DB_into_FASTsearch()\n", + "\n", + "#from SayYes import *\n", + "#sy = SayYes(None, None)\n", + "#print('loading SayYes Databases')\n", + "#sy.load_DB_into_FASTsearch()\n", + "\n", + "#import SentSeg\n", + "#sent_seg = SentSeg.SentSeg('de')\n", + "#print('loading SentSeg Databases')\n", + "#sent_seg.LoadSentGlueSGDandGSUtils()\n", + "#print('loading conjunctsolve')\n", + "#from ConjunctSolve import *\n", + "#cs = ConjunctSolve(None,None)\n", + "#print('done')\n", + "#print('loading conjunctivesolve Databases')\n", + "#cs.load_DB_into_FASTsearch()\n", + "#print('done')\n", + "#from oi import *\n", + "#oi = oi()\n", + "\n", + "#print('loading session..')\n", + "\n", + "#print('done')\n", + "import dill\n", + "dill.load_session('voilastate.db')\n", + "\n", + "#from SolveShorts import *\n", + "#print('loading SolveShorts Databases')\n", + "#solSh.load_DB_into_FASTsearch()\n", + "\n", + "#import SentSeg\n", + "#sent_seg = SentSeg.SentSeg('de')\n", + "#print('loading SentSeg Databases')\n", + "#sent_seg.LoadSentGlueSGDandGSUtils()\n", + "\n", + "#from FremdWB import *\n", + "#fwb = FremdWB(None,None)\n", + "#fwb.load_DB_into_FASTsearch()\n", + "\n", + "#from Medio import *\n", + "#medi = Medio(None,None)\n", + "#medi.load_DB_into_FASTsearch()\n", + "\n", + "\n", + "#import dill\n", + "#print('dumping the session')\n", + "#dill.dump_session('voilastate.db')\n", + "#print('done')\n", + "\n", + "#from oi import *\n", + "#oi = oi()\n", + "\n", + "import ipywidgets as widgets\n", + "\n", + "TextFeld = widgets.Textarea(placeholder='Hier den Text eingeben, darunter können die Module aktiviert(grün) oder deaktiviert(pink) werden', disabled=False)\n", + "#print(TextFeld.layout.height)\n", + "TextFeld.layout.height = '180px'\n", + "TextFeld.layout.width = '99%'\n", + "\n", + "TextFelddouble = widgets.Textarea(placeholder='Hier den Text eingeben, darunter können die Module aktiviert(grün) oder deaktiviert(pink) werden', disabled=False)\n", + "#print(TextFeld.layout.height)\n", + "TextFelddouble.layout.height = '180px'\n", + "TextFelddouble.layout.width = '99%'\n", + "TextFelddouble.disabled=True\n", + "\n", + "display(TextFeld)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "\n", + "dawidth = '100%'\n", + "daheight = '100%'\n", + "KonjunktiveErsetzen = widgets.ToggleButton(\n", + " value=False,\n", + " description='Konjunktive ersetzen',\n", + " disabled=False,\n", + ")\n", + "KonjunktiveErsetzen.layout.width = dawidth\n", + "KonjunktiveErsetzen.layout.height = '80%'\n", + "\n", + "GenitiveErsetzen = widgets.ToggleButton(\n", + " value=True,\n", + " description='Genitiv ersetzen',\n", + " disabled=False\n", + ")\n", + "GenitiveErsetzen.layout.width = '60%'\n", + "GenitiveErsetzen.layout.height = daheight\n", + "\n", + "PassivErsetzen = widgets.ToggleButton(\n", + " value=True,\n", + " description='Passiv ersetzen',\n", + " disabled=False\n", + ")\n", + "PassivErsetzen.layout.width = '70%'\n", + "PassivErsetzen.layout.height = '90%'\n", + "\n", + "SayYes = widgets.ToggleButton(\n", + " value=True,\n", + " description='Verneinungen ersetzen',\n", + " disabled=False\n", + ")\n", + "SayYes.layout.width = '80%'\n", + "SayYes.layout.height = '80%'\n", + "SentSeg = widgets.ToggleButton(\n", + " value=True,\n", + " description='Eine Aussage pro Satz',\n", + " disabled=False\n", + ")\n", + "SentSeg.layout.width = '60%'\n", + "SentSeg.layout.height = daheight\n", + "SolveShorts = widgets.ToggleButton(\n", + " value=False,\n", + " description='Abkürzungen erklären',\n", + " disabled=False\n", + ")\n", + "SolveShorts.layout.width = '80%'\n", + "SolveShorts.layout.height = '90%'\n", + "FremdWB = widgets.ToggleButton(\n", + " value=True,\n", + " description='FremdWoerterbuch',\n", + " disabled=False\n", + ")\n", + "FremdWB.layout.width = '90%'\n", + "FremdWB.layout.height = '90%'\n", + "\n", + "Appendixes = widgets.ToggleButton(\n", + " value=True,\n", + " description='Charakterisierung pro Satz',\n", + " disabled=False\n", + ")\n", + "Appendixes.layout.width = '120%'\n", + "Appendixes.layout.height = '80%'\n", + "\n", + "Medio = widgets.ToggleButton(\n", + " value=True,\n", + " description='Mediopunkte',\n", + " disabled=False\n", + ")\n", + "Medio.layout.width = '50%'\n", + "Medio.layout.height = '90%'\n", + "\n", + "#items1 = [SentSeg, SolveShorts]\n", + "#items2 = [SayYes, PassivErsetzen]\n", + "#items3 = [GenitiveErsetzen, KonjunktiveErsetzen]\n", + "#items = [Textfeld, SentSeg, SolveShorts, SayYes, PassivErsetzen, GenitiveErsetzen, KonjunktiveErsetzen]\n", + "#display(SentSeg, SolveShorts, SayYes, PassivErsetzen, GenitiveErsetzen, KonjunktiveErsetzen)\n", + "#widgets.GridBox(items, layout=widgets.Layout(grid_template_columns=\"repeat(3, 100px)\"))\n", + "\n", + "\n", + "\n", + "#widgets.HBox(items1)\n", + "#widgets.HBox(items2)\n", + "#widgets.HBox(items3)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "import ipywidgets\n", + "out = 'Hier kommt der übersetzte Text heraus.'\n", + "\n", + "TextFeld.add_class(\"thotext\")\n", + "TextFelddouble.add_class(\"thotext\")\n", + "#display(OutTextFeld)\n", + "items = [SentSeg, SolveShorts, SayYes, PassivErsetzen, GenitiveErsetzen, KonjunktiveErsetzen, FremdWB, Appendixes, Medio] \n", + "#display(SentSeg, SolveShorts, SayYes, PassivErsetzen, GenitiveErsetzen, KonjunktiveErsetzen)\n", + "Grid = widgets.GridBox(items, layout=widgets.Layout(justify_items=\"center\", grid_template_columns=\"repeat(3, 30%)\", grid_gap=\"4.5%\", height=\"320px\"))\n" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "c08292c98ddf447ca1c19117241980b8", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "GridBox(children=(ToggleButton(value=True, description='Eine Aussage pro Satz', layout=Layout(height='100%', w…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "\n", + "display(HTML('
'))\n", + "display(Grid)\n", + "\n", + "\n", + "\n", + "\n", + "def function():\n", + " out = 'Wählen Sie ein Kästchen aus!'\n", + " try:\n", + " insentences, punctuations = oi.CellInputText2SplitsentencesWithspacy(TextFeld.value)\n", + " except:\n", + " OutTextFeld.placeholder = 'Bitte auf die Zeichensetzung achten! '\n", + " return\n", + " \n", + " check = 0\n", + " #print('insentences',insentences)\n", + " #print(punctuations)\n", + " if SayYes.value == True:\n", + " \n", + " print('ersetze Gegenteile..')\n", + " outsentences = sy.replaceOpposites(insentences)\n", + " check = 1\n", + " \n", + " \n", + " \n", + " \n", + " if Appendixes.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('generiere ist-Aussagen..')\n", + " outsentences, punctuations = sent_seg.putAppendixesIntoOwnSentences(insentences, punctuations)\n", + " \n", + " if SentSeg.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('forme zu einem Satz pro Aussage um..')\n", + " sentsegformattedsentences = []\n", + " for sentence in insentences:\n", + " \n", + " sentsegformattedsentences.append([sentence])\n", + " \n", + " #print(sentsegformattedsentences)\n", + " sentences = sent_seg.CommaSentenceOrNot(sentsegformattedsentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetUtteranceNumber(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetQuestionOrNot(sentences)\n", + " #print(sentences)\n", + " sentences, punctuations = sent_seg.AndOrSolver(sentences, punctuations)\n", + " #print(len(punctuations))\n", + " #print('sentences after AndOrSolver', sentences, punctuations)\n", + " sentences = sent_seg.CommaSentenceOrNot(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetUtteranceNumber(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetQuestionOrNot(sentences)\n", + " #print(sentences)\n", + " sentences, punctuations = sent_seg.SplitSentencesIntoHauptNebenTuple(sentences, punctuations)\n", + " #print(len(punctuations))\n", + " #print('sentences after split haupt neben', sentences)\n", + " sentences = sent_seg.CommaSentenceOrNot(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetUtteranceNumber(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetQuestionOrNot(sentences)\n", + " #print(sentences)\n", + " outsentences, punctuations = sent_seg.SplitCommatas(sentences, punctuations)\n", + " #print(len(punctuations))\n", + " #print('out',outsentences)\n", + " #print('out', punctuations)\n", + " check = 1\n", + " \n", + " \n", + " if SolveShorts.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('erklaere Abkuerzungen..')\n", + " outsentences = solSh.ExplainShortsInSentencesWithBrackets(insentences)\n", + " check = 1\n", + " #print(len(punctuations)) \n", + " #print('sentences after solveshorts', outsentences)\n", + " \n", + " if PassivErsetzen.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('ersetze Passiv Formen..')\n", + " outsentences = p2a.replacePassivForms(insentences)\n", + " check = 1\n", + " #print(len(punctuations))\n", + " #print('sentences after p2a', outsentences)\n", + " \n", + " if GenitiveErsetzen.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " #print('replacing genitiv forms with dativ..')\n", + " outsentences = gs.ReplaceGenitivWithDativ(insentences)\n", + " check = 1\n", + " #print(len(punctuations))\n", + " #print('sentences after gs', outsentences)\n", + " \n", + " if check == 1:\n", + " newinsentences = []\n", + " for sentence in outsentences: \n", + " newinsentences.append([word.replace('ö','oe').replace('ü','ue').replace('ä','ae').replace('ß','ss') for word in sentence])\n", + " \n", + " outsentences =newinsentences\n", + " if check != 1:\n", + " newinsentences = []\n", + " for sentence in insentences: \n", + " newinsentences.append([word.replace('ö','oe').replace('ü','ue').replace('ä','ae').replace('ß','ss') for word in sentence])\n", + " \n", + " insentences =newinsentences\n", + " #print()\n", + " if KonjunktiveErsetzen.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('ersetze Konjunktive..')\n", + " \n", + " outsentences = cs.replaceConjunctives(insentences)\n", + " #print('outsentences')\n", + " check = 1\n", + " \n", + " #print('sentences after cs', outsentences)\n", + " print(len(punctuations))\n", + " \n", + " if FremdWB.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('Suche Woerterbucheintraege..')\n", + " \n", + " outsentences, punctuations = fwb.fremdEintragAppend(insentences, punctuations)\n", + " #print('outsentences')\n", + " check = 1\n", + " \n", + " if Medio.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('Ersetze lange Woerter mit Mediopunkten..')\n", + " \n", + " outsentences, punctuations = medi.Medioreplace(insentences, punctuations)\n", + " #print('outsentences')\n", + " check = 1\n", + " #print('sentences after medios', outsentences)\n", + " \n", + " \n", + " #print('sentences after fwb', outsentences)\n", + " \n", + " print(len(punctuations))\n", + " \n", + " if check == 1:\n", + " out = ''\n", + " #print('just before looking if the lenght is the same')\n", + " #print(len(outsentences), len(punctuations))\n", + " if len(outsentences) == len(punctuations):\n", + " #print('the length is the same')\n", + " for n in range(len(outsentences)):\n", + " outsentence = outsentences[n]\n", + " outsentence[0] = outsentence[0].title()\n", + " out += ' '.join(outsentence) + punctuations[n] + '\\n'\n", + " \n", + " \n", + " OutTextFeld.value = out\n", + " TextFelddouble.value = TextFeld.value\n", + " display(TextFelddouble)\n", + " \n", + " return \n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "3ca86c6e7e39437eafa36439e3337b42", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "interactive(children=(Button(description='Übersetzen in Leichte Sprache', style=ButtonStyle()), Output()), _do…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "#from IPython.display import Image\n", + "#i = Image(filename='Babelfish.png')\n", + "\n", + "#i.width = '60%'\n", + "#display(i)\n", + "\n", + "#print(widgets.interact_manual.opts)\n", + "\n", + "widgets.interact_manual.opts['manual_name']= 'Übersetzen in Leichte Sprache'\n", + "ola = widgets.interact_manual(function)\n", + "ola.widget.children[0].style.button_color = 'lightgreen'\n", + "ola.widget.children[0].layout.height = '60px'\n", + "ola.widget.children[0].layout.width = '99%'\n", + "\n", + "#widgets.GridBox([ola], layout=widgets.Layout(grid_template_columns=\"repeat(2, 300px)\"))" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "0d6f03c93f0147cd9f33d2a053672b0c", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Textarea(value='', layout=Layout(height='180px', width='99%'), placeholder='Hier kommt der übersetzte Text her…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "OutTextFeld = ipywidgets.Textarea(placeholder=out, disabled=False)\n", + "OutTextFeld.layout.height = '180px'\n", + "OutTextFeld.layout.width = '99%'\n", + "OutTextFeld.add_class(\"thetext\")\n", + "display(OutTextFeld)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [], + "source": [ + "beschreibung = 'Textfeld für die verbesserte Übersetzung. Satzzeichen bitte nicht vergessen! \\nFalls ein neuer Eintrag ins Fremdwörterbuch vorgenommen werden soll, schreibe einfach unter die Verbesserungen einen Eintrag der Form: [\\'Abfall\\', \\'Abfall sind Sachen die wir nicht mehr brauchen\\'] \\nFalls ein neuer Eintrag in die Mediopunkte-Datenbank vorgenommen werden soll, bitte schreibe unter die Verbesserungen einen Eintrag der Form: [\\'Mediopunkt\\', \\'Medio·punkt\\']' \n", + "VerbeTextFeld = ipywidgets.Textarea(placeholder=beschreibung, disabled=False)\n", + "VerbeTextFeld.layout.height = '180px'\n", + "VerbeTextFeld.layout.width = '99%'\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "\n", + "def Absendefunction():\n", + " \n", + " \n", + "\n", + " \n", + " #print(VerbeTextFeld.value)\n", + " #print(TextFeld.value)\n", + " #print(OutTextFeld.value)\n", + " \n", + " try:\n", + "\n", + " insentences, punctuations = oi.CellInputText2SplitsentencesWithspacy(VerbeTextFeld.value)\n", + " insentences1, punctuations1 = oi.CellInputText2SplitsentencesWithspacy(TextFeld.value)\n", + " insentences2, punctuations2 = oi.CellInputText2SplitsentencesWithspacy(OutTextFeld.value)\n", + "\n", + " #print(insentences2)\n", + "\n", + " #print(insentences, punctuations)\n", + " indexDerVerbesserungen = 0\n", + " number = 0\n", + " with open('Verbesserungen/indexDerVerbesserungen.txt', 'r') as dok:\n", + " for number in dok:\n", + " number = int(number)\n", + " if number >= 0:\n", + " indexDerVerbesserungen = number\n", + " number += 1\n", + "\n", + " with open('Verbesserungen/indexDerVerbesserungen.txt', 'w') as dokk:\n", + " dokk.write(str(number))\n", + "\n", + "\n", + " with open('Verbesserungen/Verbesserungen' + str(number) + '.txt','w+') as doc:\n", + " for n in range(len(insentences)):\n", + " npunct = punctuations[n]\n", + " writeline = insentences[n]+ [npunct]\n", + "\n", + " writestring = ' '.join(writeline)\n", + "\n", + " doc.write(writestring + '\\n')\n", + "\n", + " with open('Verbesserungen/Input' + str(number) + '.txt','w+') as docc:\n", + " for n in range(len(insentences1)):\n", + " npunct = punctuations1[n]\n", + " writeline = insentences1[n]+ [npunct]\n", + "\n", + " writestring = ' '.join(writeline)\n", + "\n", + " docc.write(writestring + '\\n')\n", + " with open('Verbesserungen/Output' + str(number) + '.txt','w+') as dock:\n", + " #print(insentences2)\n", + " for n in range(len(insentences2)):\n", + " #print(len(insentences2))\n", + "\n", + " #print(punctuations2)\n", + " npunct = punctuations2[n]\n", + " writeline = insentences2[n]+ [npunct]\n", + "\n", + " writestring = ' '.join(writeline)\n", + "\n", + " dock.write(writestring + '\\n')\n", + "\n", + " VerbeTextFeld.value = ''\n", + " OutTextFeld.value = ''\n", + " VerbeTextFeld.placeholder = beschreibung\n", + " OutTextFeld.placeholder = 'Hier kommt der übersetzte Text raus.'\n", + " except:\n", + " VerbeTextFeld.placeholder = 'Es gab einen Fehler. Eventuell ist die Zeichensetzung nicht ok. \\n \\n' + beschreibung\n", + " \n", + " \n", + " return \n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "1713cde35a884104b20056d5694d168a", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Textarea(value='', layout=Layout(height='180px', width='99%'), placeholder=\"Textfeld für die verbesserte Übers…" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "d4100a2d84d34630acf974f78d316abc", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "interactive(children=(Button(description='Absenden', style=ButtonStyle()), Output()), _dom_classes=('widget-in…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "VerbeTextFeld.add_class(\"thetext3\")\n", + "display(VerbeTextFeld)\n", + "display(HTML('
'))\n", + "widgets.interact_manual.opts['manual_name']= 'Absenden'\n", + "AbsendenUndSchreiben = widgets.interact_manual(Absendefunction)\n", + "AbsendenUndSchreiben.widget.children[0].style.button_color = 'lightblue'\n", + "AbsendenUndSchreiben.widget.children[0].layout.height = '60px'\n", + "AbsendenUndSchreiben.widget.children[0].layout.width = '99%'\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%html\n", + "" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%html\n", + "" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "data": { + "text/html": [ + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%html\n", + "" + ] + } + ], + "metadata": { + "celltoolbar": "Raw Cell Format", + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.5.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/Prototyp/.ipynb_checkpoints/.Prototype-0-checkpoint.ipynb b/Prototyp/.ipynb_checkpoints/.Prototype-0-checkpoint.ipynb new file mode 100644 index 00000000..37cbca29 --- /dev/null +++ b/Prototyp/.ipynb_checkpoints/.Prototype-0-checkpoint.ipynb @@ -0,0 +1,2373 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "#from oi import *\n", + "\n", + "#oi = oi()\n", + "\n", + "#import ipyvuetify as v\n", + "\n", + "#state = False\n", + "#oi.toggle_code(state)\n", + "\n", + "#button = widgets.ToggleButton(state, description = button_descriptions[state])\n", + "\n", + "\n", + "#button.observe(oi.button_action, \"value\")\n", + "\n", + "#button.layout.height = '50px'\n", + "#button.layout.width = '100%'\n", + "#button.add_class(\"thobutton\")\n", + "\n", + "#display(button)\n", + "#button.button_style = 'danger'\n" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "\n", + "

Ein Klick auf das Logo - und es geht zum Code

\n", + "\n", + "\n", + " \n", + "\n", + " \n", + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%html\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "\n", + "

Ein Klick auf das Logo - und es geht zum Code

\n", + "\n", + "\n", + " \n", + "\n", + " \n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "#%%html\n", + "#\n", + "#\n", + "#\n", + "#\n", + "#\n", + "#

Ein Klick auf das Logo - und es geht zum Code

\n", + "#" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%html\n", + "\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "#%%html\n", + "#" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "#from ipywidgets import widgets\n", + "#button = widgets.Button(description='Click me')\n", + "#display(button)\n", + "\n", + "#def on_button_clicked(b):\n", + "# print('button clicked')\n", + "\n", + "#button.on_click(on_button_clicked)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "\n", + "# importing the libraries\n", + "#print('importing libraries')\n", + "#from SolveShorts import *\n", + "#import SentSeg\n", + "#from SayYes import *\n", + "#from Passiv2Aktiv import *\n", + "#from GenitivSolve import *\n", + "#from ConjunctSolve import *\n", + "#from FremdWB import *\n", + "#from Medio import *\n", + "#from oi import *\n", + "#print('done')\n", + "\n", + "\n", + "# Initializing the libraries\n", + "#print('initializing the libraries')\n", + "#print('1')\n", + "#solSh = SolveShorts('hkldbShorts.hkl', 'hkldbShorts_All.hkl')\n", + "#print('2')\n", + "#sent_seg = SentSeg.SentSeg('de')\n", + "#print('3')\n", + "#sy = SayYes(None, None)\n", + "#print('4')\n", + "#p2a = Passiv2Aktiv(None, None, None)\n", + "#print('5')\n", + "#gs = GenitivSolve()\n", + "#print('6')\n", + "#cs = ConjunctSolve(None,None)\n", + "#print('7')\n", + "#oi = oi()\n", + "#print('8')\n", + "#fwb = FremdWB(None,None)\n", + "#print('9')\n", + "#medi = Medio(None,None)\n", + "#print('done')\n", + "\n", + "\n", + "# loading the databases and models\n", + "#print('loading SolveShorts Databases')\n", + "#solSh.load_DB_into_FASTsearch()\n", + "#print('loading SentSeg Databases')\n", + "#sent_seg.LoadSentGlueSGDandGSUtils()\n", + "#print('loading SayYes Databases')\n", + "#sy.load_DB_into_FASTsearch()\n", + "#print('loading passiv2active Databases')\n", + "#p2a.load_DB_into_FASTsearch()\n", + "#print('loading conjunctivesolve Databases')\n", + "#cs.load_DB_into_FASTsearch()\n", + "#print('loading the fremdwb Databases')\n", + "#fwb.load_DB_into_FASTsearch()\n", + "#print('loading the mediodot Databases')\n", + "#medi.load_DB_into_FASTsearch()\n", + "\n", + "#print('done')\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "6a24b25b44a846aea1b396e744d222e4", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Textarea(value='', layout=Layout(height='180px', width='99%'), placeholder='Hier den Text eingeben, darunter k…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "\n", + "#print('done')\n", + "\n", + "#print('loading passiv2active Databases')\n", + "#from Passiv2Aktiv import *\n", + "#p2a = Passiv2Aktiv(None, None, None)\n", + "#p2a.load_DB_into_FASTsearch()\n", + "#print('done')\n", + "#print('loading genitiv solve')\n", + "#from GenitivSolve import *\n", + "#gs = GenitivSolve()\n", + "\n", + "#from FremdWB import *\n", + "#fwb = FremdWB(None,None)\n", + "#fwb.load_DB_into_FASTsearch()\n", + "\n", + "#from SolveShorts import *\n", + "#print('loading SolveShorts Databases')\n", + "#solSh.load_DB_into_FASTsearch()\n", + "\n", + "#from SayYes import *\n", + "#sy = SayYes(None, None)\n", + "#print('loading SayYes Databases')\n", + "#sy.load_DB_into_FASTsearch()\n", + "\n", + "#import SentSeg\n", + "#sent_seg = SentSeg.SentSeg('de')\n", + "#print('loading SentSeg Databases')\n", + "#sent_seg.LoadSentGlueSGDandGSUtils()\n", + "#print('loading conjunctsolve')\n", + "#from ConjunctSolve import *\n", + "#cs = ConjunctSolve(None,None)\n", + "#print('done')\n", + "#print('loading conjunctivesolve Databases')\n", + "#cs.load_DB_into_FASTsearch()\n", + "#print('done')\n", + "#from oi import *\n", + "#oi = oi()\n", + "\n", + "#print('loading session..')\n", + "\n", + "#print('done')\n", + "import dill\n", + "dill.load_session('voilastate.db')\n", + "\n", + "#from SolveShorts import *\n", + "#print('loading SolveShorts Databases')\n", + "#solSh.load_DB_into_FASTsearch()\n", + "\n", + "#import SentSeg\n", + "#sent_seg = SentSeg.SentSeg('de')\n", + "#print('loading SentSeg Databases')\n", + "#sent_seg.LoadSentGlueSGDandGSUtils()\n", + "\n", + "#from FremdWB import *\n", + "#fwb = FremdWB(None,None)\n", + "#fwb.load_DB_into_FASTsearch()\n", + "\n", + "#from Medio import *\n", + "#medi = Medio(None,None)\n", + "#medi.load_DB_into_FASTsearch()\n", + "\n", + "\n", + "#import dill\n", + "#print('dumping the session')\n", + "#dill.dump_session('voilastate.db')\n", + "#print('done')\n", + "\n", + "#from oi import *\n", + "#oi = oi()\n", + "\n", + "import ipywidgets as widgets\n", + "\n", + "TextFeld = widgets.Textarea(placeholder='Hier den Text eingeben, darunter können die Module aktiviert(grün) oder deaktiviert(pink) werden', disabled=False)\n", + "#print(TextFeld.layout.height)\n", + "TextFeld.layout.height = '180px'\n", + "TextFeld.layout.width = '99%'\n", + "\n", + "TextFelddouble = widgets.Textarea(placeholder='Hier den Text eingeben, darunter können die Module aktiviert(grün) oder deaktiviert(pink) werden', disabled=False)\n", + "#print(TextFeld.layout.height)\n", + "TextFelddouble.layout.height = '180px'\n", + "TextFelddouble.layout.width = '99%'\n", + "TextFelddouble.disabled=True\n", + "\n", + "display(TextFeld)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "\n", + "dawidth = '100%'\n", + "daheight = '100%'\n", + "KonjunktiveErsetzen = widgets.ToggleButton(\n", + " value=False,\n", + " description='Konjunktive ersetzen',\n", + " disabled=False,\n", + ")\n", + "KonjunktiveErsetzen.layout.width = dawidth\n", + "KonjunktiveErsetzen.layout.height = '80%'\n", + "\n", + "GenitiveErsetzen = widgets.ToggleButton(\n", + " value=True,\n", + " description='Genitiv ersetzen',\n", + " disabled=False\n", + ")\n", + "GenitiveErsetzen.layout.width = '60%'\n", + "GenitiveErsetzen.layout.height = daheight\n", + "\n", + "PassivErsetzen = widgets.ToggleButton(\n", + " value=True,\n", + " description='Passiv ersetzen',\n", + " disabled=False\n", + ")\n", + "PassivErsetzen.layout.width = '70%'\n", + "PassivErsetzen.layout.height = '90%'\n", + "\n", + "SayYes = widgets.ToggleButton(\n", + " value=True,\n", + " description='Verneinungen ersetzen',\n", + " disabled=False\n", + ")\n", + "SayYes.layout.width = '80%'\n", + "SayYes.layout.height = '80%'\n", + "SentSeg = widgets.ToggleButton(\n", + " value=True,\n", + " description='Eine Aussage pro Satz',\n", + " disabled=False\n", + ")\n", + "SentSeg.layout.width = '60%'\n", + "SentSeg.layout.height = daheight\n", + "SolveShorts = widgets.ToggleButton(\n", + " value=False,\n", + " description='Abkürzungen erklären',\n", + " disabled=False\n", + ")\n", + "SolveShorts.layout.width = '80%'\n", + "SolveShorts.layout.height = '90%'\n", + "FremdWB = widgets.ToggleButton(\n", + " value=True,\n", + " description='FremdWoerterbuch',\n", + " disabled=False\n", + ")\n", + "FremdWB.layout.width = '90%'\n", + "FremdWB.layout.height = '90%'\n", + "\n", + "Appendixes = widgets.ToggleButton(\n", + " value=True,\n", + " description='Charakterisierung pro Satz',\n", + " disabled=False\n", + ")\n", + "Appendixes.layout.width = '120%'\n", + "Appendixes.layout.height = '80%'\n", + "\n", + "Medio = widgets.ToggleButton(\n", + " value=True,\n", + " description='Mediopunkte',\n", + " disabled=False\n", + ")\n", + "Medio.layout.width = '50%'\n", + "Medio.layout.height = '90%'\n", + "\n", + "#items1 = [SentSeg, SolveShorts]\n", + "#items2 = [SayYes, PassivErsetzen]\n", + "#items3 = [GenitiveErsetzen, KonjunktiveErsetzen]\n", + "#items = [Textfeld, SentSeg, SolveShorts, SayYes, PassivErsetzen, GenitiveErsetzen, KonjunktiveErsetzen]\n", + "#display(SentSeg, SolveShorts, SayYes, PassivErsetzen, GenitiveErsetzen, KonjunktiveErsetzen)\n", + "#widgets.GridBox(items, layout=widgets.Layout(grid_template_columns=\"repeat(3, 100px)\"))\n", + "\n", + "\n", + "\n", + "#widgets.HBox(items1)\n", + "#widgets.HBox(items2)\n", + "#widgets.HBox(items3)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "import ipywidgets\n", + "out = 'Hier kommt der übersetzte Text heraus.'\n", + "\n", + "TextFeld.add_class(\"thotext\")\n", + "TextFelddouble.add_class(\"thotext\")\n", + "#display(OutTextFeld)\n", + "items = [SentSeg, SolveShorts, SayYes, PassivErsetzen, GenitiveErsetzen, KonjunktiveErsetzen, FremdWB, Appendixes, Medio] \n", + "#display(SentSeg, SolveShorts, SayYes, PassivErsetzen, GenitiveErsetzen, KonjunktiveErsetzen)\n", + "Grid = widgets.GridBox(items, layout=widgets.Layout(justify_items=\"center\", grid_template_columns=\"repeat(3, 30%)\", grid_gap=\"4.5%\", height=\"320px\"))\n" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "2bfcacdb87c640bb93cde56d3dd5aeaf", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "GridBox(children=(ToggleButton(value=True, description='Eine Aussage pro Satz', layout=Layout(height='100%', w…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "\n", + "display(HTML('
'))\n", + "display(Grid)\n", + "\n", + "\n", + "\n", + "\n", + "def function():\n", + " out = 'Wählen Sie ein Kästchen aus!'\n", + " try:\n", + " insentences, punctuations = oi.CellInputText2SplitsentencesWithspacy(TextFeld.value)\n", + " except:\n", + " OutTextFeld.placeholder = 'Bitte auf die Zeichensetzung achten! '\n", + " return\n", + " \n", + " check = 0\n", + " #print('insentences',insentences)\n", + " #print(punctuations)\n", + " if SayYes.value == True:\n", + " \n", + " print('ersetze Gegenteile..')\n", + " outsentences = sy.replaceOpposites(insentences)\n", + " check = 1\n", + " \n", + " \n", + " \n", + " \n", + " if Appendixes.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('generiere ist-Aussagen..')\n", + " outsentences, punctuations = sent_seg.putAppendixesIntoOwnSentences(insentences, punctuations)\n", + " \n", + " if SentSeg.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('forme zu einem Satz pro Aussage um..')\n", + " sentsegformattedsentences = []\n", + " for sentence in insentences:\n", + " \n", + " sentsegformattedsentences.append([sentence])\n", + " \n", + " #print(sentsegformattedsentences)\n", + " sentences = sent_seg.CommaSentenceOrNot(sentsegformattedsentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetUtteranceNumber(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetQuestionOrNot(sentences)\n", + " #print(sentences)\n", + " sentences, punctuations = sent_seg.AndOrSolver(sentences, punctuations)\n", + " #print(len(punctuations))\n", + " #print('sentences after AndOrSolver', sentences, punctuations)\n", + " sentences = sent_seg.CommaSentenceOrNot(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetUtteranceNumber(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetQuestionOrNot(sentences)\n", + " #print(sentences)\n", + " sentences, punctuations = sent_seg.SplitSentencesIntoHauptNebenTuple(sentences, punctuations)\n", + " #print(len(punctuations))\n", + " #print('sentences after split haupt neben', sentences)\n", + " sentences = sent_seg.CommaSentenceOrNot(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetUtteranceNumber(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetQuestionOrNot(sentences)\n", + " #print(sentences)\n", + " outsentences, punctuations = sent_seg.SplitCommatas(sentences, punctuations)\n", + " #print(len(punctuations))\n", + " #print('out',outsentences)\n", + " #print('out', punctuations)\n", + " check = 1\n", + " \n", + " \n", + " if SolveShorts.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('erklaere Abkuerzungen..')\n", + " outsentences = solSh.ExplainShortsInSentencesWithBrackets(insentences)\n", + " check = 1\n", + " #print(len(punctuations)) \n", + " #print('sentences after solveshorts', outsentences)\n", + " \n", + " if PassivErsetzen.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('ersetze Passiv Formen..')\n", + " outsentences = p2a.replacePassivForms(insentences)\n", + " check = 1\n", + " #print(len(punctuations))\n", + " #print('sentences after p2a', outsentences)\n", + " \n", + " if GenitiveErsetzen.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " #print('replacing genitiv forms with dativ..')\n", + " outsentences = gs.ReplaceGenitivWithDativ(insentences)\n", + " check = 1\n", + " #print(len(punctuations))\n", + " #print('sentences after gs', outsentences)\n", + " \n", + " if check == 1:\n", + " newinsentences = []\n", + " for sentence in outsentences: \n", + " newinsentences.append([word.replace('ö','oe').replace('ü','ue').replace('ä','ae').replace('ß','ss') for word in sentence])\n", + " \n", + " outsentences =newinsentences\n", + " if check != 1:\n", + " newinsentences = []\n", + " for sentence in insentences: \n", + " newinsentences.append([word.replace('ö','oe').replace('ü','ue').replace('ä','ae').replace('ß','ss') for word in sentence])\n", + " \n", + " insentences =newinsentences\n", + " #print()\n", + " if KonjunktiveErsetzen.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('ersetze Konjunktive..')\n", + " \n", + " outsentences = cs.replaceConjunctives(insentences)\n", + " #print('outsentences')\n", + " check = 1\n", + " \n", + " #print('sentences after cs', outsentences)\n", + " print(len(punctuations))\n", + " \n", + " if FremdWB.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('Suche Woerterbucheintraege..')\n", + " \n", + " outsentences, punctuations = fwb.fremdEintragAppend(insentences, punctuations)\n", + " #print('outsentences')\n", + " check = 1\n", + " \n", + " if Medio.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('Ersetze lange Woerter mit Mediopunkten..')\n", + " \n", + " outsentences, punctuations = medi.Medioreplace(insentences, punctuations)\n", + " #print('outsentences')\n", + " check = 1\n", + " #print('sentences after medios', outsentences)\n", + " \n", + " \n", + " #print('sentences after fwb', outsentences)\n", + " \n", + " print(len(punctuations))\n", + " \n", + " if check == 1:\n", + " out = ''\n", + " #print('just before looking if the lenght is the same')\n", + " #print(len(outsentences), len(punctuations))\n", + " if len(outsentences) == len(punctuations):\n", + " #print('the length is the same')\n", + " for n in range(len(outsentences)):\n", + " outsentence = outsentences[n]\n", + " outsentence[0] = outsentence[0].title()\n", + " out += ' '.join(outsentence) + punctuations[n] + '\\n'\n", + " \n", + " \n", + " OutTextFeld.value = out\n", + " TextFelddouble.value = TextFeld.value\n", + " display(TextFelddouble)\n", + " \n", + " return \n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "scrolled": false + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "2da49b6bc0c64b468368c639db95a1a6", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "interactive(children=(Button(description='Übersetzen in Leichte Sprache', style=ButtonStyle()), Output()), _do…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "#from IPython.display import Image\n", + "#i = Image(filename='Babelfish.png')\n", + "\n", + "#i.width = '60%'\n", + "#display(i)\n", + "\n", + "#print(widgets.interact_manual.opts)\n", + "\n", + "widgets.interact_manual.opts['manual_name']= 'Übersetzen in Leichte Sprache'\n", + "ola = widgets.interact_manual(function)\n", + "ola.widget.children[0].style.button_color = 'lightgreen'\n", + "ola.widget.children[0].layout.height = '60px'\n", + "ola.widget.children[0].layout.width = '99%'\n", + "\n", + "#widgets.GridBox([ola], layout=widgets.Layout(grid_template_columns=\"repeat(2, 300px)\"))" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "16d4e37ff391417f8844c35944a3f1af", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Textarea(value='', layout=Layout(height='180px', width='99%'), placeholder='Hier kommt der übersetzte Text her…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "OutTextFeld = ipywidgets.Textarea(placeholder=out, disabled=False)\n", + "OutTextFeld.layout.height = '180px'\n", + "OutTextFeld.layout.width = '99%'\n", + "OutTextFeld.add_class(\"thetext\")\n", + "display(OutTextFeld)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [], + "source": [ + "beschreibung = 'Textfeld für die verbesserte Übersetzung. Satzzeichen bitte nicht vergessen! \\nFalls ein neuer Eintrag ins Fremdwörterbuch vorgenommen werden soll, schreibe einfach unter die Verbesserungen einen Eintrag der Form: [\\'Abfall\\', \\'Abfall sind Sachen die wir nicht mehr brauchen\\'] \\nFalls ein neuer Eintrag in die Mediopunkte-Datenbank vorgenommen werden soll, bitte schreibe unter die Verbesserungen einen Eintrag der Form: [\\'Mediopunkt\\', \\'Medio·punkt\\']' \n", + "VerbeTextFeld = ipywidgets.Textarea(placeholder=beschreibung, disabled=False)\n", + "VerbeTextFeld.layout.height = '180px'\n", + "VerbeTextFeld.layout.width = '99%'\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "\n", + "def Absendefunction():\n", + " \n", + " \n", + "\n", + " \n", + " #print(VerbeTextFeld.value)\n", + " #print(TextFeld.value)\n", + " #print(OutTextFeld.value)\n", + " \n", + " try:\n", + "\n", + " insentences, punctuations = oi.CellInputText2SplitsentencesWithspacy(VerbeTextFeld.value)\n", + " insentences1, punctuations1 = oi.CellInputText2SplitsentencesWithspacy(TextFeld.value)\n", + " insentences2, punctuations2 = oi.CellInputText2SplitsentencesWithspacy(OutTextFeld.value)\n", + "\n", + " #print(insentences2)\n", + "\n", + " #print(insentences, punctuations)\n", + " indexDerVerbesserungen = 0\n", + " number = 0\n", + " with open('Verbesserungen/indexDerVerbesserungen.txt', 'r') as dok:\n", + " for number in dok:\n", + " number = int(number)\n", + " if number >= 0:\n", + " indexDerVerbesserungen = number\n", + " number += 1\n", + "\n", + " with open('Verbesserungen/indexDerVerbesserungen.txt', 'w') as dokk:\n", + " dokk.write(str(number))\n", + "\n", + "\n", + " with open('Verbesserungen/Verbesserungen' + str(number) + '.txt','w+') as doc:\n", + " for n in range(len(insentences)):\n", + " npunct = punctuations[n]\n", + " writeline = insentences[n]+ [npunct]\n", + "\n", + " writestring = ' '.join(writeline)\n", + "\n", + " doc.write(writestring + '\\n')\n", + "\n", + " with open('Verbesserungen/Input' + str(number) + '.txt','w+') as docc:\n", + " for n in range(len(insentences1)):\n", + " npunct = punctuations1[n]\n", + " writeline = insentences1[n]+ [npunct]\n", + "\n", + " writestring = ' '.join(writeline)\n", + "\n", + " docc.write(writestring + '\\n')\n", + " with open('Verbesserungen/Output' + str(number) + '.txt','w+') as dock:\n", + " #print(insentences2)\n", + " for n in range(len(insentences2)):\n", + " #print(len(insentences2))\n", + "\n", + " #print(punctuations2)\n", + " npunct = punctuations2[n]\n", + " writeline = insentences2[n]+ [npunct]\n", + "\n", + " writestring = ' '.join(writeline)\n", + "\n", + " dock.write(writestring + '\\n')\n", + "\n", + " VerbeTextFeld.value = ''\n", + " OutTextFeld.value = ''\n", + " VerbeTextFeld.placeholder = beschreibung\n", + " OutTextFeld.placeholder = 'Hier kommt der übersetzte Text raus.'\n", + " except:\n", + " VerbeTextFeld.placeholder = 'Es gab einen Fehler. Eventuell ist die Zeichensetzung nicht ok. \\n \\n' + beschreibung\n", + " \n", + " \n", + " return \n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "dd913832ab444630a3842fcf7fd8609b", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Textarea(value='', layout=Layout(height='180px', width='99%'), placeholder=\"Textfeld für die verbesserte Übers…" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "79ed4f2f30324ca582faa59671224d92", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "interactive(children=(Button(description='Absenden', style=ButtonStyle()), Output()), _dom_classes=('widget-in…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "VerbeTextFeld.add_class(\"thetext3\")\n", + "display(VerbeTextFeld)\n", + "display(HTML('
'))\n", + "widgets.interact_manual.opts['manual_name']= 'Absenden'\n", + "AbsendenUndSchreiben = widgets.interact_manual(Absendefunction)\n", + "AbsendenUndSchreiben.widget.children[0].style.button_color = 'lightblue'\n", + "AbsendenUndSchreiben.widget.children[0].layout.height = '60px'\n", + "AbsendenUndSchreiben.widget.children[0].layout.width = '99%'\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%html\n", + "" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%html\n", + "" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "data": { + "text/html": [ + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%html\n", + "" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "celltoolbar": "Raw Cell Format", + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.5.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/Prototyp/.ipynb_checkpoints/.Prototype-1-checkpoint.ipynb b/Prototyp/.ipynb_checkpoints/.Prototype-1-checkpoint.ipynb new file mode 100644 index 00000000..37cbca29 --- /dev/null +++ b/Prototyp/.ipynb_checkpoints/.Prototype-1-checkpoint.ipynb @@ -0,0 +1,2373 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "#from oi import *\n", + "\n", + "#oi = oi()\n", + "\n", + "#import ipyvuetify as v\n", + "\n", + "#state = False\n", + "#oi.toggle_code(state)\n", + "\n", + "#button = widgets.ToggleButton(state, description = button_descriptions[state])\n", + "\n", + "\n", + "#button.observe(oi.button_action, \"value\")\n", + "\n", + "#button.layout.height = '50px'\n", + "#button.layout.width = '100%'\n", + "#button.add_class(\"thobutton\")\n", + "\n", + "#display(button)\n", + "#button.button_style = 'danger'\n" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "\n", + "

Ein Klick auf das Logo - und es geht zum Code

\n", + "\n", + "\n", + " \n", + "\n", + " \n", + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%html\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "\n", + "

Ein Klick auf das Logo - und es geht zum Code

\n", + "\n", + "\n", + " \n", + "\n", + " \n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "#%%html\n", + "#\n", + "#\n", + "#\n", + "#\n", + "#\n", + "#

Ein Klick auf das Logo - und es geht zum Code

\n", + "#" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%html\n", + "\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "#%%html\n", + "#" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "#from ipywidgets import widgets\n", + "#button = widgets.Button(description='Click me')\n", + "#display(button)\n", + "\n", + "#def on_button_clicked(b):\n", + "# print('button clicked')\n", + "\n", + "#button.on_click(on_button_clicked)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "\n", + "# importing the libraries\n", + "#print('importing libraries')\n", + "#from SolveShorts import *\n", + "#import SentSeg\n", + "#from SayYes import *\n", + "#from Passiv2Aktiv import *\n", + "#from GenitivSolve import *\n", + "#from ConjunctSolve import *\n", + "#from FremdWB import *\n", + "#from Medio import *\n", + "#from oi import *\n", + "#print('done')\n", + "\n", + "\n", + "# Initializing the libraries\n", + "#print('initializing the libraries')\n", + "#print('1')\n", + "#solSh = SolveShorts('hkldbShorts.hkl', 'hkldbShorts_All.hkl')\n", + "#print('2')\n", + "#sent_seg = SentSeg.SentSeg('de')\n", + "#print('3')\n", + "#sy = SayYes(None, None)\n", + "#print('4')\n", + "#p2a = Passiv2Aktiv(None, None, None)\n", + "#print('5')\n", + "#gs = GenitivSolve()\n", + "#print('6')\n", + "#cs = ConjunctSolve(None,None)\n", + "#print('7')\n", + "#oi = oi()\n", + "#print('8')\n", + "#fwb = FremdWB(None,None)\n", + "#print('9')\n", + "#medi = Medio(None,None)\n", + "#print('done')\n", + "\n", + "\n", + "# loading the databases and models\n", + "#print('loading SolveShorts Databases')\n", + "#solSh.load_DB_into_FASTsearch()\n", + "#print('loading SentSeg Databases')\n", + "#sent_seg.LoadSentGlueSGDandGSUtils()\n", + "#print('loading SayYes Databases')\n", + "#sy.load_DB_into_FASTsearch()\n", + "#print('loading passiv2active Databases')\n", + "#p2a.load_DB_into_FASTsearch()\n", + "#print('loading conjunctivesolve Databases')\n", + "#cs.load_DB_into_FASTsearch()\n", + "#print('loading the fremdwb Databases')\n", + "#fwb.load_DB_into_FASTsearch()\n", + "#print('loading the mediodot Databases')\n", + "#medi.load_DB_into_FASTsearch()\n", + "\n", + "#print('done')\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "6a24b25b44a846aea1b396e744d222e4", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Textarea(value='', layout=Layout(height='180px', width='99%'), placeholder='Hier den Text eingeben, darunter k…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "\n", + "#print('done')\n", + "\n", + "#print('loading passiv2active Databases')\n", + "#from Passiv2Aktiv import *\n", + "#p2a = Passiv2Aktiv(None, None, None)\n", + "#p2a.load_DB_into_FASTsearch()\n", + "#print('done')\n", + "#print('loading genitiv solve')\n", + "#from GenitivSolve import *\n", + "#gs = GenitivSolve()\n", + "\n", + "#from FremdWB import *\n", + "#fwb = FremdWB(None,None)\n", + "#fwb.load_DB_into_FASTsearch()\n", + "\n", + "#from SolveShorts import *\n", + "#print('loading SolveShorts Databases')\n", + "#solSh.load_DB_into_FASTsearch()\n", + "\n", + "#from SayYes import *\n", + "#sy = SayYes(None, None)\n", + "#print('loading SayYes Databases')\n", + "#sy.load_DB_into_FASTsearch()\n", + "\n", + "#import SentSeg\n", + "#sent_seg = SentSeg.SentSeg('de')\n", + "#print('loading SentSeg Databases')\n", + "#sent_seg.LoadSentGlueSGDandGSUtils()\n", + "#print('loading conjunctsolve')\n", + "#from ConjunctSolve import *\n", + "#cs = ConjunctSolve(None,None)\n", + "#print('done')\n", + "#print('loading conjunctivesolve Databases')\n", + "#cs.load_DB_into_FASTsearch()\n", + "#print('done')\n", + "#from oi import *\n", + "#oi = oi()\n", + "\n", + "#print('loading session..')\n", + "\n", + "#print('done')\n", + "import dill\n", + "dill.load_session('voilastate.db')\n", + "\n", + "#from SolveShorts import *\n", + "#print('loading SolveShorts Databases')\n", + "#solSh.load_DB_into_FASTsearch()\n", + "\n", + "#import SentSeg\n", + "#sent_seg = SentSeg.SentSeg('de')\n", + "#print('loading SentSeg Databases')\n", + "#sent_seg.LoadSentGlueSGDandGSUtils()\n", + "\n", + "#from FremdWB import *\n", + "#fwb = FremdWB(None,None)\n", + "#fwb.load_DB_into_FASTsearch()\n", + "\n", + "#from Medio import *\n", + "#medi = Medio(None,None)\n", + "#medi.load_DB_into_FASTsearch()\n", + "\n", + "\n", + "#import dill\n", + "#print('dumping the session')\n", + "#dill.dump_session('voilastate.db')\n", + "#print('done')\n", + "\n", + "#from oi import *\n", + "#oi = oi()\n", + "\n", + "import ipywidgets as widgets\n", + "\n", + "TextFeld = widgets.Textarea(placeholder='Hier den Text eingeben, darunter können die Module aktiviert(grün) oder deaktiviert(pink) werden', disabled=False)\n", + "#print(TextFeld.layout.height)\n", + "TextFeld.layout.height = '180px'\n", + "TextFeld.layout.width = '99%'\n", + "\n", + "TextFelddouble = widgets.Textarea(placeholder='Hier den Text eingeben, darunter können die Module aktiviert(grün) oder deaktiviert(pink) werden', disabled=False)\n", + "#print(TextFeld.layout.height)\n", + "TextFelddouble.layout.height = '180px'\n", + "TextFelddouble.layout.width = '99%'\n", + "TextFelddouble.disabled=True\n", + "\n", + "display(TextFeld)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "\n", + "dawidth = '100%'\n", + "daheight = '100%'\n", + "KonjunktiveErsetzen = widgets.ToggleButton(\n", + " value=False,\n", + " description='Konjunktive ersetzen',\n", + " disabled=False,\n", + ")\n", + "KonjunktiveErsetzen.layout.width = dawidth\n", + "KonjunktiveErsetzen.layout.height = '80%'\n", + "\n", + "GenitiveErsetzen = widgets.ToggleButton(\n", + " value=True,\n", + " description='Genitiv ersetzen',\n", + " disabled=False\n", + ")\n", + "GenitiveErsetzen.layout.width = '60%'\n", + "GenitiveErsetzen.layout.height = daheight\n", + "\n", + "PassivErsetzen = widgets.ToggleButton(\n", + " value=True,\n", + " description='Passiv ersetzen',\n", + " disabled=False\n", + ")\n", + "PassivErsetzen.layout.width = '70%'\n", + "PassivErsetzen.layout.height = '90%'\n", + "\n", + "SayYes = widgets.ToggleButton(\n", + " value=True,\n", + " description='Verneinungen ersetzen',\n", + " disabled=False\n", + ")\n", + "SayYes.layout.width = '80%'\n", + "SayYes.layout.height = '80%'\n", + "SentSeg = widgets.ToggleButton(\n", + " value=True,\n", + " description='Eine Aussage pro Satz',\n", + " disabled=False\n", + ")\n", + "SentSeg.layout.width = '60%'\n", + "SentSeg.layout.height = daheight\n", + "SolveShorts = widgets.ToggleButton(\n", + " value=False,\n", + " description='Abkürzungen erklären',\n", + " disabled=False\n", + ")\n", + "SolveShorts.layout.width = '80%'\n", + "SolveShorts.layout.height = '90%'\n", + "FremdWB = widgets.ToggleButton(\n", + " value=True,\n", + " description='FremdWoerterbuch',\n", + " disabled=False\n", + ")\n", + "FremdWB.layout.width = '90%'\n", + "FremdWB.layout.height = '90%'\n", + "\n", + "Appendixes = widgets.ToggleButton(\n", + " value=True,\n", + " description='Charakterisierung pro Satz',\n", + " disabled=False\n", + ")\n", + "Appendixes.layout.width = '120%'\n", + "Appendixes.layout.height = '80%'\n", + "\n", + "Medio = widgets.ToggleButton(\n", + " value=True,\n", + " description='Mediopunkte',\n", + " disabled=False\n", + ")\n", + "Medio.layout.width = '50%'\n", + "Medio.layout.height = '90%'\n", + "\n", + "#items1 = [SentSeg, SolveShorts]\n", + "#items2 = [SayYes, PassivErsetzen]\n", + "#items3 = [GenitiveErsetzen, KonjunktiveErsetzen]\n", + "#items = [Textfeld, SentSeg, SolveShorts, SayYes, PassivErsetzen, GenitiveErsetzen, KonjunktiveErsetzen]\n", + "#display(SentSeg, SolveShorts, SayYes, PassivErsetzen, GenitiveErsetzen, KonjunktiveErsetzen)\n", + "#widgets.GridBox(items, layout=widgets.Layout(grid_template_columns=\"repeat(3, 100px)\"))\n", + "\n", + "\n", + "\n", + "#widgets.HBox(items1)\n", + "#widgets.HBox(items2)\n", + "#widgets.HBox(items3)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "import ipywidgets\n", + "out = 'Hier kommt der übersetzte Text heraus.'\n", + "\n", + "TextFeld.add_class(\"thotext\")\n", + "TextFelddouble.add_class(\"thotext\")\n", + "#display(OutTextFeld)\n", + "items = [SentSeg, SolveShorts, SayYes, PassivErsetzen, GenitiveErsetzen, KonjunktiveErsetzen, FremdWB, Appendixes, Medio] \n", + "#display(SentSeg, SolveShorts, SayYes, PassivErsetzen, GenitiveErsetzen, KonjunktiveErsetzen)\n", + "Grid = widgets.GridBox(items, layout=widgets.Layout(justify_items=\"center\", grid_template_columns=\"repeat(3, 30%)\", grid_gap=\"4.5%\", height=\"320px\"))\n" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "2bfcacdb87c640bb93cde56d3dd5aeaf", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "GridBox(children=(ToggleButton(value=True, description='Eine Aussage pro Satz', layout=Layout(height='100%', w…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "\n", + "display(HTML('
'))\n", + "display(Grid)\n", + "\n", + "\n", + "\n", + "\n", + "def function():\n", + " out = 'Wählen Sie ein Kästchen aus!'\n", + " try:\n", + " insentences, punctuations = oi.CellInputText2SplitsentencesWithspacy(TextFeld.value)\n", + " except:\n", + " OutTextFeld.placeholder = 'Bitte auf die Zeichensetzung achten! '\n", + " return\n", + " \n", + " check = 0\n", + " #print('insentences',insentences)\n", + " #print(punctuations)\n", + " if SayYes.value == True:\n", + " \n", + " print('ersetze Gegenteile..')\n", + " outsentences = sy.replaceOpposites(insentences)\n", + " check = 1\n", + " \n", + " \n", + " \n", + " \n", + " if Appendixes.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('generiere ist-Aussagen..')\n", + " outsentences, punctuations = sent_seg.putAppendixesIntoOwnSentences(insentences, punctuations)\n", + " \n", + " if SentSeg.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('forme zu einem Satz pro Aussage um..')\n", + " sentsegformattedsentences = []\n", + " for sentence in insentences:\n", + " \n", + " sentsegformattedsentences.append([sentence])\n", + " \n", + " #print(sentsegformattedsentences)\n", + " sentences = sent_seg.CommaSentenceOrNot(sentsegformattedsentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetUtteranceNumber(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetQuestionOrNot(sentences)\n", + " #print(sentences)\n", + " sentences, punctuations = sent_seg.AndOrSolver(sentences, punctuations)\n", + " #print(len(punctuations))\n", + " #print('sentences after AndOrSolver', sentences, punctuations)\n", + " sentences = sent_seg.CommaSentenceOrNot(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetUtteranceNumber(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetQuestionOrNot(sentences)\n", + " #print(sentences)\n", + " sentences, punctuations = sent_seg.SplitSentencesIntoHauptNebenTuple(sentences, punctuations)\n", + " #print(len(punctuations))\n", + " #print('sentences after split haupt neben', sentences)\n", + " sentences = sent_seg.CommaSentenceOrNot(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetUtteranceNumber(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetQuestionOrNot(sentences)\n", + " #print(sentences)\n", + " outsentences, punctuations = sent_seg.SplitCommatas(sentences, punctuations)\n", + " #print(len(punctuations))\n", + " #print('out',outsentences)\n", + " #print('out', punctuations)\n", + " check = 1\n", + " \n", + " \n", + " if SolveShorts.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('erklaere Abkuerzungen..')\n", + " outsentences = solSh.ExplainShortsInSentencesWithBrackets(insentences)\n", + " check = 1\n", + " #print(len(punctuations)) \n", + " #print('sentences after solveshorts', outsentences)\n", + " \n", + " if PassivErsetzen.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('ersetze Passiv Formen..')\n", + " outsentences = p2a.replacePassivForms(insentences)\n", + " check = 1\n", + " #print(len(punctuations))\n", + " #print('sentences after p2a', outsentences)\n", + " \n", + " if GenitiveErsetzen.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " #print('replacing genitiv forms with dativ..')\n", + " outsentences = gs.ReplaceGenitivWithDativ(insentences)\n", + " check = 1\n", + " #print(len(punctuations))\n", + " #print('sentences after gs', outsentences)\n", + " \n", + " if check == 1:\n", + " newinsentences = []\n", + " for sentence in outsentences: \n", + " newinsentences.append([word.replace('ö','oe').replace('ü','ue').replace('ä','ae').replace('ß','ss') for word in sentence])\n", + " \n", + " outsentences =newinsentences\n", + " if check != 1:\n", + " newinsentences = []\n", + " for sentence in insentences: \n", + " newinsentences.append([word.replace('ö','oe').replace('ü','ue').replace('ä','ae').replace('ß','ss') for word in sentence])\n", + " \n", + " insentences =newinsentences\n", + " #print()\n", + " if KonjunktiveErsetzen.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('ersetze Konjunktive..')\n", + " \n", + " outsentences = cs.replaceConjunctives(insentences)\n", + " #print('outsentences')\n", + " check = 1\n", + " \n", + " #print('sentences after cs', outsentences)\n", + " print(len(punctuations))\n", + " \n", + " if FremdWB.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('Suche Woerterbucheintraege..')\n", + " \n", + " outsentences, punctuations = fwb.fremdEintragAppend(insentences, punctuations)\n", + " #print('outsentences')\n", + " check = 1\n", + " \n", + " if Medio.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('Ersetze lange Woerter mit Mediopunkten..')\n", + " \n", + " outsentences, punctuations = medi.Medioreplace(insentences, punctuations)\n", + " #print('outsentences')\n", + " check = 1\n", + " #print('sentences after medios', outsentences)\n", + " \n", + " \n", + " #print('sentences after fwb', outsentences)\n", + " \n", + " print(len(punctuations))\n", + " \n", + " if check == 1:\n", + " out = ''\n", + " #print('just before looking if the lenght is the same')\n", + " #print(len(outsentences), len(punctuations))\n", + " if len(outsentences) == len(punctuations):\n", + " #print('the length is the same')\n", + " for n in range(len(outsentences)):\n", + " outsentence = outsentences[n]\n", + " outsentence[0] = outsentence[0].title()\n", + " out += ' '.join(outsentence) + punctuations[n] + '\\n'\n", + " \n", + " \n", + " OutTextFeld.value = out\n", + " TextFelddouble.value = TextFeld.value\n", + " display(TextFelddouble)\n", + " \n", + " return \n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "scrolled": false + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "2da49b6bc0c64b468368c639db95a1a6", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "interactive(children=(Button(description='Übersetzen in Leichte Sprache', style=ButtonStyle()), Output()), _do…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "#from IPython.display import Image\n", + "#i = Image(filename='Babelfish.png')\n", + "\n", + "#i.width = '60%'\n", + "#display(i)\n", + "\n", + "#print(widgets.interact_manual.opts)\n", + "\n", + "widgets.interact_manual.opts['manual_name']= 'Übersetzen in Leichte Sprache'\n", + "ola = widgets.interact_manual(function)\n", + "ola.widget.children[0].style.button_color = 'lightgreen'\n", + "ola.widget.children[0].layout.height = '60px'\n", + "ola.widget.children[0].layout.width = '99%'\n", + "\n", + "#widgets.GridBox([ola], layout=widgets.Layout(grid_template_columns=\"repeat(2, 300px)\"))" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "16d4e37ff391417f8844c35944a3f1af", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Textarea(value='', layout=Layout(height='180px', width='99%'), placeholder='Hier kommt der übersetzte Text her…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "OutTextFeld = ipywidgets.Textarea(placeholder=out, disabled=False)\n", + "OutTextFeld.layout.height = '180px'\n", + "OutTextFeld.layout.width = '99%'\n", + "OutTextFeld.add_class(\"thetext\")\n", + "display(OutTextFeld)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [], + "source": [ + "beschreibung = 'Textfeld für die verbesserte Übersetzung. Satzzeichen bitte nicht vergessen! \\nFalls ein neuer Eintrag ins Fremdwörterbuch vorgenommen werden soll, schreibe einfach unter die Verbesserungen einen Eintrag der Form: [\\'Abfall\\', \\'Abfall sind Sachen die wir nicht mehr brauchen\\'] \\nFalls ein neuer Eintrag in die Mediopunkte-Datenbank vorgenommen werden soll, bitte schreibe unter die Verbesserungen einen Eintrag der Form: [\\'Mediopunkt\\', \\'Medio·punkt\\']' \n", + "VerbeTextFeld = ipywidgets.Textarea(placeholder=beschreibung, disabled=False)\n", + "VerbeTextFeld.layout.height = '180px'\n", + "VerbeTextFeld.layout.width = '99%'\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "\n", + "def Absendefunction():\n", + " \n", + " \n", + "\n", + " \n", + " #print(VerbeTextFeld.value)\n", + " #print(TextFeld.value)\n", + " #print(OutTextFeld.value)\n", + " \n", + " try:\n", + "\n", + " insentences, punctuations = oi.CellInputText2SplitsentencesWithspacy(VerbeTextFeld.value)\n", + " insentences1, punctuations1 = oi.CellInputText2SplitsentencesWithspacy(TextFeld.value)\n", + " insentences2, punctuations2 = oi.CellInputText2SplitsentencesWithspacy(OutTextFeld.value)\n", + "\n", + " #print(insentences2)\n", + "\n", + " #print(insentences, punctuations)\n", + " indexDerVerbesserungen = 0\n", + " number = 0\n", + " with open('Verbesserungen/indexDerVerbesserungen.txt', 'r') as dok:\n", + " for number in dok:\n", + " number = int(number)\n", + " if number >= 0:\n", + " indexDerVerbesserungen = number\n", + " number += 1\n", + "\n", + " with open('Verbesserungen/indexDerVerbesserungen.txt', 'w') as dokk:\n", + " dokk.write(str(number))\n", + "\n", + "\n", + " with open('Verbesserungen/Verbesserungen' + str(number) + '.txt','w+') as doc:\n", + " for n in range(len(insentences)):\n", + " npunct = punctuations[n]\n", + " writeline = insentences[n]+ [npunct]\n", + "\n", + " writestring = ' '.join(writeline)\n", + "\n", + " doc.write(writestring + '\\n')\n", + "\n", + " with open('Verbesserungen/Input' + str(number) + '.txt','w+') as docc:\n", + " for n in range(len(insentences1)):\n", + " npunct = punctuations1[n]\n", + " writeline = insentences1[n]+ [npunct]\n", + "\n", + " writestring = ' '.join(writeline)\n", + "\n", + " docc.write(writestring + '\\n')\n", + " with open('Verbesserungen/Output' + str(number) + '.txt','w+') as dock:\n", + " #print(insentences2)\n", + " for n in range(len(insentences2)):\n", + " #print(len(insentences2))\n", + "\n", + " #print(punctuations2)\n", + " npunct = punctuations2[n]\n", + " writeline = insentences2[n]+ [npunct]\n", + "\n", + " writestring = ' '.join(writeline)\n", + "\n", + " dock.write(writestring + '\\n')\n", + "\n", + " VerbeTextFeld.value = ''\n", + " OutTextFeld.value = ''\n", + " VerbeTextFeld.placeholder = beschreibung\n", + " OutTextFeld.placeholder = 'Hier kommt der übersetzte Text raus.'\n", + " except:\n", + " VerbeTextFeld.placeholder = 'Es gab einen Fehler. Eventuell ist die Zeichensetzung nicht ok. \\n \\n' + beschreibung\n", + " \n", + " \n", + " return \n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "dd913832ab444630a3842fcf7fd8609b", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Textarea(value='', layout=Layout(height='180px', width='99%'), placeholder=\"Textfeld für die verbesserte Übers…" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "79ed4f2f30324ca582faa59671224d92", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "interactive(children=(Button(description='Absenden', style=ButtonStyle()), Output()), _dom_classes=('widget-in…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "VerbeTextFeld.add_class(\"thetext3\")\n", + "display(VerbeTextFeld)\n", + "display(HTML('
'))\n", + "widgets.interact_manual.opts['manual_name']= 'Absenden'\n", + "AbsendenUndSchreiben = widgets.interact_manual(Absendefunction)\n", + "AbsendenUndSchreiben.widget.children[0].style.button_color = 'lightblue'\n", + "AbsendenUndSchreiben.widget.children[0].layout.height = '60px'\n", + "AbsendenUndSchreiben.widget.children[0].layout.width = '99%'\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%html\n", + "" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%html\n", + "" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "data": { + "text/html": [ + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%html\n", + "" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "celltoolbar": "Raw Cell Format", + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.5.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/Prototyp/.ipynb_checkpoints/.Prototype-10-checkpoint.ipynb b/Prototyp/.ipynb_checkpoints/.Prototype-10-checkpoint.ipynb new file mode 100644 index 00000000..50a76c09 --- /dev/null +++ b/Prototyp/.ipynb_checkpoints/.Prototype-10-checkpoint.ipynb @@ -0,0 +1,2313 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "#from oi import *\n", + "\n", + "#oi = oi()\n", + "\n", + "#import ipyvuetify as v\n", + "\n", + "#state = False\n", + "#oi.toggle_code(state)\n", + "\n", + "#button = widgets.ToggleButton(state, description = button_descriptions[state])\n", + "\n", + "\n", + "#button.observe(oi.button_action, \"value\")\n", + "\n", + "#button.layout.height = '50px'\n", + "#button.layout.width = '100%'\n", + "#button.add_class(\"thobutton\")\n", + "\n", + "#display(button)\n", + "#button.button_style = 'danger'\n" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "\n", + "

Ein Klick auf das Logo - und es geht zum Code

\n", + "\n", + "\n", + " \n", + "\n", + " \n", + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%html\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "\n", + "

Ein Klick auf das Logo - und es geht zum Code

\n", + "\n", + "\n", + " \n", + "\n", + " \n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "#%%html\n", + "#\n", + "#\n", + "#\n", + "#\n", + "#\n", + "#

Ein Klick auf das Logo - und es geht zum Code

\n", + "#" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [], + "source": [ + "#%%html\n", + "#" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "#from ipywidgets import widgets\n", + "#button = widgets.Button(description='Click me')\n", + "#display(button)\n", + "\n", + "#def on_button_clicked(b):\n", + "# print('button clicked')\n", + "\n", + "#button.on_click(on_button_clicked)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "\n", + "# importing the libraries\n", + "#print('importing libraries')\n", + "#from SolveShorts import *\n", + "#import SentSeg\n", + "#from SayYes import *\n", + "#from Passiv2Aktiv import *\n", + "#from GenitivSolve import *\n", + "#from ConjunctSolve import *\n", + "#from FremdWB import *\n", + "#from Medio import *\n", + "#from oi import *\n", + "#print('done')\n", + "\n", + "\n", + "# Initializing the libraries\n", + "#print('initializing the libraries')\n", + "#print('1')\n", + "#solSh = SolveShorts('hkldbShorts.hkl', 'hkldbShorts_All.hkl')\n", + "#print('2')\n", + "#sent_seg = SentSeg.SentSeg('de')\n", + "#print('3')\n", + "#sy = SayYes(None, None)\n", + "#print('4')\n", + "#p2a = Passiv2Aktiv(None, None, None)\n", + "#print('5')\n", + "#gs = GenitivSolve()\n", + "#print('6')\n", + "#cs = ConjunctSolve(None,None)\n", + "#print('7')\n", + "#oi = oi()\n", + "#print('8')\n", + "#fwb = FremdWB(None,None)\n", + "#print('9')\n", + "#medi = Medio(None,None)\n", + "#print('done')\n", + "\n", + "\n", + "# loading the databases and models\n", + "#print('loading SolveShorts Databases')\n", + "#solSh.load_DB_into_FASTsearch()\n", + "#print('loading SentSeg Databases')\n", + "#sent_seg.LoadSentGlueSGDandGSUtils()\n", + "#print('loading SayYes Databases')\n", + "#sy.load_DB_into_FASTsearch()\n", + "#print('loading passiv2active Databases')\n", + "#p2a.load_DB_into_FASTsearch()\n", + "#print('loading conjunctivesolve Databases')\n", + "#cs.load_DB_into_FASTsearch()\n", + "#print('loading the fremdwb Databases')\n", + "#fwb.load_DB_into_FASTsearch()\n", + "#print('loading the mediodot Databases')\n", + "#medi.load_DB_into_FASTsearch()\n", + "\n", + "#print('done')\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "106e70dd208f4de29ae10874823d30a8", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Textarea(value='', layout=Layout(height='180px', width='99%'), placeholder='Hier den Text eingeben, darunter k…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "\n", + "#print('done')\n", + "\n", + "#print('loading passiv2active Databases')\n", + "#from Passiv2Aktiv import *\n", + "#p2a = Passiv2Aktiv(None, None, None)\n", + "#p2a.load_DB_into_FASTsearch()\n", + "#print('done')\n", + "#print('loading genitiv solve')\n", + "#from GenitivSolve import *\n", + "#gs = GenitivSolve()\n", + "\n", + "#from FremdWB import *\n", + "#fwb = FremdWB(None,None)\n", + "#fwb.load_DB_into_FASTsearch()\n", + "\n", + "#from SolveShorts import *\n", + "#print('loading SolveShorts Databases')\n", + "#solSh.load_DB_into_FASTsearch()\n", + "\n", + "#from SayYes import *\n", + "#sy = SayYes(None, None)\n", + "#print('loading SayYes Databases')\n", + "#sy.load_DB_into_FASTsearch()\n", + "\n", + "#import SentSeg\n", + "#sent_seg = SentSeg.SentSeg('de')\n", + "#print('loading SentSeg Databases')\n", + "#sent_seg.LoadSentGlueSGDandGSUtils()\n", + "#print('loading conjunctsolve')\n", + "#from ConjunctSolve import *\n", + "#cs = ConjunctSolve(None,None)\n", + "#print('done')\n", + "#print('loading conjunctivesolve Databases')\n", + "#cs.load_DB_into_FASTsearch()\n", + "#print('done')\n", + "#from oi import *\n", + "#oi = oi()\n", + "\n", + "#print('loading session..')\n", + "\n", + "#print('done')\n", + "import dill\n", + "dill.load_session('voilastate.db')\n", + "\n", + "#from SolveShorts import *\n", + "#print('loading SolveShorts Databases')\n", + "#solSh.load_DB_into_FASTsearch()\n", + "\n", + "#import SentSeg\n", + "#sent_seg = SentSeg.SentSeg('de')\n", + "#print('loading SentSeg Databases')\n", + "#sent_seg.LoadSentGlueSGDandGSUtils()\n", + "\n", + "#from FremdWB import *\n", + "#fwb = FremdWB(None,None)\n", + "#fwb.load_DB_into_FASTsearch()\n", + "\n", + "#from Medio import *\n", + "#medi = Medio(None,None)\n", + "#medi.load_DB_into_FASTsearch()\n", + "\n", + "\n", + "#import dill\n", + "#print('dumping the session')\n", + "#dill.dump_session('voilastate.db')\n", + "#print('done')\n", + "\n", + "#from oi import *\n", + "#oi = oi()\n", + "\n", + "import ipywidgets as widgets\n", + "\n", + "TextFeld = widgets.Textarea(placeholder='Hier den Text eingeben, darunter können die Module aktiviert(grün) oder deaktiviert(pink) werden', disabled=False)\n", + "#print(TextFeld.layout.height)\n", + "TextFeld.layout.height = '180px'\n", + "TextFeld.layout.width = '99%'\n", + "\n", + "TextFelddouble = widgets.Textarea(placeholder='Hier den Text eingeben, darunter können die Module aktiviert(grün) oder deaktiviert(pink) werden', disabled=False)\n", + "#print(TextFeld.layout.height)\n", + "TextFelddouble.layout.height = '180px'\n", + "TextFelddouble.layout.width = '99%'\n", + "TextFelddouble.disabled=True\n", + "\n", + "display(TextFeld)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "\n", + "dawidth = '100%'\n", + "daheight = '100%'\n", + "KonjunktiveErsetzen = widgets.ToggleButton(\n", + " value=False,\n", + " description='Konjunktive ersetzen',\n", + " disabled=False,\n", + ")\n", + "KonjunktiveErsetzen.layout.width = dawidth\n", + "KonjunktiveErsetzen.layout.height = '80%'\n", + "\n", + "GenitiveErsetzen = widgets.ToggleButton(\n", + " value=True,\n", + " description='Genitiv ersetzen',\n", + " disabled=False\n", + ")\n", + "GenitiveErsetzen.layout.width = '60%'\n", + "GenitiveErsetzen.layout.height = daheight\n", + "\n", + "PassivErsetzen = widgets.ToggleButton(\n", + " value=True,\n", + " description='Passiv ersetzen',\n", + " disabled=False\n", + ")\n", + "PassivErsetzen.layout.width = '70%'\n", + "PassivErsetzen.layout.height = '90%'\n", + "\n", + "SayYes = widgets.ToggleButton(\n", + " value=True,\n", + " description='Verneinungen ersetzen',\n", + " disabled=False\n", + ")\n", + "SayYes.layout.width = '80%'\n", + "SayYes.layout.height = '80%'\n", + "SentSeg = widgets.ToggleButton(\n", + " value=True,\n", + " description='Eine Aussage pro Satz',\n", + " disabled=False\n", + ")\n", + "SentSeg.layout.width = '60%'\n", + "SentSeg.layout.height = daheight\n", + "SolveShorts = widgets.ToggleButton(\n", + " value=False,\n", + " description='Abkürzungen erklären',\n", + " disabled=False\n", + ")\n", + "SolveShorts.layout.width = '80%'\n", + "SolveShorts.layout.height = '90%'\n", + "FremdWB = widgets.ToggleButton(\n", + " value=True,\n", + " description='FremdWoerterbuch',\n", + " disabled=False\n", + ")\n", + "FremdWB.layout.width = '90%'\n", + "FremdWB.layout.height = '90%'\n", + "\n", + "Appendixes = widgets.ToggleButton(\n", + " value=True,\n", + " description='Charakterisierung pro Satz',\n", + " disabled=False\n", + ")\n", + "Appendixes.layout.width = '120%'\n", + "Appendixes.layout.height = '80%'\n", + "\n", + "Medio = widgets.ToggleButton(\n", + " value=True,\n", + " description='Mediopunkte',\n", + " disabled=False\n", + ")\n", + "Medio.layout.width = '50%'\n", + "Medio.layout.height = '90%'\n", + "\n", + "#items1 = [SentSeg, SolveShorts]\n", + "#items2 = [SayYes, PassivErsetzen]\n", + "#items3 = [GenitiveErsetzen, KonjunktiveErsetzen]\n", + "#items = [Textfeld, SentSeg, SolveShorts, SayYes, PassivErsetzen, GenitiveErsetzen, KonjunktiveErsetzen]\n", + "#display(SentSeg, SolveShorts, SayYes, PassivErsetzen, GenitiveErsetzen, KonjunktiveErsetzen)\n", + "#widgets.GridBox(items, layout=widgets.Layout(grid_template_columns=\"repeat(3, 100px)\"))\n", + "\n", + "\n", + "\n", + "#widgets.HBox(items1)\n", + "#widgets.HBox(items2)\n", + "#widgets.HBox(items3)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "import ipywidgets\n", + "out = 'Hier kommt der übersetzte Text heraus.'\n", + "\n", + "TextFeld.add_class(\"thotext\")\n", + "TextFelddouble.add_class(\"thotext\")\n", + "#display(OutTextFeld)\n", + "items = [SentSeg, SolveShorts, SayYes, PassivErsetzen, GenitiveErsetzen, KonjunktiveErsetzen, FremdWB, Appendixes, Medio] \n", + "#display(SentSeg, SolveShorts, SayYes, PassivErsetzen, GenitiveErsetzen, KonjunktiveErsetzen)\n", + "Grid = widgets.GridBox(items, layout=widgets.Layout(justify_items=\"center\", grid_template_columns=\"repeat(3, 30%)\", grid_gap=\"4.5%\", height=\"320px\"))\n" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "c08292c98ddf447ca1c19117241980b8", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "GridBox(children=(ToggleButton(value=True, description='Eine Aussage pro Satz', layout=Layout(height='100%', w…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "\n", + "display(HTML('
'))\n", + "display(Grid)\n", + "\n", + "\n", + "\n", + "\n", + "def function():\n", + " out = 'Wählen Sie ein Kästchen aus!'\n", + " try:\n", + " insentences, punctuations = oi.CellInputText2SplitsentencesWithspacy(TextFeld.value)\n", + " except:\n", + " OutTextFeld.placeholder = 'Bitte auf die Zeichensetzung achten! '\n", + " return\n", + " \n", + " check = 0\n", + " #print('insentences',insentences)\n", + " #print(punctuations)\n", + " if SayYes.value == True:\n", + " \n", + " print('ersetze Gegenteile..')\n", + " outsentences = sy.replaceOpposites(insentences)\n", + " check = 1\n", + " \n", + " \n", + " \n", + " \n", + " if Appendixes.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('generiere ist-Aussagen..')\n", + " outsentences, punctuations = sent_seg.putAppendixesIntoOwnSentences(insentences, punctuations)\n", + " \n", + " if SentSeg.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('forme zu einem Satz pro Aussage um..')\n", + " sentsegformattedsentences = []\n", + " for sentence in insentences:\n", + " \n", + " sentsegformattedsentences.append([sentence])\n", + " \n", + " #print(sentsegformattedsentences)\n", + " sentences = sent_seg.CommaSentenceOrNot(sentsegformattedsentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetUtteranceNumber(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetQuestionOrNot(sentences)\n", + " #print(sentences)\n", + " sentences, punctuations = sent_seg.AndOrSolver(sentences, punctuations)\n", + " #print(len(punctuations))\n", + " #print('sentences after AndOrSolver', sentences, punctuations)\n", + " sentences = sent_seg.CommaSentenceOrNot(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetUtteranceNumber(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetQuestionOrNot(sentences)\n", + " #print(sentences)\n", + " sentences, punctuations = sent_seg.SplitSentencesIntoHauptNebenTuple(sentences, punctuations)\n", + " #print(len(punctuations))\n", + " #print('sentences after split haupt neben', sentences)\n", + " sentences = sent_seg.CommaSentenceOrNot(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetUtteranceNumber(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetQuestionOrNot(sentences)\n", + " #print(sentences)\n", + " outsentences, punctuations = sent_seg.SplitCommatas(sentences, punctuations)\n", + " #print(len(punctuations))\n", + " #print('out',outsentences)\n", + " #print('out', punctuations)\n", + " check = 1\n", + " \n", + " \n", + " if SolveShorts.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('erklaere Abkuerzungen..')\n", + " outsentences = solSh.ExplainShortsInSentencesWithBrackets(insentences)\n", + " check = 1\n", + " #print(len(punctuations)) \n", + " #print('sentences after solveshorts', outsentences)\n", + " \n", + " if PassivErsetzen.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('ersetze Passiv Formen..')\n", + " outsentences = p2a.replacePassivForms(insentences)\n", + " check = 1\n", + " #print(len(punctuations))\n", + " #print('sentences after p2a', outsentences)\n", + " \n", + " if GenitiveErsetzen.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " #print('replacing genitiv forms with dativ..')\n", + " outsentences = gs.ReplaceGenitivWithDativ(insentences)\n", + " check = 1\n", + " #print(len(punctuations))\n", + " #print('sentences after gs', outsentences)\n", + " \n", + " if check == 1:\n", + " newinsentences = []\n", + " for sentence in outsentences: \n", + " newinsentences.append([word.replace('ö','oe').replace('ü','ue').replace('ä','ae').replace('ß','ss') for word in sentence])\n", + " \n", + " outsentences =newinsentences\n", + " if check != 1:\n", + " newinsentences = []\n", + " for sentence in insentences: \n", + " newinsentences.append([word.replace('ö','oe').replace('ü','ue').replace('ä','ae').replace('ß','ss') for word in sentence])\n", + " \n", + " insentences =newinsentences\n", + " #print()\n", + " if KonjunktiveErsetzen.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('ersetze Konjunktive..')\n", + " \n", + " outsentences = cs.replaceConjunctives(insentences)\n", + " #print('outsentences')\n", + " check = 1\n", + " \n", + " #print('sentences after cs', outsentences)\n", + " print(len(punctuations))\n", + " \n", + " if FremdWB.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('Suche Woerterbucheintraege..')\n", + " \n", + " outsentences, punctuations = fwb.fremdEintragAppend(insentences, punctuations)\n", + " #print('outsentences')\n", + " check = 1\n", + " \n", + " if Medio.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('Ersetze lange Woerter mit Mediopunkten..')\n", + " \n", + " outsentences, punctuations = medi.Medioreplace(insentences, punctuations)\n", + " #print('outsentences')\n", + " check = 1\n", + " #print('sentences after medios', outsentences)\n", + " \n", + " \n", + " #print('sentences after fwb', outsentences)\n", + " \n", + " print(len(punctuations))\n", + " \n", + " if check == 1:\n", + " out = ''\n", + " #print('just before looking if the lenght is the same')\n", + " #print(len(outsentences), len(punctuations))\n", + " if len(outsentences) == len(punctuations):\n", + " #print('the length is the same')\n", + " for n in range(len(outsentences)):\n", + " outsentence = outsentences[n]\n", + " outsentence[0] = outsentence[0].title()\n", + " out += ' '.join(outsentence) + punctuations[n] + '\\n'\n", + " \n", + " \n", + " OutTextFeld.value = out\n", + " TextFelddouble.value = TextFeld.value\n", + " display(TextFelddouble)\n", + " \n", + " return \n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "3ca86c6e7e39437eafa36439e3337b42", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "interactive(children=(Button(description='Übersetzen in Leichte Sprache', style=ButtonStyle()), Output()), _do…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "#from IPython.display import Image\n", + "#i = Image(filename='Babelfish.png')\n", + "\n", + "#i.width = '60%'\n", + "#display(i)\n", + "\n", + "#print(widgets.interact_manual.opts)\n", + "\n", + "widgets.interact_manual.opts['manual_name']= 'Übersetzen in Leichte Sprache'\n", + "ola = widgets.interact_manual(function)\n", + "ola.widget.children[0].style.button_color = 'lightgreen'\n", + "ola.widget.children[0].layout.height = '60px'\n", + "ola.widget.children[0].layout.width = '99%'\n", + "\n", + "#widgets.GridBox([ola], layout=widgets.Layout(grid_template_columns=\"repeat(2, 300px)\"))" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "0d6f03c93f0147cd9f33d2a053672b0c", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Textarea(value='', layout=Layout(height='180px', width='99%'), placeholder='Hier kommt der übersetzte Text her…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "OutTextFeld = ipywidgets.Textarea(placeholder=out, disabled=False)\n", + "OutTextFeld.layout.height = '180px'\n", + "OutTextFeld.layout.width = '99%'\n", + "OutTextFeld.add_class(\"thetext\")\n", + "display(OutTextFeld)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [], + "source": [ + "beschreibung = 'Textfeld für die verbesserte Übersetzung. Satzzeichen bitte nicht vergessen! \\nFalls ein neuer Eintrag ins Fremdwörterbuch vorgenommen werden soll, schreibe einfach unter die Verbesserungen einen Eintrag der Form: [\\'Abfall\\', \\'Abfall sind Sachen die wir nicht mehr brauchen\\'] \\nFalls ein neuer Eintrag in die Mediopunkte-Datenbank vorgenommen werden soll, bitte schreibe unter die Verbesserungen einen Eintrag der Form: [\\'Mediopunkt\\', \\'Medio·punkt\\']' \n", + "VerbeTextFeld = ipywidgets.Textarea(placeholder=beschreibung, disabled=False)\n", + "VerbeTextFeld.layout.height = '180px'\n", + "VerbeTextFeld.layout.width = '99%'\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "\n", + "def Absendefunction():\n", + " \n", + " \n", + "\n", + " \n", + " #print(VerbeTextFeld.value)\n", + " #print(TextFeld.value)\n", + " #print(OutTextFeld.value)\n", + " \n", + " try:\n", + "\n", + " insentences, punctuations = oi.CellInputText2SplitsentencesWithspacy(VerbeTextFeld.value)\n", + " insentences1, punctuations1 = oi.CellInputText2SplitsentencesWithspacy(TextFeld.value)\n", + " insentences2, punctuations2 = oi.CellInputText2SplitsentencesWithspacy(OutTextFeld.value)\n", + "\n", + " #print(insentences2)\n", + "\n", + " #print(insentences, punctuations)\n", + " indexDerVerbesserungen = 0\n", + " number = 0\n", + " with open('Verbesserungen/indexDerVerbesserungen.txt', 'r') as dok:\n", + " for number in dok:\n", + " number = int(number)\n", + " if number >= 0:\n", + " indexDerVerbesserungen = number\n", + " number += 1\n", + "\n", + " with open('Verbesserungen/indexDerVerbesserungen.txt', 'w') as dokk:\n", + " dokk.write(str(number))\n", + "\n", + "\n", + " with open('Verbesserungen/Verbesserungen' + str(number) + '.txt','w+') as doc:\n", + " for n in range(len(insentences)):\n", + " npunct = punctuations[n]\n", + " writeline = insentences[n]+ [npunct]\n", + "\n", + " writestring = ' '.join(writeline)\n", + "\n", + " doc.write(writestring + '\\n')\n", + "\n", + " with open('Verbesserungen/Input' + str(number) + '.txt','w+') as docc:\n", + " for n in range(len(insentences1)):\n", + " npunct = punctuations1[n]\n", + " writeline = insentences1[n]+ [npunct]\n", + "\n", + " writestring = ' '.join(writeline)\n", + "\n", + " docc.write(writestring + '\\n')\n", + " with open('Verbesserungen/Output' + str(number) + '.txt','w+') as dock:\n", + " #print(insentences2)\n", + " for n in range(len(insentences2)):\n", + " #print(len(insentences2))\n", + "\n", + " #print(punctuations2)\n", + " npunct = punctuations2[n]\n", + " writeline = insentences2[n]+ [npunct]\n", + "\n", + " writestring = ' '.join(writeline)\n", + "\n", + " dock.write(writestring + '\\n')\n", + "\n", + " VerbeTextFeld.value = ''\n", + " OutTextFeld.value = ''\n", + " VerbeTextFeld.placeholder = beschreibung\n", + " OutTextFeld.placeholder = 'Hier kommt der übersetzte Text raus.'\n", + " except:\n", + " VerbeTextFeld.placeholder = 'Es gab einen Fehler. Eventuell ist die Zeichensetzung nicht ok. \\n \\n' + beschreibung\n", + " \n", + " \n", + " return \n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "1713cde35a884104b20056d5694d168a", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Textarea(value='', layout=Layout(height='180px', width='99%'), placeholder=\"Textfeld für die verbesserte Übers…" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "d4100a2d84d34630acf974f78d316abc", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "interactive(children=(Button(description='Absenden', style=ButtonStyle()), Output()), _dom_classes=('widget-in…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "VerbeTextFeld.add_class(\"thetext3\")\n", + "display(VerbeTextFeld)\n", + "display(HTML('
'))\n", + "widgets.interact_manual.opts['manual_name']= 'Absenden'\n", + "AbsendenUndSchreiben = widgets.interact_manual(Absendefunction)\n", + "AbsendenUndSchreiben.widget.children[0].style.button_color = 'lightblue'\n", + "AbsendenUndSchreiben.widget.children[0].layout.height = '60px'\n", + "AbsendenUndSchreiben.widget.children[0].layout.width = '99%'\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%html\n", + "" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%html\n", + "" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "data": { + "text/html": [ + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%html\n", + "" + ] + } + ], + "metadata": { + "celltoolbar": "Raw Cell Format", + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.5.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/Prototyp/.ipynb_checkpoints/.Prototype-11-checkpoint.ipynb b/Prototyp/.ipynb_checkpoints/.Prototype-11-checkpoint.ipynb new file mode 100644 index 00000000..50a76c09 --- /dev/null +++ b/Prototyp/.ipynb_checkpoints/.Prototype-11-checkpoint.ipynb @@ -0,0 +1,2313 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "#from oi import *\n", + "\n", + "#oi = oi()\n", + "\n", + "#import ipyvuetify as v\n", + "\n", + "#state = False\n", + "#oi.toggle_code(state)\n", + "\n", + "#button = widgets.ToggleButton(state, description = button_descriptions[state])\n", + "\n", + "\n", + "#button.observe(oi.button_action, \"value\")\n", + "\n", + "#button.layout.height = '50px'\n", + "#button.layout.width = '100%'\n", + "#button.add_class(\"thobutton\")\n", + "\n", + "#display(button)\n", + "#button.button_style = 'danger'\n" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "\n", + "

Ein Klick auf das Logo - und es geht zum Code

\n", + "\n", + "\n", + " \n", + "\n", + " \n", + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%html\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "\n", + "

Ein Klick auf das Logo - und es geht zum Code

\n", + "\n", + "\n", + " \n", + "\n", + " \n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "#%%html\n", + "#\n", + "#\n", + "#\n", + "#\n", + "#\n", + "#

Ein Klick auf das Logo - und es geht zum Code

\n", + "#" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [], + "source": [ + "#%%html\n", + "#" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "#from ipywidgets import widgets\n", + "#button = widgets.Button(description='Click me')\n", + "#display(button)\n", + "\n", + "#def on_button_clicked(b):\n", + "# print('button clicked')\n", + "\n", + "#button.on_click(on_button_clicked)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "\n", + "# importing the libraries\n", + "#print('importing libraries')\n", + "#from SolveShorts import *\n", + "#import SentSeg\n", + "#from SayYes import *\n", + "#from Passiv2Aktiv import *\n", + "#from GenitivSolve import *\n", + "#from ConjunctSolve import *\n", + "#from FremdWB import *\n", + "#from Medio import *\n", + "#from oi import *\n", + "#print('done')\n", + "\n", + "\n", + "# Initializing the libraries\n", + "#print('initializing the libraries')\n", + "#print('1')\n", + "#solSh = SolveShorts('hkldbShorts.hkl', 'hkldbShorts_All.hkl')\n", + "#print('2')\n", + "#sent_seg = SentSeg.SentSeg('de')\n", + "#print('3')\n", + "#sy = SayYes(None, None)\n", + "#print('4')\n", + "#p2a = Passiv2Aktiv(None, None, None)\n", + "#print('5')\n", + "#gs = GenitivSolve()\n", + "#print('6')\n", + "#cs = ConjunctSolve(None,None)\n", + "#print('7')\n", + "#oi = oi()\n", + "#print('8')\n", + "#fwb = FremdWB(None,None)\n", + "#print('9')\n", + "#medi = Medio(None,None)\n", + "#print('done')\n", + "\n", + "\n", + "# loading the databases and models\n", + "#print('loading SolveShorts Databases')\n", + "#solSh.load_DB_into_FASTsearch()\n", + "#print('loading SentSeg Databases')\n", + "#sent_seg.LoadSentGlueSGDandGSUtils()\n", + "#print('loading SayYes Databases')\n", + "#sy.load_DB_into_FASTsearch()\n", + "#print('loading passiv2active Databases')\n", + "#p2a.load_DB_into_FASTsearch()\n", + "#print('loading conjunctivesolve Databases')\n", + "#cs.load_DB_into_FASTsearch()\n", + "#print('loading the fremdwb Databases')\n", + "#fwb.load_DB_into_FASTsearch()\n", + "#print('loading the mediodot Databases')\n", + "#medi.load_DB_into_FASTsearch()\n", + "\n", + "#print('done')\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "106e70dd208f4de29ae10874823d30a8", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Textarea(value='', layout=Layout(height='180px', width='99%'), placeholder='Hier den Text eingeben, darunter k…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "\n", + "#print('done')\n", + "\n", + "#print('loading passiv2active Databases')\n", + "#from Passiv2Aktiv import *\n", + "#p2a = Passiv2Aktiv(None, None, None)\n", + "#p2a.load_DB_into_FASTsearch()\n", + "#print('done')\n", + "#print('loading genitiv solve')\n", + "#from GenitivSolve import *\n", + "#gs = GenitivSolve()\n", + "\n", + "#from FremdWB import *\n", + "#fwb = FremdWB(None,None)\n", + "#fwb.load_DB_into_FASTsearch()\n", + "\n", + "#from SolveShorts import *\n", + "#print('loading SolveShorts Databases')\n", + "#solSh.load_DB_into_FASTsearch()\n", + "\n", + "#from SayYes import *\n", + "#sy = SayYes(None, None)\n", + "#print('loading SayYes Databases')\n", + "#sy.load_DB_into_FASTsearch()\n", + "\n", + "#import SentSeg\n", + "#sent_seg = SentSeg.SentSeg('de')\n", + "#print('loading SentSeg Databases')\n", + "#sent_seg.LoadSentGlueSGDandGSUtils()\n", + "#print('loading conjunctsolve')\n", + "#from ConjunctSolve import *\n", + "#cs = ConjunctSolve(None,None)\n", + "#print('done')\n", + "#print('loading conjunctivesolve Databases')\n", + "#cs.load_DB_into_FASTsearch()\n", + "#print('done')\n", + "#from oi import *\n", + "#oi = oi()\n", + "\n", + "#print('loading session..')\n", + "\n", + "#print('done')\n", + "import dill\n", + "dill.load_session('voilastate.db')\n", + "\n", + "#from SolveShorts import *\n", + "#print('loading SolveShorts Databases')\n", + "#solSh.load_DB_into_FASTsearch()\n", + "\n", + "#import SentSeg\n", + "#sent_seg = SentSeg.SentSeg('de')\n", + "#print('loading SentSeg Databases')\n", + "#sent_seg.LoadSentGlueSGDandGSUtils()\n", + "\n", + "#from FremdWB import *\n", + "#fwb = FremdWB(None,None)\n", + "#fwb.load_DB_into_FASTsearch()\n", + "\n", + "#from Medio import *\n", + "#medi = Medio(None,None)\n", + "#medi.load_DB_into_FASTsearch()\n", + "\n", + "\n", + "#import dill\n", + "#print('dumping the session')\n", + "#dill.dump_session('voilastate.db')\n", + "#print('done')\n", + "\n", + "#from oi import *\n", + "#oi = oi()\n", + "\n", + "import ipywidgets as widgets\n", + "\n", + "TextFeld = widgets.Textarea(placeholder='Hier den Text eingeben, darunter können die Module aktiviert(grün) oder deaktiviert(pink) werden', disabled=False)\n", + "#print(TextFeld.layout.height)\n", + "TextFeld.layout.height = '180px'\n", + "TextFeld.layout.width = '99%'\n", + "\n", + "TextFelddouble = widgets.Textarea(placeholder='Hier den Text eingeben, darunter können die Module aktiviert(grün) oder deaktiviert(pink) werden', disabled=False)\n", + "#print(TextFeld.layout.height)\n", + "TextFelddouble.layout.height = '180px'\n", + "TextFelddouble.layout.width = '99%'\n", + "TextFelddouble.disabled=True\n", + "\n", + "display(TextFeld)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "\n", + "dawidth = '100%'\n", + "daheight = '100%'\n", + "KonjunktiveErsetzen = widgets.ToggleButton(\n", + " value=False,\n", + " description='Konjunktive ersetzen',\n", + " disabled=False,\n", + ")\n", + "KonjunktiveErsetzen.layout.width = dawidth\n", + "KonjunktiveErsetzen.layout.height = '80%'\n", + "\n", + "GenitiveErsetzen = widgets.ToggleButton(\n", + " value=True,\n", + " description='Genitiv ersetzen',\n", + " disabled=False\n", + ")\n", + "GenitiveErsetzen.layout.width = '60%'\n", + "GenitiveErsetzen.layout.height = daheight\n", + "\n", + "PassivErsetzen = widgets.ToggleButton(\n", + " value=True,\n", + " description='Passiv ersetzen',\n", + " disabled=False\n", + ")\n", + "PassivErsetzen.layout.width = '70%'\n", + "PassivErsetzen.layout.height = '90%'\n", + "\n", + "SayYes = widgets.ToggleButton(\n", + " value=True,\n", + " description='Verneinungen ersetzen',\n", + " disabled=False\n", + ")\n", + "SayYes.layout.width = '80%'\n", + "SayYes.layout.height = '80%'\n", + "SentSeg = widgets.ToggleButton(\n", + " value=True,\n", + " description='Eine Aussage pro Satz',\n", + " disabled=False\n", + ")\n", + "SentSeg.layout.width = '60%'\n", + "SentSeg.layout.height = daheight\n", + "SolveShorts = widgets.ToggleButton(\n", + " value=False,\n", + " description='Abkürzungen erklären',\n", + " disabled=False\n", + ")\n", + "SolveShorts.layout.width = '80%'\n", + "SolveShorts.layout.height = '90%'\n", + "FremdWB = widgets.ToggleButton(\n", + " value=True,\n", + " description='FremdWoerterbuch',\n", + " disabled=False\n", + ")\n", + "FremdWB.layout.width = '90%'\n", + "FremdWB.layout.height = '90%'\n", + "\n", + "Appendixes = widgets.ToggleButton(\n", + " value=True,\n", + " description='Charakterisierung pro Satz',\n", + " disabled=False\n", + ")\n", + "Appendixes.layout.width = '120%'\n", + "Appendixes.layout.height = '80%'\n", + "\n", + "Medio = widgets.ToggleButton(\n", + " value=True,\n", + " description='Mediopunkte',\n", + " disabled=False\n", + ")\n", + "Medio.layout.width = '50%'\n", + "Medio.layout.height = '90%'\n", + "\n", + "#items1 = [SentSeg, SolveShorts]\n", + "#items2 = [SayYes, PassivErsetzen]\n", + "#items3 = [GenitiveErsetzen, KonjunktiveErsetzen]\n", + "#items = [Textfeld, SentSeg, SolveShorts, SayYes, PassivErsetzen, GenitiveErsetzen, KonjunktiveErsetzen]\n", + "#display(SentSeg, SolveShorts, SayYes, PassivErsetzen, GenitiveErsetzen, KonjunktiveErsetzen)\n", + "#widgets.GridBox(items, layout=widgets.Layout(grid_template_columns=\"repeat(3, 100px)\"))\n", + "\n", + "\n", + "\n", + "#widgets.HBox(items1)\n", + "#widgets.HBox(items2)\n", + "#widgets.HBox(items3)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "import ipywidgets\n", + "out = 'Hier kommt der übersetzte Text heraus.'\n", + "\n", + "TextFeld.add_class(\"thotext\")\n", + "TextFelddouble.add_class(\"thotext\")\n", + "#display(OutTextFeld)\n", + "items = [SentSeg, SolveShorts, SayYes, PassivErsetzen, GenitiveErsetzen, KonjunktiveErsetzen, FremdWB, Appendixes, Medio] \n", + "#display(SentSeg, SolveShorts, SayYes, PassivErsetzen, GenitiveErsetzen, KonjunktiveErsetzen)\n", + "Grid = widgets.GridBox(items, layout=widgets.Layout(justify_items=\"center\", grid_template_columns=\"repeat(3, 30%)\", grid_gap=\"4.5%\", height=\"320px\"))\n" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "c08292c98ddf447ca1c19117241980b8", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "GridBox(children=(ToggleButton(value=True, description='Eine Aussage pro Satz', layout=Layout(height='100%', w…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "\n", + "display(HTML('
'))\n", + "display(Grid)\n", + "\n", + "\n", + "\n", + "\n", + "def function():\n", + " out = 'Wählen Sie ein Kästchen aus!'\n", + " try:\n", + " insentences, punctuations = oi.CellInputText2SplitsentencesWithspacy(TextFeld.value)\n", + " except:\n", + " OutTextFeld.placeholder = 'Bitte auf die Zeichensetzung achten! '\n", + " return\n", + " \n", + " check = 0\n", + " #print('insentences',insentences)\n", + " #print(punctuations)\n", + " if SayYes.value == True:\n", + " \n", + " print('ersetze Gegenteile..')\n", + " outsentences = sy.replaceOpposites(insentences)\n", + " check = 1\n", + " \n", + " \n", + " \n", + " \n", + " if Appendixes.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('generiere ist-Aussagen..')\n", + " outsentences, punctuations = sent_seg.putAppendixesIntoOwnSentences(insentences, punctuations)\n", + " \n", + " if SentSeg.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('forme zu einem Satz pro Aussage um..')\n", + " sentsegformattedsentences = []\n", + " for sentence in insentences:\n", + " \n", + " sentsegformattedsentences.append([sentence])\n", + " \n", + " #print(sentsegformattedsentences)\n", + " sentences = sent_seg.CommaSentenceOrNot(sentsegformattedsentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetUtteranceNumber(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetQuestionOrNot(sentences)\n", + " #print(sentences)\n", + " sentences, punctuations = sent_seg.AndOrSolver(sentences, punctuations)\n", + " #print(len(punctuations))\n", + " #print('sentences after AndOrSolver', sentences, punctuations)\n", + " sentences = sent_seg.CommaSentenceOrNot(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetUtteranceNumber(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetQuestionOrNot(sentences)\n", + " #print(sentences)\n", + " sentences, punctuations = sent_seg.SplitSentencesIntoHauptNebenTuple(sentences, punctuations)\n", + " #print(len(punctuations))\n", + " #print('sentences after split haupt neben', sentences)\n", + " sentences = sent_seg.CommaSentenceOrNot(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetUtteranceNumber(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetQuestionOrNot(sentences)\n", + " #print(sentences)\n", + " outsentences, punctuations = sent_seg.SplitCommatas(sentences, punctuations)\n", + " #print(len(punctuations))\n", + " #print('out',outsentences)\n", + " #print('out', punctuations)\n", + " check = 1\n", + " \n", + " \n", + " if SolveShorts.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('erklaere Abkuerzungen..')\n", + " outsentences = solSh.ExplainShortsInSentencesWithBrackets(insentences)\n", + " check = 1\n", + " #print(len(punctuations)) \n", + " #print('sentences after solveshorts', outsentences)\n", + " \n", + " if PassivErsetzen.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('ersetze Passiv Formen..')\n", + " outsentences = p2a.replacePassivForms(insentences)\n", + " check = 1\n", + " #print(len(punctuations))\n", + " #print('sentences after p2a', outsentences)\n", + " \n", + " if GenitiveErsetzen.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " #print('replacing genitiv forms with dativ..')\n", + " outsentences = gs.ReplaceGenitivWithDativ(insentences)\n", + " check = 1\n", + " #print(len(punctuations))\n", + " #print('sentences after gs', outsentences)\n", + " \n", + " if check == 1:\n", + " newinsentences = []\n", + " for sentence in outsentences: \n", + " newinsentences.append([word.replace('ö','oe').replace('ü','ue').replace('ä','ae').replace('ß','ss') for word in sentence])\n", + " \n", + " outsentences =newinsentences\n", + " if check != 1:\n", + " newinsentences = []\n", + " for sentence in insentences: \n", + " newinsentences.append([word.replace('ö','oe').replace('ü','ue').replace('ä','ae').replace('ß','ss') for word in sentence])\n", + " \n", + " insentences =newinsentences\n", + " #print()\n", + " if KonjunktiveErsetzen.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('ersetze Konjunktive..')\n", + " \n", + " outsentences = cs.replaceConjunctives(insentences)\n", + " #print('outsentences')\n", + " check = 1\n", + " \n", + " #print('sentences after cs', outsentences)\n", + " print(len(punctuations))\n", + " \n", + " if FremdWB.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('Suche Woerterbucheintraege..')\n", + " \n", + " outsentences, punctuations = fwb.fremdEintragAppend(insentences, punctuations)\n", + " #print('outsentences')\n", + " check = 1\n", + " \n", + " if Medio.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('Ersetze lange Woerter mit Mediopunkten..')\n", + " \n", + " outsentences, punctuations = medi.Medioreplace(insentences, punctuations)\n", + " #print('outsentences')\n", + " check = 1\n", + " #print('sentences after medios', outsentences)\n", + " \n", + " \n", + " #print('sentences after fwb', outsentences)\n", + " \n", + " print(len(punctuations))\n", + " \n", + " if check == 1:\n", + " out = ''\n", + " #print('just before looking if the lenght is the same')\n", + " #print(len(outsentences), len(punctuations))\n", + " if len(outsentences) == len(punctuations):\n", + " #print('the length is the same')\n", + " for n in range(len(outsentences)):\n", + " outsentence = outsentences[n]\n", + " outsentence[0] = outsentence[0].title()\n", + " out += ' '.join(outsentence) + punctuations[n] + '\\n'\n", + " \n", + " \n", + " OutTextFeld.value = out\n", + " TextFelddouble.value = TextFeld.value\n", + " display(TextFelddouble)\n", + " \n", + " return \n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "3ca86c6e7e39437eafa36439e3337b42", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "interactive(children=(Button(description='Übersetzen in Leichte Sprache', style=ButtonStyle()), Output()), _do…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "#from IPython.display import Image\n", + "#i = Image(filename='Babelfish.png')\n", + "\n", + "#i.width = '60%'\n", + "#display(i)\n", + "\n", + "#print(widgets.interact_manual.opts)\n", + "\n", + "widgets.interact_manual.opts['manual_name']= 'Übersetzen in Leichte Sprache'\n", + "ola = widgets.interact_manual(function)\n", + "ola.widget.children[0].style.button_color = 'lightgreen'\n", + "ola.widget.children[0].layout.height = '60px'\n", + "ola.widget.children[0].layout.width = '99%'\n", + "\n", + "#widgets.GridBox([ola], layout=widgets.Layout(grid_template_columns=\"repeat(2, 300px)\"))" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "0d6f03c93f0147cd9f33d2a053672b0c", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Textarea(value='', layout=Layout(height='180px', width='99%'), placeholder='Hier kommt der übersetzte Text her…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "OutTextFeld = ipywidgets.Textarea(placeholder=out, disabled=False)\n", + "OutTextFeld.layout.height = '180px'\n", + "OutTextFeld.layout.width = '99%'\n", + "OutTextFeld.add_class(\"thetext\")\n", + "display(OutTextFeld)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [], + "source": [ + "beschreibung = 'Textfeld für die verbesserte Übersetzung. Satzzeichen bitte nicht vergessen! \\nFalls ein neuer Eintrag ins Fremdwörterbuch vorgenommen werden soll, schreibe einfach unter die Verbesserungen einen Eintrag der Form: [\\'Abfall\\', \\'Abfall sind Sachen die wir nicht mehr brauchen\\'] \\nFalls ein neuer Eintrag in die Mediopunkte-Datenbank vorgenommen werden soll, bitte schreibe unter die Verbesserungen einen Eintrag der Form: [\\'Mediopunkt\\', \\'Medio·punkt\\']' \n", + "VerbeTextFeld = ipywidgets.Textarea(placeholder=beschreibung, disabled=False)\n", + "VerbeTextFeld.layout.height = '180px'\n", + "VerbeTextFeld.layout.width = '99%'\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "\n", + "def Absendefunction():\n", + " \n", + " \n", + "\n", + " \n", + " #print(VerbeTextFeld.value)\n", + " #print(TextFeld.value)\n", + " #print(OutTextFeld.value)\n", + " \n", + " try:\n", + "\n", + " insentences, punctuations = oi.CellInputText2SplitsentencesWithspacy(VerbeTextFeld.value)\n", + " insentences1, punctuations1 = oi.CellInputText2SplitsentencesWithspacy(TextFeld.value)\n", + " insentences2, punctuations2 = oi.CellInputText2SplitsentencesWithspacy(OutTextFeld.value)\n", + "\n", + " #print(insentences2)\n", + "\n", + " #print(insentences, punctuations)\n", + " indexDerVerbesserungen = 0\n", + " number = 0\n", + " with open('Verbesserungen/indexDerVerbesserungen.txt', 'r') as dok:\n", + " for number in dok:\n", + " number = int(number)\n", + " if number >= 0:\n", + " indexDerVerbesserungen = number\n", + " number += 1\n", + "\n", + " with open('Verbesserungen/indexDerVerbesserungen.txt', 'w') as dokk:\n", + " dokk.write(str(number))\n", + "\n", + "\n", + " with open('Verbesserungen/Verbesserungen' + str(number) + '.txt','w+') as doc:\n", + " for n in range(len(insentences)):\n", + " npunct = punctuations[n]\n", + " writeline = insentences[n]+ [npunct]\n", + "\n", + " writestring = ' '.join(writeline)\n", + "\n", + " doc.write(writestring + '\\n')\n", + "\n", + " with open('Verbesserungen/Input' + str(number) + '.txt','w+') as docc:\n", + " for n in range(len(insentences1)):\n", + " npunct = punctuations1[n]\n", + " writeline = insentences1[n]+ [npunct]\n", + "\n", + " writestring = ' '.join(writeline)\n", + "\n", + " docc.write(writestring + '\\n')\n", + " with open('Verbesserungen/Output' + str(number) + '.txt','w+') as dock:\n", + " #print(insentences2)\n", + " for n in range(len(insentences2)):\n", + " #print(len(insentences2))\n", + "\n", + " #print(punctuations2)\n", + " npunct = punctuations2[n]\n", + " writeline = insentences2[n]+ [npunct]\n", + "\n", + " writestring = ' '.join(writeline)\n", + "\n", + " dock.write(writestring + '\\n')\n", + "\n", + " VerbeTextFeld.value = ''\n", + " OutTextFeld.value = ''\n", + " VerbeTextFeld.placeholder = beschreibung\n", + " OutTextFeld.placeholder = 'Hier kommt der übersetzte Text raus.'\n", + " except:\n", + " VerbeTextFeld.placeholder = 'Es gab einen Fehler. Eventuell ist die Zeichensetzung nicht ok. \\n \\n' + beschreibung\n", + " \n", + " \n", + " return \n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "1713cde35a884104b20056d5694d168a", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Textarea(value='', layout=Layout(height='180px', width='99%'), placeholder=\"Textfeld für die verbesserte Übers…" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "d4100a2d84d34630acf974f78d316abc", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "interactive(children=(Button(description='Absenden', style=ButtonStyle()), Output()), _dom_classes=('widget-in…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "VerbeTextFeld.add_class(\"thetext3\")\n", + "display(VerbeTextFeld)\n", + "display(HTML('
'))\n", + "widgets.interact_manual.opts['manual_name']= 'Absenden'\n", + "AbsendenUndSchreiben = widgets.interact_manual(Absendefunction)\n", + "AbsendenUndSchreiben.widget.children[0].style.button_color = 'lightblue'\n", + "AbsendenUndSchreiben.widget.children[0].layout.height = '60px'\n", + "AbsendenUndSchreiben.widget.children[0].layout.width = '99%'\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%html\n", + "" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%html\n", + "" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "data": { + "text/html": [ + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%html\n", + "" + ] + } + ], + "metadata": { + "celltoolbar": "Raw Cell Format", + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.5.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/Prototyp/.ipynb_checkpoints/.Prototype-12-checkpoint.ipynb b/Prototyp/.ipynb_checkpoints/.Prototype-12-checkpoint.ipynb new file mode 100644 index 00000000..50a76c09 --- /dev/null +++ b/Prototyp/.ipynb_checkpoints/.Prototype-12-checkpoint.ipynb @@ -0,0 +1,2313 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "#from oi import *\n", + "\n", + "#oi = oi()\n", + "\n", + "#import ipyvuetify as v\n", + "\n", + "#state = False\n", + "#oi.toggle_code(state)\n", + "\n", + "#button = widgets.ToggleButton(state, description = button_descriptions[state])\n", + "\n", + "\n", + "#button.observe(oi.button_action, \"value\")\n", + "\n", + "#button.layout.height = '50px'\n", + "#button.layout.width = '100%'\n", + "#button.add_class(\"thobutton\")\n", + "\n", + "#display(button)\n", + "#button.button_style = 'danger'\n" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "\n", + "

Ein Klick auf das Logo - und es geht zum Code

\n", + "\n", + "\n", + " \n", + "\n", + " \n", + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%html\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "\n", + "

Ein Klick auf das Logo - und es geht zum Code

\n", + "\n", + "\n", + " \n", + "\n", + " \n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "#%%html\n", + "#\n", + "#\n", + "#\n", + "#\n", + "#\n", + "#

Ein Klick auf das Logo - und es geht zum Code

\n", + "#" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [], + "source": [ + "#%%html\n", + "#" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "#from ipywidgets import widgets\n", + "#button = widgets.Button(description='Click me')\n", + "#display(button)\n", + "\n", + "#def on_button_clicked(b):\n", + "# print('button clicked')\n", + "\n", + "#button.on_click(on_button_clicked)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "\n", + "# importing the libraries\n", + "#print('importing libraries')\n", + "#from SolveShorts import *\n", + "#import SentSeg\n", + "#from SayYes import *\n", + "#from Passiv2Aktiv import *\n", + "#from GenitivSolve import *\n", + "#from ConjunctSolve import *\n", + "#from FremdWB import *\n", + "#from Medio import *\n", + "#from oi import *\n", + "#print('done')\n", + "\n", + "\n", + "# Initializing the libraries\n", + "#print('initializing the libraries')\n", + "#print('1')\n", + "#solSh = SolveShorts('hkldbShorts.hkl', 'hkldbShorts_All.hkl')\n", + "#print('2')\n", + "#sent_seg = SentSeg.SentSeg('de')\n", + "#print('3')\n", + "#sy = SayYes(None, None)\n", + "#print('4')\n", + "#p2a = Passiv2Aktiv(None, None, None)\n", + "#print('5')\n", + "#gs = GenitivSolve()\n", + "#print('6')\n", + "#cs = ConjunctSolve(None,None)\n", + "#print('7')\n", + "#oi = oi()\n", + "#print('8')\n", + "#fwb = FremdWB(None,None)\n", + "#print('9')\n", + "#medi = Medio(None,None)\n", + "#print('done')\n", + "\n", + "\n", + "# loading the databases and models\n", + "#print('loading SolveShorts Databases')\n", + "#solSh.load_DB_into_FASTsearch()\n", + "#print('loading SentSeg Databases')\n", + "#sent_seg.LoadSentGlueSGDandGSUtils()\n", + "#print('loading SayYes Databases')\n", + "#sy.load_DB_into_FASTsearch()\n", + "#print('loading passiv2active Databases')\n", + "#p2a.load_DB_into_FASTsearch()\n", + "#print('loading conjunctivesolve Databases')\n", + "#cs.load_DB_into_FASTsearch()\n", + "#print('loading the fremdwb Databases')\n", + "#fwb.load_DB_into_FASTsearch()\n", + "#print('loading the mediodot Databases')\n", + "#medi.load_DB_into_FASTsearch()\n", + "\n", + "#print('done')\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "106e70dd208f4de29ae10874823d30a8", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Textarea(value='', layout=Layout(height='180px', width='99%'), placeholder='Hier den Text eingeben, darunter k…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "\n", + "#print('done')\n", + "\n", + "#print('loading passiv2active Databases')\n", + "#from Passiv2Aktiv import *\n", + "#p2a = Passiv2Aktiv(None, None, None)\n", + "#p2a.load_DB_into_FASTsearch()\n", + "#print('done')\n", + "#print('loading genitiv solve')\n", + "#from GenitivSolve import *\n", + "#gs = GenitivSolve()\n", + "\n", + "#from FremdWB import *\n", + "#fwb = FremdWB(None,None)\n", + "#fwb.load_DB_into_FASTsearch()\n", + "\n", + "#from SolveShorts import *\n", + "#print('loading SolveShorts Databases')\n", + "#solSh.load_DB_into_FASTsearch()\n", + "\n", + "#from SayYes import *\n", + "#sy = SayYes(None, None)\n", + "#print('loading SayYes Databases')\n", + "#sy.load_DB_into_FASTsearch()\n", + "\n", + "#import SentSeg\n", + "#sent_seg = SentSeg.SentSeg('de')\n", + "#print('loading SentSeg Databases')\n", + "#sent_seg.LoadSentGlueSGDandGSUtils()\n", + "#print('loading conjunctsolve')\n", + "#from ConjunctSolve import *\n", + "#cs = ConjunctSolve(None,None)\n", + "#print('done')\n", + "#print('loading conjunctivesolve Databases')\n", + "#cs.load_DB_into_FASTsearch()\n", + "#print('done')\n", + "#from oi import *\n", + "#oi = oi()\n", + "\n", + "#print('loading session..')\n", + "\n", + "#print('done')\n", + "import dill\n", + "dill.load_session('voilastate.db')\n", + "\n", + "#from SolveShorts import *\n", + "#print('loading SolveShorts Databases')\n", + "#solSh.load_DB_into_FASTsearch()\n", + "\n", + "#import SentSeg\n", + "#sent_seg = SentSeg.SentSeg('de')\n", + "#print('loading SentSeg Databases')\n", + "#sent_seg.LoadSentGlueSGDandGSUtils()\n", + "\n", + "#from FremdWB import *\n", + "#fwb = FremdWB(None,None)\n", + "#fwb.load_DB_into_FASTsearch()\n", + "\n", + "#from Medio import *\n", + "#medi = Medio(None,None)\n", + "#medi.load_DB_into_FASTsearch()\n", + "\n", + "\n", + "#import dill\n", + "#print('dumping the session')\n", + "#dill.dump_session('voilastate.db')\n", + "#print('done')\n", + "\n", + "#from oi import *\n", + "#oi = oi()\n", + "\n", + "import ipywidgets as widgets\n", + "\n", + "TextFeld = widgets.Textarea(placeholder='Hier den Text eingeben, darunter können die Module aktiviert(grün) oder deaktiviert(pink) werden', disabled=False)\n", + "#print(TextFeld.layout.height)\n", + "TextFeld.layout.height = '180px'\n", + "TextFeld.layout.width = '99%'\n", + "\n", + "TextFelddouble = widgets.Textarea(placeholder='Hier den Text eingeben, darunter können die Module aktiviert(grün) oder deaktiviert(pink) werden', disabled=False)\n", + "#print(TextFeld.layout.height)\n", + "TextFelddouble.layout.height = '180px'\n", + "TextFelddouble.layout.width = '99%'\n", + "TextFelddouble.disabled=True\n", + "\n", + "display(TextFeld)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "\n", + "dawidth = '100%'\n", + "daheight = '100%'\n", + "KonjunktiveErsetzen = widgets.ToggleButton(\n", + " value=False,\n", + " description='Konjunktive ersetzen',\n", + " disabled=False,\n", + ")\n", + "KonjunktiveErsetzen.layout.width = dawidth\n", + "KonjunktiveErsetzen.layout.height = '80%'\n", + "\n", + "GenitiveErsetzen = widgets.ToggleButton(\n", + " value=True,\n", + " description='Genitiv ersetzen',\n", + " disabled=False\n", + ")\n", + "GenitiveErsetzen.layout.width = '60%'\n", + "GenitiveErsetzen.layout.height = daheight\n", + "\n", + "PassivErsetzen = widgets.ToggleButton(\n", + " value=True,\n", + " description='Passiv ersetzen',\n", + " disabled=False\n", + ")\n", + "PassivErsetzen.layout.width = '70%'\n", + "PassivErsetzen.layout.height = '90%'\n", + "\n", + "SayYes = widgets.ToggleButton(\n", + " value=True,\n", + " description='Verneinungen ersetzen',\n", + " disabled=False\n", + ")\n", + "SayYes.layout.width = '80%'\n", + "SayYes.layout.height = '80%'\n", + "SentSeg = widgets.ToggleButton(\n", + " value=True,\n", + " description='Eine Aussage pro Satz',\n", + " disabled=False\n", + ")\n", + "SentSeg.layout.width = '60%'\n", + "SentSeg.layout.height = daheight\n", + "SolveShorts = widgets.ToggleButton(\n", + " value=False,\n", + " description='Abkürzungen erklären',\n", + " disabled=False\n", + ")\n", + "SolveShorts.layout.width = '80%'\n", + "SolveShorts.layout.height = '90%'\n", + "FremdWB = widgets.ToggleButton(\n", + " value=True,\n", + " description='FremdWoerterbuch',\n", + " disabled=False\n", + ")\n", + "FremdWB.layout.width = '90%'\n", + "FremdWB.layout.height = '90%'\n", + "\n", + "Appendixes = widgets.ToggleButton(\n", + " value=True,\n", + " description='Charakterisierung pro Satz',\n", + " disabled=False\n", + ")\n", + "Appendixes.layout.width = '120%'\n", + "Appendixes.layout.height = '80%'\n", + "\n", + "Medio = widgets.ToggleButton(\n", + " value=True,\n", + " description='Mediopunkte',\n", + " disabled=False\n", + ")\n", + "Medio.layout.width = '50%'\n", + "Medio.layout.height = '90%'\n", + "\n", + "#items1 = [SentSeg, SolveShorts]\n", + "#items2 = [SayYes, PassivErsetzen]\n", + "#items3 = [GenitiveErsetzen, KonjunktiveErsetzen]\n", + "#items = [Textfeld, SentSeg, SolveShorts, SayYes, PassivErsetzen, GenitiveErsetzen, KonjunktiveErsetzen]\n", + "#display(SentSeg, SolveShorts, SayYes, PassivErsetzen, GenitiveErsetzen, KonjunktiveErsetzen)\n", + "#widgets.GridBox(items, layout=widgets.Layout(grid_template_columns=\"repeat(3, 100px)\"))\n", + "\n", + "\n", + "\n", + "#widgets.HBox(items1)\n", + "#widgets.HBox(items2)\n", + "#widgets.HBox(items3)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "import ipywidgets\n", + "out = 'Hier kommt der übersetzte Text heraus.'\n", + "\n", + "TextFeld.add_class(\"thotext\")\n", + "TextFelddouble.add_class(\"thotext\")\n", + "#display(OutTextFeld)\n", + "items = [SentSeg, SolveShorts, SayYes, PassivErsetzen, GenitiveErsetzen, KonjunktiveErsetzen, FremdWB, Appendixes, Medio] \n", + "#display(SentSeg, SolveShorts, SayYes, PassivErsetzen, GenitiveErsetzen, KonjunktiveErsetzen)\n", + "Grid = widgets.GridBox(items, layout=widgets.Layout(justify_items=\"center\", grid_template_columns=\"repeat(3, 30%)\", grid_gap=\"4.5%\", height=\"320px\"))\n" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "c08292c98ddf447ca1c19117241980b8", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "GridBox(children=(ToggleButton(value=True, description='Eine Aussage pro Satz', layout=Layout(height='100%', w…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "\n", + "display(HTML('
'))\n", + "display(Grid)\n", + "\n", + "\n", + "\n", + "\n", + "def function():\n", + " out = 'Wählen Sie ein Kästchen aus!'\n", + " try:\n", + " insentences, punctuations = oi.CellInputText2SplitsentencesWithspacy(TextFeld.value)\n", + " except:\n", + " OutTextFeld.placeholder = 'Bitte auf die Zeichensetzung achten! '\n", + " return\n", + " \n", + " check = 0\n", + " #print('insentences',insentences)\n", + " #print(punctuations)\n", + " if SayYes.value == True:\n", + " \n", + " print('ersetze Gegenteile..')\n", + " outsentences = sy.replaceOpposites(insentences)\n", + " check = 1\n", + " \n", + " \n", + " \n", + " \n", + " if Appendixes.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('generiere ist-Aussagen..')\n", + " outsentences, punctuations = sent_seg.putAppendixesIntoOwnSentences(insentences, punctuations)\n", + " \n", + " if SentSeg.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('forme zu einem Satz pro Aussage um..')\n", + " sentsegformattedsentences = []\n", + " for sentence in insentences:\n", + " \n", + " sentsegformattedsentences.append([sentence])\n", + " \n", + " #print(sentsegformattedsentences)\n", + " sentences = sent_seg.CommaSentenceOrNot(sentsegformattedsentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetUtteranceNumber(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetQuestionOrNot(sentences)\n", + " #print(sentences)\n", + " sentences, punctuations = sent_seg.AndOrSolver(sentences, punctuations)\n", + " #print(len(punctuations))\n", + " #print('sentences after AndOrSolver', sentences, punctuations)\n", + " sentences = sent_seg.CommaSentenceOrNot(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetUtteranceNumber(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetQuestionOrNot(sentences)\n", + " #print(sentences)\n", + " sentences, punctuations = sent_seg.SplitSentencesIntoHauptNebenTuple(sentences, punctuations)\n", + " #print(len(punctuations))\n", + " #print('sentences after split haupt neben', sentences)\n", + " sentences = sent_seg.CommaSentenceOrNot(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetUtteranceNumber(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetQuestionOrNot(sentences)\n", + " #print(sentences)\n", + " outsentences, punctuations = sent_seg.SplitCommatas(sentences, punctuations)\n", + " #print(len(punctuations))\n", + " #print('out',outsentences)\n", + " #print('out', punctuations)\n", + " check = 1\n", + " \n", + " \n", + " if SolveShorts.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('erklaere Abkuerzungen..')\n", + " outsentences = solSh.ExplainShortsInSentencesWithBrackets(insentences)\n", + " check = 1\n", + " #print(len(punctuations)) \n", + " #print('sentences after solveshorts', outsentences)\n", + " \n", + " if PassivErsetzen.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('ersetze Passiv Formen..')\n", + " outsentences = p2a.replacePassivForms(insentences)\n", + " check = 1\n", + " #print(len(punctuations))\n", + " #print('sentences after p2a', outsentences)\n", + " \n", + " if GenitiveErsetzen.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " #print('replacing genitiv forms with dativ..')\n", + " outsentences = gs.ReplaceGenitivWithDativ(insentences)\n", + " check = 1\n", + " #print(len(punctuations))\n", + " #print('sentences after gs', outsentences)\n", + " \n", + " if check == 1:\n", + " newinsentences = []\n", + " for sentence in outsentences: \n", + " newinsentences.append([word.replace('ö','oe').replace('ü','ue').replace('ä','ae').replace('ß','ss') for word in sentence])\n", + " \n", + " outsentences =newinsentences\n", + " if check != 1:\n", + " newinsentences = []\n", + " for sentence in insentences: \n", + " newinsentences.append([word.replace('ö','oe').replace('ü','ue').replace('ä','ae').replace('ß','ss') for word in sentence])\n", + " \n", + " insentences =newinsentences\n", + " #print()\n", + " if KonjunktiveErsetzen.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('ersetze Konjunktive..')\n", + " \n", + " outsentences = cs.replaceConjunctives(insentences)\n", + " #print('outsentences')\n", + " check = 1\n", + " \n", + " #print('sentences after cs', outsentences)\n", + " print(len(punctuations))\n", + " \n", + " if FremdWB.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('Suche Woerterbucheintraege..')\n", + " \n", + " outsentences, punctuations = fwb.fremdEintragAppend(insentences, punctuations)\n", + " #print('outsentences')\n", + " check = 1\n", + " \n", + " if Medio.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('Ersetze lange Woerter mit Mediopunkten..')\n", + " \n", + " outsentences, punctuations = medi.Medioreplace(insentences, punctuations)\n", + " #print('outsentences')\n", + " check = 1\n", + " #print('sentences after medios', outsentences)\n", + " \n", + " \n", + " #print('sentences after fwb', outsentences)\n", + " \n", + " print(len(punctuations))\n", + " \n", + " if check == 1:\n", + " out = ''\n", + " #print('just before looking if the lenght is the same')\n", + " #print(len(outsentences), len(punctuations))\n", + " if len(outsentences) == len(punctuations):\n", + " #print('the length is the same')\n", + " for n in range(len(outsentences)):\n", + " outsentence = outsentences[n]\n", + " outsentence[0] = outsentence[0].title()\n", + " out += ' '.join(outsentence) + punctuations[n] + '\\n'\n", + " \n", + " \n", + " OutTextFeld.value = out\n", + " TextFelddouble.value = TextFeld.value\n", + " display(TextFelddouble)\n", + " \n", + " return \n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "3ca86c6e7e39437eafa36439e3337b42", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "interactive(children=(Button(description='Übersetzen in Leichte Sprache', style=ButtonStyle()), Output()), _do…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "#from IPython.display import Image\n", + "#i = Image(filename='Babelfish.png')\n", + "\n", + "#i.width = '60%'\n", + "#display(i)\n", + "\n", + "#print(widgets.interact_manual.opts)\n", + "\n", + "widgets.interact_manual.opts['manual_name']= 'Übersetzen in Leichte Sprache'\n", + "ola = widgets.interact_manual(function)\n", + "ola.widget.children[0].style.button_color = 'lightgreen'\n", + "ola.widget.children[0].layout.height = '60px'\n", + "ola.widget.children[0].layout.width = '99%'\n", + "\n", + "#widgets.GridBox([ola], layout=widgets.Layout(grid_template_columns=\"repeat(2, 300px)\"))" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "0d6f03c93f0147cd9f33d2a053672b0c", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Textarea(value='', layout=Layout(height='180px', width='99%'), placeholder='Hier kommt der übersetzte Text her…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "OutTextFeld = ipywidgets.Textarea(placeholder=out, disabled=False)\n", + "OutTextFeld.layout.height = '180px'\n", + "OutTextFeld.layout.width = '99%'\n", + "OutTextFeld.add_class(\"thetext\")\n", + "display(OutTextFeld)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [], + "source": [ + "beschreibung = 'Textfeld für die verbesserte Übersetzung. Satzzeichen bitte nicht vergessen! \\nFalls ein neuer Eintrag ins Fremdwörterbuch vorgenommen werden soll, schreibe einfach unter die Verbesserungen einen Eintrag der Form: [\\'Abfall\\', \\'Abfall sind Sachen die wir nicht mehr brauchen\\'] \\nFalls ein neuer Eintrag in die Mediopunkte-Datenbank vorgenommen werden soll, bitte schreibe unter die Verbesserungen einen Eintrag der Form: [\\'Mediopunkt\\', \\'Medio·punkt\\']' \n", + "VerbeTextFeld = ipywidgets.Textarea(placeholder=beschreibung, disabled=False)\n", + "VerbeTextFeld.layout.height = '180px'\n", + "VerbeTextFeld.layout.width = '99%'\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "\n", + "def Absendefunction():\n", + " \n", + " \n", + "\n", + " \n", + " #print(VerbeTextFeld.value)\n", + " #print(TextFeld.value)\n", + " #print(OutTextFeld.value)\n", + " \n", + " try:\n", + "\n", + " insentences, punctuations = oi.CellInputText2SplitsentencesWithspacy(VerbeTextFeld.value)\n", + " insentences1, punctuations1 = oi.CellInputText2SplitsentencesWithspacy(TextFeld.value)\n", + " insentences2, punctuations2 = oi.CellInputText2SplitsentencesWithspacy(OutTextFeld.value)\n", + "\n", + " #print(insentences2)\n", + "\n", + " #print(insentences, punctuations)\n", + " indexDerVerbesserungen = 0\n", + " number = 0\n", + " with open('Verbesserungen/indexDerVerbesserungen.txt', 'r') as dok:\n", + " for number in dok:\n", + " number = int(number)\n", + " if number >= 0:\n", + " indexDerVerbesserungen = number\n", + " number += 1\n", + "\n", + " with open('Verbesserungen/indexDerVerbesserungen.txt', 'w') as dokk:\n", + " dokk.write(str(number))\n", + "\n", + "\n", + " with open('Verbesserungen/Verbesserungen' + str(number) + '.txt','w+') as doc:\n", + " for n in range(len(insentences)):\n", + " npunct = punctuations[n]\n", + " writeline = insentences[n]+ [npunct]\n", + "\n", + " writestring = ' '.join(writeline)\n", + "\n", + " doc.write(writestring + '\\n')\n", + "\n", + " with open('Verbesserungen/Input' + str(number) + '.txt','w+') as docc:\n", + " for n in range(len(insentences1)):\n", + " npunct = punctuations1[n]\n", + " writeline = insentences1[n]+ [npunct]\n", + "\n", + " writestring = ' '.join(writeline)\n", + "\n", + " docc.write(writestring + '\\n')\n", + " with open('Verbesserungen/Output' + str(number) + '.txt','w+') as dock:\n", + " #print(insentences2)\n", + " for n in range(len(insentences2)):\n", + " #print(len(insentences2))\n", + "\n", + " #print(punctuations2)\n", + " npunct = punctuations2[n]\n", + " writeline = insentences2[n]+ [npunct]\n", + "\n", + " writestring = ' '.join(writeline)\n", + "\n", + " dock.write(writestring + '\\n')\n", + "\n", + " VerbeTextFeld.value = ''\n", + " OutTextFeld.value = ''\n", + " VerbeTextFeld.placeholder = beschreibung\n", + " OutTextFeld.placeholder = 'Hier kommt der übersetzte Text raus.'\n", + " except:\n", + " VerbeTextFeld.placeholder = 'Es gab einen Fehler. Eventuell ist die Zeichensetzung nicht ok. \\n \\n' + beschreibung\n", + " \n", + " \n", + " return \n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "1713cde35a884104b20056d5694d168a", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Textarea(value='', layout=Layout(height='180px', width='99%'), placeholder=\"Textfeld für die verbesserte Übers…" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "d4100a2d84d34630acf974f78d316abc", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "interactive(children=(Button(description='Absenden', style=ButtonStyle()), Output()), _dom_classes=('widget-in…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "VerbeTextFeld.add_class(\"thetext3\")\n", + "display(VerbeTextFeld)\n", + "display(HTML('
'))\n", + "widgets.interact_manual.opts['manual_name']= 'Absenden'\n", + "AbsendenUndSchreiben = widgets.interact_manual(Absendefunction)\n", + "AbsendenUndSchreiben.widget.children[0].style.button_color = 'lightblue'\n", + "AbsendenUndSchreiben.widget.children[0].layout.height = '60px'\n", + "AbsendenUndSchreiben.widget.children[0].layout.width = '99%'\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%html\n", + "" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%html\n", + "" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "data": { + "text/html": [ + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%html\n", + "" + ] + } + ], + "metadata": { + "celltoolbar": "Raw Cell Format", + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.5.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/Prototyp/.ipynb_checkpoints/.Prototype-13-checkpoint.ipynb b/Prototyp/.ipynb_checkpoints/.Prototype-13-checkpoint.ipynb new file mode 100644 index 00000000..50a76c09 --- /dev/null +++ b/Prototyp/.ipynb_checkpoints/.Prototype-13-checkpoint.ipynb @@ -0,0 +1,2313 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "#from oi import *\n", + "\n", + "#oi = oi()\n", + "\n", + "#import ipyvuetify as v\n", + "\n", + "#state = False\n", + "#oi.toggle_code(state)\n", + "\n", + "#button = widgets.ToggleButton(state, description = button_descriptions[state])\n", + "\n", + "\n", + "#button.observe(oi.button_action, \"value\")\n", + "\n", + "#button.layout.height = '50px'\n", + "#button.layout.width = '100%'\n", + "#button.add_class(\"thobutton\")\n", + "\n", + "#display(button)\n", + "#button.button_style = 'danger'\n" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "\n", + "

Ein Klick auf das Logo - und es geht zum Code

\n", + "\n", + "\n", + " \n", + "\n", + " \n", + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%html\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "\n", + "

Ein Klick auf das Logo - und es geht zum Code

\n", + "\n", + "\n", + " \n", + "\n", + " \n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "#%%html\n", + "#\n", + "#\n", + "#\n", + "#\n", + "#\n", + "#

Ein Klick auf das Logo - und es geht zum Code

\n", + "#" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [], + "source": [ + "#%%html\n", + "#" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "#from ipywidgets import widgets\n", + "#button = widgets.Button(description='Click me')\n", + "#display(button)\n", + "\n", + "#def on_button_clicked(b):\n", + "# print('button clicked')\n", + "\n", + "#button.on_click(on_button_clicked)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "\n", + "# importing the libraries\n", + "#print('importing libraries')\n", + "#from SolveShorts import *\n", + "#import SentSeg\n", + "#from SayYes import *\n", + "#from Passiv2Aktiv import *\n", + "#from GenitivSolve import *\n", + "#from ConjunctSolve import *\n", + "#from FremdWB import *\n", + "#from Medio import *\n", + "#from oi import *\n", + "#print('done')\n", + "\n", + "\n", + "# Initializing the libraries\n", + "#print('initializing the libraries')\n", + "#print('1')\n", + "#solSh = SolveShorts('hkldbShorts.hkl', 'hkldbShorts_All.hkl')\n", + "#print('2')\n", + "#sent_seg = SentSeg.SentSeg('de')\n", + "#print('3')\n", + "#sy = SayYes(None, None)\n", + "#print('4')\n", + "#p2a = Passiv2Aktiv(None, None, None)\n", + "#print('5')\n", + "#gs = GenitivSolve()\n", + "#print('6')\n", + "#cs = ConjunctSolve(None,None)\n", + "#print('7')\n", + "#oi = oi()\n", + "#print('8')\n", + "#fwb = FremdWB(None,None)\n", + "#print('9')\n", + "#medi = Medio(None,None)\n", + "#print('done')\n", + "\n", + "\n", + "# loading the databases and models\n", + "#print('loading SolveShorts Databases')\n", + "#solSh.load_DB_into_FASTsearch()\n", + "#print('loading SentSeg Databases')\n", + "#sent_seg.LoadSentGlueSGDandGSUtils()\n", + "#print('loading SayYes Databases')\n", + "#sy.load_DB_into_FASTsearch()\n", + "#print('loading passiv2active Databases')\n", + "#p2a.load_DB_into_FASTsearch()\n", + "#print('loading conjunctivesolve Databases')\n", + "#cs.load_DB_into_FASTsearch()\n", + "#print('loading the fremdwb Databases')\n", + "#fwb.load_DB_into_FASTsearch()\n", + "#print('loading the mediodot Databases')\n", + "#medi.load_DB_into_FASTsearch()\n", + "\n", + "#print('done')\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "106e70dd208f4de29ae10874823d30a8", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Textarea(value='', layout=Layout(height='180px', width='99%'), placeholder='Hier den Text eingeben, darunter k…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "\n", + "#print('done')\n", + "\n", + "#print('loading passiv2active Databases')\n", + "#from Passiv2Aktiv import *\n", + "#p2a = Passiv2Aktiv(None, None, None)\n", + "#p2a.load_DB_into_FASTsearch()\n", + "#print('done')\n", + "#print('loading genitiv solve')\n", + "#from GenitivSolve import *\n", + "#gs = GenitivSolve()\n", + "\n", + "#from FremdWB import *\n", + "#fwb = FremdWB(None,None)\n", + "#fwb.load_DB_into_FASTsearch()\n", + "\n", + "#from SolveShorts import *\n", + "#print('loading SolveShorts Databases')\n", + "#solSh.load_DB_into_FASTsearch()\n", + "\n", + "#from SayYes import *\n", + "#sy = SayYes(None, None)\n", + "#print('loading SayYes Databases')\n", + "#sy.load_DB_into_FASTsearch()\n", + "\n", + "#import SentSeg\n", + "#sent_seg = SentSeg.SentSeg('de')\n", + "#print('loading SentSeg Databases')\n", + "#sent_seg.LoadSentGlueSGDandGSUtils()\n", + "#print('loading conjunctsolve')\n", + "#from ConjunctSolve import *\n", + "#cs = ConjunctSolve(None,None)\n", + "#print('done')\n", + "#print('loading conjunctivesolve Databases')\n", + "#cs.load_DB_into_FASTsearch()\n", + "#print('done')\n", + "#from oi import *\n", + "#oi = oi()\n", + "\n", + "#print('loading session..')\n", + "\n", + "#print('done')\n", + "import dill\n", + "dill.load_session('voilastate.db')\n", + "\n", + "#from SolveShorts import *\n", + "#print('loading SolveShorts Databases')\n", + "#solSh.load_DB_into_FASTsearch()\n", + "\n", + "#import SentSeg\n", + "#sent_seg = SentSeg.SentSeg('de')\n", + "#print('loading SentSeg Databases')\n", + "#sent_seg.LoadSentGlueSGDandGSUtils()\n", + "\n", + "#from FremdWB import *\n", + "#fwb = FremdWB(None,None)\n", + "#fwb.load_DB_into_FASTsearch()\n", + "\n", + "#from Medio import *\n", + "#medi = Medio(None,None)\n", + "#medi.load_DB_into_FASTsearch()\n", + "\n", + "\n", + "#import dill\n", + "#print('dumping the session')\n", + "#dill.dump_session('voilastate.db')\n", + "#print('done')\n", + "\n", + "#from oi import *\n", + "#oi = oi()\n", + "\n", + "import ipywidgets as widgets\n", + "\n", + "TextFeld = widgets.Textarea(placeholder='Hier den Text eingeben, darunter können die Module aktiviert(grün) oder deaktiviert(pink) werden', disabled=False)\n", + "#print(TextFeld.layout.height)\n", + "TextFeld.layout.height = '180px'\n", + "TextFeld.layout.width = '99%'\n", + "\n", + "TextFelddouble = widgets.Textarea(placeholder='Hier den Text eingeben, darunter können die Module aktiviert(grün) oder deaktiviert(pink) werden', disabled=False)\n", + "#print(TextFeld.layout.height)\n", + "TextFelddouble.layout.height = '180px'\n", + "TextFelddouble.layout.width = '99%'\n", + "TextFelddouble.disabled=True\n", + "\n", + "display(TextFeld)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "\n", + "dawidth = '100%'\n", + "daheight = '100%'\n", + "KonjunktiveErsetzen = widgets.ToggleButton(\n", + " value=False,\n", + " description='Konjunktive ersetzen',\n", + " disabled=False,\n", + ")\n", + "KonjunktiveErsetzen.layout.width = dawidth\n", + "KonjunktiveErsetzen.layout.height = '80%'\n", + "\n", + "GenitiveErsetzen = widgets.ToggleButton(\n", + " value=True,\n", + " description='Genitiv ersetzen',\n", + " disabled=False\n", + ")\n", + "GenitiveErsetzen.layout.width = '60%'\n", + "GenitiveErsetzen.layout.height = daheight\n", + "\n", + "PassivErsetzen = widgets.ToggleButton(\n", + " value=True,\n", + " description='Passiv ersetzen',\n", + " disabled=False\n", + ")\n", + "PassivErsetzen.layout.width = '70%'\n", + "PassivErsetzen.layout.height = '90%'\n", + "\n", + "SayYes = widgets.ToggleButton(\n", + " value=True,\n", + " description='Verneinungen ersetzen',\n", + " disabled=False\n", + ")\n", + "SayYes.layout.width = '80%'\n", + "SayYes.layout.height = '80%'\n", + "SentSeg = widgets.ToggleButton(\n", + " value=True,\n", + " description='Eine Aussage pro Satz',\n", + " disabled=False\n", + ")\n", + "SentSeg.layout.width = '60%'\n", + "SentSeg.layout.height = daheight\n", + "SolveShorts = widgets.ToggleButton(\n", + " value=False,\n", + " description='Abkürzungen erklären',\n", + " disabled=False\n", + ")\n", + "SolveShorts.layout.width = '80%'\n", + "SolveShorts.layout.height = '90%'\n", + "FremdWB = widgets.ToggleButton(\n", + " value=True,\n", + " description='FremdWoerterbuch',\n", + " disabled=False\n", + ")\n", + "FremdWB.layout.width = '90%'\n", + "FremdWB.layout.height = '90%'\n", + "\n", + "Appendixes = widgets.ToggleButton(\n", + " value=True,\n", + " description='Charakterisierung pro Satz',\n", + " disabled=False\n", + ")\n", + "Appendixes.layout.width = '120%'\n", + "Appendixes.layout.height = '80%'\n", + "\n", + "Medio = widgets.ToggleButton(\n", + " value=True,\n", + " description='Mediopunkte',\n", + " disabled=False\n", + ")\n", + "Medio.layout.width = '50%'\n", + "Medio.layout.height = '90%'\n", + "\n", + "#items1 = [SentSeg, SolveShorts]\n", + "#items2 = [SayYes, PassivErsetzen]\n", + "#items3 = [GenitiveErsetzen, KonjunktiveErsetzen]\n", + "#items = [Textfeld, SentSeg, SolveShorts, SayYes, PassivErsetzen, GenitiveErsetzen, KonjunktiveErsetzen]\n", + "#display(SentSeg, SolveShorts, SayYes, PassivErsetzen, GenitiveErsetzen, KonjunktiveErsetzen)\n", + "#widgets.GridBox(items, layout=widgets.Layout(grid_template_columns=\"repeat(3, 100px)\"))\n", + "\n", + "\n", + "\n", + "#widgets.HBox(items1)\n", + "#widgets.HBox(items2)\n", + "#widgets.HBox(items3)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "import ipywidgets\n", + "out = 'Hier kommt der übersetzte Text heraus.'\n", + "\n", + "TextFeld.add_class(\"thotext\")\n", + "TextFelddouble.add_class(\"thotext\")\n", + "#display(OutTextFeld)\n", + "items = [SentSeg, SolveShorts, SayYes, PassivErsetzen, GenitiveErsetzen, KonjunktiveErsetzen, FremdWB, Appendixes, Medio] \n", + "#display(SentSeg, SolveShorts, SayYes, PassivErsetzen, GenitiveErsetzen, KonjunktiveErsetzen)\n", + "Grid = widgets.GridBox(items, layout=widgets.Layout(justify_items=\"center\", grid_template_columns=\"repeat(3, 30%)\", grid_gap=\"4.5%\", height=\"320px\"))\n" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "c08292c98ddf447ca1c19117241980b8", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "GridBox(children=(ToggleButton(value=True, description='Eine Aussage pro Satz', layout=Layout(height='100%', w…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "\n", + "display(HTML('
'))\n", + "display(Grid)\n", + "\n", + "\n", + "\n", + "\n", + "def function():\n", + " out = 'Wählen Sie ein Kästchen aus!'\n", + " try:\n", + " insentences, punctuations = oi.CellInputText2SplitsentencesWithspacy(TextFeld.value)\n", + " except:\n", + " OutTextFeld.placeholder = 'Bitte auf die Zeichensetzung achten! '\n", + " return\n", + " \n", + " check = 0\n", + " #print('insentences',insentences)\n", + " #print(punctuations)\n", + " if SayYes.value == True:\n", + " \n", + " print('ersetze Gegenteile..')\n", + " outsentences = sy.replaceOpposites(insentences)\n", + " check = 1\n", + " \n", + " \n", + " \n", + " \n", + " if Appendixes.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('generiere ist-Aussagen..')\n", + " outsentences, punctuations = sent_seg.putAppendixesIntoOwnSentences(insentences, punctuations)\n", + " \n", + " if SentSeg.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('forme zu einem Satz pro Aussage um..')\n", + " sentsegformattedsentences = []\n", + " for sentence in insentences:\n", + " \n", + " sentsegformattedsentences.append([sentence])\n", + " \n", + " #print(sentsegformattedsentences)\n", + " sentences = sent_seg.CommaSentenceOrNot(sentsegformattedsentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetUtteranceNumber(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetQuestionOrNot(sentences)\n", + " #print(sentences)\n", + " sentences, punctuations = sent_seg.AndOrSolver(sentences, punctuations)\n", + " #print(len(punctuations))\n", + " #print('sentences after AndOrSolver', sentences, punctuations)\n", + " sentences = sent_seg.CommaSentenceOrNot(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetUtteranceNumber(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetQuestionOrNot(sentences)\n", + " #print(sentences)\n", + " sentences, punctuations = sent_seg.SplitSentencesIntoHauptNebenTuple(sentences, punctuations)\n", + " #print(len(punctuations))\n", + " #print('sentences after split haupt neben', sentences)\n", + " sentences = sent_seg.CommaSentenceOrNot(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetUtteranceNumber(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetQuestionOrNot(sentences)\n", + " #print(sentences)\n", + " outsentences, punctuations = sent_seg.SplitCommatas(sentences, punctuations)\n", + " #print(len(punctuations))\n", + " #print('out',outsentences)\n", + " #print('out', punctuations)\n", + " check = 1\n", + " \n", + " \n", + " if SolveShorts.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('erklaere Abkuerzungen..')\n", + " outsentences = solSh.ExplainShortsInSentencesWithBrackets(insentences)\n", + " check = 1\n", + " #print(len(punctuations)) \n", + " #print('sentences after solveshorts', outsentences)\n", + " \n", + " if PassivErsetzen.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('ersetze Passiv Formen..')\n", + " outsentences = p2a.replacePassivForms(insentences)\n", + " check = 1\n", + " #print(len(punctuations))\n", + " #print('sentences after p2a', outsentences)\n", + " \n", + " if GenitiveErsetzen.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " #print('replacing genitiv forms with dativ..')\n", + " outsentences = gs.ReplaceGenitivWithDativ(insentences)\n", + " check = 1\n", + " #print(len(punctuations))\n", + " #print('sentences after gs', outsentences)\n", + " \n", + " if check == 1:\n", + " newinsentences = []\n", + " for sentence in outsentences: \n", + " newinsentences.append([word.replace('ö','oe').replace('ü','ue').replace('ä','ae').replace('ß','ss') for word in sentence])\n", + " \n", + " outsentences =newinsentences\n", + " if check != 1:\n", + " newinsentences = []\n", + " for sentence in insentences: \n", + " newinsentences.append([word.replace('ö','oe').replace('ü','ue').replace('ä','ae').replace('ß','ss') for word in sentence])\n", + " \n", + " insentences =newinsentences\n", + " #print()\n", + " if KonjunktiveErsetzen.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('ersetze Konjunktive..')\n", + " \n", + " outsentences = cs.replaceConjunctives(insentences)\n", + " #print('outsentences')\n", + " check = 1\n", + " \n", + " #print('sentences after cs', outsentences)\n", + " print(len(punctuations))\n", + " \n", + " if FremdWB.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('Suche Woerterbucheintraege..')\n", + " \n", + " outsentences, punctuations = fwb.fremdEintragAppend(insentences, punctuations)\n", + " #print('outsentences')\n", + " check = 1\n", + " \n", + " if Medio.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('Ersetze lange Woerter mit Mediopunkten..')\n", + " \n", + " outsentences, punctuations = medi.Medioreplace(insentences, punctuations)\n", + " #print('outsentences')\n", + " check = 1\n", + " #print('sentences after medios', outsentences)\n", + " \n", + " \n", + " #print('sentences after fwb', outsentences)\n", + " \n", + " print(len(punctuations))\n", + " \n", + " if check == 1:\n", + " out = ''\n", + " #print('just before looking if the lenght is the same')\n", + " #print(len(outsentences), len(punctuations))\n", + " if len(outsentences) == len(punctuations):\n", + " #print('the length is the same')\n", + " for n in range(len(outsentences)):\n", + " outsentence = outsentences[n]\n", + " outsentence[0] = outsentence[0].title()\n", + " out += ' '.join(outsentence) + punctuations[n] + '\\n'\n", + " \n", + " \n", + " OutTextFeld.value = out\n", + " TextFelddouble.value = TextFeld.value\n", + " display(TextFelddouble)\n", + " \n", + " return \n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "3ca86c6e7e39437eafa36439e3337b42", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "interactive(children=(Button(description='Übersetzen in Leichte Sprache', style=ButtonStyle()), Output()), _do…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "#from IPython.display import Image\n", + "#i = Image(filename='Babelfish.png')\n", + "\n", + "#i.width = '60%'\n", + "#display(i)\n", + "\n", + "#print(widgets.interact_manual.opts)\n", + "\n", + "widgets.interact_manual.opts['manual_name']= 'Übersetzen in Leichte Sprache'\n", + "ola = widgets.interact_manual(function)\n", + "ola.widget.children[0].style.button_color = 'lightgreen'\n", + "ola.widget.children[0].layout.height = '60px'\n", + "ola.widget.children[0].layout.width = '99%'\n", + "\n", + "#widgets.GridBox([ola], layout=widgets.Layout(grid_template_columns=\"repeat(2, 300px)\"))" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "0d6f03c93f0147cd9f33d2a053672b0c", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Textarea(value='', layout=Layout(height='180px', width='99%'), placeholder='Hier kommt der übersetzte Text her…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "OutTextFeld = ipywidgets.Textarea(placeholder=out, disabled=False)\n", + "OutTextFeld.layout.height = '180px'\n", + "OutTextFeld.layout.width = '99%'\n", + "OutTextFeld.add_class(\"thetext\")\n", + "display(OutTextFeld)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [], + "source": [ + "beschreibung = 'Textfeld für die verbesserte Übersetzung. Satzzeichen bitte nicht vergessen! \\nFalls ein neuer Eintrag ins Fremdwörterbuch vorgenommen werden soll, schreibe einfach unter die Verbesserungen einen Eintrag der Form: [\\'Abfall\\', \\'Abfall sind Sachen die wir nicht mehr brauchen\\'] \\nFalls ein neuer Eintrag in die Mediopunkte-Datenbank vorgenommen werden soll, bitte schreibe unter die Verbesserungen einen Eintrag der Form: [\\'Mediopunkt\\', \\'Medio·punkt\\']' \n", + "VerbeTextFeld = ipywidgets.Textarea(placeholder=beschreibung, disabled=False)\n", + "VerbeTextFeld.layout.height = '180px'\n", + "VerbeTextFeld.layout.width = '99%'\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "\n", + "def Absendefunction():\n", + " \n", + " \n", + "\n", + " \n", + " #print(VerbeTextFeld.value)\n", + " #print(TextFeld.value)\n", + " #print(OutTextFeld.value)\n", + " \n", + " try:\n", + "\n", + " insentences, punctuations = oi.CellInputText2SplitsentencesWithspacy(VerbeTextFeld.value)\n", + " insentences1, punctuations1 = oi.CellInputText2SplitsentencesWithspacy(TextFeld.value)\n", + " insentences2, punctuations2 = oi.CellInputText2SplitsentencesWithspacy(OutTextFeld.value)\n", + "\n", + " #print(insentences2)\n", + "\n", + " #print(insentences, punctuations)\n", + " indexDerVerbesserungen = 0\n", + " number = 0\n", + " with open('Verbesserungen/indexDerVerbesserungen.txt', 'r') as dok:\n", + " for number in dok:\n", + " number = int(number)\n", + " if number >= 0:\n", + " indexDerVerbesserungen = number\n", + " number += 1\n", + "\n", + " with open('Verbesserungen/indexDerVerbesserungen.txt', 'w') as dokk:\n", + " dokk.write(str(number))\n", + "\n", + "\n", + " with open('Verbesserungen/Verbesserungen' + str(number) + '.txt','w+') as doc:\n", + " for n in range(len(insentences)):\n", + " npunct = punctuations[n]\n", + " writeline = insentences[n]+ [npunct]\n", + "\n", + " writestring = ' '.join(writeline)\n", + "\n", + " doc.write(writestring + '\\n')\n", + "\n", + " with open('Verbesserungen/Input' + str(number) + '.txt','w+') as docc:\n", + " for n in range(len(insentences1)):\n", + " npunct = punctuations1[n]\n", + " writeline = insentences1[n]+ [npunct]\n", + "\n", + " writestring = ' '.join(writeline)\n", + "\n", + " docc.write(writestring + '\\n')\n", + " with open('Verbesserungen/Output' + str(number) + '.txt','w+') as dock:\n", + " #print(insentences2)\n", + " for n in range(len(insentences2)):\n", + " #print(len(insentences2))\n", + "\n", + " #print(punctuations2)\n", + " npunct = punctuations2[n]\n", + " writeline = insentences2[n]+ [npunct]\n", + "\n", + " writestring = ' '.join(writeline)\n", + "\n", + " dock.write(writestring + '\\n')\n", + "\n", + " VerbeTextFeld.value = ''\n", + " OutTextFeld.value = ''\n", + " VerbeTextFeld.placeholder = beschreibung\n", + " OutTextFeld.placeholder = 'Hier kommt der übersetzte Text raus.'\n", + " except:\n", + " VerbeTextFeld.placeholder = 'Es gab einen Fehler. Eventuell ist die Zeichensetzung nicht ok. \\n \\n' + beschreibung\n", + " \n", + " \n", + " return \n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "1713cde35a884104b20056d5694d168a", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Textarea(value='', layout=Layout(height='180px', width='99%'), placeholder=\"Textfeld für die verbesserte Übers…" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "d4100a2d84d34630acf974f78d316abc", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "interactive(children=(Button(description='Absenden', style=ButtonStyle()), Output()), _dom_classes=('widget-in…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "VerbeTextFeld.add_class(\"thetext3\")\n", + "display(VerbeTextFeld)\n", + "display(HTML('
'))\n", + "widgets.interact_manual.opts['manual_name']= 'Absenden'\n", + "AbsendenUndSchreiben = widgets.interact_manual(Absendefunction)\n", + "AbsendenUndSchreiben.widget.children[0].style.button_color = 'lightblue'\n", + "AbsendenUndSchreiben.widget.children[0].layout.height = '60px'\n", + "AbsendenUndSchreiben.widget.children[0].layout.width = '99%'\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%html\n", + "" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%html\n", + "" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "data": { + "text/html": [ + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%html\n", + "" + ] + } + ], + "metadata": { + "celltoolbar": "Raw Cell Format", + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.5.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/Prototyp/.ipynb_checkpoints/.Prototype-14-checkpoint.ipynb b/Prototyp/.ipynb_checkpoints/.Prototype-14-checkpoint.ipynb new file mode 100644 index 00000000..50a76c09 --- /dev/null +++ b/Prototyp/.ipynb_checkpoints/.Prototype-14-checkpoint.ipynb @@ -0,0 +1,2313 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "#from oi import *\n", + "\n", + "#oi = oi()\n", + "\n", + "#import ipyvuetify as v\n", + "\n", + "#state = False\n", + "#oi.toggle_code(state)\n", + "\n", + "#button = widgets.ToggleButton(state, description = button_descriptions[state])\n", + "\n", + "\n", + "#button.observe(oi.button_action, \"value\")\n", + "\n", + "#button.layout.height = '50px'\n", + "#button.layout.width = '100%'\n", + "#button.add_class(\"thobutton\")\n", + "\n", + "#display(button)\n", + "#button.button_style = 'danger'\n" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "\n", + "

Ein Klick auf das Logo - und es geht zum Code

\n", + "\n", + "\n", + " \n", + "\n", + " \n", + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%html\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "\n", + "

Ein Klick auf das Logo - und es geht zum Code

\n", + "\n", + "\n", + " \n", + "\n", + " \n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "#%%html\n", + "#\n", + "#\n", + "#\n", + "#\n", + "#\n", + "#

Ein Klick auf das Logo - und es geht zum Code

\n", + "#" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [], + "source": [ + "#%%html\n", + "#" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "#from ipywidgets import widgets\n", + "#button = widgets.Button(description='Click me')\n", + "#display(button)\n", + "\n", + "#def on_button_clicked(b):\n", + "# print('button clicked')\n", + "\n", + "#button.on_click(on_button_clicked)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "\n", + "# importing the libraries\n", + "#print('importing libraries')\n", + "#from SolveShorts import *\n", + "#import SentSeg\n", + "#from SayYes import *\n", + "#from Passiv2Aktiv import *\n", + "#from GenitivSolve import *\n", + "#from ConjunctSolve import *\n", + "#from FremdWB import *\n", + "#from Medio import *\n", + "#from oi import *\n", + "#print('done')\n", + "\n", + "\n", + "# Initializing the libraries\n", + "#print('initializing the libraries')\n", + "#print('1')\n", + "#solSh = SolveShorts('hkldbShorts.hkl', 'hkldbShorts_All.hkl')\n", + "#print('2')\n", + "#sent_seg = SentSeg.SentSeg('de')\n", + "#print('3')\n", + "#sy = SayYes(None, None)\n", + "#print('4')\n", + "#p2a = Passiv2Aktiv(None, None, None)\n", + "#print('5')\n", + "#gs = GenitivSolve()\n", + "#print('6')\n", + "#cs = ConjunctSolve(None,None)\n", + "#print('7')\n", + "#oi = oi()\n", + "#print('8')\n", + "#fwb = FremdWB(None,None)\n", + "#print('9')\n", + "#medi = Medio(None,None)\n", + "#print('done')\n", + "\n", + "\n", + "# loading the databases and models\n", + "#print('loading SolveShorts Databases')\n", + "#solSh.load_DB_into_FASTsearch()\n", + "#print('loading SentSeg Databases')\n", + "#sent_seg.LoadSentGlueSGDandGSUtils()\n", + "#print('loading SayYes Databases')\n", + "#sy.load_DB_into_FASTsearch()\n", + "#print('loading passiv2active Databases')\n", + "#p2a.load_DB_into_FASTsearch()\n", + "#print('loading conjunctivesolve Databases')\n", + "#cs.load_DB_into_FASTsearch()\n", + "#print('loading the fremdwb Databases')\n", + "#fwb.load_DB_into_FASTsearch()\n", + "#print('loading the mediodot Databases')\n", + "#medi.load_DB_into_FASTsearch()\n", + "\n", + "#print('done')\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "106e70dd208f4de29ae10874823d30a8", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Textarea(value='', layout=Layout(height='180px', width='99%'), placeholder='Hier den Text eingeben, darunter k…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "\n", + "#print('done')\n", + "\n", + "#print('loading passiv2active Databases')\n", + "#from Passiv2Aktiv import *\n", + "#p2a = Passiv2Aktiv(None, None, None)\n", + "#p2a.load_DB_into_FASTsearch()\n", + "#print('done')\n", + "#print('loading genitiv solve')\n", + "#from GenitivSolve import *\n", + "#gs = GenitivSolve()\n", + "\n", + "#from FremdWB import *\n", + "#fwb = FremdWB(None,None)\n", + "#fwb.load_DB_into_FASTsearch()\n", + "\n", + "#from SolveShorts import *\n", + "#print('loading SolveShorts Databases')\n", + "#solSh.load_DB_into_FASTsearch()\n", + "\n", + "#from SayYes import *\n", + "#sy = SayYes(None, None)\n", + "#print('loading SayYes Databases')\n", + "#sy.load_DB_into_FASTsearch()\n", + "\n", + "#import SentSeg\n", + "#sent_seg = SentSeg.SentSeg('de')\n", + "#print('loading SentSeg Databases')\n", + "#sent_seg.LoadSentGlueSGDandGSUtils()\n", + "#print('loading conjunctsolve')\n", + "#from ConjunctSolve import *\n", + "#cs = ConjunctSolve(None,None)\n", + "#print('done')\n", + "#print('loading conjunctivesolve Databases')\n", + "#cs.load_DB_into_FASTsearch()\n", + "#print('done')\n", + "#from oi import *\n", + "#oi = oi()\n", + "\n", + "#print('loading session..')\n", + "\n", + "#print('done')\n", + "import dill\n", + "dill.load_session('voilastate.db')\n", + "\n", + "#from SolveShorts import *\n", + "#print('loading SolveShorts Databases')\n", + "#solSh.load_DB_into_FASTsearch()\n", + "\n", + "#import SentSeg\n", + "#sent_seg = SentSeg.SentSeg('de')\n", + "#print('loading SentSeg Databases')\n", + "#sent_seg.LoadSentGlueSGDandGSUtils()\n", + "\n", + "#from FremdWB import *\n", + "#fwb = FremdWB(None,None)\n", + "#fwb.load_DB_into_FASTsearch()\n", + "\n", + "#from Medio import *\n", + "#medi = Medio(None,None)\n", + "#medi.load_DB_into_FASTsearch()\n", + "\n", + "\n", + "#import dill\n", + "#print('dumping the session')\n", + "#dill.dump_session('voilastate.db')\n", + "#print('done')\n", + "\n", + "#from oi import *\n", + "#oi = oi()\n", + "\n", + "import ipywidgets as widgets\n", + "\n", + "TextFeld = widgets.Textarea(placeholder='Hier den Text eingeben, darunter können die Module aktiviert(grün) oder deaktiviert(pink) werden', disabled=False)\n", + "#print(TextFeld.layout.height)\n", + "TextFeld.layout.height = '180px'\n", + "TextFeld.layout.width = '99%'\n", + "\n", + "TextFelddouble = widgets.Textarea(placeholder='Hier den Text eingeben, darunter können die Module aktiviert(grün) oder deaktiviert(pink) werden', disabled=False)\n", + "#print(TextFeld.layout.height)\n", + "TextFelddouble.layout.height = '180px'\n", + "TextFelddouble.layout.width = '99%'\n", + "TextFelddouble.disabled=True\n", + "\n", + "display(TextFeld)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "\n", + "dawidth = '100%'\n", + "daheight = '100%'\n", + "KonjunktiveErsetzen = widgets.ToggleButton(\n", + " value=False,\n", + " description='Konjunktive ersetzen',\n", + " disabled=False,\n", + ")\n", + "KonjunktiveErsetzen.layout.width = dawidth\n", + "KonjunktiveErsetzen.layout.height = '80%'\n", + "\n", + "GenitiveErsetzen = widgets.ToggleButton(\n", + " value=True,\n", + " description='Genitiv ersetzen',\n", + " disabled=False\n", + ")\n", + "GenitiveErsetzen.layout.width = '60%'\n", + "GenitiveErsetzen.layout.height = daheight\n", + "\n", + "PassivErsetzen = widgets.ToggleButton(\n", + " value=True,\n", + " description='Passiv ersetzen',\n", + " disabled=False\n", + ")\n", + "PassivErsetzen.layout.width = '70%'\n", + "PassivErsetzen.layout.height = '90%'\n", + "\n", + "SayYes = widgets.ToggleButton(\n", + " value=True,\n", + " description='Verneinungen ersetzen',\n", + " disabled=False\n", + ")\n", + "SayYes.layout.width = '80%'\n", + "SayYes.layout.height = '80%'\n", + "SentSeg = widgets.ToggleButton(\n", + " value=True,\n", + " description='Eine Aussage pro Satz',\n", + " disabled=False\n", + ")\n", + "SentSeg.layout.width = '60%'\n", + "SentSeg.layout.height = daheight\n", + "SolveShorts = widgets.ToggleButton(\n", + " value=False,\n", + " description='Abkürzungen erklären',\n", + " disabled=False\n", + ")\n", + "SolveShorts.layout.width = '80%'\n", + "SolveShorts.layout.height = '90%'\n", + "FremdWB = widgets.ToggleButton(\n", + " value=True,\n", + " description='FremdWoerterbuch',\n", + " disabled=False\n", + ")\n", + "FremdWB.layout.width = '90%'\n", + "FremdWB.layout.height = '90%'\n", + "\n", + "Appendixes = widgets.ToggleButton(\n", + " value=True,\n", + " description='Charakterisierung pro Satz',\n", + " disabled=False\n", + ")\n", + "Appendixes.layout.width = '120%'\n", + "Appendixes.layout.height = '80%'\n", + "\n", + "Medio = widgets.ToggleButton(\n", + " value=True,\n", + " description='Mediopunkte',\n", + " disabled=False\n", + ")\n", + "Medio.layout.width = '50%'\n", + "Medio.layout.height = '90%'\n", + "\n", + "#items1 = [SentSeg, SolveShorts]\n", + "#items2 = [SayYes, PassivErsetzen]\n", + "#items3 = [GenitiveErsetzen, KonjunktiveErsetzen]\n", + "#items = [Textfeld, SentSeg, SolveShorts, SayYes, PassivErsetzen, GenitiveErsetzen, KonjunktiveErsetzen]\n", + "#display(SentSeg, SolveShorts, SayYes, PassivErsetzen, GenitiveErsetzen, KonjunktiveErsetzen)\n", + "#widgets.GridBox(items, layout=widgets.Layout(grid_template_columns=\"repeat(3, 100px)\"))\n", + "\n", + "\n", + "\n", + "#widgets.HBox(items1)\n", + "#widgets.HBox(items2)\n", + "#widgets.HBox(items3)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "import ipywidgets\n", + "out = 'Hier kommt der übersetzte Text heraus.'\n", + "\n", + "TextFeld.add_class(\"thotext\")\n", + "TextFelddouble.add_class(\"thotext\")\n", + "#display(OutTextFeld)\n", + "items = [SentSeg, SolveShorts, SayYes, PassivErsetzen, GenitiveErsetzen, KonjunktiveErsetzen, FremdWB, Appendixes, Medio] \n", + "#display(SentSeg, SolveShorts, SayYes, PassivErsetzen, GenitiveErsetzen, KonjunktiveErsetzen)\n", + "Grid = widgets.GridBox(items, layout=widgets.Layout(justify_items=\"center\", grid_template_columns=\"repeat(3, 30%)\", grid_gap=\"4.5%\", height=\"320px\"))\n" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "c08292c98ddf447ca1c19117241980b8", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "GridBox(children=(ToggleButton(value=True, description='Eine Aussage pro Satz', layout=Layout(height='100%', w…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "\n", + "display(HTML('
'))\n", + "display(Grid)\n", + "\n", + "\n", + "\n", + "\n", + "def function():\n", + " out = 'Wählen Sie ein Kästchen aus!'\n", + " try:\n", + " insentences, punctuations = oi.CellInputText2SplitsentencesWithspacy(TextFeld.value)\n", + " except:\n", + " OutTextFeld.placeholder = 'Bitte auf die Zeichensetzung achten! '\n", + " return\n", + " \n", + " check = 0\n", + " #print('insentences',insentences)\n", + " #print(punctuations)\n", + " if SayYes.value == True:\n", + " \n", + " print('ersetze Gegenteile..')\n", + " outsentences = sy.replaceOpposites(insentences)\n", + " check = 1\n", + " \n", + " \n", + " \n", + " \n", + " if Appendixes.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('generiere ist-Aussagen..')\n", + " outsentences, punctuations = sent_seg.putAppendixesIntoOwnSentences(insentences, punctuations)\n", + " \n", + " if SentSeg.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('forme zu einem Satz pro Aussage um..')\n", + " sentsegformattedsentences = []\n", + " for sentence in insentences:\n", + " \n", + " sentsegformattedsentences.append([sentence])\n", + " \n", + " #print(sentsegformattedsentences)\n", + " sentences = sent_seg.CommaSentenceOrNot(sentsegformattedsentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetUtteranceNumber(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetQuestionOrNot(sentences)\n", + " #print(sentences)\n", + " sentences, punctuations = sent_seg.AndOrSolver(sentences, punctuations)\n", + " #print(len(punctuations))\n", + " #print('sentences after AndOrSolver', sentences, punctuations)\n", + " sentences = sent_seg.CommaSentenceOrNot(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetUtteranceNumber(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetQuestionOrNot(sentences)\n", + " #print(sentences)\n", + " sentences, punctuations = sent_seg.SplitSentencesIntoHauptNebenTuple(sentences, punctuations)\n", + " #print(len(punctuations))\n", + " #print('sentences after split haupt neben', sentences)\n", + " sentences = sent_seg.CommaSentenceOrNot(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetUtteranceNumber(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetQuestionOrNot(sentences)\n", + " #print(sentences)\n", + " outsentences, punctuations = sent_seg.SplitCommatas(sentences, punctuations)\n", + " #print(len(punctuations))\n", + " #print('out',outsentences)\n", + " #print('out', punctuations)\n", + " check = 1\n", + " \n", + " \n", + " if SolveShorts.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('erklaere Abkuerzungen..')\n", + " outsentences = solSh.ExplainShortsInSentencesWithBrackets(insentences)\n", + " check = 1\n", + " #print(len(punctuations)) \n", + " #print('sentences after solveshorts', outsentences)\n", + " \n", + " if PassivErsetzen.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('ersetze Passiv Formen..')\n", + " outsentences = p2a.replacePassivForms(insentences)\n", + " check = 1\n", + " #print(len(punctuations))\n", + " #print('sentences after p2a', outsentences)\n", + " \n", + " if GenitiveErsetzen.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " #print('replacing genitiv forms with dativ..')\n", + " outsentences = gs.ReplaceGenitivWithDativ(insentences)\n", + " check = 1\n", + " #print(len(punctuations))\n", + " #print('sentences after gs', outsentences)\n", + " \n", + " if check == 1:\n", + " newinsentences = []\n", + " for sentence in outsentences: \n", + " newinsentences.append([word.replace('ö','oe').replace('ü','ue').replace('ä','ae').replace('ß','ss') for word in sentence])\n", + " \n", + " outsentences =newinsentences\n", + " if check != 1:\n", + " newinsentences = []\n", + " for sentence in insentences: \n", + " newinsentences.append([word.replace('ö','oe').replace('ü','ue').replace('ä','ae').replace('ß','ss') for word in sentence])\n", + " \n", + " insentences =newinsentences\n", + " #print()\n", + " if KonjunktiveErsetzen.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('ersetze Konjunktive..')\n", + " \n", + " outsentences = cs.replaceConjunctives(insentences)\n", + " #print('outsentences')\n", + " check = 1\n", + " \n", + " #print('sentences after cs', outsentences)\n", + " print(len(punctuations))\n", + " \n", + " if FremdWB.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('Suche Woerterbucheintraege..')\n", + " \n", + " outsentences, punctuations = fwb.fremdEintragAppend(insentences, punctuations)\n", + " #print('outsentences')\n", + " check = 1\n", + " \n", + " if Medio.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('Ersetze lange Woerter mit Mediopunkten..')\n", + " \n", + " outsentences, punctuations = medi.Medioreplace(insentences, punctuations)\n", + " #print('outsentences')\n", + " check = 1\n", + " #print('sentences after medios', outsentences)\n", + " \n", + " \n", + " #print('sentences after fwb', outsentences)\n", + " \n", + " print(len(punctuations))\n", + " \n", + " if check == 1:\n", + " out = ''\n", + " #print('just before looking if the lenght is the same')\n", + " #print(len(outsentences), len(punctuations))\n", + " if len(outsentences) == len(punctuations):\n", + " #print('the length is the same')\n", + " for n in range(len(outsentences)):\n", + " outsentence = outsentences[n]\n", + " outsentence[0] = outsentence[0].title()\n", + " out += ' '.join(outsentence) + punctuations[n] + '\\n'\n", + " \n", + " \n", + " OutTextFeld.value = out\n", + " TextFelddouble.value = TextFeld.value\n", + " display(TextFelddouble)\n", + " \n", + " return \n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "3ca86c6e7e39437eafa36439e3337b42", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "interactive(children=(Button(description='Übersetzen in Leichte Sprache', style=ButtonStyle()), Output()), _do…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "#from IPython.display import Image\n", + "#i = Image(filename='Babelfish.png')\n", + "\n", + "#i.width = '60%'\n", + "#display(i)\n", + "\n", + "#print(widgets.interact_manual.opts)\n", + "\n", + "widgets.interact_manual.opts['manual_name']= 'Übersetzen in Leichte Sprache'\n", + "ola = widgets.interact_manual(function)\n", + "ola.widget.children[0].style.button_color = 'lightgreen'\n", + "ola.widget.children[0].layout.height = '60px'\n", + "ola.widget.children[0].layout.width = '99%'\n", + "\n", + "#widgets.GridBox([ola], layout=widgets.Layout(grid_template_columns=\"repeat(2, 300px)\"))" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "0d6f03c93f0147cd9f33d2a053672b0c", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Textarea(value='', layout=Layout(height='180px', width='99%'), placeholder='Hier kommt der übersetzte Text her…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "OutTextFeld = ipywidgets.Textarea(placeholder=out, disabled=False)\n", + "OutTextFeld.layout.height = '180px'\n", + "OutTextFeld.layout.width = '99%'\n", + "OutTextFeld.add_class(\"thetext\")\n", + "display(OutTextFeld)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [], + "source": [ + "beschreibung = 'Textfeld für die verbesserte Übersetzung. Satzzeichen bitte nicht vergessen! \\nFalls ein neuer Eintrag ins Fremdwörterbuch vorgenommen werden soll, schreibe einfach unter die Verbesserungen einen Eintrag der Form: [\\'Abfall\\', \\'Abfall sind Sachen die wir nicht mehr brauchen\\'] \\nFalls ein neuer Eintrag in die Mediopunkte-Datenbank vorgenommen werden soll, bitte schreibe unter die Verbesserungen einen Eintrag der Form: [\\'Mediopunkt\\', \\'Medio·punkt\\']' \n", + "VerbeTextFeld = ipywidgets.Textarea(placeholder=beschreibung, disabled=False)\n", + "VerbeTextFeld.layout.height = '180px'\n", + "VerbeTextFeld.layout.width = '99%'\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "\n", + "def Absendefunction():\n", + " \n", + " \n", + "\n", + " \n", + " #print(VerbeTextFeld.value)\n", + " #print(TextFeld.value)\n", + " #print(OutTextFeld.value)\n", + " \n", + " try:\n", + "\n", + " insentences, punctuations = oi.CellInputText2SplitsentencesWithspacy(VerbeTextFeld.value)\n", + " insentences1, punctuations1 = oi.CellInputText2SplitsentencesWithspacy(TextFeld.value)\n", + " insentences2, punctuations2 = oi.CellInputText2SplitsentencesWithspacy(OutTextFeld.value)\n", + "\n", + " #print(insentences2)\n", + "\n", + " #print(insentences, punctuations)\n", + " indexDerVerbesserungen = 0\n", + " number = 0\n", + " with open('Verbesserungen/indexDerVerbesserungen.txt', 'r') as dok:\n", + " for number in dok:\n", + " number = int(number)\n", + " if number >= 0:\n", + " indexDerVerbesserungen = number\n", + " number += 1\n", + "\n", + " with open('Verbesserungen/indexDerVerbesserungen.txt', 'w') as dokk:\n", + " dokk.write(str(number))\n", + "\n", + "\n", + " with open('Verbesserungen/Verbesserungen' + str(number) + '.txt','w+') as doc:\n", + " for n in range(len(insentences)):\n", + " npunct = punctuations[n]\n", + " writeline = insentences[n]+ [npunct]\n", + "\n", + " writestring = ' '.join(writeline)\n", + "\n", + " doc.write(writestring + '\\n')\n", + "\n", + " with open('Verbesserungen/Input' + str(number) + '.txt','w+') as docc:\n", + " for n in range(len(insentences1)):\n", + " npunct = punctuations1[n]\n", + " writeline = insentences1[n]+ [npunct]\n", + "\n", + " writestring = ' '.join(writeline)\n", + "\n", + " docc.write(writestring + '\\n')\n", + " with open('Verbesserungen/Output' + str(number) + '.txt','w+') as dock:\n", + " #print(insentences2)\n", + " for n in range(len(insentences2)):\n", + " #print(len(insentences2))\n", + "\n", + " #print(punctuations2)\n", + " npunct = punctuations2[n]\n", + " writeline = insentences2[n]+ [npunct]\n", + "\n", + " writestring = ' '.join(writeline)\n", + "\n", + " dock.write(writestring + '\\n')\n", + "\n", + " VerbeTextFeld.value = ''\n", + " OutTextFeld.value = ''\n", + " VerbeTextFeld.placeholder = beschreibung\n", + " OutTextFeld.placeholder = 'Hier kommt der übersetzte Text raus.'\n", + " except:\n", + " VerbeTextFeld.placeholder = 'Es gab einen Fehler. Eventuell ist die Zeichensetzung nicht ok. \\n \\n' + beschreibung\n", + " \n", + " \n", + " return \n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "1713cde35a884104b20056d5694d168a", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Textarea(value='', layout=Layout(height='180px', width='99%'), placeholder=\"Textfeld für die verbesserte Übers…" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "d4100a2d84d34630acf974f78d316abc", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "interactive(children=(Button(description='Absenden', style=ButtonStyle()), Output()), _dom_classes=('widget-in…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "VerbeTextFeld.add_class(\"thetext3\")\n", + "display(VerbeTextFeld)\n", + "display(HTML('
'))\n", + "widgets.interact_manual.opts['manual_name']= 'Absenden'\n", + "AbsendenUndSchreiben = widgets.interact_manual(Absendefunction)\n", + "AbsendenUndSchreiben.widget.children[0].style.button_color = 'lightblue'\n", + "AbsendenUndSchreiben.widget.children[0].layout.height = '60px'\n", + "AbsendenUndSchreiben.widget.children[0].layout.width = '99%'\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%html\n", + "" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%html\n", + "" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "data": { + "text/html": [ + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%html\n", + "" + ] + } + ], + "metadata": { + "celltoolbar": "Raw Cell Format", + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.5.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/Prototyp/.ipynb_checkpoints/.Prototype-2-checkpoint.ipynb b/Prototyp/.ipynb_checkpoints/.Prototype-2-checkpoint.ipynb new file mode 100644 index 00000000..37cbca29 --- /dev/null +++ b/Prototyp/.ipynb_checkpoints/.Prototype-2-checkpoint.ipynb @@ -0,0 +1,2373 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "#from oi import *\n", + "\n", + "#oi = oi()\n", + "\n", + "#import ipyvuetify as v\n", + "\n", + "#state = False\n", + "#oi.toggle_code(state)\n", + "\n", + "#button = widgets.ToggleButton(state, description = button_descriptions[state])\n", + "\n", + "\n", + "#button.observe(oi.button_action, \"value\")\n", + "\n", + "#button.layout.height = '50px'\n", + "#button.layout.width = '100%'\n", + "#button.add_class(\"thobutton\")\n", + "\n", + "#display(button)\n", + "#button.button_style = 'danger'\n" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "\n", + "

Ein Klick auf das Logo - und es geht zum Code

\n", + "\n", + "\n", + " \n", + "\n", + " \n", + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%html\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "\n", + "

Ein Klick auf das Logo - und es geht zum Code

\n", + "\n", + "\n", + " \n", + "\n", + " \n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "#%%html\n", + "#\n", + "#\n", + "#\n", + "#\n", + "#\n", + "#

Ein Klick auf das Logo - und es geht zum Code

\n", + "#" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%html\n", + "\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "#%%html\n", + "#" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "#from ipywidgets import widgets\n", + "#button = widgets.Button(description='Click me')\n", + "#display(button)\n", + "\n", + "#def on_button_clicked(b):\n", + "# print('button clicked')\n", + "\n", + "#button.on_click(on_button_clicked)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "\n", + "# importing the libraries\n", + "#print('importing libraries')\n", + "#from SolveShorts import *\n", + "#import SentSeg\n", + "#from SayYes import *\n", + "#from Passiv2Aktiv import *\n", + "#from GenitivSolve import *\n", + "#from ConjunctSolve import *\n", + "#from FremdWB import *\n", + "#from Medio import *\n", + "#from oi import *\n", + "#print('done')\n", + "\n", + "\n", + "# Initializing the libraries\n", + "#print('initializing the libraries')\n", + "#print('1')\n", + "#solSh = SolveShorts('hkldbShorts.hkl', 'hkldbShorts_All.hkl')\n", + "#print('2')\n", + "#sent_seg = SentSeg.SentSeg('de')\n", + "#print('3')\n", + "#sy = SayYes(None, None)\n", + "#print('4')\n", + "#p2a = Passiv2Aktiv(None, None, None)\n", + "#print('5')\n", + "#gs = GenitivSolve()\n", + "#print('6')\n", + "#cs = ConjunctSolve(None,None)\n", + "#print('7')\n", + "#oi = oi()\n", + "#print('8')\n", + "#fwb = FremdWB(None,None)\n", + "#print('9')\n", + "#medi = Medio(None,None)\n", + "#print('done')\n", + "\n", + "\n", + "# loading the databases and models\n", + "#print('loading SolveShorts Databases')\n", + "#solSh.load_DB_into_FASTsearch()\n", + "#print('loading SentSeg Databases')\n", + "#sent_seg.LoadSentGlueSGDandGSUtils()\n", + "#print('loading SayYes Databases')\n", + "#sy.load_DB_into_FASTsearch()\n", + "#print('loading passiv2active Databases')\n", + "#p2a.load_DB_into_FASTsearch()\n", + "#print('loading conjunctivesolve Databases')\n", + "#cs.load_DB_into_FASTsearch()\n", + "#print('loading the fremdwb Databases')\n", + "#fwb.load_DB_into_FASTsearch()\n", + "#print('loading the mediodot Databases')\n", + "#medi.load_DB_into_FASTsearch()\n", + "\n", + "#print('done')\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "6a24b25b44a846aea1b396e744d222e4", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Textarea(value='', layout=Layout(height='180px', width='99%'), placeholder='Hier den Text eingeben, darunter k…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "\n", + "#print('done')\n", + "\n", + "#print('loading passiv2active Databases')\n", + "#from Passiv2Aktiv import *\n", + "#p2a = Passiv2Aktiv(None, None, None)\n", + "#p2a.load_DB_into_FASTsearch()\n", + "#print('done')\n", + "#print('loading genitiv solve')\n", + "#from GenitivSolve import *\n", + "#gs = GenitivSolve()\n", + "\n", + "#from FremdWB import *\n", + "#fwb = FremdWB(None,None)\n", + "#fwb.load_DB_into_FASTsearch()\n", + "\n", + "#from SolveShorts import *\n", + "#print('loading SolveShorts Databases')\n", + "#solSh.load_DB_into_FASTsearch()\n", + "\n", + "#from SayYes import *\n", + "#sy = SayYes(None, None)\n", + "#print('loading SayYes Databases')\n", + "#sy.load_DB_into_FASTsearch()\n", + "\n", + "#import SentSeg\n", + "#sent_seg = SentSeg.SentSeg('de')\n", + "#print('loading SentSeg Databases')\n", + "#sent_seg.LoadSentGlueSGDandGSUtils()\n", + "#print('loading conjunctsolve')\n", + "#from ConjunctSolve import *\n", + "#cs = ConjunctSolve(None,None)\n", + "#print('done')\n", + "#print('loading conjunctivesolve Databases')\n", + "#cs.load_DB_into_FASTsearch()\n", + "#print('done')\n", + "#from oi import *\n", + "#oi = oi()\n", + "\n", + "#print('loading session..')\n", + "\n", + "#print('done')\n", + "import dill\n", + "dill.load_session('voilastate.db')\n", + "\n", + "#from SolveShorts import *\n", + "#print('loading SolveShorts Databases')\n", + "#solSh.load_DB_into_FASTsearch()\n", + "\n", + "#import SentSeg\n", + "#sent_seg = SentSeg.SentSeg('de')\n", + "#print('loading SentSeg Databases')\n", + "#sent_seg.LoadSentGlueSGDandGSUtils()\n", + "\n", + "#from FremdWB import *\n", + "#fwb = FremdWB(None,None)\n", + "#fwb.load_DB_into_FASTsearch()\n", + "\n", + "#from Medio import *\n", + "#medi = Medio(None,None)\n", + "#medi.load_DB_into_FASTsearch()\n", + "\n", + "\n", + "#import dill\n", + "#print('dumping the session')\n", + "#dill.dump_session('voilastate.db')\n", + "#print('done')\n", + "\n", + "#from oi import *\n", + "#oi = oi()\n", + "\n", + "import ipywidgets as widgets\n", + "\n", + "TextFeld = widgets.Textarea(placeholder='Hier den Text eingeben, darunter können die Module aktiviert(grün) oder deaktiviert(pink) werden', disabled=False)\n", + "#print(TextFeld.layout.height)\n", + "TextFeld.layout.height = '180px'\n", + "TextFeld.layout.width = '99%'\n", + "\n", + "TextFelddouble = widgets.Textarea(placeholder='Hier den Text eingeben, darunter können die Module aktiviert(grün) oder deaktiviert(pink) werden', disabled=False)\n", + "#print(TextFeld.layout.height)\n", + "TextFelddouble.layout.height = '180px'\n", + "TextFelddouble.layout.width = '99%'\n", + "TextFelddouble.disabled=True\n", + "\n", + "display(TextFeld)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "\n", + "dawidth = '100%'\n", + "daheight = '100%'\n", + "KonjunktiveErsetzen = widgets.ToggleButton(\n", + " value=False,\n", + " description='Konjunktive ersetzen',\n", + " disabled=False,\n", + ")\n", + "KonjunktiveErsetzen.layout.width = dawidth\n", + "KonjunktiveErsetzen.layout.height = '80%'\n", + "\n", + "GenitiveErsetzen = widgets.ToggleButton(\n", + " value=True,\n", + " description='Genitiv ersetzen',\n", + " disabled=False\n", + ")\n", + "GenitiveErsetzen.layout.width = '60%'\n", + "GenitiveErsetzen.layout.height = daheight\n", + "\n", + "PassivErsetzen = widgets.ToggleButton(\n", + " value=True,\n", + " description='Passiv ersetzen',\n", + " disabled=False\n", + ")\n", + "PassivErsetzen.layout.width = '70%'\n", + "PassivErsetzen.layout.height = '90%'\n", + "\n", + "SayYes = widgets.ToggleButton(\n", + " value=True,\n", + " description='Verneinungen ersetzen',\n", + " disabled=False\n", + ")\n", + "SayYes.layout.width = '80%'\n", + "SayYes.layout.height = '80%'\n", + "SentSeg = widgets.ToggleButton(\n", + " value=True,\n", + " description='Eine Aussage pro Satz',\n", + " disabled=False\n", + ")\n", + "SentSeg.layout.width = '60%'\n", + "SentSeg.layout.height = daheight\n", + "SolveShorts = widgets.ToggleButton(\n", + " value=False,\n", + " description='Abkürzungen erklären',\n", + " disabled=False\n", + ")\n", + "SolveShorts.layout.width = '80%'\n", + "SolveShorts.layout.height = '90%'\n", + "FremdWB = widgets.ToggleButton(\n", + " value=True,\n", + " description='FremdWoerterbuch',\n", + " disabled=False\n", + ")\n", + "FremdWB.layout.width = '90%'\n", + "FremdWB.layout.height = '90%'\n", + "\n", + "Appendixes = widgets.ToggleButton(\n", + " value=True,\n", + " description='Charakterisierung pro Satz',\n", + " disabled=False\n", + ")\n", + "Appendixes.layout.width = '120%'\n", + "Appendixes.layout.height = '80%'\n", + "\n", + "Medio = widgets.ToggleButton(\n", + " value=True,\n", + " description='Mediopunkte',\n", + " disabled=False\n", + ")\n", + "Medio.layout.width = '50%'\n", + "Medio.layout.height = '90%'\n", + "\n", + "#items1 = [SentSeg, SolveShorts]\n", + "#items2 = [SayYes, PassivErsetzen]\n", + "#items3 = [GenitiveErsetzen, KonjunktiveErsetzen]\n", + "#items = [Textfeld, SentSeg, SolveShorts, SayYes, PassivErsetzen, GenitiveErsetzen, KonjunktiveErsetzen]\n", + "#display(SentSeg, SolveShorts, SayYes, PassivErsetzen, GenitiveErsetzen, KonjunktiveErsetzen)\n", + "#widgets.GridBox(items, layout=widgets.Layout(grid_template_columns=\"repeat(3, 100px)\"))\n", + "\n", + "\n", + "\n", + "#widgets.HBox(items1)\n", + "#widgets.HBox(items2)\n", + "#widgets.HBox(items3)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "import ipywidgets\n", + "out = 'Hier kommt der übersetzte Text heraus.'\n", + "\n", + "TextFeld.add_class(\"thotext\")\n", + "TextFelddouble.add_class(\"thotext\")\n", + "#display(OutTextFeld)\n", + "items = [SentSeg, SolveShorts, SayYes, PassivErsetzen, GenitiveErsetzen, KonjunktiveErsetzen, FremdWB, Appendixes, Medio] \n", + "#display(SentSeg, SolveShorts, SayYes, PassivErsetzen, GenitiveErsetzen, KonjunktiveErsetzen)\n", + "Grid = widgets.GridBox(items, layout=widgets.Layout(justify_items=\"center\", grid_template_columns=\"repeat(3, 30%)\", grid_gap=\"4.5%\", height=\"320px\"))\n" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "2bfcacdb87c640bb93cde56d3dd5aeaf", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "GridBox(children=(ToggleButton(value=True, description='Eine Aussage pro Satz', layout=Layout(height='100%', w…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "\n", + "display(HTML('
'))\n", + "display(Grid)\n", + "\n", + "\n", + "\n", + "\n", + "def function():\n", + " out = 'Wählen Sie ein Kästchen aus!'\n", + " try:\n", + " insentences, punctuations = oi.CellInputText2SplitsentencesWithspacy(TextFeld.value)\n", + " except:\n", + " OutTextFeld.placeholder = 'Bitte auf die Zeichensetzung achten! '\n", + " return\n", + " \n", + " check = 0\n", + " #print('insentences',insentences)\n", + " #print(punctuations)\n", + " if SayYes.value == True:\n", + " \n", + " print('ersetze Gegenteile..')\n", + " outsentences = sy.replaceOpposites(insentences)\n", + " check = 1\n", + " \n", + " \n", + " \n", + " \n", + " if Appendixes.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('generiere ist-Aussagen..')\n", + " outsentences, punctuations = sent_seg.putAppendixesIntoOwnSentences(insentences, punctuations)\n", + " \n", + " if SentSeg.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('forme zu einem Satz pro Aussage um..')\n", + " sentsegformattedsentences = []\n", + " for sentence in insentences:\n", + " \n", + " sentsegformattedsentences.append([sentence])\n", + " \n", + " #print(sentsegformattedsentences)\n", + " sentences = sent_seg.CommaSentenceOrNot(sentsegformattedsentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetUtteranceNumber(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetQuestionOrNot(sentences)\n", + " #print(sentences)\n", + " sentences, punctuations = sent_seg.AndOrSolver(sentences, punctuations)\n", + " #print(len(punctuations))\n", + " #print('sentences after AndOrSolver', sentences, punctuations)\n", + " sentences = sent_seg.CommaSentenceOrNot(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetUtteranceNumber(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetQuestionOrNot(sentences)\n", + " #print(sentences)\n", + " sentences, punctuations = sent_seg.SplitSentencesIntoHauptNebenTuple(sentences, punctuations)\n", + " #print(len(punctuations))\n", + " #print('sentences after split haupt neben', sentences)\n", + " sentences = sent_seg.CommaSentenceOrNot(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetUtteranceNumber(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetQuestionOrNot(sentences)\n", + " #print(sentences)\n", + " outsentences, punctuations = sent_seg.SplitCommatas(sentences, punctuations)\n", + " #print(len(punctuations))\n", + " #print('out',outsentences)\n", + " #print('out', punctuations)\n", + " check = 1\n", + " \n", + " \n", + " if SolveShorts.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('erklaere Abkuerzungen..')\n", + " outsentences = solSh.ExplainShortsInSentencesWithBrackets(insentences)\n", + " check = 1\n", + " #print(len(punctuations)) \n", + " #print('sentences after solveshorts', outsentences)\n", + " \n", + " if PassivErsetzen.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('ersetze Passiv Formen..')\n", + " outsentences = p2a.replacePassivForms(insentences)\n", + " check = 1\n", + " #print(len(punctuations))\n", + " #print('sentences after p2a', outsentences)\n", + " \n", + " if GenitiveErsetzen.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " #print('replacing genitiv forms with dativ..')\n", + " outsentences = gs.ReplaceGenitivWithDativ(insentences)\n", + " check = 1\n", + " #print(len(punctuations))\n", + " #print('sentences after gs', outsentences)\n", + " \n", + " if check == 1:\n", + " newinsentences = []\n", + " for sentence in outsentences: \n", + " newinsentences.append([word.replace('ö','oe').replace('ü','ue').replace('ä','ae').replace('ß','ss') for word in sentence])\n", + " \n", + " outsentences =newinsentences\n", + " if check != 1:\n", + " newinsentences = []\n", + " for sentence in insentences: \n", + " newinsentences.append([word.replace('ö','oe').replace('ü','ue').replace('ä','ae').replace('ß','ss') for word in sentence])\n", + " \n", + " insentences =newinsentences\n", + " #print()\n", + " if KonjunktiveErsetzen.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('ersetze Konjunktive..')\n", + " \n", + " outsentences = cs.replaceConjunctives(insentences)\n", + " #print('outsentences')\n", + " check = 1\n", + " \n", + " #print('sentences after cs', outsentences)\n", + " print(len(punctuations))\n", + " \n", + " if FremdWB.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('Suche Woerterbucheintraege..')\n", + " \n", + " outsentences, punctuations = fwb.fremdEintragAppend(insentences, punctuations)\n", + " #print('outsentences')\n", + " check = 1\n", + " \n", + " if Medio.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('Ersetze lange Woerter mit Mediopunkten..')\n", + " \n", + " outsentences, punctuations = medi.Medioreplace(insentences, punctuations)\n", + " #print('outsentences')\n", + " check = 1\n", + " #print('sentences after medios', outsentences)\n", + " \n", + " \n", + " #print('sentences after fwb', outsentences)\n", + " \n", + " print(len(punctuations))\n", + " \n", + " if check == 1:\n", + " out = ''\n", + " #print('just before looking if the lenght is the same')\n", + " #print(len(outsentences), len(punctuations))\n", + " if len(outsentences) == len(punctuations):\n", + " #print('the length is the same')\n", + " for n in range(len(outsentences)):\n", + " outsentence = outsentences[n]\n", + " outsentence[0] = outsentence[0].title()\n", + " out += ' '.join(outsentence) + punctuations[n] + '\\n'\n", + " \n", + " \n", + " OutTextFeld.value = out\n", + " TextFelddouble.value = TextFeld.value\n", + " display(TextFelddouble)\n", + " \n", + " return \n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "scrolled": false + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "2da49b6bc0c64b468368c639db95a1a6", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "interactive(children=(Button(description='Übersetzen in Leichte Sprache', style=ButtonStyle()), Output()), _do…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "#from IPython.display import Image\n", + "#i = Image(filename='Babelfish.png')\n", + "\n", + "#i.width = '60%'\n", + "#display(i)\n", + "\n", + "#print(widgets.interact_manual.opts)\n", + "\n", + "widgets.interact_manual.opts['manual_name']= 'Übersetzen in Leichte Sprache'\n", + "ola = widgets.interact_manual(function)\n", + "ola.widget.children[0].style.button_color = 'lightgreen'\n", + "ola.widget.children[0].layout.height = '60px'\n", + "ola.widget.children[0].layout.width = '99%'\n", + "\n", + "#widgets.GridBox([ola], layout=widgets.Layout(grid_template_columns=\"repeat(2, 300px)\"))" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "16d4e37ff391417f8844c35944a3f1af", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Textarea(value='', layout=Layout(height='180px', width='99%'), placeholder='Hier kommt der übersetzte Text her…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "OutTextFeld = ipywidgets.Textarea(placeholder=out, disabled=False)\n", + "OutTextFeld.layout.height = '180px'\n", + "OutTextFeld.layout.width = '99%'\n", + "OutTextFeld.add_class(\"thetext\")\n", + "display(OutTextFeld)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [], + "source": [ + "beschreibung = 'Textfeld für die verbesserte Übersetzung. Satzzeichen bitte nicht vergessen! \\nFalls ein neuer Eintrag ins Fremdwörterbuch vorgenommen werden soll, schreibe einfach unter die Verbesserungen einen Eintrag der Form: [\\'Abfall\\', \\'Abfall sind Sachen die wir nicht mehr brauchen\\'] \\nFalls ein neuer Eintrag in die Mediopunkte-Datenbank vorgenommen werden soll, bitte schreibe unter die Verbesserungen einen Eintrag der Form: [\\'Mediopunkt\\', \\'Medio·punkt\\']' \n", + "VerbeTextFeld = ipywidgets.Textarea(placeholder=beschreibung, disabled=False)\n", + "VerbeTextFeld.layout.height = '180px'\n", + "VerbeTextFeld.layout.width = '99%'\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "\n", + "def Absendefunction():\n", + " \n", + " \n", + "\n", + " \n", + " #print(VerbeTextFeld.value)\n", + " #print(TextFeld.value)\n", + " #print(OutTextFeld.value)\n", + " \n", + " try:\n", + "\n", + " insentences, punctuations = oi.CellInputText2SplitsentencesWithspacy(VerbeTextFeld.value)\n", + " insentences1, punctuations1 = oi.CellInputText2SplitsentencesWithspacy(TextFeld.value)\n", + " insentences2, punctuations2 = oi.CellInputText2SplitsentencesWithspacy(OutTextFeld.value)\n", + "\n", + " #print(insentences2)\n", + "\n", + " #print(insentences, punctuations)\n", + " indexDerVerbesserungen = 0\n", + " number = 0\n", + " with open('Verbesserungen/indexDerVerbesserungen.txt', 'r') as dok:\n", + " for number in dok:\n", + " number = int(number)\n", + " if number >= 0:\n", + " indexDerVerbesserungen = number\n", + " number += 1\n", + "\n", + " with open('Verbesserungen/indexDerVerbesserungen.txt', 'w') as dokk:\n", + " dokk.write(str(number))\n", + "\n", + "\n", + " with open('Verbesserungen/Verbesserungen' + str(number) + '.txt','w+') as doc:\n", + " for n in range(len(insentences)):\n", + " npunct = punctuations[n]\n", + " writeline = insentences[n]+ [npunct]\n", + "\n", + " writestring = ' '.join(writeline)\n", + "\n", + " doc.write(writestring + '\\n')\n", + "\n", + " with open('Verbesserungen/Input' + str(number) + '.txt','w+') as docc:\n", + " for n in range(len(insentences1)):\n", + " npunct = punctuations1[n]\n", + " writeline = insentences1[n]+ [npunct]\n", + "\n", + " writestring = ' '.join(writeline)\n", + "\n", + " docc.write(writestring + '\\n')\n", + " with open('Verbesserungen/Output' + str(number) + '.txt','w+') as dock:\n", + " #print(insentences2)\n", + " for n in range(len(insentences2)):\n", + " #print(len(insentences2))\n", + "\n", + " #print(punctuations2)\n", + " npunct = punctuations2[n]\n", + " writeline = insentences2[n]+ [npunct]\n", + "\n", + " writestring = ' '.join(writeline)\n", + "\n", + " dock.write(writestring + '\\n')\n", + "\n", + " VerbeTextFeld.value = ''\n", + " OutTextFeld.value = ''\n", + " VerbeTextFeld.placeholder = beschreibung\n", + " OutTextFeld.placeholder = 'Hier kommt der übersetzte Text raus.'\n", + " except:\n", + " VerbeTextFeld.placeholder = 'Es gab einen Fehler. Eventuell ist die Zeichensetzung nicht ok. \\n \\n' + beschreibung\n", + " \n", + " \n", + " return \n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "dd913832ab444630a3842fcf7fd8609b", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Textarea(value='', layout=Layout(height='180px', width='99%'), placeholder=\"Textfeld für die verbesserte Übers…" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "79ed4f2f30324ca582faa59671224d92", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "interactive(children=(Button(description='Absenden', style=ButtonStyle()), Output()), _dom_classes=('widget-in…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "VerbeTextFeld.add_class(\"thetext3\")\n", + "display(VerbeTextFeld)\n", + "display(HTML('
'))\n", + "widgets.interact_manual.opts['manual_name']= 'Absenden'\n", + "AbsendenUndSchreiben = widgets.interact_manual(Absendefunction)\n", + "AbsendenUndSchreiben.widget.children[0].style.button_color = 'lightblue'\n", + "AbsendenUndSchreiben.widget.children[0].layout.height = '60px'\n", + "AbsendenUndSchreiben.widget.children[0].layout.width = '99%'\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%html\n", + "" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%html\n", + "" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "data": { + "text/html": [ + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%html\n", + "" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "celltoolbar": "Raw Cell Format", + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.5.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/Prototyp/.ipynb_checkpoints/.Prototype-3-checkpoint.ipynb b/Prototyp/.ipynb_checkpoints/.Prototype-3-checkpoint.ipynb new file mode 100644 index 00000000..37cbca29 --- /dev/null +++ b/Prototyp/.ipynb_checkpoints/.Prototype-3-checkpoint.ipynb @@ -0,0 +1,2373 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "#from oi import *\n", + "\n", + "#oi = oi()\n", + "\n", + "#import ipyvuetify as v\n", + "\n", + "#state = False\n", + "#oi.toggle_code(state)\n", + "\n", + "#button = widgets.ToggleButton(state, description = button_descriptions[state])\n", + "\n", + "\n", + "#button.observe(oi.button_action, \"value\")\n", + "\n", + "#button.layout.height = '50px'\n", + "#button.layout.width = '100%'\n", + "#button.add_class(\"thobutton\")\n", + "\n", + "#display(button)\n", + "#button.button_style = 'danger'\n" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "\n", + "

Ein Klick auf das Logo - und es geht zum Code

\n", + "\n", + "\n", + " \n", + "\n", + " \n", + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%html\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "\n", + "

Ein Klick auf das Logo - und es geht zum Code

\n", + "\n", + "\n", + " \n", + "\n", + " \n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "#%%html\n", + "#\n", + "#\n", + "#\n", + "#\n", + "#\n", + "#

Ein Klick auf das Logo - und es geht zum Code

\n", + "#" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%html\n", + "\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "#%%html\n", + "#" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "#from ipywidgets import widgets\n", + "#button = widgets.Button(description='Click me')\n", + "#display(button)\n", + "\n", + "#def on_button_clicked(b):\n", + "# print('button clicked')\n", + "\n", + "#button.on_click(on_button_clicked)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "\n", + "# importing the libraries\n", + "#print('importing libraries')\n", + "#from SolveShorts import *\n", + "#import SentSeg\n", + "#from SayYes import *\n", + "#from Passiv2Aktiv import *\n", + "#from GenitivSolve import *\n", + "#from ConjunctSolve import *\n", + "#from FremdWB import *\n", + "#from Medio import *\n", + "#from oi import *\n", + "#print('done')\n", + "\n", + "\n", + "# Initializing the libraries\n", + "#print('initializing the libraries')\n", + "#print('1')\n", + "#solSh = SolveShorts('hkldbShorts.hkl', 'hkldbShorts_All.hkl')\n", + "#print('2')\n", + "#sent_seg = SentSeg.SentSeg('de')\n", + "#print('3')\n", + "#sy = SayYes(None, None)\n", + "#print('4')\n", + "#p2a = Passiv2Aktiv(None, None, None)\n", + "#print('5')\n", + "#gs = GenitivSolve()\n", + "#print('6')\n", + "#cs = ConjunctSolve(None,None)\n", + "#print('7')\n", + "#oi = oi()\n", + "#print('8')\n", + "#fwb = FremdWB(None,None)\n", + "#print('9')\n", + "#medi = Medio(None,None)\n", + "#print('done')\n", + "\n", + "\n", + "# loading the databases and models\n", + "#print('loading SolveShorts Databases')\n", + "#solSh.load_DB_into_FASTsearch()\n", + "#print('loading SentSeg Databases')\n", + "#sent_seg.LoadSentGlueSGDandGSUtils()\n", + "#print('loading SayYes Databases')\n", + "#sy.load_DB_into_FASTsearch()\n", + "#print('loading passiv2active Databases')\n", + "#p2a.load_DB_into_FASTsearch()\n", + "#print('loading conjunctivesolve Databases')\n", + "#cs.load_DB_into_FASTsearch()\n", + "#print('loading the fremdwb Databases')\n", + "#fwb.load_DB_into_FASTsearch()\n", + "#print('loading the mediodot Databases')\n", + "#medi.load_DB_into_FASTsearch()\n", + "\n", + "#print('done')\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "6a24b25b44a846aea1b396e744d222e4", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Textarea(value='', layout=Layout(height='180px', width='99%'), placeholder='Hier den Text eingeben, darunter k…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "\n", + "#print('done')\n", + "\n", + "#print('loading passiv2active Databases')\n", + "#from Passiv2Aktiv import *\n", + "#p2a = Passiv2Aktiv(None, None, None)\n", + "#p2a.load_DB_into_FASTsearch()\n", + "#print('done')\n", + "#print('loading genitiv solve')\n", + "#from GenitivSolve import *\n", + "#gs = GenitivSolve()\n", + "\n", + "#from FremdWB import *\n", + "#fwb = FremdWB(None,None)\n", + "#fwb.load_DB_into_FASTsearch()\n", + "\n", + "#from SolveShorts import *\n", + "#print('loading SolveShorts Databases')\n", + "#solSh.load_DB_into_FASTsearch()\n", + "\n", + "#from SayYes import *\n", + "#sy = SayYes(None, None)\n", + "#print('loading SayYes Databases')\n", + "#sy.load_DB_into_FASTsearch()\n", + "\n", + "#import SentSeg\n", + "#sent_seg = SentSeg.SentSeg('de')\n", + "#print('loading SentSeg Databases')\n", + "#sent_seg.LoadSentGlueSGDandGSUtils()\n", + "#print('loading conjunctsolve')\n", + "#from ConjunctSolve import *\n", + "#cs = ConjunctSolve(None,None)\n", + "#print('done')\n", + "#print('loading conjunctivesolve Databases')\n", + "#cs.load_DB_into_FASTsearch()\n", + "#print('done')\n", + "#from oi import *\n", + "#oi = oi()\n", + "\n", + "#print('loading session..')\n", + "\n", + "#print('done')\n", + "import dill\n", + "dill.load_session('voilastate.db')\n", + "\n", + "#from SolveShorts import *\n", + "#print('loading SolveShorts Databases')\n", + "#solSh.load_DB_into_FASTsearch()\n", + "\n", + "#import SentSeg\n", + "#sent_seg = SentSeg.SentSeg('de')\n", + "#print('loading SentSeg Databases')\n", + "#sent_seg.LoadSentGlueSGDandGSUtils()\n", + "\n", + "#from FremdWB import *\n", + "#fwb = FremdWB(None,None)\n", + "#fwb.load_DB_into_FASTsearch()\n", + "\n", + "#from Medio import *\n", + "#medi = Medio(None,None)\n", + "#medi.load_DB_into_FASTsearch()\n", + "\n", + "\n", + "#import dill\n", + "#print('dumping the session')\n", + "#dill.dump_session('voilastate.db')\n", + "#print('done')\n", + "\n", + "#from oi import *\n", + "#oi = oi()\n", + "\n", + "import ipywidgets as widgets\n", + "\n", + "TextFeld = widgets.Textarea(placeholder='Hier den Text eingeben, darunter können die Module aktiviert(grün) oder deaktiviert(pink) werden', disabled=False)\n", + "#print(TextFeld.layout.height)\n", + "TextFeld.layout.height = '180px'\n", + "TextFeld.layout.width = '99%'\n", + "\n", + "TextFelddouble = widgets.Textarea(placeholder='Hier den Text eingeben, darunter können die Module aktiviert(grün) oder deaktiviert(pink) werden', disabled=False)\n", + "#print(TextFeld.layout.height)\n", + "TextFelddouble.layout.height = '180px'\n", + "TextFelddouble.layout.width = '99%'\n", + "TextFelddouble.disabled=True\n", + "\n", + "display(TextFeld)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "\n", + "dawidth = '100%'\n", + "daheight = '100%'\n", + "KonjunktiveErsetzen = widgets.ToggleButton(\n", + " value=False,\n", + " description='Konjunktive ersetzen',\n", + " disabled=False,\n", + ")\n", + "KonjunktiveErsetzen.layout.width = dawidth\n", + "KonjunktiveErsetzen.layout.height = '80%'\n", + "\n", + "GenitiveErsetzen = widgets.ToggleButton(\n", + " value=True,\n", + " description='Genitiv ersetzen',\n", + " disabled=False\n", + ")\n", + "GenitiveErsetzen.layout.width = '60%'\n", + "GenitiveErsetzen.layout.height = daheight\n", + "\n", + "PassivErsetzen = widgets.ToggleButton(\n", + " value=True,\n", + " description='Passiv ersetzen',\n", + " disabled=False\n", + ")\n", + "PassivErsetzen.layout.width = '70%'\n", + "PassivErsetzen.layout.height = '90%'\n", + "\n", + "SayYes = widgets.ToggleButton(\n", + " value=True,\n", + " description='Verneinungen ersetzen',\n", + " disabled=False\n", + ")\n", + "SayYes.layout.width = '80%'\n", + "SayYes.layout.height = '80%'\n", + "SentSeg = widgets.ToggleButton(\n", + " value=True,\n", + " description='Eine Aussage pro Satz',\n", + " disabled=False\n", + ")\n", + "SentSeg.layout.width = '60%'\n", + "SentSeg.layout.height = daheight\n", + "SolveShorts = widgets.ToggleButton(\n", + " value=False,\n", + " description='Abkürzungen erklären',\n", + " disabled=False\n", + ")\n", + "SolveShorts.layout.width = '80%'\n", + "SolveShorts.layout.height = '90%'\n", + "FremdWB = widgets.ToggleButton(\n", + " value=True,\n", + " description='FremdWoerterbuch',\n", + " disabled=False\n", + ")\n", + "FremdWB.layout.width = '90%'\n", + "FremdWB.layout.height = '90%'\n", + "\n", + "Appendixes = widgets.ToggleButton(\n", + " value=True,\n", + " description='Charakterisierung pro Satz',\n", + " disabled=False\n", + ")\n", + "Appendixes.layout.width = '120%'\n", + "Appendixes.layout.height = '80%'\n", + "\n", + "Medio = widgets.ToggleButton(\n", + " value=True,\n", + " description='Mediopunkte',\n", + " disabled=False\n", + ")\n", + "Medio.layout.width = '50%'\n", + "Medio.layout.height = '90%'\n", + "\n", + "#items1 = [SentSeg, SolveShorts]\n", + "#items2 = [SayYes, PassivErsetzen]\n", + "#items3 = [GenitiveErsetzen, KonjunktiveErsetzen]\n", + "#items = [Textfeld, SentSeg, SolveShorts, SayYes, PassivErsetzen, GenitiveErsetzen, KonjunktiveErsetzen]\n", + "#display(SentSeg, SolveShorts, SayYes, PassivErsetzen, GenitiveErsetzen, KonjunktiveErsetzen)\n", + "#widgets.GridBox(items, layout=widgets.Layout(grid_template_columns=\"repeat(3, 100px)\"))\n", + "\n", + "\n", + "\n", + "#widgets.HBox(items1)\n", + "#widgets.HBox(items2)\n", + "#widgets.HBox(items3)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "import ipywidgets\n", + "out = 'Hier kommt der übersetzte Text heraus.'\n", + "\n", + "TextFeld.add_class(\"thotext\")\n", + "TextFelddouble.add_class(\"thotext\")\n", + "#display(OutTextFeld)\n", + "items = [SentSeg, SolveShorts, SayYes, PassivErsetzen, GenitiveErsetzen, KonjunktiveErsetzen, FremdWB, Appendixes, Medio] \n", + "#display(SentSeg, SolveShorts, SayYes, PassivErsetzen, GenitiveErsetzen, KonjunktiveErsetzen)\n", + "Grid = widgets.GridBox(items, layout=widgets.Layout(justify_items=\"center\", grid_template_columns=\"repeat(3, 30%)\", grid_gap=\"4.5%\", height=\"320px\"))\n" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "2bfcacdb87c640bb93cde56d3dd5aeaf", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "GridBox(children=(ToggleButton(value=True, description='Eine Aussage pro Satz', layout=Layout(height='100%', w…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "\n", + "display(HTML('
'))\n", + "display(Grid)\n", + "\n", + "\n", + "\n", + "\n", + "def function():\n", + " out = 'Wählen Sie ein Kästchen aus!'\n", + " try:\n", + " insentences, punctuations = oi.CellInputText2SplitsentencesWithspacy(TextFeld.value)\n", + " except:\n", + " OutTextFeld.placeholder = 'Bitte auf die Zeichensetzung achten! '\n", + " return\n", + " \n", + " check = 0\n", + " #print('insentences',insentences)\n", + " #print(punctuations)\n", + " if SayYes.value == True:\n", + " \n", + " print('ersetze Gegenteile..')\n", + " outsentences = sy.replaceOpposites(insentences)\n", + " check = 1\n", + " \n", + " \n", + " \n", + " \n", + " if Appendixes.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('generiere ist-Aussagen..')\n", + " outsentences, punctuations = sent_seg.putAppendixesIntoOwnSentences(insentences, punctuations)\n", + " \n", + " if SentSeg.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('forme zu einem Satz pro Aussage um..')\n", + " sentsegformattedsentences = []\n", + " for sentence in insentences:\n", + " \n", + " sentsegformattedsentences.append([sentence])\n", + " \n", + " #print(sentsegformattedsentences)\n", + " sentences = sent_seg.CommaSentenceOrNot(sentsegformattedsentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetUtteranceNumber(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetQuestionOrNot(sentences)\n", + " #print(sentences)\n", + " sentences, punctuations = sent_seg.AndOrSolver(sentences, punctuations)\n", + " #print(len(punctuations))\n", + " #print('sentences after AndOrSolver', sentences, punctuations)\n", + " sentences = sent_seg.CommaSentenceOrNot(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetUtteranceNumber(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetQuestionOrNot(sentences)\n", + " #print(sentences)\n", + " sentences, punctuations = sent_seg.SplitSentencesIntoHauptNebenTuple(sentences, punctuations)\n", + " #print(len(punctuations))\n", + " #print('sentences after split haupt neben', sentences)\n", + " sentences = sent_seg.CommaSentenceOrNot(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetUtteranceNumber(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetQuestionOrNot(sentences)\n", + " #print(sentences)\n", + " outsentences, punctuations = sent_seg.SplitCommatas(sentences, punctuations)\n", + " #print(len(punctuations))\n", + " #print('out',outsentences)\n", + " #print('out', punctuations)\n", + " check = 1\n", + " \n", + " \n", + " if SolveShorts.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('erklaere Abkuerzungen..')\n", + " outsentences = solSh.ExplainShortsInSentencesWithBrackets(insentences)\n", + " check = 1\n", + " #print(len(punctuations)) \n", + " #print('sentences after solveshorts', outsentences)\n", + " \n", + " if PassivErsetzen.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('ersetze Passiv Formen..')\n", + " outsentences = p2a.replacePassivForms(insentences)\n", + " check = 1\n", + " #print(len(punctuations))\n", + " #print('sentences after p2a', outsentences)\n", + " \n", + " if GenitiveErsetzen.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " #print('replacing genitiv forms with dativ..')\n", + " outsentences = gs.ReplaceGenitivWithDativ(insentences)\n", + " check = 1\n", + " #print(len(punctuations))\n", + " #print('sentences after gs', outsentences)\n", + " \n", + " if check == 1:\n", + " newinsentences = []\n", + " for sentence in outsentences: \n", + " newinsentences.append([word.replace('ö','oe').replace('ü','ue').replace('ä','ae').replace('ß','ss') for word in sentence])\n", + " \n", + " outsentences =newinsentences\n", + " if check != 1:\n", + " newinsentences = []\n", + " for sentence in insentences: \n", + " newinsentences.append([word.replace('ö','oe').replace('ü','ue').replace('ä','ae').replace('ß','ss') for word in sentence])\n", + " \n", + " insentences =newinsentences\n", + " #print()\n", + " if KonjunktiveErsetzen.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('ersetze Konjunktive..')\n", + " \n", + " outsentences = cs.replaceConjunctives(insentences)\n", + " #print('outsentences')\n", + " check = 1\n", + " \n", + " #print('sentences after cs', outsentences)\n", + " print(len(punctuations))\n", + " \n", + " if FremdWB.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('Suche Woerterbucheintraege..')\n", + " \n", + " outsentences, punctuations = fwb.fremdEintragAppend(insentences, punctuations)\n", + " #print('outsentences')\n", + " check = 1\n", + " \n", + " if Medio.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('Ersetze lange Woerter mit Mediopunkten..')\n", + " \n", + " outsentences, punctuations = medi.Medioreplace(insentences, punctuations)\n", + " #print('outsentences')\n", + " check = 1\n", + " #print('sentences after medios', outsentences)\n", + " \n", + " \n", + " #print('sentences after fwb', outsentences)\n", + " \n", + " print(len(punctuations))\n", + " \n", + " if check == 1:\n", + " out = ''\n", + " #print('just before looking if the lenght is the same')\n", + " #print(len(outsentences), len(punctuations))\n", + " if len(outsentences) == len(punctuations):\n", + " #print('the length is the same')\n", + " for n in range(len(outsentences)):\n", + " outsentence = outsentences[n]\n", + " outsentence[0] = outsentence[0].title()\n", + " out += ' '.join(outsentence) + punctuations[n] + '\\n'\n", + " \n", + " \n", + " OutTextFeld.value = out\n", + " TextFelddouble.value = TextFeld.value\n", + " display(TextFelddouble)\n", + " \n", + " return \n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "scrolled": false + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "2da49b6bc0c64b468368c639db95a1a6", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "interactive(children=(Button(description='Übersetzen in Leichte Sprache', style=ButtonStyle()), Output()), _do…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "#from IPython.display import Image\n", + "#i = Image(filename='Babelfish.png')\n", + "\n", + "#i.width = '60%'\n", + "#display(i)\n", + "\n", + "#print(widgets.interact_manual.opts)\n", + "\n", + "widgets.interact_manual.opts['manual_name']= 'Übersetzen in Leichte Sprache'\n", + "ola = widgets.interact_manual(function)\n", + "ola.widget.children[0].style.button_color = 'lightgreen'\n", + "ola.widget.children[0].layout.height = '60px'\n", + "ola.widget.children[0].layout.width = '99%'\n", + "\n", + "#widgets.GridBox([ola], layout=widgets.Layout(grid_template_columns=\"repeat(2, 300px)\"))" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "16d4e37ff391417f8844c35944a3f1af", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Textarea(value='', layout=Layout(height='180px', width='99%'), placeholder='Hier kommt der übersetzte Text her…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "OutTextFeld = ipywidgets.Textarea(placeholder=out, disabled=False)\n", + "OutTextFeld.layout.height = '180px'\n", + "OutTextFeld.layout.width = '99%'\n", + "OutTextFeld.add_class(\"thetext\")\n", + "display(OutTextFeld)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [], + "source": [ + "beschreibung = 'Textfeld für die verbesserte Übersetzung. Satzzeichen bitte nicht vergessen! \\nFalls ein neuer Eintrag ins Fremdwörterbuch vorgenommen werden soll, schreibe einfach unter die Verbesserungen einen Eintrag der Form: [\\'Abfall\\', \\'Abfall sind Sachen die wir nicht mehr brauchen\\'] \\nFalls ein neuer Eintrag in die Mediopunkte-Datenbank vorgenommen werden soll, bitte schreibe unter die Verbesserungen einen Eintrag der Form: [\\'Mediopunkt\\', \\'Medio·punkt\\']' \n", + "VerbeTextFeld = ipywidgets.Textarea(placeholder=beschreibung, disabled=False)\n", + "VerbeTextFeld.layout.height = '180px'\n", + "VerbeTextFeld.layout.width = '99%'\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "\n", + "def Absendefunction():\n", + " \n", + " \n", + "\n", + " \n", + " #print(VerbeTextFeld.value)\n", + " #print(TextFeld.value)\n", + " #print(OutTextFeld.value)\n", + " \n", + " try:\n", + "\n", + " insentences, punctuations = oi.CellInputText2SplitsentencesWithspacy(VerbeTextFeld.value)\n", + " insentences1, punctuations1 = oi.CellInputText2SplitsentencesWithspacy(TextFeld.value)\n", + " insentences2, punctuations2 = oi.CellInputText2SplitsentencesWithspacy(OutTextFeld.value)\n", + "\n", + " #print(insentences2)\n", + "\n", + " #print(insentences, punctuations)\n", + " indexDerVerbesserungen = 0\n", + " number = 0\n", + " with open('Verbesserungen/indexDerVerbesserungen.txt', 'r') as dok:\n", + " for number in dok:\n", + " number = int(number)\n", + " if number >= 0:\n", + " indexDerVerbesserungen = number\n", + " number += 1\n", + "\n", + " with open('Verbesserungen/indexDerVerbesserungen.txt', 'w') as dokk:\n", + " dokk.write(str(number))\n", + "\n", + "\n", + " with open('Verbesserungen/Verbesserungen' + str(number) + '.txt','w+') as doc:\n", + " for n in range(len(insentences)):\n", + " npunct = punctuations[n]\n", + " writeline = insentences[n]+ [npunct]\n", + "\n", + " writestring = ' '.join(writeline)\n", + "\n", + " doc.write(writestring + '\\n')\n", + "\n", + " with open('Verbesserungen/Input' + str(number) + '.txt','w+') as docc:\n", + " for n in range(len(insentences1)):\n", + " npunct = punctuations1[n]\n", + " writeline = insentences1[n]+ [npunct]\n", + "\n", + " writestring = ' '.join(writeline)\n", + "\n", + " docc.write(writestring + '\\n')\n", + " with open('Verbesserungen/Output' + str(number) + '.txt','w+') as dock:\n", + " #print(insentences2)\n", + " for n in range(len(insentences2)):\n", + " #print(len(insentences2))\n", + "\n", + " #print(punctuations2)\n", + " npunct = punctuations2[n]\n", + " writeline = insentences2[n]+ [npunct]\n", + "\n", + " writestring = ' '.join(writeline)\n", + "\n", + " dock.write(writestring + '\\n')\n", + "\n", + " VerbeTextFeld.value = ''\n", + " OutTextFeld.value = ''\n", + " VerbeTextFeld.placeholder = beschreibung\n", + " OutTextFeld.placeholder = 'Hier kommt der übersetzte Text raus.'\n", + " except:\n", + " VerbeTextFeld.placeholder = 'Es gab einen Fehler. Eventuell ist die Zeichensetzung nicht ok. \\n \\n' + beschreibung\n", + " \n", + " \n", + " return \n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "dd913832ab444630a3842fcf7fd8609b", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Textarea(value='', layout=Layout(height='180px', width='99%'), placeholder=\"Textfeld für die verbesserte Übers…" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "79ed4f2f30324ca582faa59671224d92", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "interactive(children=(Button(description='Absenden', style=ButtonStyle()), Output()), _dom_classes=('widget-in…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "VerbeTextFeld.add_class(\"thetext3\")\n", + "display(VerbeTextFeld)\n", + "display(HTML('
'))\n", + "widgets.interact_manual.opts['manual_name']= 'Absenden'\n", + "AbsendenUndSchreiben = widgets.interact_manual(Absendefunction)\n", + "AbsendenUndSchreiben.widget.children[0].style.button_color = 'lightblue'\n", + "AbsendenUndSchreiben.widget.children[0].layout.height = '60px'\n", + "AbsendenUndSchreiben.widget.children[0].layout.width = '99%'\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%html\n", + "" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%html\n", + "" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "data": { + "text/html": [ + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%html\n", + "" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "celltoolbar": "Raw Cell Format", + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.5.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/Prototyp/.ipynb_checkpoints/.Prototype-4-checkpoint.ipynb b/Prototyp/.ipynb_checkpoints/.Prototype-4-checkpoint.ipynb new file mode 100644 index 00000000..37cbca29 --- /dev/null +++ b/Prototyp/.ipynb_checkpoints/.Prototype-4-checkpoint.ipynb @@ -0,0 +1,2373 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "#from oi import *\n", + "\n", + "#oi = oi()\n", + "\n", + "#import ipyvuetify as v\n", + "\n", + "#state = False\n", + "#oi.toggle_code(state)\n", + "\n", + "#button = widgets.ToggleButton(state, description = button_descriptions[state])\n", + "\n", + "\n", + "#button.observe(oi.button_action, \"value\")\n", + "\n", + "#button.layout.height = '50px'\n", + "#button.layout.width = '100%'\n", + "#button.add_class(\"thobutton\")\n", + "\n", + "#display(button)\n", + "#button.button_style = 'danger'\n" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "\n", + "

Ein Klick auf das Logo - und es geht zum Code

\n", + "\n", + "\n", + " \n", + "\n", + " \n", + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%html\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "\n", + "

Ein Klick auf das Logo - und es geht zum Code

\n", + "\n", + "\n", + " \n", + "\n", + " \n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "#%%html\n", + "#\n", + "#\n", + "#\n", + "#\n", + "#\n", + "#

Ein Klick auf das Logo - und es geht zum Code

\n", + "#" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%html\n", + "\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "#%%html\n", + "#" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "#from ipywidgets import widgets\n", + "#button = widgets.Button(description='Click me')\n", + "#display(button)\n", + "\n", + "#def on_button_clicked(b):\n", + "# print('button clicked')\n", + "\n", + "#button.on_click(on_button_clicked)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "\n", + "# importing the libraries\n", + "#print('importing libraries')\n", + "#from SolveShorts import *\n", + "#import SentSeg\n", + "#from SayYes import *\n", + "#from Passiv2Aktiv import *\n", + "#from GenitivSolve import *\n", + "#from ConjunctSolve import *\n", + "#from FremdWB import *\n", + "#from Medio import *\n", + "#from oi import *\n", + "#print('done')\n", + "\n", + "\n", + "# Initializing the libraries\n", + "#print('initializing the libraries')\n", + "#print('1')\n", + "#solSh = SolveShorts('hkldbShorts.hkl', 'hkldbShorts_All.hkl')\n", + "#print('2')\n", + "#sent_seg = SentSeg.SentSeg('de')\n", + "#print('3')\n", + "#sy = SayYes(None, None)\n", + "#print('4')\n", + "#p2a = Passiv2Aktiv(None, None, None)\n", + "#print('5')\n", + "#gs = GenitivSolve()\n", + "#print('6')\n", + "#cs = ConjunctSolve(None,None)\n", + "#print('7')\n", + "#oi = oi()\n", + "#print('8')\n", + "#fwb = FremdWB(None,None)\n", + "#print('9')\n", + "#medi = Medio(None,None)\n", + "#print('done')\n", + "\n", + "\n", + "# loading the databases and models\n", + "#print('loading SolveShorts Databases')\n", + "#solSh.load_DB_into_FASTsearch()\n", + "#print('loading SentSeg Databases')\n", + "#sent_seg.LoadSentGlueSGDandGSUtils()\n", + "#print('loading SayYes Databases')\n", + "#sy.load_DB_into_FASTsearch()\n", + "#print('loading passiv2active Databases')\n", + "#p2a.load_DB_into_FASTsearch()\n", + "#print('loading conjunctivesolve Databases')\n", + "#cs.load_DB_into_FASTsearch()\n", + "#print('loading the fremdwb Databases')\n", + "#fwb.load_DB_into_FASTsearch()\n", + "#print('loading the mediodot Databases')\n", + "#medi.load_DB_into_FASTsearch()\n", + "\n", + "#print('done')\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "6a24b25b44a846aea1b396e744d222e4", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Textarea(value='', layout=Layout(height='180px', width='99%'), placeholder='Hier den Text eingeben, darunter k…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "\n", + "#print('done')\n", + "\n", + "#print('loading passiv2active Databases')\n", + "#from Passiv2Aktiv import *\n", + "#p2a = Passiv2Aktiv(None, None, None)\n", + "#p2a.load_DB_into_FASTsearch()\n", + "#print('done')\n", + "#print('loading genitiv solve')\n", + "#from GenitivSolve import *\n", + "#gs = GenitivSolve()\n", + "\n", + "#from FremdWB import *\n", + "#fwb = FremdWB(None,None)\n", + "#fwb.load_DB_into_FASTsearch()\n", + "\n", + "#from SolveShorts import *\n", + "#print('loading SolveShorts Databases')\n", + "#solSh.load_DB_into_FASTsearch()\n", + "\n", + "#from SayYes import *\n", + "#sy = SayYes(None, None)\n", + "#print('loading SayYes Databases')\n", + "#sy.load_DB_into_FASTsearch()\n", + "\n", + "#import SentSeg\n", + "#sent_seg = SentSeg.SentSeg('de')\n", + "#print('loading SentSeg Databases')\n", + "#sent_seg.LoadSentGlueSGDandGSUtils()\n", + "#print('loading conjunctsolve')\n", + "#from ConjunctSolve import *\n", + "#cs = ConjunctSolve(None,None)\n", + "#print('done')\n", + "#print('loading conjunctivesolve Databases')\n", + "#cs.load_DB_into_FASTsearch()\n", + "#print('done')\n", + "#from oi import *\n", + "#oi = oi()\n", + "\n", + "#print('loading session..')\n", + "\n", + "#print('done')\n", + "import dill\n", + "dill.load_session('voilastate.db')\n", + "\n", + "#from SolveShorts import *\n", + "#print('loading SolveShorts Databases')\n", + "#solSh.load_DB_into_FASTsearch()\n", + "\n", + "#import SentSeg\n", + "#sent_seg = SentSeg.SentSeg('de')\n", + "#print('loading SentSeg Databases')\n", + "#sent_seg.LoadSentGlueSGDandGSUtils()\n", + "\n", + "#from FremdWB import *\n", + "#fwb = FremdWB(None,None)\n", + "#fwb.load_DB_into_FASTsearch()\n", + "\n", + "#from Medio import *\n", + "#medi = Medio(None,None)\n", + "#medi.load_DB_into_FASTsearch()\n", + "\n", + "\n", + "#import dill\n", + "#print('dumping the session')\n", + "#dill.dump_session('voilastate.db')\n", + "#print('done')\n", + "\n", + "#from oi import *\n", + "#oi = oi()\n", + "\n", + "import ipywidgets as widgets\n", + "\n", + "TextFeld = widgets.Textarea(placeholder='Hier den Text eingeben, darunter können die Module aktiviert(grün) oder deaktiviert(pink) werden', disabled=False)\n", + "#print(TextFeld.layout.height)\n", + "TextFeld.layout.height = '180px'\n", + "TextFeld.layout.width = '99%'\n", + "\n", + "TextFelddouble = widgets.Textarea(placeholder='Hier den Text eingeben, darunter können die Module aktiviert(grün) oder deaktiviert(pink) werden', disabled=False)\n", + "#print(TextFeld.layout.height)\n", + "TextFelddouble.layout.height = '180px'\n", + "TextFelddouble.layout.width = '99%'\n", + "TextFelddouble.disabled=True\n", + "\n", + "display(TextFeld)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "\n", + "dawidth = '100%'\n", + "daheight = '100%'\n", + "KonjunktiveErsetzen = widgets.ToggleButton(\n", + " value=False,\n", + " description='Konjunktive ersetzen',\n", + " disabled=False,\n", + ")\n", + "KonjunktiveErsetzen.layout.width = dawidth\n", + "KonjunktiveErsetzen.layout.height = '80%'\n", + "\n", + "GenitiveErsetzen = widgets.ToggleButton(\n", + " value=True,\n", + " description='Genitiv ersetzen',\n", + " disabled=False\n", + ")\n", + "GenitiveErsetzen.layout.width = '60%'\n", + "GenitiveErsetzen.layout.height = daheight\n", + "\n", + "PassivErsetzen = widgets.ToggleButton(\n", + " value=True,\n", + " description='Passiv ersetzen',\n", + " disabled=False\n", + ")\n", + "PassivErsetzen.layout.width = '70%'\n", + "PassivErsetzen.layout.height = '90%'\n", + "\n", + "SayYes = widgets.ToggleButton(\n", + " value=True,\n", + " description='Verneinungen ersetzen',\n", + " disabled=False\n", + ")\n", + "SayYes.layout.width = '80%'\n", + "SayYes.layout.height = '80%'\n", + "SentSeg = widgets.ToggleButton(\n", + " value=True,\n", + " description='Eine Aussage pro Satz',\n", + " disabled=False\n", + ")\n", + "SentSeg.layout.width = '60%'\n", + "SentSeg.layout.height = daheight\n", + "SolveShorts = widgets.ToggleButton(\n", + " value=False,\n", + " description='Abkürzungen erklären',\n", + " disabled=False\n", + ")\n", + "SolveShorts.layout.width = '80%'\n", + "SolveShorts.layout.height = '90%'\n", + "FremdWB = widgets.ToggleButton(\n", + " value=True,\n", + " description='FremdWoerterbuch',\n", + " disabled=False\n", + ")\n", + "FremdWB.layout.width = '90%'\n", + "FremdWB.layout.height = '90%'\n", + "\n", + "Appendixes = widgets.ToggleButton(\n", + " value=True,\n", + " description='Charakterisierung pro Satz',\n", + " disabled=False\n", + ")\n", + "Appendixes.layout.width = '120%'\n", + "Appendixes.layout.height = '80%'\n", + "\n", + "Medio = widgets.ToggleButton(\n", + " value=True,\n", + " description='Mediopunkte',\n", + " disabled=False\n", + ")\n", + "Medio.layout.width = '50%'\n", + "Medio.layout.height = '90%'\n", + "\n", + "#items1 = [SentSeg, SolveShorts]\n", + "#items2 = [SayYes, PassivErsetzen]\n", + "#items3 = [GenitiveErsetzen, KonjunktiveErsetzen]\n", + "#items = [Textfeld, SentSeg, SolveShorts, SayYes, PassivErsetzen, GenitiveErsetzen, KonjunktiveErsetzen]\n", + "#display(SentSeg, SolveShorts, SayYes, PassivErsetzen, GenitiveErsetzen, KonjunktiveErsetzen)\n", + "#widgets.GridBox(items, layout=widgets.Layout(grid_template_columns=\"repeat(3, 100px)\"))\n", + "\n", + "\n", + "\n", + "#widgets.HBox(items1)\n", + "#widgets.HBox(items2)\n", + "#widgets.HBox(items3)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "import ipywidgets\n", + "out = 'Hier kommt der übersetzte Text heraus.'\n", + "\n", + "TextFeld.add_class(\"thotext\")\n", + "TextFelddouble.add_class(\"thotext\")\n", + "#display(OutTextFeld)\n", + "items = [SentSeg, SolveShorts, SayYes, PassivErsetzen, GenitiveErsetzen, KonjunktiveErsetzen, FremdWB, Appendixes, Medio] \n", + "#display(SentSeg, SolveShorts, SayYes, PassivErsetzen, GenitiveErsetzen, KonjunktiveErsetzen)\n", + "Grid = widgets.GridBox(items, layout=widgets.Layout(justify_items=\"center\", grid_template_columns=\"repeat(3, 30%)\", grid_gap=\"4.5%\", height=\"320px\"))\n" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "2bfcacdb87c640bb93cde56d3dd5aeaf", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "GridBox(children=(ToggleButton(value=True, description='Eine Aussage pro Satz', layout=Layout(height='100%', w…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "\n", + "display(HTML('
'))\n", + "display(Grid)\n", + "\n", + "\n", + "\n", + "\n", + "def function():\n", + " out = 'Wählen Sie ein Kästchen aus!'\n", + " try:\n", + " insentences, punctuations = oi.CellInputText2SplitsentencesWithspacy(TextFeld.value)\n", + " except:\n", + " OutTextFeld.placeholder = 'Bitte auf die Zeichensetzung achten! '\n", + " return\n", + " \n", + " check = 0\n", + " #print('insentences',insentences)\n", + " #print(punctuations)\n", + " if SayYes.value == True:\n", + " \n", + " print('ersetze Gegenteile..')\n", + " outsentences = sy.replaceOpposites(insentences)\n", + " check = 1\n", + " \n", + " \n", + " \n", + " \n", + " if Appendixes.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('generiere ist-Aussagen..')\n", + " outsentences, punctuations = sent_seg.putAppendixesIntoOwnSentences(insentences, punctuations)\n", + " \n", + " if SentSeg.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('forme zu einem Satz pro Aussage um..')\n", + " sentsegformattedsentences = []\n", + " for sentence in insentences:\n", + " \n", + " sentsegformattedsentences.append([sentence])\n", + " \n", + " #print(sentsegformattedsentences)\n", + " sentences = sent_seg.CommaSentenceOrNot(sentsegformattedsentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetUtteranceNumber(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetQuestionOrNot(sentences)\n", + " #print(sentences)\n", + " sentences, punctuations = sent_seg.AndOrSolver(sentences, punctuations)\n", + " #print(len(punctuations))\n", + " #print('sentences after AndOrSolver', sentences, punctuations)\n", + " sentences = sent_seg.CommaSentenceOrNot(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetUtteranceNumber(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetQuestionOrNot(sentences)\n", + " #print(sentences)\n", + " sentences, punctuations = sent_seg.SplitSentencesIntoHauptNebenTuple(sentences, punctuations)\n", + " #print(len(punctuations))\n", + " #print('sentences after split haupt neben', sentences)\n", + " sentences = sent_seg.CommaSentenceOrNot(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetUtteranceNumber(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetQuestionOrNot(sentences)\n", + " #print(sentences)\n", + " outsentences, punctuations = sent_seg.SplitCommatas(sentences, punctuations)\n", + " #print(len(punctuations))\n", + " #print('out',outsentences)\n", + " #print('out', punctuations)\n", + " check = 1\n", + " \n", + " \n", + " if SolveShorts.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('erklaere Abkuerzungen..')\n", + " outsentences = solSh.ExplainShortsInSentencesWithBrackets(insentences)\n", + " check = 1\n", + " #print(len(punctuations)) \n", + " #print('sentences after solveshorts', outsentences)\n", + " \n", + " if PassivErsetzen.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('ersetze Passiv Formen..')\n", + " outsentences = p2a.replacePassivForms(insentences)\n", + " check = 1\n", + " #print(len(punctuations))\n", + " #print('sentences after p2a', outsentences)\n", + " \n", + " if GenitiveErsetzen.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " #print('replacing genitiv forms with dativ..')\n", + " outsentences = gs.ReplaceGenitivWithDativ(insentences)\n", + " check = 1\n", + " #print(len(punctuations))\n", + " #print('sentences after gs', outsentences)\n", + " \n", + " if check == 1:\n", + " newinsentences = []\n", + " for sentence in outsentences: \n", + " newinsentences.append([word.replace('ö','oe').replace('ü','ue').replace('ä','ae').replace('ß','ss') for word in sentence])\n", + " \n", + " outsentences =newinsentences\n", + " if check != 1:\n", + " newinsentences = []\n", + " for sentence in insentences: \n", + " newinsentences.append([word.replace('ö','oe').replace('ü','ue').replace('ä','ae').replace('ß','ss') for word in sentence])\n", + " \n", + " insentences =newinsentences\n", + " #print()\n", + " if KonjunktiveErsetzen.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('ersetze Konjunktive..')\n", + " \n", + " outsentences = cs.replaceConjunctives(insentences)\n", + " #print('outsentences')\n", + " check = 1\n", + " \n", + " #print('sentences after cs', outsentences)\n", + " print(len(punctuations))\n", + " \n", + " if FremdWB.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('Suche Woerterbucheintraege..')\n", + " \n", + " outsentences, punctuations = fwb.fremdEintragAppend(insentences, punctuations)\n", + " #print('outsentences')\n", + " check = 1\n", + " \n", + " if Medio.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('Ersetze lange Woerter mit Mediopunkten..')\n", + " \n", + " outsentences, punctuations = medi.Medioreplace(insentences, punctuations)\n", + " #print('outsentences')\n", + " check = 1\n", + " #print('sentences after medios', outsentences)\n", + " \n", + " \n", + " #print('sentences after fwb', outsentences)\n", + " \n", + " print(len(punctuations))\n", + " \n", + " if check == 1:\n", + " out = ''\n", + " #print('just before looking if the lenght is the same')\n", + " #print(len(outsentences), len(punctuations))\n", + " if len(outsentences) == len(punctuations):\n", + " #print('the length is the same')\n", + " for n in range(len(outsentences)):\n", + " outsentence = outsentences[n]\n", + " outsentence[0] = outsentence[0].title()\n", + " out += ' '.join(outsentence) + punctuations[n] + '\\n'\n", + " \n", + " \n", + " OutTextFeld.value = out\n", + " TextFelddouble.value = TextFeld.value\n", + " display(TextFelddouble)\n", + " \n", + " return \n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "scrolled": false + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "2da49b6bc0c64b468368c639db95a1a6", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "interactive(children=(Button(description='Übersetzen in Leichte Sprache', style=ButtonStyle()), Output()), _do…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "#from IPython.display import Image\n", + "#i = Image(filename='Babelfish.png')\n", + "\n", + "#i.width = '60%'\n", + "#display(i)\n", + "\n", + "#print(widgets.interact_manual.opts)\n", + "\n", + "widgets.interact_manual.opts['manual_name']= 'Übersetzen in Leichte Sprache'\n", + "ola = widgets.interact_manual(function)\n", + "ola.widget.children[0].style.button_color = 'lightgreen'\n", + "ola.widget.children[0].layout.height = '60px'\n", + "ola.widget.children[0].layout.width = '99%'\n", + "\n", + "#widgets.GridBox([ola], layout=widgets.Layout(grid_template_columns=\"repeat(2, 300px)\"))" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "16d4e37ff391417f8844c35944a3f1af", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Textarea(value='', layout=Layout(height='180px', width='99%'), placeholder='Hier kommt der übersetzte Text her…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "OutTextFeld = ipywidgets.Textarea(placeholder=out, disabled=False)\n", + "OutTextFeld.layout.height = '180px'\n", + "OutTextFeld.layout.width = '99%'\n", + "OutTextFeld.add_class(\"thetext\")\n", + "display(OutTextFeld)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [], + "source": [ + "beschreibung = 'Textfeld für die verbesserte Übersetzung. Satzzeichen bitte nicht vergessen! \\nFalls ein neuer Eintrag ins Fremdwörterbuch vorgenommen werden soll, schreibe einfach unter die Verbesserungen einen Eintrag der Form: [\\'Abfall\\', \\'Abfall sind Sachen die wir nicht mehr brauchen\\'] \\nFalls ein neuer Eintrag in die Mediopunkte-Datenbank vorgenommen werden soll, bitte schreibe unter die Verbesserungen einen Eintrag der Form: [\\'Mediopunkt\\', \\'Medio·punkt\\']' \n", + "VerbeTextFeld = ipywidgets.Textarea(placeholder=beschreibung, disabled=False)\n", + "VerbeTextFeld.layout.height = '180px'\n", + "VerbeTextFeld.layout.width = '99%'\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "\n", + "def Absendefunction():\n", + " \n", + " \n", + "\n", + " \n", + " #print(VerbeTextFeld.value)\n", + " #print(TextFeld.value)\n", + " #print(OutTextFeld.value)\n", + " \n", + " try:\n", + "\n", + " insentences, punctuations = oi.CellInputText2SplitsentencesWithspacy(VerbeTextFeld.value)\n", + " insentences1, punctuations1 = oi.CellInputText2SplitsentencesWithspacy(TextFeld.value)\n", + " insentences2, punctuations2 = oi.CellInputText2SplitsentencesWithspacy(OutTextFeld.value)\n", + "\n", + " #print(insentences2)\n", + "\n", + " #print(insentences, punctuations)\n", + " indexDerVerbesserungen = 0\n", + " number = 0\n", + " with open('Verbesserungen/indexDerVerbesserungen.txt', 'r') as dok:\n", + " for number in dok:\n", + " number = int(number)\n", + " if number >= 0:\n", + " indexDerVerbesserungen = number\n", + " number += 1\n", + "\n", + " with open('Verbesserungen/indexDerVerbesserungen.txt', 'w') as dokk:\n", + " dokk.write(str(number))\n", + "\n", + "\n", + " with open('Verbesserungen/Verbesserungen' + str(number) + '.txt','w+') as doc:\n", + " for n in range(len(insentences)):\n", + " npunct = punctuations[n]\n", + " writeline = insentences[n]+ [npunct]\n", + "\n", + " writestring = ' '.join(writeline)\n", + "\n", + " doc.write(writestring + '\\n')\n", + "\n", + " with open('Verbesserungen/Input' + str(number) + '.txt','w+') as docc:\n", + " for n in range(len(insentences1)):\n", + " npunct = punctuations1[n]\n", + " writeline = insentences1[n]+ [npunct]\n", + "\n", + " writestring = ' '.join(writeline)\n", + "\n", + " docc.write(writestring + '\\n')\n", + " with open('Verbesserungen/Output' + str(number) + '.txt','w+') as dock:\n", + " #print(insentences2)\n", + " for n in range(len(insentences2)):\n", + " #print(len(insentences2))\n", + "\n", + " #print(punctuations2)\n", + " npunct = punctuations2[n]\n", + " writeline = insentences2[n]+ [npunct]\n", + "\n", + " writestring = ' '.join(writeline)\n", + "\n", + " dock.write(writestring + '\\n')\n", + "\n", + " VerbeTextFeld.value = ''\n", + " OutTextFeld.value = ''\n", + " VerbeTextFeld.placeholder = beschreibung\n", + " OutTextFeld.placeholder = 'Hier kommt der übersetzte Text raus.'\n", + " except:\n", + " VerbeTextFeld.placeholder = 'Es gab einen Fehler. Eventuell ist die Zeichensetzung nicht ok. \\n \\n' + beschreibung\n", + " \n", + " \n", + " return \n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "dd913832ab444630a3842fcf7fd8609b", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Textarea(value='', layout=Layout(height='180px', width='99%'), placeholder=\"Textfeld für die verbesserte Übers…" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "79ed4f2f30324ca582faa59671224d92", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "interactive(children=(Button(description='Absenden', style=ButtonStyle()), Output()), _dom_classes=('widget-in…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "VerbeTextFeld.add_class(\"thetext3\")\n", + "display(VerbeTextFeld)\n", + "display(HTML('
'))\n", + "widgets.interact_manual.opts['manual_name']= 'Absenden'\n", + "AbsendenUndSchreiben = widgets.interact_manual(Absendefunction)\n", + "AbsendenUndSchreiben.widget.children[0].style.button_color = 'lightblue'\n", + "AbsendenUndSchreiben.widget.children[0].layout.height = '60px'\n", + "AbsendenUndSchreiben.widget.children[0].layout.width = '99%'\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%html\n", + "" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%html\n", + "" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "data": { + "text/html": [ + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%html\n", + "" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "celltoolbar": "Raw Cell Format", + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.5.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/Prototyp/.ipynb_checkpoints/.Prototype-5-checkpoint.ipynb b/Prototyp/.ipynb_checkpoints/.Prototype-5-checkpoint.ipynb new file mode 100644 index 00000000..50a76c09 --- /dev/null +++ b/Prototyp/.ipynb_checkpoints/.Prototype-5-checkpoint.ipynb @@ -0,0 +1,2313 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "#from oi import *\n", + "\n", + "#oi = oi()\n", + "\n", + "#import ipyvuetify as v\n", + "\n", + "#state = False\n", + "#oi.toggle_code(state)\n", + "\n", + "#button = widgets.ToggleButton(state, description = button_descriptions[state])\n", + "\n", + "\n", + "#button.observe(oi.button_action, \"value\")\n", + "\n", + "#button.layout.height = '50px'\n", + "#button.layout.width = '100%'\n", + "#button.add_class(\"thobutton\")\n", + "\n", + "#display(button)\n", + "#button.button_style = 'danger'\n" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "\n", + "

Ein Klick auf das Logo - und es geht zum Code

\n", + "\n", + "\n", + " \n", + "\n", + " \n", + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%html\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "\n", + "

Ein Klick auf das Logo - und es geht zum Code

\n", + "\n", + "\n", + " \n", + "\n", + " \n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "#%%html\n", + "#\n", + "#\n", + "#\n", + "#\n", + "#\n", + "#

Ein Klick auf das Logo - und es geht zum Code

\n", + "#" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [], + "source": [ + "#%%html\n", + "#" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "#from ipywidgets import widgets\n", + "#button = widgets.Button(description='Click me')\n", + "#display(button)\n", + "\n", + "#def on_button_clicked(b):\n", + "# print('button clicked')\n", + "\n", + "#button.on_click(on_button_clicked)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "\n", + "# importing the libraries\n", + "#print('importing libraries')\n", + "#from SolveShorts import *\n", + "#import SentSeg\n", + "#from SayYes import *\n", + "#from Passiv2Aktiv import *\n", + "#from GenitivSolve import *\n", + "#from ConjunctSolve import *\n", + "#from FremdWB import *\n", + "#from Medio import *\n", + "#from oi import *\n", + "#print('done')\n", + "\n", + "\n", + "# Initializing the libraries\n", + "#print('initializing the libraries')\n", + "#print('1')\n", + "#solSh = SolveShorts('hkldbShorts.hkl', 'hkldbShorts_All.hkl')\n", + "#print('2')\n", + "#sent_seg = SentSeg.SentSeg('de')\n", + "#print('3')\n", + "#sy = SayYes(None, None)\n", + "#print('4')\n", + "#p2a = Passiv2Aktiv(None, None, None)\n", + "#print('5')\n", + "#gs = GenitivSolve()\n", + "#print('6')\n", + "#cs = ConjunctSolve(None,None)\n", + "#print('7')\n", + "#oi = oi()\n", + "#print('8')\n", + "#fwb = FremdWB(None,None)\n", + "#print('9')\n", + "#medi = Medio(None,None)\n", + "#print('done')\n", + "\n", + "\n", + "# loading the databases and models\n", + "#print('loading SolveShorts Databases')\n", + "#solSh.load_DB_into_FASTsearch()\n", + "#print('loading SentSeg Databases')\n", + "#sent_seg.LoadSentGlueSGDandGSUtils()\n", + "#print('loading SayYes Databases')\n", + "#sy.load_DB_into_FASTsearch()\n", + "#print('loading passiv2active Databases')\n", + "#p2a.load_DB_into_FASTsearch()\n", + "#print('loading conjunctivesolve Databases')\n", + "#cs.load_DB_into_FASTsearch()\n", + "#print('loading the fremdwb Databases')\n", + "#fwb.load_DB_into_FASTsearch()\n", + "#print('loading the mediodot Databases')\n", + "#medi.load_DB_into_FASTsearch()\n", + "\n", + "#print('done')\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "106e70dd208f4de29ae10874823d30a8", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Textarea(value='', layout=Layout(height='180px', width='99%'), placeholder='Hier den Text eingeben, darunter k…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "\n", + "#print('done')\n", + "\n", + "#print('loading passiv2active Databases')\n", + "#from Passiv2Aktiv import *\n", + "#p2a = Passiv2Aktiv(None, None, None)\n", + "#p2a.load_DB_into_FASTsearch()\n", + "#print('done')\n", + "#print('loading genitiv solve')\n", + "#from GenitivSolve import *\n", + "#gs = GenitivSolve()\n", + "\n", + "#from FremdWB import *\n", + "#fwb = FremdWB(None,None)\n", + "#fwb.load_DB_into_FASTsearch()\n", + "\n", + "#from SolveShorts import *\n", + "#print('loading SolveShorts Databases')\n", + "#solSh.load_DB_into_FASTsearch()\n", + "\n", + "#from SayYes import *\n", + "#sy = SayYes(None, None)\n", + "#print('loading SayYes Databases')\n", + "#sy.load_DB_into_FASTsearch()\n", + "\n", + "#import SentSeg\n", + "#sent_seg = SentSeg.SentSeg('de')\n", + "#print('loading SentSeg Databases')\n", + "#sent_seg.LoadSentGlueSGDandGSUtils()\n", + "#print('loading conjunctsolve')\n", + "#from ConjunctSolve import *\n", + "#cs = ConjunctSolve(None,None)\n", + "#print('done')\n", + "#print('loading conjunctivesolve Databases')\n", + "#cs.load_DB_into_FASTsearch()\n", + "#print('done')\n", + "#from oi import *\n", + "#oi = oi()\n", + "\n", + "#print('loading session..')\n", + "\n", + "#print('done')\n", + "import dill\n", + "dill.load_session('voilastate.db')\n", + "\n", + "#from SolveShorts import *\n", + "#print('loading SolveShorts Databases')\n", + "#solSh.load_DB_into_FASTsearch()\n", + "\n", + "#import SentSeg\n", + "#sent_seg = SentSeg.SentSeg('de')\n", + "#print('loading SentSeg Databases')\n", + "#sent_seg.LoadSentGlueSGDandGSUtils()\n", + "\n", + "#from FremdWB import *\n", + "#fwb = FremdWB(None,None)\n", + "#fwb.load_DB_into_FASTsearch()\n", + "\n", + "#from Medio import *\n", + "#medi = Medio(None,None)\n", + "#medi.load_DB_into_FASTsearch()\n", + "\n", + "\n", + "#import dill\n", + "#print('dumping the session')\n", + "#dill.dump_session('voilastate.db')\n", + "#print('done')\n", + "\n", + "#from oi import *\n", + "#oi = oi()\n", + "\n", + "import ipywidgets as widgets\n", + "\n", + "TextFeld = widgets.Textarea(placeholder='Hier den Text eingeben, darunter können die Module aktiviert(grün) oder deaktiviert(pink) werden', disabled=False)\n", + "#print(TextFeld.layout.height)\n", + "TextFeld.layout.height = '180px'\n", + "TextFeld.layout.width = '99%'\n", + "\n", + "TextFelddouble = widgets.Textarea(placeholder='Hier den Text eingeben, darunter können die Module aktiviert(grün) oder deaktiviert(pink) werden', disabled=False)\n", + "#print(TextFeld.layout.height)\n", + "TextFelddouble.layout.height = '180px'\n", + "TextFelddouble.layout.width = '99%'\n", + "TextFelddouble.disabled=True\n", + "\n", + "display(TextFeld)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "\n", + "dawidth = '100%'\n", + "daheight = '100%'\n", + "KonjunktiveErsetzen = widgets.ToggleButton(\n", + " value=False,\n", + " description='Konjunktive ersetzen',\n", + " disabled=False,\n", + ")\n", + "KonjunktiveErsetzen.layout.width = dawidth\n", + "KonjunktiveErsetzen.layout.height = '80%'\n", + "\n", + "GenitiveErsetzen = widgets.ToggleButton(\n", + " value=True,\n", + " description='Genitiv ersetzen',\n", + " disabled=False\n", + ")\n", + "GenitiveErsetzen.layout.width = '60%'\n", + "GenitiveErsetzen.layout.height = daheight\n", + "\n", + "PassivErsetzen = widgets.ToggleButton(\n", + " value=True,\n", + " description='Passiv ersetzen',\n", + " disabled=False\n", + ")\n", + "PassivErsetzen.layout.width = '70%'\n", + "PassivErsetzen.layout.height = '90%'\n", + "\n", + "SayYes = widgets.ToggleButton(\n", + " value=True,\n", + " description='Verneinungen ersetzen',\n", + " disabled=False\n", + ")\n", + "SayYes.layout.width = '80%'\n", + "SayYes.layout.height = '80%'\n", + "SentSeg = widgets.ToggleButton(\n", + " value=True,\n", + " description='Eine Aussage pro Satz',\n", + " disabled=False\n", + ")\n", + "SentSeg.layout.width = '60%'\n", + "SentSeg.layout.height = daheight\n", + "SolveShorts = widgets.ToggleButton(\n", + " value=False,\n", + " description='Abkürzungen erklären',\n", + " disabled=False\n", + ")\n", + "SolveShorts.layout.width = '80%'\n", + "SolveShorts.layout.height = '90%'\n", + "FremdWB = widgets.ToggleButton(\n", + " value=True,\n", + " description='FremdWoerterbuch',\n", + " disabled=False\n", + ")\n", + "FremdWB.layout.width = '90%'\n", + "FremdWB.layout.height = '90%'\n", + "\n", + "Appendixes = widgets.ToggleButton(\n", + " value=True,\n", + " description='Charakterisierung pro Satz',\n", + " disabled=False\n", + ")\n", + "Appendixes.layout.width = '120%'\n", + "Appendixes.layout.height = '80%'\n", + "\n", + "Medio = widgets.ToggleButton(\n", + " value=True,\n", + " description='Mediopunkte',\n", + " disabled=False\n", + ")\n", + "Medio.layout.width = '50%'\n", + "Medio.layout.height = '90%'\n", + "\n", + "#items1 = [SentSeg, SolveShorts]\n", + "#items2 = [SayYes, PassivErsetzen]\n", + "#items3 = [GenitiveErsetzen, KonjunktiveErsetzen]\n", + "#items = [Textfeld, SentSeg, SolveShorts, SayYes, PassivErsetzen, GenitiveErsetzen, KonjunktiveErsetzen]\n", + "#display(SentSeg, SolveShorts, SayYes, PassivErsetzen, GenitiveErsetzen, KonjunktiveErsetzen)\n", + "#widgets.GridBox(items, layout=widgets.Layout(grid_template_columns=\"repeat(3, 100px)\"))\n", + "\n", + "\n", + "\n", + "#widgets.HBox(items1)\n", + "#widgets.HBox(items2)\n", + "#widgets.HBox(items3)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "import ipywidgets\n", + "out = 'Hier kommt der übersetzte Text heraus.'\n", + "\n", + "TextFeld.add_class(\"thotext\")\n", + "TextFelddouble.add_class(\"thotext\")\n", + "#display(OutTextFeld)\n", + "items = [SentSeg, SolveShorts, SayYes, PassivErsetzen, GenitiveErsetzen, KonjunktiveErsetzen, FremdWB, Appendixes, Medio] \n", + "#display(SentSeg, SolveShorts, SayYes, PassivErsetzen, GenitiveErsetzen, KonjunktiveErsetzen)\n", + "Grid = widgets.GridBox(items, layout=widgets.Layout(justify_items=\"center\", grid_template_columns=\"repeat(3, 30%)\", grid_gap=\"4.5%\", height=\"320px\"))\n" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "c08292c98ddf447ca1c19117241980b8", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "GridBox(children=(ToggleButton(value=True, description='Eine Aussage pro Satz', layout=Layout(height='100%', w…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "\n", + "display(HTML('
'))\n", + "display(Grid)\n", + "\n", + "\n", + "\n", + "\n", + "def function():\n", + " out = 'Wählen Sie ein Kästchen aus!'\n", + " try:\n", + " insentences, punctuations = oi.CellInputText2SplitsentencesWithspacy(TextFeld.value)\n", + " except:\n", + " OutTextFeld.placeholder = 'Bitte auf die Zeichensetzung achten! '\n", + " return\n", + " \n", + " check = 0\n", + " #print('insentences',insentences)\n", + " #print(punctuations)\n", + " if SayYes.value == True:\n", + " \n", + " print('ersetze Gegenteile..')\n", + " outsentences = sy.replaceOpposites(insentences)\n", + " check = 1\n", + " \n", + " \n", + " \n", + " \n", + " if Appendixes.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('generiere ist-Aussagen..')\n", + " outsentences, punctuations = sent_seg.putAppendixesIntoOwnSentences(insentences, punctuations)\n", + " \n", + " if SentSeg.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('forme zu einem Satz pro Aussage um..')\n", + " sentsegformattedsentences = []\n", + " for sentence in insentences:\n", + " \n", + " sentsegformattedsentences.append([sentence])\n", + " \n", + " #print(sentsegformattedsentences)\n", + " sentences = sent_seg.CommaSentenceOrNot(sentsegformattedsentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetUtteranceNumber(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetQuestionOrNot(sentences)\n", + " #print(sentences)\n", + " sentences, punctuations = sent_seg.AndOrSolver(sentences, punctuations)\n", + " #print(len(punctuations))\n", + " #print('sentences after AndOrSolver', sentences, punctuations)\n", + " sentences = sent_seg.CommaSentenceOrNot(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetUtteranceNumber(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetQuestionOrNot(sentences)\n", + " #print(sentences)\n", + " sentences, punctuations = sent_seg.SplitSentencesIntoHauptNebenTuple(sentences, punctuations)\n", + " #print(len(punctuations))\n", + " #print('sentences after split haupt neben', sentences)\n", + " sentences = sent_seg.CommaSentenceOrNot(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetUtteranceNumber(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetQuestionOrNot(sentences)\n", + " #print(sentences)\n", + " outsentences, punctuations = sent_seg.SplitCommatas(sentences, punctuations)\n", + " #print(len(punctuations))\n", + " #print('out',outsentences)\n", + " #print('out', punctuations)\n", + " check = 1\n", + " \n", + " \n", + " if SolveShorts.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('erklaere Abkuerzungen..')\n", + " outsentences = solSh.ExplainShortsInSentencesWithBrackets(insentences)\n", + " check = 1\n", + " #print(len(punctuations)) \n", + " #print('sentences after solveshorts', outsentences)\n", + " \n", + " if PassivErsetzen.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('ersetze Passiv Formen..')\n", + " outsentences = p2a.replacePassivForms(insentences)\n", + " check = 1\n", + " #print(len(punctuations))\n", + " #print('sentences after p2a', outsentences)\n", + " \n", + " if GenitiveErsetzen.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " #print('replacing genitiv forms with dativ..')\n", + " outsentences = gs.ReplaceGenitivWithDativ(insentences)\n", + " check = 1\n", + " #print(len(punctuations))\n", + " #print('sentences after gs', outsentences)\n", + " \n", + " if check == 1:\n", + " newinsentences = []\n", + " for sentence in outsentences: \n", + " newinsentences.append([word.replace('ö','oe').replace('ü','ue').replace('ä','ae').replace('ß','ss') for word in sentence])\n", + " \n", + " outsentences =newinsentences\n", + " if check != 1:\n", + " newinsentences = []\n", + " for sentence in insentences: \n", + " newinsentences.append([word.replace('ö','oe').replace('ü','ue').replace('ä','ae').replace('ß','ss') for word in sentence])\n", + " \n", + " insentences =newinsentences\n", + " #print()\n", + " if KonjunktiveErsetzen.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('ersetze Konjunktive..')\n", + " \n", + " outsentences = cs.replaceConjunctives(insentences)\n", + " #print('outsentences')\n", + " check = 1\n", + " \n", + " #print('sentences after cs', outsentences)\n", + " print(len(punctuations))\n", + " \n", + " if FremdWB.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('Suche Woerterbucheintraege..')\n", + " \n", + " outsentences, punctuations = fwb.fremdEintragAppend(insentences, punctuations)\n", + " #print('outsentences')\n", + " check = 1\n", + " \n", + " if Medio.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('Ersetze lange Woerter mit Mediopunkten..')\n", + " \n", + " outsentences, punctuations = medi.Medioreplace(insentences, punctuations)\n", + " #print('outsentences')\n", + " check = 1\n", + " #print('sentences after medios', outsentences)\n", + " \n", + " \n", + " #print('sentences after fwb', outsentences)\n", + " \n", + " print(len(punctuations))\n", + " \n", + " if check == 1:\n", + " out = ''\n", + " #print('just before looking if the lenght is the same')\n", + " #print(len(outsentences), len(punctuations))\n", + " if len(outsentences) == len(punctuations):\n", + " #print('the length is the same')\n", + " for n in range(len(outsentences)):\n", + " outsentence = outsentences[n]\n", + " outsentence[0] = outsentence[0].title()\n", + " out += ' '.join(outsentence) + punctuations[n] + '\\n'\n", + " \n", + " \n", + " OutTextFeld.value = out\n", + " TextFelddouble.value = TextFeld.value\n", + " display(TextFelddouble)\n", + " \n", + " return \n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "3ca86c6e7e39437eafa36439e3337b42", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "interactive(children=(Button(description='Übersetzen in Leichte Sprache', style=ButtonStyle()), Output()), _do…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "#from IPython.display import Image\n", + "#i = Image(filename='Babelfish.png')\n", + "\n", + "#i.width = '60%'\n", + "#display(i)\n", + "\n", + "#print(widgets.interact_manual.opts)\n", + "\n", + "widgets.interact_manual.opts['manual_name']= 'Übersetzen in Leichte Sprache'\n", + "ola = widgets.interact_manual(function)\n", + "ola.widget.children[0].style.button_color = 'lightgreen'\n", + "ola.widget.children[0].layout.height = '60px'\n", + "ola.widget.children[0].layout.width = '99%'\n", + "\n", + "#widgets.GridBox([ola], layout=widgets.Layout(grid_template_columns=\"repeat(2, 300px)\"))" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "0d6f03c93f0147cd9f33d2a053672b0c", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Textarea(value='', layout=Layout(height='180px', width='99%'), placeholder='Hier kommt der übersetzte Text her…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "OutTextFeld = ipywidgets.Textarea(placeholder=out, disabled=False)\n", + "OutTextFeld.layout.height = '180px'\n", + "OutTextFeld.layout.width = '99%'\n", + "OutTextFeld.add_class(\"thetext\")\n", + "display(OutTextFeld)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [], + "source": [ + "beschreibung = 'Textfeld für die verbesserte Übersetzung. Satzzeichen bitte nicht vergessen! \\nFalls ein neuer Eintrag ins Fremdwörterbuch vorgenommen werden soll, schreibe einfach unter die Verbesserungen einen Eintrag der Form: [\\'Abfall\\', \\'Abfall sind Sachen die wir nicht mehr brauchen\\'] \\nFalls ein neuer Eintrag in die Mediopunkte-Datenbank vorgenommen werden soll, bitte schreibe unter die Verbesserungen einen Eintrag der Form: [\\'Mediopunkt\\', \\'Medio·punkt\\']' \n", + "VerbeTextFeld = ipywidgets.Textarea(placeholder=beschreibung, disabled=False)\n", + "VerbeTextFeld.layout.height = '180px'\n", + "VerbeTextFeld.layout.width = '99%'\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "\n", + "def Absendefunction():\n", + " \n", + " \n", + "\n", + " \n", + " #print(VerbeTextFeld.value)\n", + " #print(TextFeld.value)\n", + " #print(OutTextFeld.value)\n", + " \n", + " try:\n", + "\n", + " insentences, punctuations = oi.CellInputText2SplitsentencesWithspacy(VerbeTextFeld.value)\n", + " insentences1, punctuations1 = oi.CellInputText2SplitsentencesWithspacy(TextFeld.value)\n", + " insentences2, punctuations2 = oi.CellInputText2SplitsentencesWithspacy(OutTextFeld.value)\n", + "\n", + " #print(insentences2)\n", + "\n", + " #print(insentences, punctuations)\n", + " indexDerVerbesserungen = 0\n", + " number = 0\n", + " with open('Verbesserungen/indexDerVerbesserungen.txt', 'r') as dok:\n", + " for number in dok:\n", + " number = int(number)\n", + " if number >= 0:\n", + " indexDerVerbesserungen = number\n", + " number += 1\n", + "\n", + " with open('Verbesserungen/indexDerVerbesserungen.txt', 'w') as dokk:\n", + " dokk.write(str(number))\n", + "\n", + "\n", + " with open('Verbesserungen/Verbesserungen' + str(number) + '.txt','w+') as doc:\n", + " for n in range(len(insentences)):\n", + " npunct = punctuations[n]\n", + " writeline = insentences[n]+ [npunct]\n", + "\n", + " writestring = ' '.join(writeline)\n", + "\n", + " doc.write(writestring + '\\n')\n", + "\n", + " with open('Verbesserungen/Input' + str(number) + '.txt','w+') as docc:\n", + " for n in range(len(insentences1)):\n", + " npunct = punctuations1[n]\n", + " writeline = insentences1[n]+ [npunct]\n", + "\n", + " writestring = ' '.join(writeline)\n", + "\n", + " docc.write(writestring + '\\n')\n", + " with open('Verbesserungen/Output' + str(number) + '.txt','w+') as dock:\n", + " #print(insentences2)\n", + " for n in range(len(insentences2)):\n", + " #print(len(insentences2))\n", + "\n", + " #print(punctuations2)\n", + " npunct = punctuations2[n]\n", + " writeline = insentences2[n]+ [npunct]\n", + "\n", + " writestring = ' '.join(writeline)\n", + "\n", + " dock.write(writestring + '\\n')\n", + "\n", + " VerbeTextFeld.value = ''\n", + " OutTextFeld.value = ''\n", + " VerbeTextFeld.placeholder = beschreibung\n", + " OutTextFeld.placeholder = 'Hier kommt der übersetzte Text raus.'\n", + " except:\n", + " VerbeTextFeld.placeholder = 'Es gab einen Fehler. Eventuell ist die Zeichensetzung nicht ok. \\n \\n' + beschreibung\n", + " \n", + " \n", + " return \n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "1713cde35a884104b20056d5694d168a", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Textarea(value='', layout=Layout(height='180px', width='99%'), placeholder=\"Textfeld für die verbesserte Übers…" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "d4100a2d84d34630acf974f78d316abc", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "interactive(children=(Button(description='Absenden', style=ButtonStyle()), Output()), _dom_classes=('widget-in…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "VerbeTextFeld.add_class(\"thetext3\")\n", + "display(VerbeTextFeld)\n", + "display(HTML('
'))\n", + "widgets.interact_manual.opts['manual_name']= 'Absenden'\n", + "AbsendenUndSchreiben = widgets.interact_manual(Absendefunction)\n", + "AbsendenUndSchreiben.widget.children[0].style.button_color = 'lightblue'\n", + "AbsendenUndSchreiben.widget.children[0].layout.height = '60px'\n", + "AbsendenUndSchreiben.widget.children[0].layout.width = '99%'\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%html\n", + "" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%html\n", + "" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "data": { + "text/html": [ + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%html\n", + "" + ] + } + ], + "metadata": { + "celltoolbar": "Raw Cell Format", + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.5.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/Prototyp/.ipynb_checkpoints/.Prototype-6-checkpoint.ipynb b/Prototyp/.ipynb_checkpoints/.Prototype-6-checkpoint.ipynb new file mode 100644 index 00000000..50a76c09 --- /dev/null +++ b/Prototyp/.ipynb_checkpoints/.Prototype-6-checkpoint.ipynb @@ -0,0 +1,2313 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "#from oi import *\n", + "\n", + "#oi = oi()\n", + "\n", + "#import ipyvuetify as v\n", + "\n", + "#state = False\n", + "#oi.toggle_code(state)\n", + "\n", + "#button = widgets.ToggleButton(state, description = button_descriptions[state])\n", + "\n", + "\n", + "#button.observe(oi.button_action, \"value\")\n", + "\n", + "#button.layout.height = '50px'\n", + "#button.layout.width = '100%'\n", + "#button.add_class(\"thobutton\")\n", + "\n", + "#display(button)\n", + "#button.button_style = 'danger'\n" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "\n", + "

Ein Klick auf das Logo - und es geht zum Code

\n", + "\n", + "\n", + " \n", + "\n", + " \n", + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%html\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "\n", + "

Ein Klick auf das Logo - und es geht zum Code

\n", + "\n", + "\n", + " \n", + "\n", + " \n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "#%%html\n", + "#\n", + "#\n", + "#\n", + "#\n", + "#\n", + "#

Ein Klick auf das Logo - und es geht zum Code

\n", + "#" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [], + "source": [ + "#%%html\n", + "#" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "#from ipywidgets import widgets\n", + "#button = widgets.Button(description='Click me')\n", + "#display(button)\n", + "\n", + "#def on_button_clicked(b):\n", + "# print('button clicked')\n", + "\n", + "#button.on_click(on_button_clicked)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "\n", + "# importing the libraries\n", + "#print('importing libraries')\n", + "#from SolveShorts import *\n", + "#import SentSeg\n", + "#from SayYes import *\n", + "#from Passiv2Aktiv import *\n", + "#from GenitivSolve import *\n", + "#from ConjunctSolve import *\n", + "#from FremdWB import *\n", + "#from Medio import *\n", + "#from oi import *\n", + "#print('done')\n", + "\n", + "\n", + "# Initializing the libraries\n", + "#print('initializing the libraries')\n", + "#print('1')\n", + "#solSh = SolveShorts('hkldbShorts.hkl', 'hkldbShorts_All.hkl')\n", + "#print('2')\n", + "#sent_seg = SentSeg.SentSeg('de')\n", + "#print('3')\n", + "#sy = SayYes(None, None)\n", + "#print('4')\n", + "#p2a = Passiv2Aktiv(None, None, None)\n", + "#print('5')\n", + "#gs = GenitivSolve()\n", + "#print('6')\n", + "#cs = ConjunctSolve(None,None)\n", + "#print('7')\n", + "#oi = oi()\n", + "#print('8')\n", + "#fwb = FremdWB(None,None)\n", + "#print('9')\n", + "#medi = Medio(None,None)\n", + "#print('done')\n", + "\n", + "\n", + "# loading the databases and models\n", + "#print('loading SolveShorts Databases')\n", + "#solSh.load_DB_into_FASTsearch()\n", + "#print('loading SentSeg Databases')\n", + "#sent_seg.LoadSentGlueSGDandGSUtils()\n", + "#print('loading SayYes Databases')\n", + "#sy.load_DB_into_FASTsearch()\n", + "#print('loading passiv2active Databases')\n", + "#p2a.load_DB_into_FASTsearch()\n", + "#print('loading conjunctivesolve Databases')\n", + "#cs.load_DB_into_FASTsearch()\n", + "#print('loading the fremdwb Databases')\n", + "#fwb.load_DB_into_FASTsearch()\n", + "#print('loading the mediodot Databases')\n", + "#medi.load_DB_into_FASTsearch()\n", + "\n", + "#print('done')\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "106e70dd208f4de29ae10874823d30a8", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Textarea(value='', layout=Layout(height='180px', width='99%'), placeholder='Hier den Text eingeben, darunter k…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "\n", + "#print('done')\n", + "\n", + "#print('loading passiv2active Databases')\n", + "#from Passiv2Aktiv import *\n", + "#p2a = Passiv2Aktiv(None, None, None)\n", + "#p2a.load_DB_into_FASTsearch()\n", + "#print('done')\n", + "#print('loading genitiv solve')\n", + "#from GenitivSolve import *\n", + "#gs = GenitivSolve()\n", + "\n", + "#from FremdWB import *\n", + "#fwb = FremdWB(None,None)\n", + "#fwb.load_DB_into_FASTsearch()\n", + "\n", + "#from SolveShorts import *\n", + "#print('loading SolveShorts Databases')\n", + "#solSh.load_DB_into_FASTsearch()\n", + "\n", + "#from SayYes import *\n", + "#sy = SayYes(None, None)\n", + "#print('loading SayYes Databases')\n", + "#sy.load_DB_into_FASTsearch()\n", + "\n", + "#import SentSeg\n", + "#sent_seg = SentSeg.SentSeg('de')\n", + "#print('loading SentSeg Databases')\n", + "#sent_seg.LoadSentGlueSGDandGSUtils()\n", + "#print('loading conjunctsolve')\n", + "#from ConjunctSolve import *\n", + "#cs = ConjunctSolve(None,None)\n", + "#print('done')\n", + "#print('loading conjunctivesolve Databases')\n", + "#cs.load_DB_into_FASTsearch()\n", + "#print('done')\n", + "#from oi import *\n", + "#oi = oi()\n", + "\n", + "#print('loading session..')\n", + "\n", + "#print('done')\n", + "import dill\n", + "dill.load_session('voilastate.db')\n", + "\n", + "#from SolveShorts import *\n", + "#print('loading SolveShorts Databases')\n", + "#solSh.load_DB_into_FASTsearch()\n", + "\n", + "#import SentSeg\n", + "#sent_seg = SentSeg.SentSeg('de')\n", + "#print('loading SentSeg Databases')\n", + "#sent_seg.LoadSentGlueSGDandGSUtils()\n", + "\n", + "#from FremdWB import *\n", + "#fwb = FremdWB(None,None)\n", + "#fwb.load_DB_into_FASTsearch()\n", + "\n", + "#from Medio import *\n", + "#medi = Medio(None,None)\n", + "#medi.load_DB_into_FASTsearch()\n", + "\n", + "\n", + "#import dill\n", + "#print('dumping the session')\n", + "#dill.dump_session('voilastate.db')\n", + "#print('done')\n", + "\n", + "#from oi import *\n", + "#oi = oi()\n", + "\n", + "import ipywidgets as widgets\n", + "\n", + "TextFeld = widgets.Textarea(placeholder='Hier den Text eingeben, darunter können die Module aktiviert(grün) oder deaktiviert(pink) werden', disabled=False)\n", + "#print(TextFeld.layout.height)\n", + "TextFeld.layout.height = '180px'\n", + "TextFeld.layout.width = '99%'\n", + "\n", + "TextFelddouble = widgets.Textarea(placeholder='Hier den Text eingeben, darunter können die Module aktiviert(grün) oder deaktiviert(pink) werden', disabled=False)\n", + "#print(TextFeld.layout.height)\n", + "TextFelddouble.layout.height = '180px'\n", + "TextFelddouble.layout.width = '99%'\n", + "TextFelddouble.disabled=True\n", + "\n", + "display(TextFeld)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "\n", + "dawidth = '100%'\n", + "daheight = '100%'\n", + "KonjunktiveErsetzen = widgets.ToggleButton(\n", + " value=False,\n", + " description='Konjunktive ersetzen',\n", + " disabled=False,\n", + ")\n", + "KonjunktiveErsetzen.layout.width = dawidth\n", + "KonjunktiveErsetzen.layout.height = '80%'\n", + "\n", + "GenitiveErsetzen = widgets.ToggleButton(\n", + " value=True,\n", + " description='Genitiv ersetzen',\n", + " disabled=False\n", + ")\n", + "GenitiveErsetzen.layout.width = '60%'\n", + "GenitiveErsetzen.layout.height = daheight\n", + "\n", + "PassivErsetzen = widgets.ToggleButton(\n", + " value=True,\n", + " description='Passiv ersetzen',\n", + " disabled=False\n", + ")\n", + "PassivErsetzen.layout.width = '70%'\n", + "PassivErsetzen.layout.height = '90%'\n", + "\n", + "SayYes = widgets.ToggleButton(\n", + " value=True,\n", + " description='Verneinungen ersetzen',\n", + " disabled=False\n", + ")\n", + "SayYes.layout.width = '80%'\n", + "SayYes.layout.height = '80%'\n", + "SentSeg = widgets.ToggleButton(\n", + " value=True,\n", + " description='Eine Aussage pro Satz',\n", + " disabled=False\n", + ")\n", + "SentSeg.layout.width = '60%'\n", + "SentSeg.layout.height = daheight\n", + "SolveShorts = widgets.ToggleButton(\n", + " value=False,\n", + " description='Abkürzungen erklären',\n", + " disabled=False\n", + ")\n", + "SolveShorts.layout.width = '80%'\n", + "SolveShorts.layout.height = '90%'\n", + "FremdWB = widgets.ToggleButton(\n", + " value=True,\n", + " description='FremdWoerterbuch',\n", + " disabled=False\n", + ")\n", + "FremdWB.layout.width = '90%'\n", + "FremdWB.layout.height = '90%'\n", + "\n", + "Appendixes = widgets.ToggleButton(\n", + " value=True,\n", + " description='Charakterisierung pro Satz',\n", + " disabled=False\n", + ")\n", + "Appendixes.layout.width = '120%'\n", + "Appendixes.layout.height = '80%'\n", + "\n", + "Medio = widgets.ToggleButton(\n", + " value=True,\n", + " description='Mediopunkte',\n", + " disabled=False\n", + ")\n", + "Medio.layout.width = '50%'\n", + "Medio.layout.height = '90%'\n", + "\n", + "#items1 = [SentSeg, SolveShorts]\n", + "#items2 = [SayYes, PassivErsetzen]\n", + "#items3 = [GenitiveErsetzen, KonjunktiveErsetzen]\n", + "#items = [Textfeld, SentSeg, SolveShorts, SayYes, PassivErsetzen, GenitiveErsetzen, KonjunktiveErsetzen]\n", + "#display(SentSeg, SolveShorts, SayYes, PassivErsetzen, GenitiveErsetzen, KonjunktiveErsetzen)\n", + "#widgets.GridBox(items, layout=widgets.Layout(grid_template_columns=\"repeat(3, 100px)\"))\n", + "\n", + "\n", + "\n", + "#widgets.HBox(items1)\n", + "#widgets.HBox(items2)\n", + "#widgets.HBox(items3)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "import ipywidgets\n", + "out = 'Hier kommt der übersetzte Text heraus.'\n", + "\n", + "TextFeld.add_class(\"thotext\")\n", + "TextFelddouble.add_class(\"thotext\")\n", + "#display(OutTextFeld)\n", + "items = [SentSeg, SolveShorts, SayYes, PassivErsetzen, GenitiveErsetzen, KonjunktiveErsetzen, FremdWB, Appendixes, Medio] \n", + "#display(SentSeg, SolveShorts, SayYes, PassivErsetzen, GenitiveErsetzen, KonjunktiveErsetzen)\n", + "Grid = widgets.GridBox(items, layout=widgets.Layout(justify_items=\"center\", grid_template_columns=\"repeat(3, 30%)\", grid_gap=\"4.5%\", height=\"320px\"))\n" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "c08292c98ddf447ca1c19117241980b8", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "GridBox(children=(ToggleButton(value=True, description='Eine Aussage pro Satz', layout=Layout(height='100%', w…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "\n", + "display(HTML('
'))\n", + "display(Grid)\n", + "\n", + "\n", + "\n", + "\n", + "def function():\n", + " out = 'Wählen Sie ein Kästchen aus!'\n", + " try:\n", + " insentences, punctuations = oi.CellInputText2SplitsentencesWithspacy(TextFeld.value)\n", + " except:\n", + " OutTextFeld.placeholder = 'Bitte auf die Zeichensetzung achten! '\n", + " return\n", + " \n", + " check = 0\n", + " #print('insentences',insentences)\n", + " #print(punctuations)\n", + " if SayYes.value == True:\n", + " \n", + " print('ersetze Gegenteile..')\n", + " outsentences = sy.replaceOpposites(insentences)\n", + " check = 1\n", + " \n", + " \n", + " \n", + " \n", + " if Appendixes.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('generiere ist-Aussagen..')\n", + " outsentences, punctuations = sent_seg.putAppendixesIntoOwnSentences(insentences, punctuations)\n", + " \n", + " if SentSeg.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('forme zu einem Satz pro Aussage um..')\n", + " sentsegformattedsentences = []\n", + " for sentence in insentences:\n", + " \n", + " sentsegformattedsentences.append([sentence])\n", + " \n", + " #print(sentsegformattedsentences)\n", + " sentences = sent_seg.CommaSentenceOrNot(sentsegformattedsentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetUtteranceNumber(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetQuestionOrNot(sentences)\n", + " #print(sentences)\n", + " sentences, punctuations = sent_seg.AndOrSolver(sentences, punctuations)\n", + " #print(len(punctuations))\n", + " #print('sentences after AndOrSolver', sentences, punctuations)\n", + " sentences = sent_seg.CommaSentenceOrNot(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetUtteranceNumber(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetQuestionOrNot(sentences)\n", + " #print(sentences)\n", + " sentences, punctuations = sent_seg.SplitSentencesIntoHauptNebenTuple(sentences, punctuations)\n", + " #print(len(punctuations))\n", + " #print('sentences after split haupt neben', sentences)\n", + " sentences = sent_seg.CommaSentenceOrNot(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetUtteranceNumber(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetQuestionOrNot(sentences)\n", + " #print(sentences)\n", + " outsentences, punctuations = sent_seg.SplitCommatas(sentences, punctuations)\n", + " #print(len(punctuations))\n", + " #print('out',outsentences)\n", + " #print('out', punctuations)\n", + " check = 1\n", + " \n", + " \n", + " if SolveShorts.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('erklaere Abkuerzungen..')\n", + " outsentences = solSh.ExplainShortsInSentencesWithBrackets(insentences)\n", + " check = 1\n", + " #print(len(punctuations)) \n", + " #print('sentences after solveshorts', outsentences)\n", + " \n", + " if PassivErsetzen.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('ersetze Passiv Formen..')\n", + " outsentences = p2a.replacePassivForms(insentences)\n", + " check = 1\n", + " #print(len(punctuations))\n", + " #print('sentences after p2a', outsentences)\n", + " \n", + " if GenitiveErsetzen.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " #print('replacing genitiv forms with dativ..')\n", + " outsentences = gs.ReplaceGenitivWithDativ(insentences)\n", + " check = 1\n", + " #print(len(punctuations))\n", + " #print('sentences after gs', outsentences)\n", + " \n", + " if check == 1:\n", + " newinsentences = []\n", + " for sentence in outsentences: \n", + " newinsentences.append([word.replace('ö','oe').replace('ü','ue').replace('ä','ae').replace('ß','ss') for word in sentence])\n", + " \n", + " outsentences =newinsentences\n", + " if check != 1:\n", + " newinsentences = []\n", + " for sentence in insentences: \n", + " newinsentences.append([word.replace('ö','oe').replace('ü','ue').replace('ä','ae').replace('ß','ss') for word in sentence])\n", + " \n", + " insentences =newinsentences\n", + " #print()\n", + " if KonjunktiveErsetzen.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('ersetze Konjunktive..')\n", + " \n", + " outsentences = cs.replaceConjunctives(insentences)\n", + " #print('outsentences')\n", + " check = 1\n", + " \n", + " #print('sentences after cs', outsentences)\n", + " print(len(punctuations))\n", + " \n", + " if FremdWB.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('Suche Woerterbucheintraege..')\n", + " \n", + " outsentences, punctuations = fwb.fremdEintragAppend(insentences, punctuations)\n", + " #print('outsentences')\n", + " check = 1\n", + " \n", + " if Medio.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('Ersetze lange Woerter mit Mediopunkten..')\n", + " \n", + " outsentences, punctuations = medi.Medioreplace(insentences, punctuations)\n", + " #print('outsentences')\n", + " check = 1\n", + " #print('sentences after medios', outsentences)\n", + " \n", + " \n", + " #print('sentences after fwb', outsentences)\n", + " \n", + " print(len(punctuations))\n", + " \n", + " if check == 1:\n", + " out = ''\n", + " #print('just before looking if the lenght is the same')\n", + " #print(len(outsentences), len(punctuations))\n", + " if len(outsentences) == len(punctuations):\n", + " #print('the length is the same')\n", + " for n in range(len(outsentences)):\n", + " outsentence = outsentences[n]\n", + " outsentence[0] = outsentence[0].title()\n", + " out += ' '.join(outsentence) + punctuations[n] + '\\n'\n", + " \n", + " \n", + " OutTextFeld.value = out\n", + " TextFelddouble.value = TextFeld.value\n", + " display(TextFelddouble)\n", + " \n", + " return \n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "3ca86c6e7e39437eafa36439e3337b42", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "interactive(children=(Button(description='Übersetzen in Leichte Sprache', style=ButtonStyle()), Output()), _do…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "#from IPython.display import Image\n", + "#i = Image(filename='Babelfish.png')\n", + "\n", + "#i.width = '60%'\n", + "#display(i)\n", + "\n", + "#print(widgets.interact_manual.opts)\n", + "\n", + "widgets.interact_manual.opts['manual_name']= 'Übersetzen in Leichte Sprache'\n", + "ola = widgets.interact_manual(function)\n", + "ola.widget.children[0].style.button_color = 'lightgreen'\n", + "ola.widget.children[0].layout.height = '60px'\n", + "ola.widget.children[0].layout.width = '99%'\n", + "\n", + "#widgets.GridBox([ola], layout=widgets.Layout(grid_template_columns=\"repeat(2, 300px)\"))" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "0d6f03c93f0147cd9f33d2a053672b0c", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Textarea(value='', layout=Layout(height='180px', width='99%'), placeholder='Hier kommt der übersetzte Text her…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "OutTextFeld = ipywidgets.Textarea(placeholder=out, disabled=False)\n", + "OutTextFeld.layout.height = '180px'\n", + "OutTextFeld.layout.width = '99%'\n", + "OutTextFeld.add_class(\"thetext\")\n", + "display(OutTextFeld)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [], + "source": [ + "beschreibung = 'Textfeld für die verbesserte Übersetzung. Satzzeichen bitte nicht vergessen! \\nFalls ein neuer Eintrag ins Fremdwörterbuch vorgenommen werden soll, schreibe einfach unter die Verbesserungen einen Eintrag der Form: [\\'Abfall\\', \\'Abfall sind Sachen die wir nicht mehr brauchen\\'] \\nFalls ein neuer Eintrag in die Mediopunkte-Datenbank vorgenommen werden soll, bitte schreibe unter die Verbesserungen einen Eintrag der Form: [\\'Mediopunkt\\', \\'Medio·punkt\\']' \n", + "VerbeTextFeld = ipywidgets.Textarea(placeholder=beschreibung, disabled=False)\n", + "VerbeTextFeld.layout.height = '180px'\n", + "VerbeTextFeld.layout.width = '99%'\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "\n", + "def Absendefunction():\n", + " \n", + " \n", + "\n", + " \n", + " #print(VerbeTextFeld.value)\n", + " #print(TextFeld.value)\n", + " #print(OutTextFeld.value)\n", + " \n", + " try:\n", + "\n", + " insentences, punctuations = oi.CellInputText2SplitsentencesWithspacy(VerbeTextFeld.value)\n", + " insentences1, punctuations1 = oi.CellInputText2SplitsentencesWithspacy(TextFeld.value)\n", + " insentences2, punctuations2 = oi.CellInputText2SplitsentencesWithspacy(OutTextFeld.value)\n", + "\n", + " #print(insentences2)\n", + "\n", + " #print(insentences, punctuations)\n", + " indexDerVerbesserungen = 0\n", + " number = 0\n", + " with open('Verbesserungen/indexDerVerbesserungen.txt', 'r') as dok:\n", + " for number in dok:\n", + " number = int(number)\n", + " if number >= 0:\n", + " indexDerVerbesserungen = number\n", + " number += 1\n", + "\n", + " with open('Verbesserungen/indexDerVerbesserungen.txt', 'w') as dokk:\n", + " dokk.write(str(number))\n", + "\n", + "\n", + " with open('Verbesserungen/Verbesserungen' + str(number) + '.txt','w+') as doc:\n", + " for n in range(len(insentences)):\n", + " npunct = punctuations[n]\n", + " writeline = insentences[n]+ [npunct]\n", + "\n", + " writestring = ' '.join(writeline)\n", + "\n", + " doc.write(writestring + '\\n')\n", + "\n", + " with open('Verbesserungen/Input' + str(number) + '.txt','w+') as docc:\n", + " for n in range(len(insentences1)):\n", + " npunct = punctuations1[n]\n", + " writeline = insentences1[n]+ [npunct]\n", + "\n", + " writestring = ' '.join(writeline)\n", + "\n", + " docc.write(writestring + '\\n')\n", + " with open('Verbesserungen/Output' + str(number) + '.txt','w+') as dock:\n", + " #print(insentences2)\n", + " for n in range(len(insentences2)):\n", + " #print(len(insentences2))\n", + "\n", + " #print(punctuations2)\n", + " npunct = punctuations2[n]\n", + " writeline = insentences2[n]+ [npunct]\n", + "\n", + " writestring = ' '.join(writeline)\n", + "\n", + " dock.write(writestring + '\\n')\n", + "\n", + " VerbeTextFeld.value = ''\n", + " OutTextFeld.value = ''\n", + " VerbeTextFeld.placeholder = beschreibung\n", + " OutTextFeld.placeholder = 'Hier kommt der übersetzte Text raus.'\n", + " except:\n", + " VerbeTextFeld.placeholder = 'Es gab einen Fehler. Eventuell ist die Zeichensetzung nicht ok. \\n \\n' + beschreibung\n", + " \n", + " \n", + " return \n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "1713cde35a884104b20056d5694d168a", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Textarea(value='', layout=Layout(height='180px', width='99%'), placeholder=\"Textfeld für die verbesserte Übers…" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "d4100a2d84d34630acf974f78d316abc", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "interactive(children=(Button(description='Absenden', style=ButtonStyle()), Output()), _dom_classes=('widget-in…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "VerbeTextFeld.add_class(\"thetext3\")\n", + "display(VerbeTextFeld)\n", + "display(HTML('
'))\n", + "widgets.interact_manual.opts['manual_name']= 'Absenden'\n", + "AbsendenUndSchreiben = widgets.interact_manual(Absendefunction)\n", + "AbsendenUndSchreiben.widget.children[0].style.button_color = 'lightblue'\n", + "AbsendenUndSchreiben.widget.children[0].layout.height = '60px'\n", + "AbsendenUndSchreiben.widget.children[0].layout.width = '99%'\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%html\n", + "" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%html\n", + "" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "data": { + "text/html": [ + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%html\n", + "" + ] + } + ], + "metadata": { + "celltoolbar": "Raw Cell Format", + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.5.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/Prototyp/.ipynb_checkpoints/.Prototype-7-checkpoint.ipynb b/Prototyp/.ipynb_checkpoints/.Prototype-7-checkpoint.ipynb new file mode 100644 index 00000000..50a76c09 --- /dev/null +++ b/Prototyp/.ipynb_checkpoints/.Prototype-7-checkpoint.ipynb @@ -0,0 +1,2313 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "#from oi import *\n", + "\n", + "#oi = oi()\n", + "\n", + "#import ipyvuetify as v\n", + "\n", + "#state = False\n", + "#oi.toggle_code(state)\n", + "\n", + "#button = widgets.ToggleButton(state, description = button_descriptions[state])\n", + "\n", + "\n", + "#button.observe(oi.button_action, \"value\")\n", + "\n", + "#button.layout.height = '50px'\n", + "#button.layout.width = '100%'\n", + "#button.add_class(\"thobutton\")\n", + "\n", + "#display(button)\n", + "#button.button_style = 'danger'\n" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "\n", + "

Ein Klick auf das Logo - und es geht zum Code

\n", + "\n", + "\n", + " \n", + "\n", + " \n", + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%html\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "\n", + "

Ein Klick auf das Logo - und es geht zum Code

\n", + "\n", + "\n", + " \n", + "\n", + " \n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "#%%html\n", + "#\n", + "#\n", + "#\n", + "#\n", + "#\n", + "#

Ein Klick auf das Logo - und es geht zum Code

\n", + "#" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [], + "source": [ + "#%%html\n", + "#" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "#from ipywidgets import widgets\n", + "#button = widgets.Button(description='Click me')\n", + "#display(button)\n", + "\n", + "#def on_button_clicked(b):\n", + "# print('button clicked')\n", + "\n", + "#button.on_click(on_button_clicked)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "\n", + "# importing the libraries\n", + "#print('importing libraries')\n", + "#from SolveShorts import *\n", + "#import SentSeg\n", + "#from SayYes import *\n", + "#from Passiv2Aktiv import *\n", + "#from GenitivSolve import *\n", + "#from ConjunctSolve import *\n", + "#from FremdWB import *\n", + "#from Medio import *\n", + "#from oi import *\n", + "#print('done')\n", + "\n", + "\n", + "# Initializing the libraries\n", + "#print('initializing the libraries')\n", + "#print('1')\n", + "#solSh = SolveShorts('hkldbShorts.hkl', 'hkldbShorts_All.hkl')\n", + "#print('2')\n", + "#sent_seg = SentSeg.SentSeg('de')\n", + "#print('3')\n", + "#sy = SayYes(None, None)\n", + "#print('4')\n", + "#p2a = Passiv2Aktiv(None, None, None)\n", + "#print('5')\n", + "#gs = GenitivSolve()\n", + "#print('6')\n", + "#cs = ConjunctSolve(None,None)\n", + "#print('7')\n", + "#oi = oi()\n", + "#print('8')\n", + "#fwb = FremdWB(None,None)\n", + "#print('9')\n", + "#medi = Medio(None,None)\n", + "#print('done')\n", + "\n", + "\n", + "# loading the databases and models\n", + "#print('loading SolveShorts Databases')\n", + "#solSh.load_DB_into_FASTsearch()\n", + "#print('loading SentSeg Databases')\n", + "#sent_seg.LoadSentGlueSGDandGSUtils()\n", + "#print('loading SayYes Databases')\n", + "#sy.load_DB_into_FASTsearch()\n", + "#print('loading passiv2active Databases')\n", + "#p2a.load_DB_into_FASTsearch()\n", + "#print('loading conjunctivesolve Databases')\n", + "#cs.load_DB_into_FASTsearch()\n", + "#print('loading the fremdwb Databases')\n", + "#fwb.load_DB_into_FASTsearch()\n", + "#print('loading the mediodot Databases')\n", + "#medi.load_DB_into_FASTsearch()\n", + "\n", + "#print('done')\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "106e70dd208f4de29ae10874823d30a8", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Textarea(value='', layout=Layout(height='180px', width='99%'), placeholder='Hier den Text eingeben, darunter k…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "\n", + "#print('done')\n", + "\n", + "#print('loading passiv2active Databases')\n", + "#from Passiv2Aktiv import *\n", + "#p2a = Passiv2Aktiv(None, None, None)\n", + "#p2a.load_DB_into_FASTsearch()\n", + "#print('done')\n", + "#print('loading genitiv solve')\n", + "#from GenitivSolve import *\n", + "#gs = GenitivSolve()\n", + "\n", + "#from FremdWB import *\n", + "#fwb = FremdWB(None,None)\n", + "#fwb.load_DB_into_FASTsearch()\n", + "\n", + "#from SolveShorts import *\n", + "#print('loading SolveShorts Databases')\n", + "#solSh.load_DB_into_FASTsearch()\n", + "\n", + "#from SayYes import *\n", + "#sy = SayYes(None, None)\n", + "#print('loading SayYes Databases')\n", + "#sy.load_DB_into_FASTsearch()\n", + "\n", + "#import SentSeg\n", + "#sent_seg = SentSeg.SentSeg('de')\n", + "#print('loading SentSeg Databases')\n", + "#sent_seg.LoadSentGlueSGDandGSUtils()\n", + "#print('loading conjunctsolve')\n", + "#from ConjunctSolve import *\n", + "#cs = ConjunctSolve(None,None)\n", + "#print('done')\n", + "#print('loading conjunctivesolve Databases')\n", + "#cs.load_DB_into_FASTsearch()\n", + "#print('done')\n", + "#from oi import *\n", + "#oi = oi()\n", + "\n", + "#print('loading session..')\n", + "\n", + "#print('done')\n", + "import dill\n", + "dill.load_session('voilastate.db')\n", + "\n", + "#from SolveShorts import *\n", + "#print('loading SolveShorts Databases')\n", + "#solSh.load_DB_into_FASTsearch()\n", + "\n", + "#import SentSeg\n", + "#sent_seg = SentSeg.SentSeg('de')\n", + "#print('loading SentSeg Databases')\n", + "#sent_seg.LoadSentGlueSGDandGSUtils()\n", + "\n", + "#from FremdWB import *\n", + "#fwb = FremdWB(None,None)\n", + "#fwb.load_DB_into_FASTsearch()\n", + "\n", + "#from Medio import *\n", + "#medi = Medio(None,None)\n", + "#medi.load_DB_into_FASTsearch()\n", + "\n", + "\n", + "#import dill\n", + "#print('dumping the session')\n", + "#dill.dump_session('voilastate.db')\n", + "#print('done')\n", + "\n", + "#from oi import *\n", + "#oi = oi()\n", + "\n", + "import ipywidgets as widgets\n", + "\n", + "TextFeld = widgets.Textarea(placeholder='Hier den Text eingeben, darunter können die Module aktiviert(grün) oder deaktiviert(pink) werden', disabled=False)\n", + "#print(TextFeld.layout.height)\n", + "TextFeld.layout.height = '180px'\n", + "TextFeld.layout.width = '99%'\n", + "\n", + "TextFelddouble = widgets.Textarea(placeholder='Hier den Text eingeben, darunter können die Module aktiviert(grün) oder deaktiviert(pink) werden', disabled=False)\n", + "#print(TextFeld.layout.height)\n", + "TextFelddouble.layout.height = '180px'\n", + "TextFelddouble.layout.width = '99%'\n", + "TextFelddouble.disabled=True\n", + "\n", + "display(TextFeld)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "\n", + "dawidth = '100%'\n", + "daheight = '100%'\n", + "KonjunktiveErsetzen = widgets.ToggleButton(\n", + " value=False,\n", + " description='Konjunktive ersetzen',\n", + " disabled=False,\n", + ")\n", + "KonjunktiveErsetzen.layout.width = dawidth\n", + "KonjunktiveErsetzen.layout.height = '80%'\n", + "\n", + "GenitiveErsetzen = widgets.ToggleButton(\n", + " value=True,\n", + " description='Genitiv ersetzen',\n", + " disabled=False\n", + ")\n", + "GenitiveErsetzen.layout.width = '60%'\n", + "GenitiveErsetzen.layout.height = daheight\n", + "\n", + "PassivErsetzen = widgets.ToggleButton(\n", + " value=True,\n", + " description='Passiv ersetzen',\n", + " disabled=False\n", + ")\n", + "PassivErsetzen.layout.width = '70%'\n", + "PassivErsetzen.layout.height = '90%'\n", + "\n", + "SayYes = widgets.ToggleButton(\n", + " value=True,\n", + " description='Verneinungen ersetzen',\n", + " disabled=False\n", + ")\n", + "SayYes.layout.width = '80%'\n", + "SayYes.layout.height = '80%'\n", + "SentSeg = widgets.ToggleButton(\n", + " value=True,\n", + " description='Eine Aussage pro Satz',\n", + " disabled=False\n", + ")\n", + "SentSeg.layout.width = '60%'\n", + "SentSeg.layout.height = daheight\n", + "SolveShorts = widgets.ToggleButton(\n", + " value=False,\n", + " description='Abkürzungen erklären',\n", + " disabled=False\n", + ")\n", + "SolveShorts.layout.width = '80%'\n", + "SolveShorts.layout.height = '90%'\n", + "FremdWB = widgets.ToggleButton(\n", + " value=True,\n", + " description='FremdWoerterbuch',\n", + " disabled=False\n", + ")\n", + "FremdWB.layout.width = '90%'\n", + "FremdWB.layout.height = '90%'\n", + "\n", + "Appendixes = widgets.ToggleButton(\n", + " value=True,\n", + " description='Charakterisierung pro Satz',\n", + " disabled=False\n", + ")\n", + "Appendixes.layout.width = '120%'\n", + "Appendixes.layout.height = '80%'\n", + "\n", + "Medio = widgets.ToggleButton(\n", + " value=True,\n", + " description='Mediopunkte',\n", + " disabled=False\n", + ")\n", + "Medio.layout.width = '50%'\n", + "Medio.layout.height = '90%'\n", + "\n", + "#items1 = [SentSeg, SolveShorts]\n", + "#items2 = [SayYes, PassivErsetzen]\n", + "#items3 = [GenitiveErsetzen, KonjunktiveErsetzen]\n", + "#items = [Textfeld, SentSeg, SolveShorts, SayYes, PassivErsetzen, GenitiveErsetzen, KonjunktiveErsetzen]\n", + "#display(SentSeg, SolveShorts, SayYes, PassivErsetzen, GenitiveErsetzen, KonjunktiveErsetzen)\n", + "#widgets.GridBox(items, layout=widgets.Layout(grid_template_columns=\"repeat(3, 100px)\"))\n", + "\n", + "\n", + "\n", + "#widgets.HBox(items1)\n", + "#widgets.HBox(items2)\n", + "#widgets.HBox(items3)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "import ipywidgets\n", + "out = 'Hier kommt der übersetzte Text heraus.'\n", + "\n", + "TextFeld.add_class(\"thotext\")\n", + "TextFelddouble.add_class(\"thotext\")\n", + "#display(OutTextFeld)\n", + "items = [SentSeg, SolveShorts, SayYes, PassivErsetzen, GenitiveErsetzen, KonjunktiveErsetzen, FremdWB, Appendixes, Medio] \n", + "#display(SentSeg, SolveShorts, SayYes, PassivErsetzen, GenitiveErsetzen, KonjunktiveErsetzen)\n", + "Grid = widgets.GridBox(items, layout=widgets.Layout(justify_items=\"center\", grid_template_columns=\"repeat(3, 30%)\", grid_gap=\"4.5%\", height=\"320px\"))\n" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "c08292c98ddf447ca1c19117241980b8", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "GridBox(children=(ToggleButton(value=True, description='Eine Aussage pro Satz', layout=Layout(height='100%', w…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "\n", + "display(HTML('
'))\n", + "display(Grid)\n", + "\n", + "\n", + "\n", + "\n", + "def function():\n", + " out = 'Wählen Sie ein Kästchen aus!'\n", + " try:\n", + " insentences, punctuations = oi.CellInputText2SplitsentencesWithspacy(TextFeld.value)\n", + " except:\n", + " OutTextFeld.placeholder = 'Bitte auf die Zeichensetzung achten! '\n", + " return\n", + " \n", + " check = 0\n", + " #print('insentences',insentences)\n", + " #print(punctuations)\n", + " if SayYes.value == True:\n", + " \n", + " print('ersetze Gegenteile..')\n", + " outsentences = sy.replaceOpposites(insentences)\n", + " check = 1\n", + " \n", + " \n", + " \n", + " \n", + " if Appendixes.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('generiere ist-Aussagen..')\n", + " outsentences, punctuations = sent_seg.putAppendixesIntoOwnSentences(insentences, punctuations)\n", + " \n", + " if SentSeg.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('forme zu einem Satz pro Aussage um..')\n", + " sentsegformattedsentences = []\n", + " for sentence in insentences:\n", + " \n", + " sentsegformattedsentences.append([sentence])\n", + " \n", + " #print(sentsegformattedsentences)\n", + " sentences = sent_seg.CommaSentenceOrNot(sentsegformattedsentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetUtteranceNumber(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetQuestionOrNot(sentences)\n", + " #print(sentences)\n", + " sentences, punctuations = sent_seg.AndOrSolver(sentences, punctuations)\n", + " #print(len(punctuations))\n", + " #print('sentences after AndOrSolver', sentences, punctuations)\n", + " sentences = sent_seg.CommaSentenceOrNot(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetUtteranceNumber(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetQuestionOrNot(sentences)\n", + " #print(sentences)\n", + " sentences, punctuations = sent_seg.SplitSentencesIntoHauptNebenTuple(sentences, punctuations)\n", + " #print(len(punctuations))\n", + " #print('sentences after split haupt neben', sentences)\n", + " sentences = sent_seg.CommaSentenceOrNot(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetUtteranceNumber(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetQuestionOrNot(sentences)\n", + " #print(sentences)\n", + " outsentences, punctuations = sent_seg.SplitCommatas(sentences, punctuations)\n", + " #print(len(punctuations))\n", + " #print('out',outsentences)\n", + " #print('out', punctuations)\n", + " check = 1\n", + " \n", + " \n", + " if SolveShorts.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('erklaere Abkuerzungen..')\n", + " outsentences = solSh.ExplainShortsInSentencesWithBrackets(insentences)\n", + " check = 1\n", + " #print(len(punctuations)) \n", + " #print('sentences after solveshorts', outsentences)\n", + " \n", + " if PassivErsetzen.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('ersetze Passiv Formen..')\n", + " outsentences = p2a.replacePassivForms(insentences)\n", + " check = 1\n", + " #print(len(punctuations))\n", + " #print('sentences after p2a', outsentences)\n", + " \n", + " if GenitiveErsetzen.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " #print('replacing genitiv forms with dativ..')\n", + " outsentences = gs.ReplaceGenitivWithDativ(insentences)\n", + " check = 1\n", + " #print(len(punctuations))\n", + " #print('sentences after gs', outsentences)\n", + " \n", + " if check == 1:\n", + " newinsentences = []\n", + " for sentence in outsentences: \n", + " newinsentences.append([word.replace('ö','oe').replace('ü','ue').replace('ä','ae').replace('ß','ss') for word in sentence])\n", + " \n", + " outsentences =newinsentences\n", + " if check != 1:\n", + " newinsentences = []\n", + " for sentence in insentences: \n", + " newinsentences.append([word.replace('ö','oe').replace('ü','ue').replace('ä','ae').replace('ß','ss') for word in sentence])\n", + " \n", + " insentences =newinsentences\n", + " #print()\n", + " if KonjunktiveErsetzen.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('ersetze Konjunktive..')\n", + " \n", + " outsentences = cs.replaceConjunctives(insentences)\n", + " #print('outsentences')\n", + " check = 1\n", + " \n", + " #print('sentences after cs', outsentences)\n", + " print(len(punctuations))\n", + " \n", + " if FremdWB.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('Suche Woerterbucheintraege..')\n", + " \n", + " outsentences, punctuations = fwb.fremdEintragAppend(insentences, punctuations)\n", + " #print('outsentences')\n", + " check = 1\n", + " \n", + " if Medio.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('Ersetze lange Woerter mit Mediopunkten..')\n", + " \n", + " outsentences, punctuations = medi.Medioreplace(insentences, punctuations)\n", + " #print('outsentences')\n", + " check = 1\n", + " #print('sentences after medios', outsentences)\n", + " \n", + " \n", + " #print('sentences after fwb', outsentences)\n", + " \n", + " print(len(punctuations))\n", + " \n", + " if check == 1:\n", + " out = ''\n", + " #print('just before looking if the lenght is the same')\n", + " #print(len(outsentences), len(punctuations))\n", + " if len(outsentences) == len(punctuations):\n", + " #print('the length is the same')\n", + " for n in range(len(outsentences)):\n", + " outsentence = outsentences[n]\n", + " outsentence[0] = outsentence[0].title()\n", + " out += ' '.join(outsentence) + punctuations[n] + '\\n'\n", + " \n", + " \n", + " OutTextFeld.value = out\n", + " TextFelddouble.value = TextFeld.value\n", + " display(TextFelddouble)\n", + " \n", + " return \n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "3ca86c6e7e39437eafa36439e3337b42", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "interactive(children=(Button(description='Übersetzen in Leichte Sprache', style=ButtonStyle()), Output()), _do…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "#from IPython.display import Image\n", + "#i = Image(filename='Babelfish.png')\n", + "\n", + "#i.width = '60%'\n", + "#display(i)\n", + "\n", + "#print(widgets.interact_manual.opts)\n", + "\n", + "widgets.interact_manual.opts['manual_name']= 'Übersetzen in Leichte Sprache'\n", + "ola = widgets.interact_manual(function)\n", + "ola.widget.children[0].style.button_color = 'lightgreen'\n", + "ola.widget.children[0].layout.height = '60px'\n", + "ola.widget.children[0].layout.width = '99%'\n", + "\n", + "#widgets.GridBox([ola], layout=widgets.Layout(grid_template_columns=\"repeat(2, 300px)\"))" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "0d6f03c93f0147cd9f33d2a053672b0c", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Textarea(value='', layout=Layout(height='180px', width='99%'), placeholder='Hier kommt der übersetzte Text her…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "OutTextFeld = ipywidgets.Textarea(placeholder=out, disabled=False)\n", + "OutTextFeld.layout.height = '180px'\n", + "OutTextFeld.layout.width = '99%'\n", + "OutTextFeld.add_class(\"thetext\")\n", + "display(OutTextFeld)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [], + "source": [ + "beschreibung = 'Textfeld für die verbesserte Übersetzung. Satzzeichen bitte nicht vergessen! \\nFalls ein neuer Eintrag ins Fremdwörterbuch vorgenommen werden soll, schreibe einfach unter die Verbesserungen einen Eintrag der Form: [\\'Abfall\\', \\'Abfall sind Sachen die wir nicht mehr brauchen\\'] \\nFalls ein neuer Eintrag in die Mediopunkte-Datenbank vorgenommen werden soll, bitte schreibe unter die Verbesserungen einen Eintrag der Form: [\\'Mediopunkt\\', \\'Medio·punkt\\']' \n", + "VerbeTextFeld = ipywidgets.Textarea(placeholder=beschreibung, disabled=False)\n", + "VerbeTextFeld.layout.height = '180px'\n", + "VerbeTextFeld.layout.width = '99%'\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "\n", + "def Absendefunction():\n", + " \n", + " \n", + "\n", + " \n", + " #print(VerbeTextFeld.value)\n", + " #print(TextFeld.value)\n", + " #print(OutTextFeld.value)\n", + " \n", + " try:\n", + "\n", + " insentences, punctuations = oi.CellInputText2SplitsentencesWithspacy(VerbeTextFeld.value)\n", + " insentences1, punctuations1 = oi.CellInputText2SplitsentencesWithspacy(TextFeld.value)\n", + " insentences2, punctuations2 = oi.CellInputText2SplitsentencesWithspacy(OutTextFeld.value)\n", + "\n", + " #print(insentences2)\n", + "\n", + " #print(insentences, punctuations)\n", + " indexDerVerbesserungen = 0\n", + " number = 0\n", + " with open('Verbesserungen/indexDerVerbesserungen.txt', 'r') as dok:\n", + " for number in dok:\n", + " number = int(number)\n", + " if number >= 0:\n", + " indexDerVerbesserungen = number\n", + " number += 1\n", + "\n", + " with open('Verbesserungen/indexDerVerbesserungen.txt', 'w') as dokk:\n", + " dokk.write(str(number))\n", + "\n", + "\n", + " with open('Verbesserungen/Verbesserungen' + str(number) + '.txt','w+') as doc:\n", + " for n in range(len(insentences)):\n", + " npunct = punctuations[n]\n", + " writeline = insentences[n]+ [npunct]\n", + "\n", + " writestring = ' '.join(writeline)\n", + "\n", + " doc.write(writestring + '\\n')\n", + "\n", + " with open('Verbesserungen/Input' + str(number) + '.txt','w+') as docc:\n", + " for n in range(len(insentences1)):\n", + " npunct = punctuations1[n]\n", + " writeline = insentences1[n]+ [npunct]\n", + "\n", + " writestring = ' '.join(writeline)\n", + "\n", + " docc.write(writestring + '\\n')\n", + " with open('Verbesserungen/Output' + str(number) + '.txt','w+') as dock:\n", + " #print(insentences2)\n", + " for n in range(len(insentences2)):\n", + " #print(len(insentences2))\n", + "\n", + " #print(punctuations2)\n", + " npunct = punctuations2[n]\n", + " writeline = insentences2[n]+ [npunct]\n", + "\n", + " writestring = ' '.join(writeline)\n", + "\n", + " dock.write(writestring + '\\n')\n", + "\n", + " VerbeTextFeld.value = ''\n", + " OutTextFeld.value = ''\n", + " VerbeTextFeld.placeholder = beschreibung\n", + " OutTextFeld.placeholder = 'Hier kommt der übersetzte Text raus.'\n", + " except:\n", + " VerbeTextFeld.placeholder = 'Es gab einen Fehler. Eventuell ist die Zeichensetzung nicht ok. \\n \\n' + beschreibung\n", + " \n", + " \n", + " return \n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "1713cde35a884104b20056d5694d168a", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Textarea(value='', layout=Layout(height='180px', width='99%'), placeholder=\"Textfeld für die verbesserte Übers…" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "d4100a2d84d34630acf974f78d316abc", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "interactive(children=(Button(description='Absenden', style=ButtonStyle()), Output()), _dom_classes=('widget-in…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "VerbeTextFeld.add_class(\"thetext3\")\n", + "display(VerbeTextFeld)\n", + "display(HTML('
'))\n", + "widgets.interact_manual.opts['manual_name']= 'Absenden'\n", + "AbsendenUndSchreiben = widgets.interact_manual(Absendefunction)\n", + "AbsendenUndSchreiben.widget.children[0].style.button_color = 'lightblue'\n", + "AbsendenUndSchreiben.widget.children[0].layout.height = '60px'\n", + "AbsendenUndSchreiben.widget.children[0].layout.width = '99%'\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%html\n", + "" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%html\n", + "" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "data": { + "text/html": [ + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%html\n", + "" + ] + } + ], + "metadata": { + "celltoolbar": "Raw Cell Format", + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.5.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/Prototyp/.ipynb_checkpoints/.Prototype-8-checkpoint.ipynb b/Prototyp/.ipynb_checkpoints/.Prototype-8-checkpoint.ipynb new file mode 100644 index 00000000..50a76c09 --- /dev/null +++ b/Prototyp/.ipynb_checkpoints/.Prototype-8-checkpoint.ipynb @@ -0,0 +1,2313 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "#from oi import *\n", + "\n", + "#oi = oi()\n", + "\n", + "#import ipyvuetify as v\n", + "\n", + "#state = False\n", + "#oi.toggle_code(state)\n", + "\n", + "#button = widgets.ToggleButton(state, description = button_descriptions[state])\n", + "\n", + "\n", + "#button.observe(oi.button_action, \"value\")\n", + "\n", + "#button.layout.height = '50px'\n", + "#button.layout.width = '100%'\n", + "#button.add_class(\"thobutton\")\n", + "\n", + "#display(button)\n", + "#button.button_style = 'danger'\n" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "\n", + "

Ein Klick auf das Logo - und es geht zum Code

\n", + "\n", + "\n", + " \n", + "\n", + " \n", + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%html\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "\n", + "

Ein Klick auf das Logo - und es geht zum Code

\n", + "\n", + "\n", + " \n", + "\n", + " \n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "#%%html\n", + "#\n", + "#\n", + "#\n", + "#\n", + "#\n", + "#

Ein Klick auf das Logo - und es geht zum Code

\n", + "#" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [], + "source": [ + "#%%html\n", + "#" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "#from ipywidgets import widgets\n", + "#button = widgets.Button(description='Click me')\n", + "#display(button)\n", + "\n", + "#def on_button_clicked(b):\n", + "# print('button clicked')\n", + "\n", + "#button.on_click(on_button_clicked)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "\n", + "# importing the libraries\n", + "#print('importing libraries')\n", + "#from SolveShorts import *\n", + "#import SentSeg\n", + "#from SayYes import *\n", + "#from Passiv2Aktiv import *\n", + "#from GenitivSolve import *\n", + "#from ConjunctSolve import *\n", + "#from FremdWB import *\n", + "#from Medio import *\n", + "#from oi import *\n", + "#print('done')\n", + "\n", + "\n", + "# Initializing the libraries\n", + "#print('initializing the libraries')\n", + "#print('1')\n", + "#solSh = SolveShorts('hkldbShorts.hkl', 'hkldbShorts_All.hkl')\n", + "#print('2')\n", + "#sent_seg = SentSeg.SentSeg('de')\n", + "#print('3')\n", + "#sy = SayYes(None, None)\n", + "#print('4')\n", + "#p2a = Passiv2Aktiv(None, None, None)\n", + "#print('5')\n", + "#gs = GenitivSolve()\n", + "#print('6')\n", + "#cs = ConjunctSolve(None,None)\n", + "#print('7')\n", + "#oi = oi()\n", + "#print('8')\n", + "#fwb = FremdWB(None,None)\n", + "#print('9')\n", + "#medi = Medio(None,None)\n", + "#print('done')\n", + "\n", + "\n", + "# loading the databases and models\n", + "#print('loading SolveShorts Databases')\n", + "#solSh.load_DB_into_FASTsearch()\n", + "#print('loading SentSeg Databases')\n", + "#sent_seg.LoadSentGlueSGDandGSUtils()\n", + "#print('loading SayYes Databases')\n", + "#sy.load_DB_into_FASTsearch()\n", + "#print('loading passiv2active Databases')\n", + "#p2a.load_DB_into_FASTsearch()\n", + "#print('loading conjunctivesolve Databases')\n", + "#cs.load_DB_into_FASTsearch()\n", + "#print('loading the fremdwb Databases')\n", + "#fwb.load_DB_into_FASTsearch()\n", + "#print('loading the mediodot Databases')\n", + "#medi.load_DB_into_FASTsearch()\n", + "\n", + "#print('done')\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "106e70dd208f4de29ae10874823d30a8", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Textarea(value='', layout=Layout(height='180px', width='99%'), placeholder='Hier den Text eingeben, darunter k…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "\n", + "#print('done')\n", + "\n", + "#print('loading passiv2active Databases')\n", + "#from Passiv2Aktiv import *\n", + "#p2a = Passiv2Aktiv(None, None, None)\n", + "#p2a.load_DB_into_FASTsearch()\n", + "#print('done')\n", + "#print('loading genitiv solve')\n", + "#from GenitivSolve import *\n", + "#gs = GenitivSolve()\n", + "\n", + "#from FremdWB import *\n", + "#fwb = FremdWB(None,None)\n", + "#fwb.load_DB_into_FASTsearch()\n", + "\n", + "#from SolveShorts import *\n", + "#print('loading SolveShorts Databases')\n", + "#solSh.load_DB_into_FASTsearch()\n", + "\n", + "#from SayYes import *\n", + "#sy = SayYes(None, None)\n", + "#print('loading SayYes Databases')\n", + "#sy.load_DB_into_FASTsearch()\n", + "\n", + "#import SentSeg\n", + "#sent_seg = SentSeg.SentSeg('de')\n", + "#print('loading SentSeg Databases')\n", + "#sent_seg.LoadSentGlueSGDandGSUtils()\n", + "#print('loading conjunctsolve')\n", + "#from ConjunctSolve import *\n", + "#cs = ConjunctSolve(None,None)\n", + "#print('done')\n", + "#print('loading conjunctivesolve Databases')\n", + "#cs.load_DB_into_FASTsearch()\n", + "#print('done')\n", + "#from oi import *\n", + "#oi = oi()\n", + "\n", + "#print('loading session..')\n", + "\n", + "#print('done')\n", + "import dill\n", + "dill.load_session('voilastate.db')\n", + "\n", + "#from SolveShorts import *\n", + "#print('loading SolveShorts Databases')\n", + "#solSh.load_DB_into_FASTsearch()\n", + "\n", + "#import SentSeg\n", + "#sent_seg = SentSeg.SentSeg('de')\n", + "#print('loading SentSeg Databases')\n", + "#sent_seg.LoadSentGlueSGDandGSUtils()\n", + "\n", + "#from FremdWB import *\n", + "#fwb = FremdWB(None,None)\n", + "#fwb.load_DB_into_FASTsearch()\n", + "\n", + "#from Medio import *\n", + "#medi = Medio(None,None)\n", + "#medi.load_DB_into_FASTsearch()\n", + "\n", + "\n", + "#import dill\n", + "#print('dumping the session')\n", + "#dill.dump_session('voilastate.db')\n", + "#print('done')\n", + "\n", + "#from oi import *\n", + "#oi = oi()\n", + "\n", + "import ipywidgets as widgets\n", + "\n", + "TextFeld = widgets.Textarea(placeholder='Hier den Text eingeben, darunter können die Module aktiviert(grün) oder deaktiviert(pink) werden', disabled=False)\n", + "#print(TextFeld.layout.height)\n", + "TextFeld.layout.height = '180px'\n", + "TextFeld.layout.width = '99%'\n", + "\n", + "TextFelddouble = widgets.Textarea(placeholder='Hier den Text eingeben, darunter können die Module aktiviert(grün) oder deaktiviert(pink) werden', disabled=False)\n", + "#print(TextFeld.layout.height)\n", + "TextFelddouble.layout.height = '180px'\n", + "TextFelddouble.layout.width = '99%'\n", + "TextFelddouble.disabled=True\n", + "\n", + "display(TextFeld)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "\n", + "dawidth = '100%'\n", + "daheight = '100%'\n", + "KonjunktiveErsetzen = widgets.ToggleButton(\n", + " value=False,\n", + " description='Konjunktive ersetzen',\n", + " disabled=False,\n", + ")\n", + "KonjunktiveErsetzen.layout.width = dawidth\n", + "KonjunktiveErsetzen.layout.height = '80%'\n", + "\n", + "GenitiveErsetzen = widgets.ToggleButton(\n", + " value=True,\n", + " description='Genitiv ersetzen',\n", + " disabled=False\n", + ")\n", + "GenitiveErsetzen.layout.width = '60%'\n", + "GenitiveErsetzen.layout.height = daheight\n", + "\n", + "PassivErsetzen = widgets.ToggleButton(\n", + " value=True,\n", + " description='Passiv ersetzen',\n", + " disabled=False\n", + ")\n", + "PassivErsetzen.layout.width = '70%'\n", + "PassivErsetzen.layout.height = '90%'\n", + "\n", + "SayYes = widgets.ToggleButton(\n", + " value=True,\n", + " description='Verneinungen ersetzen',\n", + " disabled=False\n", + ")\n", + "SayYes.layout.width = '80%'\n", + "SayYes.layout.height = '80%'\n", + "SentSeg = widgets.ToggleButton(\n", + " value=True,\n", + " description='Eine Aussage pro Satz',\n", + " disabled=False\n", + ")\n", + "SentSeg.layout.width = '60%'\n", + "SentSeg.layout.height = daheight\n", + "SolveShorts = widgets.ToggleButton(\n", + " value=False,\n", + " description='Abkürzungen erklären',\n", + " disabled=False\n", + ")\n", + "SolveShorts.layout.width = '80%'\n", + "SolveShorts.layout.height = '90%'\n", + "FremdWB = widgets.ToggleButton(\n", + " value=True,\n", + " description='FremdWoerterbuch',\n", + " disabled=False\n", + ")\n", + "FremdWB.layout.width = '90%'\n", + "FremdWB.layout.height = '90%'\n", + "\n", + "Appendixes = widgets.ToggleButton(\n", + " value=True,\n", + " description='Charakterisierung pro Satz',\n", + " disabled=False\n", + ")\n", + "Appendixes.layout.width = '120%'\n", + "Appendixes.layout.height = '80%'\n", + "\n", + "Medio = widgets.ToggleButton(\n", + " value=True,\n", + " description='Mediopunkte',\n", + " disabled=False\n", + ")\n", + "Medio.layout.width = '50%'\n", + "Medio.layout.height = '90%'\n", + "\n", + "#items1 = [SentSeg, SolveShorts]\n", + "#items2 = [SayYes, PassivErsetzen]\n", + "#items3 = [GenitiveErsetzen, KonjunktiveErsetzen]\n", + "#items = [Textfeld, SentSeg, SolveShorts, SayYes, PassivErsetzen, GenitiveErsetzen, KonjunktiveErsetzen]\n", + "#display(SentSeg, SolveShorts, SayYes, PassivErsetzen, GenitiveErsetzen, KonjunktiveErsetzen)\n", + "#widgets.GridBox(items, layout=widgets.Layout(grid_template_columns=\"repeat(3, 100px)\"))\n", + "\n", + "\n", + "\n", + "#widgets.HBox(items1)\n", + "#widgets.HBox(items2)\n", + "#widgets.HBox(items3)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "import ipywidgets\n", + "out = 'Hier kommt der übersetzte Text heraus.'\n", + "\n", + "TextFeld.add_class(\"thotext\")\n", + "TextFelddouble.add_class(\"thotext\")\n", + "#display(OutTextFeld)\n", + "items = [SentSeg, SolveShorts, SayYes, PassivErsetzen, GenitiveErsetzen, KonjunktiveErsetzen, FremdWB, Appendixes, Medio] \n", + "#display(SentSeg, SolveShorts, SayYes, PassivErsetzen, GenitiveErsetzen, KonjunktiveErsetzen)\n", + "Grid = widgets.GridBox(items, layout=widgets.Layout(justify_items=\"center\", grid_template_columns=\"repeat(3, 30%)\", grid_gap=\"4.5%\", height=\"320px\"))\n" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "c08292c98ddf447ca1c19117241980b8", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "GridBox(children=(ToggleButton(value=True, description='Eine Aussage pro Satz', layout=Layout(height='100%', w…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "\n", + "display(HTML('
'))\n", + "display(Grid)\n", + "\n", + "\n", + "\n", + "\n", + "def function():\n", + " out = 'Wählen Sie ein Kästchen aus!'\n", + " try:\n", + " insentences, punctuations = oi.CellInputText2SplitsentencesWithspacy(TextFeld.value)\n", + " except:\n", + " OutTextFeld.placeholder = 'Bitte auf die Zeichensetzung achten! '\n", + " return\n", + " \n", + " check = 0\n", + " #print('insentences',insentences)\n", + " #print(punctuations)\n", + " if SayYes.value == True:\n", + " \n", + " print('ersetze Gegenteile..')\n", + " outsentences = sy.replaceOpposites(insentences)\n", + " check = 1\n", + " \n", + " \n", + " \n", + " \n", + " if Appendixes.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('generiere ist-Aussagen..')\n", + " outsentences, punctuations = sent_seg.putAppendixesIntoOwnSentences(insentences, punctuations)\n", + " \n", + " if SentSeg.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('forme zu einem Satz pro Aussage um..')\n", + " sentsegformattedsentences = []\n", + " for sentence in insentences:\n", + " \n", + " sentsegformattedsentences.append([sentence])\n", + " \n", + " #print(sentsegformattedsentences)\n", + " sentences = sent_seg.CommaSentenceOrNot(sentsegformattedsentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetUtteranceNumber(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetQuestionOrNot(sentences)\n", + " #print(sentences)\n", + " sentences, punctuations = sent_seg.AndOrSolver(sentences, punctuations)\n", + " #print(len(punctuations))\n", + " #print('sentences after AndOrSolver', sentences, punctuations)\n", + " sentences = sent_seg.CommaSentenceOrNot(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetUtteranceNumber(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetQuestionOrNot(sentences)\n", + " #print(sentences)\n", + " sentences, punctuations = sent_seg.SplitSentencesIntoHauptNebenTuple(sentences, punctuations)\n", + " #print(len(punctuations))\n", + " #print('sentences after split haupt neben', sentences)\n", + " sentences = sent_seg.CommaSentenceOrNot(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetUtteranceNumber(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetQuestionOrNot(sentences)\n", + " #print(sentences)\n", + " outsentences, punctuations = sent_seg.SplitCommatas(sentences, punctuations)\n", + " #print(len(punctuations))\n", + " #print('out',outsentences)\n", + " #print('out', punctuations)\n", + " check = 1\n", + " \n", + " \n", + " if SolveShorts.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('erklaere Abkuerzungen..')\n", + " outsentences = solSh.ExplainShortsInSentencesWithBrackets(insentences)\n", + " check = 1\n", + " #print(len(punctuations)) \n", + " #print('sentences after solveshorts', outsentences)\n", + " \n", + " if PassivErsetzen.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('ersetze Passiv Formen..')\n", + " outsentences = p2a.replacePassivForms(insentences)\n", + " check = 1\n", + " #print(len(punctuations))\n", + " #print('sentences after p2a', outsentences)\n", + " \n", + " if GenitiveErsetzen.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " #print('replacing genitiv forms with dativ..')\n", + " outsentences = gs.ReplaceGenitivWithDativ(insentences)\n", + " check = 1\n", + " #print(len(punctuations))\n", + " #print('sentences after gs', outsentences)\n", + " \n", + " if check == 1:\n", + " newinsentences = []\n", + " for sentence in outsentences: \n", + " newinsentences.append([word.replace('ö','oe').replace('ü','ue').replace('ä','ae').replace('ß','ss') for word in sentence])\n", + " \n", + " outsentences =newinsentences\n", + " if check != 1:\n", + " newinsentences = []\n", + " for sentence in insentences: \n", + " newinsentences.append([word.replace('ö','oe').replace('ü','ue').replace('ä','ae').replace('ß','ss') for word in sentence])\n", + " \n", + " insentences =newinsentences\n", + " #print()\n", + " if KonjunktiveErsetzen.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('ersetze Konjunktive..')\n", + " \n", + " outsentences = cs.replaceConjunctives(insentences)\n", + " #print('outsentences')\n", + " check = 1\n", + " \n", + " #print('sentences after cs', outsentences)\n", + " print(len(punctuations))\n", + " \n", + " if FremdWB.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('Suche Woerterbucheintraege..')\n", + " \n", + " outsentences, punctuations = fwb.fremdEintragAppend(insentences, punctuations)\n", + " #print('outsentences')\n", + " check = 1\n", + " \n", + " if Medio.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('Ersetze lange Woerter mit Mediopunkten..')\n", + " \n", + " outsentences, punctuations = medi.Medioreplace(insentences, punctuations)\n", + " #print('outsentences')\n", + " check = 1\n", + " #print('sentences after medios', outsentences)\n", + " \n", + " \n", + " #print('sentences after fwb', outsentences)\n", + " \n", + " print(len(punctuations))\n", + " \n", + " if check == 1:\n", + " out = ''\n", + " #print('just before looking if the lenght is the same')\n", + " #print(len(outsentences), len(punctuations))\n", + " if len(outsentences) == len(punctuations):\n", + " #print('the length is the same')\n", + " for n in range(len(outsentences)):\n", + " outsentence = outsentences[n]\n", + " outsentence[0] = outsentence[0].title()\n", + " out += ' '.join(outsentence) + punctuations[n] + '\\n'\n", + " \n", + " \n", + " OutTextFeld.value = out\n", + " TextFelddouble.value = TextFeld.value\n", + " display(TextFelddouble)\n", + " \n", + " return \n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "3ca86c6e7e39437eafa36439e3337b42", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "interactive(children=(Button(description='Übersetzen in Leichte Sprache', style=ButtonStyle()), Output()), _do…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "#from IPython.display import Image\n", + "#i = Image(filename='Babelfish.png')\n", + "\n", + "#i.width = '60%'\n", + "#display(i)\n", + "\n", + "#print(widgets.interact_manual.opts)\n", + "\n", + "widgets.interact_manual.opts['manual_name']= 'Übersetzen in Leichte Sprache'\n", + "ola = widgets.interact_manual(function)\n", + "ola.widget.children[0].style.button_color = 'lightgreen'\n", + "ola.widget.children[0].layout.height = '60px'\n", + "ola.widget.children[0].layout.width = '99%'\n", + "\n", + "#widgets.GridBox([ola], layout=widgets.Layout(grid_template_columns=\"repeat(2, 300px)\"))" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "0d6f03c93f0147cd9f33d2a053672b0c", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Textarea(value='', layout=Layout(height='180px', width='99%'), placeholder='Hier kommt der übersetzte Text her…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "OutTextFeld = ipywidgets.Textarea(placeholder=out, disabled=False)\n", + "OutTextFeld.layout.height = '180px'\n", + "OutTextFeld.layout.width = '99%'\n", + "OutTextFeld.add_class(\"thetext\")\n", + "display(OutTextFeld)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [], + "source": [ + "beschreibung = 'Textfeld für die verbesserte Übersetzung. Satzzeichen bitte nicht vergessen! \\nFalls ein neuer Eintrag ins Fremdwörterbuch vorgenommen werden soll, schreibe einfach unter die Verbesserungen einen Eintrag der Form: [\\'Abfall\\', \\'Abfall sind Sachen die wir nicht mehr brauchen\\'] \\nFalls ein neuer Eintrag in die Mediopunkte-Datenbank vorgenommen werden soll, bitte schreibe unter die Verbesserungen einen Eintrag der Form: [\\'Mediopunkt\\', \\'Medio·punkt\\']' \n", + "VerbeTextFeld = ipywidgets.Textarea(placeholder=beschreibung, disabled=False)\n", + "VerbeTextFeld.layout.height = '180px'\n", + "VerbeTextFeld.layout.width = '99%'\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "\n", + "def Absendefunction():\n", + " \n", + " \n", + "\n", + " \n", + " #print(VerbeTextFeld.value)\n", + " #print(TextFeld.value)\n", + " #print(OutTextFeld.value)\n", + " \n", + " try:\n", + "\n", + " insentences, punctuations = oi.CellInputText2SplitsentencesWithspacy(VerbeTextFeld.value)\n", + " insentences1, punctuations1 = oi.CellInputText2SplitsentencesWithspacy(TextFeld.value)\n", + " insentences2, punctuations2 = oi.CellInputText2SplitsentencesWithspacy(OutTextFeld.value)\n", + "\n", + " #print(insentences2)\n", + "\n", + " #print(insentences, punctuations)\n", + " indexDerVerbesserungen = 0\n", + " number = 0\n", + " with open('Verbesserungen/indexDerVerbesserungen.txt', 'r') as dok:\n", + " for number in dok:\n", + " number = int(number)\n", + " if number >= 0:\n", + " indexDerVerbesserungen = number\n", + " number += 1\n", + "\n", + " with open('Verbesserungen/indexDerVerbesserungen.txt', 'w') as dokk:\n", + " dokk.write(str(number))\n", + "\n", + "\n", + " with open('Verbesserungen/Verbesserungen' + str(number) + '.txt','w+') as doc:\n", + " for n in range(len(insentences)):\n", + " npunct = punctuations[n]\n", + " writeline = insentences[n]+ [npunct]\n", + "\n", + " writestring = ' '.join(writeline)\n", + "\n", + " doc.write(writestring + '\\n')\n", + "\n", + " with open('Verbesserungen/Input' + str(number) + '.txt','w+') as docc:\n", + " for n in range(len(insentences1)):\n", + " npunct = punctuations1[n]\n", + " writeline = insentences1[n]+ [npunct]\n", + "\n", + " writestring = ' '.join(writeline)\n", + "\n", + " docc.write(writestring + '\\n')\n", + " with open('Verbesserungen/Output' + str(number) + '.txt','w+') as dock:\n", + " #print(insentences2)\n", + " for n in range(len(insentences2)):\n", + " #print(len(insentences2))\n", + "\n", + " #print(punctuations2)\n", + " npunct = punctuations2[n]\n", + " writeline = insentences2[n]+ [npunct]\n", + "\n", + " writestring = ' '.join(writeline)\n", + "\n", + " dock.write(writestring + '\\n')\n", + "\n", + " VerbeTextFeld.value = ''\n", + " OutTextFeld.value = ''\n", + " VerbeTextFeld.placeholder = beschreibung\n", + " OutTextFeld.placeholder = 'Hier kommt der übersetzte Text raus.'\n", + " except:\n", + " VerbeTextFeld.placeholder = 'Es gab einen Fehler. Eventuell ist die Zeichensetzung nicht ok. \\n \\n' + beschreibung\n", + " \n", + " \n", + " return \n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "1713cde35a884104b20056d5694d168a", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Textarea(value='', layout=Layout(height='180px', width='99%'), placeholder=\"Textfeld für die verbesserte Übers…" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "d4100a2d84d34630acf974f78d316abc", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "interactive(children=(Button(description='Absenden', style=ButtonStyle()), Output()), _dom_classes=('widget-in…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "VerbeTextFeld.add_class(\"thetext3\")\n", + "display(VerbeTextFeld)\n", + "display(HTML('
'))\n", + "widgets.interact_manual.opts['manual_name']= 'Absenden'\n", + "AbsendenUndSchreiben = widgets.interact_manual(Absendefunction)\n", + "AbsendenUndSchreiben.widget.children[0].style.button_color = 'lightblue'\n", + "AbsendenUndSchreiben.widget.children[0].layout.height = '60px'\n", + "AbsendenUndSchreiben.widget.children[0].layout.width = '99%'\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%html\n", + "" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%html\n", + "" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "data": { + "text/html": [ + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%html\n", + "" + ] + } + ], + "metadata": { + "celltoolbar": "Raw Cell Format", + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.5.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/Prototyp/.ipynb_checkpoints/.Prototype-9-checkpoint.ipynb b/Prototyp/.ipynb_checkpoints/.Prototype-9-checkpoint.ipynb new file mode 100644 index 00000000..50a76c09 --- /dev/null +++ b/Prototyp/.ipynb_checkpoints/.Prototype-9-checkpoint.ipynb @@ -0,0 +1,2313 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "#from oi import *\n", + "\n", + "#oi = oi()\n", + "\n", + "#import ipyvuetify as v\n", + "\n", + "#state = False\n", + "#oi.toggle_code(state)\n", + "\n", + "#button = widgets.ToggleButton(state, description = button_descriptions[state])\n", + "\n", + "\n", + "#button.observe(oi.button_action, \"value\")\n", + "\n", + "#button.layout.height = '50px'\n", + "#button.layout.width = '100%'\n", + "#button.add_class(\"thobutton\")\n", + "\n", + "#display(button)\n", + "#button.button_style = 'danger'\n" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "\n", + "

Ein Klick auf das Logo - und es geht zum Code

\n", + "\n", + "\n", + " \n", + "\n", + " \n", + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%html\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "\n", + "

Ein Klick auf das Logo - und es geht zum Code

\n", + "\n", + "\n", + " \n", + "\n", + " \n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "#%%html\n", + "#\n", + "#\n", + "#\n", + "#\n", + "#\n", + "#

Ein Klick auf das Logo - und es geht zum Code

\n", + "#" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [], + "source": [ + "#%%html\n", + "#" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "#from ipywidgets import widgets\n", + "#button = widgets.Button(description='Click me')\n", + "#display(button)\n", + "\n", + "#def on_button_clicked(b):\n", + "# print('button clicked')\n", + "\n", + "#button.on_click(on_button_clicked)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "\n", + "# importing the libraries\n", + "#print('importing libraries')\n", + "#from SolveShorts import *\n", + "#import SentSeg\n", + "#from SayYes import *\n", + "#from Passiv2Aktiv import *\n", + "#from GenitivSolve import *\n", + "#from ConjunctSolve import *\n", + "#from FremdWB import *\n", + "#from Medio import *\n", + "#from oi import *\n", + "#print('done')\n", + "\n", + "\n", + "# Initializing the libraries\n", + "#print('initializing the libraries')\n", + "#print('1')\n", + "#solSh = SolveShorts('hkldbShorts.hkl', 'hkldbShorts_All.hkl')\n", + "#print('2')\n", + "#sent_seg = SentSeg.SentSeg('de')\n", + "#print('3')\n", + "#sy = SayYes(None, None)\n", + "#print('4')\n", + "#p2a = Passiv2Aktiv(None, None, None)\n", + "#print('5')\n", + "#gs = GenitivSolve()\n", + "#print('6')\n", + "#cs = ConjunctSolve(None,None)\n", + "#print('7')\n", + "#oi = oi()\n", + "#print('8')\n", + "#fwb = FremdWB(None,None)\n", + "#print('9')\n", + "#medi = Medio(None,None)\n", + "#print('done')\n", + "\n", + "\n", + "# loading the databases and models\n", + "#print('loading SolveShorts Databases')\n", + "#solSh.load_DB_into_FASTsearch()\n", + "#print('loading SentSeg Databases')\n", + "#sent_seg.LoadSentGlueSGDandGSUtils()\n", + "#print('loading SayYes Databases')\n", + "#sy.load_DB_into_FASTsearch()\n", + "#print('loading passiv2active Databases')\n", + "#p2a.load_DB_into_FASTsearch()\n", + "#print('loading conjunctivesolve Databases')\n", + "#cs.load_DB_into_FASTsearch()\n", + "#print('loading the fremdwb Databases')\n", + "#fwb.load_DB_into_FASTsearch()\n", + "#print('loading the mediodot Databases')\n", + "#medi.load_DB_into_FASTsearch()\n", + "\n", + "#print('done')\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "106e70dd208f4de29ae10874823d30a8", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Textarea(value='', layout=Layout(height='180px', width='99%'), placeholder='Hier den Text eingeben, darunter k…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "\n", + "#print('done')\n", + "\n", + "#print('loading passiv2active Databases')\n", + "#from Passiv2Aktiv import *\n", + "#p2a = Passiv2Aktiv(None, None, None)\n", + "#p2a.load_DB_into_FASTsearch()\n", + "#print('done')\n", + "#print('loading genitiv solve')\n", + "#from GenitivSolve import *\n", + "#gs = GenitivSolve()\n", + "\n", + "#from FremdWB import *\n", + "#fwb = FremdWB(None,None)\n", + "#fwb.load_DB_into_FASTsearch()\n", + "\n", + "#from SolveShorts import *\n", + "#print('loading SolveShorts Databases')\n", + "#solSh.load_DB_into_FASTsearch()\n", + "\n", + "#from SayYes import *\n", + "#sy = SayYes(None, None)\n", + "#print('loading SayYes Databases')\n", + "#sy.load_DB_into_FASTsearch()\n", + "\n", + "#import SentSeg\n", + "#sent_seg = SentSeg.SentSeg('de')\n", + "#print('loading SentSeg Databases')\n", + "#sent_seg.LoadSentGlueSGDandGSUtils()\n", + "#print('loading conjunctsolve')\n", + "#from ConjunctSolve import *\n", + "#cs = ConjunctSolve(None,None)\n", + "#print('done')\n", + "#print('loading conjunctivesolve Databases')\n", + "#cs.load_DB_into_FASTsearch()\n", + "#print('done')\n", + "#from oi import *\n", + "#oi = oi()\n", + "\n", + "#print('loading session..')\n", + "\n", + "#print('done')\n", + "import dill\n", + "dill.load_session('voilastate.db')\n", + "\n", + "#from SolveShorts import *\n", + "#print('loading SolveShorts Databases')\n", + "#solSh.load_DB_into_FASTsearch()\n", + "\n", + "#import SentSeg\n", + "#sent_seg = SentSeg.SentSeg('de')\n", + "#print('loading SentSeg Databases')\n", + "#sent_seg.LoadSentGlueSGDandGSUtils()\n", + "\n", + "#from FremdWB import *\n", + "#fwb = FremdWB(None,None)\n", + "#fwb.load_DB_into_FASTsearch()\n", + "\n", + "#from Medio import *\n", + "#medi = Medio(None,None)\n", + "#medi.load_DB_into_FASTsearch()\n", + "\n", + "\n", + "#import dill\n", + "#print('dumping the session')\n", + "#dill.dump_session('voilastate.db')\n", + "#print('done')\n", + "\n", + "#from oi import *\n", + "#oi = oi()\n", + "\n", + "import ipywidgets as widgets\n", + "\n", + "TextFeld = widgets.Textarea(placeholder='Hier den Text eingeben, darunter können die Module aktiviert(grün) oder deaktiviert(pink) werden', disabled=False)\n", + "#print(TextFeld.layout.height)\n", + "TextFeld.layout.height = '180px'\n", + "TextFeld.layout.width = '99%'\n", + "\n", + "TextFelddouble = widgets.Textarea(placeholder='Hier den Text eingeben, darunter können die Module aktiviert(grün) oder deaktiviert(pink) werden', disabled=False)\n", + "#print(TextFeld.layout.height)\n", + "TextFelddouble.layout.height = '180px'\n", + "TextFelddouble.layout.width = '99%'\n", + "TextFelddouble.disabled=True\n", + "\n", + "display(TextFeld)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "\n", + "dawidth = '100%'\n", + "daheight = '100%'\n", + "KonjunktiveErsetzen = widgets.ToggleButton(\n", + " value=False,\n", + " description='Konjunktive ersetzen',\n", + " disabled=False,\n", + ")\n", + "KonjunktiveErsetzen.layout.width = dawidth\n", + "KonjunktiveErsetzen.layout.height = '80%'\n", + "\n", + "GenitiveErsetzen = widgets.ToggleButton(\n", + " value=True,\n", + " description='Genitiv ersetzen',\n", + " disabled=False\n", + ")\n", + "GenitiveErsetzen.layout.width = '60%'\n", + "GenitiveErsetzen.layout.height = daheight\n", + "\n", + "PassivErsetzen = widgets.ToggleButton(\n", + " value=True,\n", + " description='Passiv ersetzen',\n", + " disabled=False\n", + ")\n", + "PassivErsetzen.layout.width = '70%'\n", + "PassivErsetzen.layout.height = '90%'\n", + "\n", + "SayYes = widgets.ToggleButton(\n", + " value=True,\n", + " description='Verneinungen ersetzen',\n", + " disabled=False\n", + ")\n", + "SayYes.layout.width = '80%'\n", + "SayYes.layout.height = '80%'\n", + "SentSeg = widgets.ToggleButton(\n", + " value=True,\n", + " description='Eine Aussage pro Satz',\n", + " disabled=False\n", + ")\n", + "SentSeg.layout.width = '60%'\n", + "SentSeg.layout.height = daheight\n", + "SolveShorts = widgets.ToggleButton(\n", + " value=False,\n", + " description='Abkürzungen erklären',\n", + " disabled=False\n", + ")\n", + "SolveShorts.layout.width = '80%'\n", + "SolveShorts.layout.height = '90%'\n", + "FremdWB = widgets.ToggleButton(\n", + " value=True,\n", + " description='FremdWoerterbuch',\n", + " disabled=False\n", + ")\n", + "FremdWB.layout.width = '90%'\n", + "FremdWB.layout.height = '90%'\n", + "\n", + "Appendixes = widgets.ToggleButton(\n", + " value=True,\n", + " description='Charakterisierung pro Satz',\n", + " disabled=False\n", + ")\n", + "Appendixes.layout.width = '120%'\n", + "Appendixes.layout.height = '80%'\n", + "\n", + "Medio = widgets.ToggleButton(\n", + " value=True,\n", + " description='Mediopunkte',\n", + " disabled=False\n", + ")\n", + "Medio.layout.width = '50%'\n", + "Medio.layout.height = '90%'\n", + "\n", + "#items1 = [SentSeg, SolveShorts]\n", + "#items2 = [SayYes, PassivErsetzen]\n", + "#items3 = [GenitiveErsetzen, KonjunktiveErsetzen]\n", + "#items = [Textfeld, SentSeg, SolveShorts, SayYes, PassivErsetzen, GenitiveErsetzen, KonjunktiveErsetzen]\n", + "#display(SentSeg, SolveShorts, SayYes, PassivErsetzen, GenitiveErsetzen, KonjunktiveErsetzen)\n", + "#widgets.GridBox(items, layout=widgets.Layout(grid_template_columns=\"repeat(3, 100px)\"))\n", + "\n", + "\n", + "\n", + "#widgets.HBox(items1)\n", + "#widgets.HBox(items2)\n", + "#widgets.HBox(items3)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "import ipywidgets\n", + "out = 'Hier kommt der übersetzte Text heraus.'\n", + "\n", + "TextFeld.add_class(\"thotext\")\n", + "TextFelddouble.add_class(\"thotext\")\n", + "#display(OutTextFeld)\n", + "items = [SentSeg, SolveShorts, SayYes, PassivErsetzen, GenitiveErsetzen, KonjunktiveErsetzen, FremdWB, Appendixes, Medio] \n", + "#display(SentSeg, SolveShorts, SayYes, PassivErsetzen, GenitiveErsetzen, KonjunktiveErsetzen)\n", + "Grid = widgets.GridBox(items, layout=widgets.Layout(justify_items=\"center\", grid_template_columns=\"repeat(3, 30%)\", grid_gap=\"4.5%\", height=\"320px\"))\n" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "c08292c98ddf447ca1c19117241980b8", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "GridBox(children=(ToggleButton(value=True, description='Eine Aussage pro Satz', layout=Layout(height='100%', w…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "\n", + "display(HTML('
'))\n", + "display(Grid)\n", + "\n", + "\n", + "\n", + "\n", + "def function():\n", + " out = 'Wählen Sie ein Kästchen aus!'\n", + " try:\n", + " insentences, punctuations = oi.CellInputText2SplitsentencesWithspacy(TextFeld.value)\n", + " except:\n", + " OutTextFeld.placeholder = 'Bitte auf die Zeichensetzung achten! '\n", + " return\n", + " \n", + " check = 0\n", + " #print('insentences',insentences)\n", + " #print(punctuations)\n", + " if SayYes.value == True:\n", + " \n", + " print('ersetze Gegenteile..')\n", + " outsentences = sy.replaceOpposites(insentences)\n", + " check = 1\n", + " \n", + " \n", + " \n", + " \n", + " if Appendixes.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('generiere ist-Aussagen..')\n", + " outsentences, punctuations = sent_seg.putAppendixesIntoOwnSentences(insentences, punctuations)\n", + " \n", + " if SentSeg.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('forme zu einem Satz pro Aussage um..')\n", + " sentsegformattedsentences = []\n", + " for sentence in insentences:\n", + " \n", + " sentsegformattedsentences.append([sentence])\n", + " \n", + " #print(sentsegformattedsentences)\n", + " sentences = sent_seg.CommaSentenceOrNot(sentsegformattedsentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetUtteranceNumber(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetQuestionOrNot(sentences)\n", + " #print(sentences)\n", + " sentences, punctuations = sent_seg.AndOrSolver(sentences, punctuations)\n", + " #print(len(punctuations))\n", + " #print('sentences after AndOrSolver', sentences, punctuations)\n", + " sentences = sent_seg.CommaSentenceOrNot(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetUtteranceNumber(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetQuestionOrNot(sentences)\n", + " #print(sentences)\n", + " sentences, punctuations = sent_seg.SplitSentencesIntoHauptNebenTuple(sentences, punctuations)\n", + " #print(len(punctuations))\n", + " #print('sentences after split haupt neben', sentences)\n", + " sentences = sent_seg.CommaSentenceOrNot(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetUtteranceNumber(sentences)\n", + " #print(sentences)\n", + " sentences = sent_seg.GetQuestionOrNot(sentences)\n", + " #print(sentences)\n", + " outsentences, punctuations = sent_seg.SplitCommatas(sentences, punctuations)\n", + " #print(len(punctuations))\n", + " #print('out',outsentences)\n", + " #print('out', punctuations)\n", + " check = 1\n", + " \n", + " \n", + " if SolveShorts.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('erklaere Abkuerzungen..')\n", + " outsentences = solSh.ExplainShortsInSentencesWithBrackets(insentences)\n", + " check = 1\n", + " #print(len(punctuations)) \n", + " #print('sentences after solveshorts', outsentences)\n", + " \n", + " if PassivErsetzen.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('ersetze Passiv Formen..')\n", + " outsentences = p2a.replacePassivForms(insentences)\n", + " check = 1\n", + " #print(len(punctuations))\n", + " #print('sentences after p2a', outsentences)\n", + " \n", + " if GenitiveErsetzen.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " #print('replacing genitiv forms with dativ..')\n", + " outsentences = gs.ReplaceGenitivWithDativ(insentences)\n", + " check = 1\n", + " #print(len(punctuations))\n", + " #print('sentences after gs', outsentences)\n", + " \n", + " if check == 1:\n", + " newinsentences = []\n", + " for sentence in outsentences: \n", + " newinsentences.append([word.replace('ö','oe').replace('ü','ue').replace('ä','ae').replace('ß','ss') for word in sentence])\n", + " \n", + " outsentences =newinsentences\n", + " if check != 1:\n", + " newinsentences = []\n", + " for sentence in insentences: \n", + " newinsentences.append([word.replace('ö','oe').replace('ü','ue').replace('ä','ae').replace('ß','ss') for word in sentence])\n", + " \n", + " insentences =newinsentences\n", + " #print()\n", + " if KonjunktiveErsetzen.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('ersetze Konjunktive..')\n", + " \n", + " outsentences = cs.replaceConjunctives(insentences)\n", + " #print('outsentences')\n", + " check = 1\n", + " \n", + " #print('sentences after cs', outsentences)\n", + " print(len(punctuations))\n", + " \n", + " if FremdWB.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('Suche Woerterbucheintraege..')\n", + " \n", + " outsentences, punctuations = fwb.fremdEintragAppend(insentences, punctuations)\n", + " #print('outsentences')\n", + " check = 1\n", + " \n", + " if Medio.value == True:\n", + " if check == 1:\n", + " insentences = outsentences\n", + " print('Ersetze lange Woerter mit Mediopunkten..')\n", + " \n", + " outsentences, punctuations = medi.Medioreplace(insentences, punctuations)\n", + " #print('outsentences')\n", + " check = 1\n", + " #print('sentences after medios', outsentences)\n", + " \n", + " \n", + " #print('sentences after fwb', outsentences)\n", + " \n", + " print(len(punctuations))\n", + " \n", + " if check == 1:\n", + " out = ''\n", + " #print('just before looking if the lenght is the same')\n", + " #print(len(outsentences), len(punctuations))\n", + " if len(outsentences) == len(punctuations):\n", + " #print('the length is the same')\n", + " for n in range(len(outsentences)):\n", + " outsentence = outsentences[n]\n", + " outsentence[0] = outsentence[0].title()\n", + " out += ' '.join(outsentence) + punctuations[n] + '\\n'\n", + " \n", + " \n", + " OutTextFeld.value = out\n", + " TextFelddouble.value = TextFeld.value\n", + " display(TextFelddouble)\n", + " \n", + " return \n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "3ca86c6e7e39437eafa36439e3337b42", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "interactive(children=(Button(description='Übersetzen in Leichte Sprache', style=ButtonStyle()), Output()), _do…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "#from IPython.display import Image\n", + "#i = Image(filename='Babelfish.png')\n", + "\n", + "#i.width = '60%'\n", + "#display(i)\n", + "\n", + "#print(widgets.interact_manual.opts)\n", + "\n", + "widgets.interact_manual.opts['manual_name']= 'Übersetzen in Leichte Sprache'\n", + "ola = widgets.interact_manual(function)\n", + "ola.widget.children[0].style.button_color = 'lightgreen'\n", + "ola.widget.children[0].layout.height = '60px'\n", + "ola.widget.children[0].layout.width = '99%'\n", + "\n", + "#widgets.GridBox([ola], layout=widgets.Layout(grid_template_columns=\"repeat(2, 300px)\"))" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "0d6f03c93f0147cd9f33d2a053672b0c", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Textarea(value='', layout=Layout(height='180px', width='99%'), placeholder='Hier kommt der übersetzte Text her…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "OutTextFeld = ipywidgets.Textarea(placeholder=out, disabled=False)\n", + "OutTextFeld.layout.height = '180px'\n", + "OutTextFeld.layout.width = '99%'\n", + "OutTextFeld.add_class(\"thetext\")\n", + "display(OutTextFeld)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [], + "source": [ + "beschreibung = 'Textfeld für die verbesserte Übersetzung. Satzzeichen bitte nicht vergessen! \\nFalls ein neuer Eintrag ins Fremdwörterbuch vorgenommen werden soll, schreibe einfach unter die Verbesserungen einen Eintrag der Form: [\\'Abfall\\', \\'Abfall sind Sachen die wir nicht mehr brauchen\\'] \\nFalls ein neuer Eintrag in die Mediopunkte-Datenbank vorgenommen werden soll, bitte schreibe unter die Verbesserungen einen Eintrag der Form: [\\'Mediopunkt\\', \\'Medio·punkt\\']' \n", + "VerbeTextFeld = ipywidgets.Textarea(placeholder=beschreibung, disabled=False)\n", + "VerbeTextFeld.layout.height = '180px'\n", + "VerbeTextFeld.layout.width = '99%'\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "\n", + "def Absendefunction():\n", + " \n", + " \n", + "\n", + " \n", + " #print(VerbeTextFeld.value)\n", + " #print(TextFeld.value)\n", + " #print(OutTextFeld.value)\n", + " \n", + " try:\n", + "\n", + " insentences, punctuations = oi.CellInputText2SplitsentencesWithspacy(VerbeTextFeld.value)\n", + " insentences1, punctuations1 = oi.CellInputText2SplitsentencesWithspacy(TextFeld.value)\n", + " insentences2, punctuations2 = oi.CellInputText2SplitsentencesWithspacy(OutTextFeld.value)\n", + "\n", + " #print(insentences2)\n", + "\n", + " #print(insentences, punctuations)\n", + " indexDerVerbesserungen = 0\n", + " number = 0\n", + " with open('Verbesserungen/indexDerVerbesserungen.txt', 'r') as dok:\n", + " for number in dok:\n", + " number = int(number)\n", + " if number >= 0:\n", + " indexDerVerbesserungen = number\n", + " number += 1\n", + "\n", + " with open('Verbesserungen/indexDerVerbesserungen.txt', 'w') as dokk:\n", + " dokk.write(str(number))\n", + "\n", + "\n", + " with open('Verbesserungen/Verbesserungen' + str(number) + '.txt','w+') as doc:\n", + " for n in range(len(insentences)):\n", + " npunct = punctuations[n]\n", + " writeline = insentences[n]+ [npunct]\n", + "\n", + " writestring = ' '.join(writeline)\n", + "\n", + " doc.write(writestring + '\\n')\n", + "\n", + " with open('Verbesserungen/Input' + str(number) + '.txt','w+') as docc:\n", + " for n in range(len(insentences1)):\n", + " npunct = punctuations1[n]\n", + " writeline = insentences1[n]+ [npunct]\n", + "\n", + " writestring = ' '.join(writeline)\n", + "\n", + " docc.write(writestring + '\\n')\n", + " with open('Verbesserungen/Output' + str(number) + '.txt','w+') as dock:\n", + " #print(insentences2)\n", + " for n in range(len(insentences2)):\n", + " #print(len(insentences2))\n", + "\n", + " #print(punctuations2)\n", + " npunct = punctuations2[n]\n", + " writeline = insentences2[n]+ [npunct]\n", + "\n", + " writestring = ' '.join(writeline)\n", + "\n", + " dock.write(writestring + '\\n')\n", + "\n", + " VerbeTextFeld.value = ''\n", + " OutTextFeld.value = ''\n", + " VerbeTextFeld.placeholder = beschreibung\n", + " OutTextFeld.placeholder = 'Hier kommt der übersetzte Text raus.'\n", + " except:\n", + " VerbeTextFeld.placeholder = 'Es gab einen Fehler. Eventuell ist die Zeichensetzung nicht ok. \\n \\n' + beschreibung\n", + " \n", + " \n", + " return \n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "1713cde35a884104b20056d5694d168a", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Textarea(value='', layout=Layout(height='180px', width='99%'), placeholder=\"Textfeld für die verbesserte Übers…" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "d4100a2d84d34630acf974f78d316abc", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "interactive(children=(Button(description='Absenden', style=ButtonStyle()), Output()), _dom_classes=('widget-in…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "VerbeTextFeld.add_class(\"thetext3\")\n", + "display(VerbeTextFeld)\n", + "display(HTML('
'))\n", + "widgets.interact_manual.opts['manual_name']= 'Absenden'\n", + "AbsendenUndSchreiben = widgets.interact_manual(Absendefunction)\n", + "AbsendenUndSchreiben.widget.children[0].style.button_color = 'lightblue'\n", + "AbsendenUndSchreiben.widget.children[0].layout.height = '60px'\n", + "AbsendenUndSchreiben.widget.children[0].layout.width = '99%'\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%html\n", + "" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%html\n", + "" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "data": { + "text/html": [ + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%html\n", + "" + ] + } + ], + "metadata": { + "celltoolbar": "Raw Cell Format", + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.5.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/Prototyp/.ipynb_checkpoints/Prototype-checkpoint.ipynb b/Prototyp/.ipynb_checkpoints/Prototype-checkpoint.ipynb index 77e11898..00f9af04 100644 --- a/Prototyp/.ipynb_checkpoints/Prototype-checkpoint.ipynb +++ b/Prototyp/.ipynb_checkpoints/Prototype-checkpoint.ipynb @@ -30,14 +30,20 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "text/html": [ + "\n", "\n", - "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", "\n", - "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", "\n", - "

Du kommst zu dem Code - wenn du auf das Logo klickst!

\n", - "\n" + "

Ein Klick auf das Logo - und es geht zum Code

\n", + "\n", + "\n", + " \n", + "\n", + " \n", + "\n" ], "text/plain": [ "" @@ -67,8 +632,14 @@ ], "source": [ "%%html\n", + "\n", "\n", - "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", "\n", - "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", "\n", - "

Du kommst zu dem Code - wenn du auf das Logo klickst!

\n", - "" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ + "

Ein Klick auf das Logo - und es geht zum Code

\n", + "\n", + "\n", + " \n", + "\n", + " \n", "\n" ] }, @@ -102,44 +1223,36 @@ "cell_type": "code", "execution_count": 3, "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - "\n" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ - "%%html\n", - "\n", - "\n" + "#body {\n", + "# align: center;\n", + "# font-size: 24;\n", + "# }\n", + "\n", + "\n", + "#\n", + "#\n", + "#\n", + "#\n", + "#\n", + "#

Ein Klick auf das Logo - und es geht zum Code

\n", + "#" ] }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 24, "metadata": {}, "outputs": [], "source": [ @@ -160,7 +1273,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 6, "metadata": {}, "outputs": [], "source": [ @@ -177,7 +1290,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 7, "metadata": { "scrolled": true }, @@ -243,7 +1356,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 8, "metadata": { "scrolled": true }, @@ -251,7 +1364,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "8550b5ce616f4cd89a39ee2a05c5da15", + "model_id": "106e70dd208f4de29ae10874823d30a8", "version_major": 2, "version_minor": 0 }, @@ -353,69 +1466,82 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "\n", "\n", "dawidth = '100%'\n", + "daheight = '100%'\n", "KonjunktiveErsetzen = widgets.ToggleButton(\n", " value=False,\n", " description='Konjunktive ersetzen',\n", " disabled=False,\n", ")\n", "KonjunktiveErsetzen.layout.width = dawidth\n", + "KonjunktiveErsetzen.layout.height = '80%'\n", + "\n", "GenitiveErsetzen = widgets.ToggleButton(\n", " value=True,\n", " description='Genitiv ersetzen',\n", " disabled=False\n", ")\n", - "GenitiveErsetzen.layout.width = dawidth\n", + "GenitiveErsetzen.layout.width = '60%'\n", + "GenitiveErsetzen.layout.height = daheight\n", + "\n", "PassivErsetzen = widgets.ToggleButton(\n", " value=True,\n", " description='Passiv ersetzen',\n", " disabled=False\n", ")\n", - "PassivErsetzen.layout.width = dawidth\n", + "PassivErsetzen.layout.width = '70%'\n", + "PassivErsetzen.layout.height = '90%'\n", + "\n", "SayYes = widgets.ToggleButton(\n", " value=True,\n", " description='Verneinungen ersetzen',\n", " disabled=False\n", ")\n", - "SayYes.layout.width = dawidth\n", + "SayYes.layout.width = '80%'\n", + "SayYes.layout.height = '80%'\n", "SentSeg = widgets.ToggleButton(\n", " value=True,\n", " description='Eine Aussage pro Satz',\n", " disabled=False\n", ")\n", - "SentSeg.layout.width = dawidth\n", + "SentSeg.layout.width = '60%'\n", + "SentSeg.layout.height = daheight\n", "SolveShorts = widgets.ToggleButton(\n", " value=False,\n", " description='Abkürzungen erklären',\n", " disabled=False\n", ")\n", - "SolveShorts.layout.width = dawidth\n", + "SolveShorts.layout.width = '80%'\n", + "SolveShorts.layout.height = '90%'\n", "FremdWB = widgets.ToggleButton(\n", " value=True,\n", " description='FremdWoerterbuch',\n", " disabled=False\n", ")\n", - "FremdWB.layout.width = dawidth\n", + "FremdWB.layout.width = '90%'\n", + "FremdWB.layout.height = '90%'\n", "\n", "Appendixes = widgets.ToggleButton(\n", " value=True,\n", " description='Charakterisierung pro Satz',\n", " disabled=False\n", ")\n", - "Appendixes.layout.width = dawidth\n", + "Appendixes.layout.width = '120%'\n", + "Appendixes.layout.height = '80%'\n", "\n", "Medio = widgets.ToggleButton(\n", " value=True,\n", " description='Mediopunkte',\n", " disabled=False\n", ")\n", - "Medio.layout.width = dawidth\n", + "Medio.layout.width = '50%'\n", + "Medio.layout.height = '90%'\n", "\n", "#items1 = [SentSeg, SolveShorts]\n", "#items2 = [SayYes, PassivErsetzen]\n", @@ -433,7 +1559,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 10, "metadata": {}, "outputs": [], "source": [ @@ -445,12 +1571,12 @@ "#display(OutTextFeld)\n", "items = [SentSeg, SolveShorts, SayYes, PassivErsetzen, GenitiveErsetzen, KonjunktiveErsetzen, FremdWB, Appendixes, Medio] \n", "#display(SentSeg, SolveShorts, SayYes, PassivErsetzen, GenitiveErsetzen, KonjunktiveErsetzen)\n", - "Grid = widgets.GridBox(items, layout=widgets.Layout(justify_items=\"center\", grid_template_columns=\"repeat(3, 30%)\", grid_gap=\"1.5%\", height=\"200px\"))\n" + "Grid = widgets.GridBox(items, layout=widgets.Layout(justify_items=\"center\", grid_template_columns=\"repeat(3, 30%)\", grid_gap=\"4.5%\", height=\"320px\"))\n" ] }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 11, "metadata": {}, "outputs": [ { @@ -468,12 +1594,12 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "fbf6f63cc46248088133806a354dfa01", + "model_id": "c08292c98ddf447ca1c19117241980b8", "version_major": 2, "version_minor": 0 }, "text/plain": [ - "GridBox(children=(ToggleButton(value=True, description='Eine Aussage pro Satz', layout=Layout(width='100%')), …" + "GridBox(children=(ToggleButton(value=True, description='Eine Aussage pro Satz', layout=Layout(height='100%', w…" ] }, "metadata": {}, @@ -653,22 +1779,13 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": { - "scrolled": false - }, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": 11, + "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "79e1775235dc46c0a6c14a0a261b1518", + "model_id": "3ca86c6e7e39437eafa36439e3337b42", "version_major": 2, "version_minor": 0 }, @@ -692,7 +1809,7 @@ "widgets.interact_manual.opts['manual_name']= 'Übersetzen in Leichte Sprache'\n", "ola = widgets.interact_manual(function)\n", "ola.widget.children[0].style.button_color = 'lightgreen'\n", - "ola.widget.children[0].layout.height = '50px'\n", + "ola.widget.children[0].layout.height = '60px'\n", "ola.widget.children[0].layout.width = '99%'\n", "\n", "#widgets.GridBox([ola], layout=widgets.Layout(grid_template_columns=\"repeat(2, 300px)\"))" @@ -700,7 +1817,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 13, "metadata": { "scrolled": true }, @@ -708,7 +1825,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "d1ee481103c54bde9e7ee8eb7ca0a76c", + "model_id": "0d6f03c93f0147cd9f33d2a053672b0c", "version_major": 2, "version_minor": 0 }, @@ -730,7 +1847,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 14, "metadata": {}, "outputs": [], "source": [ @@ -743,7 +1860,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 15, "metadata": {}, "outputs": [], "source": [ @@ -824,13 +1941,13 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "c70e059820e44adb92a4b4532ebeb959", + "model_id": "1713cde35a884104b20056d5694d168a", "version_major": 2, "version_minor": 0 }, @@ -856,7 +1973,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "04c03c250bae489895ff8b738c3ce30e", + "model_id": "d4100a2d84d34630acf974f78d316abc", "version_major": 2, "version_minor": 0 }, @@ -875,14 +1992,14 @@ "widgets.interact_manual.opts['manual_name']= 'Absenden'\n", "AbsendenUndSchreiben = widgets.interact_manual(Absendefunction)\n", "AbsendenUndSchreiben.widget.children[0].style.button_color = 'lightblue'\n", - "AbsendenUndSchreiben.widget.children[0].layout.height = '50px'\n", + "AbsendenUndSchreiben.widget.children[0].layout.height = '60px'\n", "AbsendenUndSchreiben.widget.children[0].layout.width = '99%'\n", "\n" ] }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 17, "metadata": {}, "outputs": [ { @@ -895,15 +2012,16 @@ " vertical-align: middle;\n", " }\n", ".jupyter-button {\n", + " align: center;\n", " text-shadow: -1px -1px rgba(255, 255, 255, 0.35), 1px 1px rgba(0, 0, 0, 0.40);\n", " font-family: 'Lato', sans-serif;\n", " text-decoration: none;\n", - " letter-spacing: .06rem;\n", - " font-size: 90%;\n", + " letter-spacing: .07rem;\n", + " font-size: 95%;\n", " font-weight: bold;\n", " color: rgba(0, 0, 0, 0.3);\n", " background-color: pink;\n", - " border-radius: 20px;\n", + " border-radius: 30px;\n", " transition: all 0.2s cubic-bezier(0, 0.22, .3, 1);\n", " #box-shadow: inset 0 2px 0 rgba(255,255,255,0.5), 0 2px 2px rgba(0, 0, 0, 0.19);\n", " box-shadow: 0px 5px 5px rgba(0, 0, 0, 0.29);\n", @@ -938,15 +2056,16 @@ " vertical-align: middle;\n", " }\n", ".jupyter-button {\n", + " align: center;\n", " text-shadow: -1px -1px rgba(255, 255, 255, 0.35), 1px 1px rgba(0, 0, 0, 0.40);\n", " font-family: 'Lato', sans-serif;\n", " text-decoration: none;\n", - " letter-spacing: .06rem;\n", - " font-size: 90%;\n", + " letter-spacing: .07rem;\n", + " font-size: 95%;\n", " font-weight: bold;\n", " color: rgba(0, 0, 0, 0.3);\n", " background-color: pink;\n", - " border-radius: 20px;\n", + " border-radius: 30px;\n", " transition: all 0.2s cubic-bezier(0, 0.22, .3, 1);\n", " #box-shadow: inset 0 2px 0 rgba(255,255,255,0.5), 0 2px 2px rgba(0, 0, 0, 0.19);\n", " box-shadow: 0px 5px 5px rgba(0, 0, 0, 0.29);\n", @@ -967,7 +2086,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 18, "metadata": {}, "outputs": [ { @@ -977,19 +2096,22 @@ ".thetext > .widget-label {\n", " font-style: italic;\n", " color: blue;\n", - " font-size: 30px;\n", + " font-size: 35px;\n", "}\n", ".thetext > textarea {\n", + " align: center;\n", " padding: 10px 0 0 10px;\n", " resize: none;\n", - " font-size: 15px;\n", + " font-size: 16px;\n", " color: black;\n", " background-color: lightgreen;\n", " border-radius: 20px;\n", - " border-width : 0px\n", + " border-opacity: 0.8;\n", + " border-width : 10px;\n", + " border-color: lightgrey;\n", " transition: all 0.3s cubic-bezier(0, 0.22, .3, 1);\n", " #box-shadow: inset 0 2px 0 rgba(255,255,255,0.5), 0 2px 2px rgba(0, 0, 0, 0.19);\n", - " box-shadow: 0px 5px 5px rgba(0, 0, 0, 0.29);\n", + " #box-shadow: 0px 5px 5px rgba(0, 0, 0, 0.29);\n", "}\n", ".thetext > ::placeholder {\n", " opacity: 0.5;\n", @@ -1002,16 +2124,19 @@ " font-size: 20px;\n", "}\n", ".thetext3 > textarea {\n", + " align: center;\n", " padding: 10px 0 0 10px;\n", " resize: none;\n", - " font-size: 15px;\n", + " font-size: 16px;\n", " color: black;\n", " background-color: lightblue;\n", + " border-color: lightgrey;\n", + " border-opacity: 0.8;\n", " border-radius: 20px;\n", - " border-width : 0px\n", + " border-width : 10px;\n", " transition: all 0.3s cubic-bezier(0, 0.22, .3, 1);\n", " #box-shadow: inset 0 2px 0 rgba(255,255,255,0.5), 0 2px 2px rgba(0, 0, 0, 0.19);\n", - " box-shadow: 0px 5px 5px rgba(0, 0, 0, 0.29);\n", + " #box-shadow: 0px 5px 5px rgba(0, 0, 0, 0.29);\n", "}\n", ".thetext3 > ::placeholder {\n", " opacity: 0.5;\n", @@ -1033,19 +2158,22 @@ ".thetext > .widget-label {\n", " font-style: italic;\n", " color: blue;\n", - " font-size: 30px;\n", + " font-size: 35px;\n", "}\n", ".thetext > textarea {\n", + " align: center;\n", " padding: 10px 0 0 10px;\n", " resize: none;\n", - " font-size: 15px;\n", + " font-size: 16px;\n", " color: black;\n", " background-color: lightgreen;\n", " border-radius: 20px;\n", - " border-width : 0px\n", + " border-opacity: 0.8;\n", + " border-width : 10px;\n", + " border-color: lightgrey;\n", " transition: all 0.3s cubic-bezier(0, 0.22, .3, 1);\n", " #box-shadow: inset 0 2px 0 rgba(255,255,255,0.5), 0 2px 2px rgba(0, 0, 0, 0.19);\n", - " box-shadow: 0px 5px 5px rgba(0, 0, 0, 0.29);\n", + " #box-shadow: 0px 5px 5px rgba(0, 0, 0, 0.29);\n", "}\n", ".thetext > ::placeholder {\n", " opacity: 0.5;\n", @@ -1058,16 +2186,19 @@ " font-size: 20px;\n", "}\n", ".thetext3 > textarea {\n", + " align: center;\n", " padding: 10px 0 0 10px;\n", " resize: none;\n", - " font-size: 15px;\n", + " font-size: 16px;\n", " color: black;\n", " background-color: lightblue;\n", + " border-color: lightgrey;\n", + " border-opacity: 0.8;\n", " border-radius: 20px;\n", - " border-width : 0px\n", + " border-width : 10px;\n", " transition: all 0.3s cubic-bezier(0, 0.22, .3, 1);\n", " #box-shadow: inset 0 2px 0 rgba(255,255,255,0.5), 0 2px 2px rgba(0, 0, 0, 0.19);\n", - " box-shadow: 0px 5px 5px rgba(0, 0, 0, 0.29);\n", + " #box-shadow: 0px 5px 5px rgba(0, 0, 0, 0.29);\n", "}\n", ".thetext3 > ::placeholder {\n", " opacity: 0.5;\n", @@ -1078,7 +2209,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 19, "metadata": { "scrolled": false }, @@ -1090,20 +2221,23 @@ ".thotext > .widget-label {\n", " font-style: ;\n", " color: blue;\n", - " font-size: 30px;\n", + " font-size: 35px;\n", " \n", "}\n", ".thotext > textarea {\n", + " align: center;\n", " padding: 10px 0 0 10px;\n", " resize: none;\n", - " font-size: 15px;\n", + " font-size: 16px;\n", " color: black;\n", " background-color: lightgreen;\n", + " \n", + " border-color: lightgrey;\n", " border-radius: 20px;\n", - " border-width : 0px\n", + " border-width : 10px;\n", " transition: all 0.3s cubic-bezier(0, 0.22, .3, 1);\n", " #box-shadow: inset 0 2px 0 rgba(255,255,255,0.5), 0 2px 2px rgba(0, 0, 0, 0.19);\n", - " box-shadow: 0px 5px 5px rgba(0, 0, 0, 0.29);\n", + " #box-shadow: 0px 5px 5px rgba(0, 0, 0, 0.29);\n", "}\n", ".thotext > ::placeholder {\n", " opacity: 0.5;\n", @@ -1126,20 +2260,23 @@ ".thotext > .widget-label {\n", " font-style: ;\n", " color: blue;\n", - " font-size: 30px;\n", + " font-size: 35px;\n", " \n", "}\n", ".thotext > textarea {\n", + " align: center;\n", " padding: 10px 0 0 10px;\n", " resize: none;\n", - " font-size: 15px;\n", + " font-size: 16px;\n", " color: black;\n", " background-color: lightgreen;\n", + " \n", + " border-color: lightgrey;\n", " border-radius: 20px;\n", - " border-width : 0px\n", + " border-width : 10px;\n", " transition: all 0.3s cubic-bezier(0, 0.22, .3, 1);\n", " #box-shadow: inset 0 2px 0 rgba(255,255,255,0.5), 0 2px 2px rgba(0, 0, 0, 0.19);\n", - " box-shadow: 0px 5px 5px rgba(0, 0, 0, 0.29);\n", + " #box-shadow: 0px 5px 5px rgba(0, 0, 0, 0.29);\n", "}\n", ".thotext > ::placeholder {\n", " opacity: 0.5;\n", @@ -1148,20 +2285,6 @@ "\n", "" ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] } ], "metadata": { diff --git a/Prototyp/Prototype.ipynb b/Prototyp/Prototype.ipynb index 711f10cb..00f9af04 100644 --- a/Prototyp/Prototype.ipynb +++ b/Prototyp/Prototype.ipynb @@ -30,14 +30,20 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "text/html": [ + "\n", "\n", - "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", "\n", - "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", "\n", - "

Du kommst zu dem Code - wenn du auf das Logo klickst!

\n", - "\n" + "

Ein Klick auf das Logo - und es geht zum Code

\n", + "\n", + "\n", + " \n", + "\n", + " \n", + "\n" ], "text/plain": [ "" @@ -67,8 +632,14 @@ ], "source": [ "%%html\n", + "\n", "\n", - "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", "\n", - "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", "\n", - "

Du kommst zu dem Code - wenn du auf das Logo klickst!

\n", - "" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ + "

Ein Klick auf das Logo - und es geht zum Code

\n", + "\n", + "\n", + " \n", + "\n", + " \n", "\n" ] }, @@ -102,44 +1223,36 @@ "cell_type": "code", "execution_count": 3, "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - "\n" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ - "%%html\n", - "\n", - "\n" + "#body {\n", + "# align: center;\n", + "# font-size: 24;\n", + "# }\n", + "\n", + "\n", + "#\n", + "#\n", + "#\n", + "#\n", + "#\n", + "#

Ein Klick auf das Logo - und es geht zum Code

\n", + "#" ] }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 24, "metadata": {}, "outputs": [], "source": [ @@ -160,7 +1273,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 6, "metadata": {}, "outputs": [], "source": [ @@ -177,7 +1290,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 7, "metadata": { "scrolled": true }, @@ -243,7 +1356,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 8, "metadata": { "scrolled": true }, @@ -251,7 +1364,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "3daf3708d77e4098b826524460104e31", + "model_id": "106e70dd208f4de29ae10874823d30a8", "version_major": 2, "version_minor": 0 }, @@ -353,69 +1466,82 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "\n", "\n", "dawidth = '100%'\n", + "daheight = '100%'\n", "KonjunktiveErsetzen = widgets.ToggleButton(\n", " value=False,\n", " description='Konjunktive ersetzen',\n", " disabled=False,\n", ")\n", "KonjunktiveErsetzen.layout.width = dawidth\n", + "KonjunktiveErsetzen.layout.height = '80%'\n", + "\n", "GenitiveErsetzen = widgets.ToggleButton(\n", " value=True,\n", " description='Genitiv ersetzen',\n", " disabled=False\n", ")\n", - "GenitiveErsetzen.layout.width = dawidth\n", + "GenitiveErsetzen.layout.width = '60%'\n", + "GenitiveErsetzen.layout.height = daheight\n", + "\n", "PassivErsetzen = widgets.ToggleButton(\n", " value=True,\n", " description='Passiv ersetzen',\n", " disabled=False\n", ")\n", - "PassivErsetzen.layout.width = dawidth\n", + "PassivErsetzen.layout.width = '70%'\n", + "PassivErsetzen.layout.height = '90%'\n", + "\n", "SayYes = widgets.ToggleButton(\n", " value=True,\n", " description='Verneinungen ersetzen',\n", " disabled=False\n", ")\n", - "SayYes.layout.width = dawidth\n", + "SayYes.layout.width = '80%'\n", + "SayYes.layout.height = '80%'\n", "SentSeg = widgets.ToggleButton(\n", " value=True,\n", " description='Eine Aussage pro Satz',\n", " disabled=False\n", ")\n", - "SentSeg.layout.width = dawidth\n", + "SentSeg.layout.width = '60%'\n", + "SentSeg.layout.height = daheight\n", "SolveShorts = widgets.ToggleButton(\n", " value=False,\n", " description='Abkürzungen erklären',\n", " disabled=False\n", ")\n", - "SolveShorts.layout.width = dawidth\n", + "SolveShorts.layout.width = '80%'\n", + "SolveShorts.layout.height = '90%'\n", "FremdWB = widgets.ToggleButton(\n", " value=True,\n", " description='FremdWoerterbuch',\n", " disabled=False\n", ")\n", - "FremdWB.layout.width = dawidth\n", + "FremdWB.layout.width = '90%'\n", + "FremdWB.layout.height = '90%'\n", "\n", "Appendixes = widgets.ToggleButton(\n", " value=True,\n", " description='Charakterisierung pro Satz',\n", " disabled=False\n", ")\n", - "Appendixes.layout.width = dawidth\n", + "Appendixes.layout.width = '120%'\n", + "Appendixes.layout.height = '80%'\n", "\n", "Medio = widgets.ToggleButton(\n", " value=True,\n", " description='Mediopunkte',\n", " disabled=False\n", ")\n", - "Medio.layout.width = dawidth\n", + "Medio.layout.width = '50%'\n", + "Medio.layout.height = '90%'\n", "\n", "#items1 = [SentSeg, SolveShorts]\n", "#items2 = [SayYes, PassivErsetzen]\n", @@ -433,7 +1559,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 10, "metadata": {}, "outputs": [], "source": [ @@ -445,12 +1571,12 @@ "#display(OutTextFeld)\n", "items = [SentSeg, SolveShorts, SayYes, PassivErsetzen, GenitiveErsetzen, KonjunktiveErsetzen, FremdWB, Appendixes, Medio] \n", "#display(SentSeg, SolveShorts, SayYes, PassivErsetzen, GenitiveErsetzen, KonjunktiveErsetzen)\n", - "Grid = widgets.GridBox(items, layout=widgets.Layout(justify_items=\"center\", grid_template_columns=\"repeat(3, 30%)\", grid_gap=\"1.5%\", height=\"200px\"))\n" + "Grid = widgets.GridBox(items, layout=widgets.Layout(justify_items=\"center\", grid_template_columns=\"repeat(3, 30%)\", grid_gap=\"4.5%\", height=\"320px\"))\n" ] }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 11, "metadata": {}, "outputs": [ { @@ -468,12 +1594,12 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "a45cde93f5394cf6b262cc31f14c0d2e", + "model_id": "c08292c98ddf447ca1c19117241980b8", "version_major": 2, "version_minor": 0 }, "text/plain": [ - "GridBox(children=(ToggleButton(value=True, description='Eine Aussage pro Satz', layout=Layout(width='100%')), …" + "GridBox(children=(ToggleButton(value=True, description='Eine Aussage pro Satz', layout=Layout(height='100%', w…" ] }, "metadata": {}, @@ -653,22 +1779,13 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": { - "scrolled": false - }, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": 11, + "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "5b0d573af12e4e1f9276834123b062a7", + "model_id": "3ca86c6e7e39437eafa36439e3337b42", "version_major": 2, "version_minor": 0 }, @@ -692,7 +1809,7 @@ "widgets.interact_manual.opts['manual_name']= 'Ãœbersetzen in Leichte Sprache'\n", "ola = widgets.interact_manual(function)\n", "ola.widget.children[0].style.button_color = 'lightgreen'\n", - "ola.widget.children[0].layout.height = '50px'\n", + "ola.widget.children[0].layout.height = '60px'\n", "ola.widget.children[0].layout.width = '99%'\n", "\n", "#widgets.GridBox([ola], layout=widgets.Layout(grid_template_columns=\"repeat(2, 300px)\"))" @@ -700,7 +1817,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 13, "metadata": { "scrolled": true }, @@ -708,7 +1825,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "be9b40c345ca4105a3810de0872fa144", + "model_id": "0d6f03c93f0147cd9f33d2a053672b0c", "version_major": 2, "version_minor": 0 }, @@ -730,7 +1847,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 14, "metadata": {}, "outputs": [], "source": [ @@ -743,7 +1860,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 15, "metadata": {}, "outputs": [], "source": [ @@ -824,13 +1941,13 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "01404ad96cc34dd5af96915447731bea", + "model_id": "1713cde35a884104b20056d5694d168a", "version_major": 2, "version_minor": 0 }, @@ -856,7 +1973,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "39c27a696cbd470fa8f5c58d10460336", + "model_id": "d4100a2d84d34630acf974f78d316abc", "version_major": 2, "version_minor": 0 }, @@ -875,14 +1992,14 @@ "widgets.interact_manual.opts['manual_name']= 'Absenden'\n", "AbsendenUndSchreiben = widgets.interact_manual(Absendefunction)\n", "AbsendenUndSchreiben.widget.children[0].style.button_color = 'lightblue'\n", - "AbsendenUndSchreiben.widget.children[0].layout.height = '50px'\n", + "AbsendenUndSchreiben.widget.children[0].layout.height = '60px'\n", "AbsendenUndSchreiben.widget.children[0].layout.width = '99%'\n", "\n" ] }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 17, "metadata": {}, "outputs": [ { @@ -895,15 +2012,16 @@ " vertical-align: middle;\n", " }\n", ".jupyter-button {\n", + " align: center;\n", " text-shadow: -1px -1px rgba(255, 255, 255, 0.35), 1px 1px rgba(0, 0, 0, 0.40);\n", " font-family: 'Lato', sans-serif;\n", " text-decoration: none;\n", - " letter-spacing: .06rem;\n", - " font-size: 90%;\n", + " letter-spacing: .07rem;\n", + " font-size: 95%;\n", " font-weight: bold;\n", " color: rgba(0, 0, 0, 0.3);\n", " background-color: pink;\n", - " border-radius: 20px;\n", + " border-radius: 30px;\n", " transition: all 0.2s cubic-bezier(0, 0.22, .3, 1);\n", " #box-shadow: inset 0 2px 0 rgba(255,255,255,0.5), 0 2px 2px rgba(0, 0, 0, 0.19);\n", " box-shadow: 0px 5px 5px rgba(0, 0, 0, 0.29);\n", @@ -938,15 +2056,16 @@ " vertical-align: middle;\n", " }\n", ".jupyter-button {\n", + " align: center;\n", " text-shadow: -1px -1px rgba(255, 255, 255, 0.35), 1px 1px rgba(0, 0, 0, 0.40);\n", " font-family: 'Lato', sans-serif;\n", " text-decoration: none;\n", - " letter-spacing: .06rem;\n", - " font-size: 90%;\n", + " letter-spacing: .07rem;\n", + " font-size: 95%;\n", " font-weight: bold;\n", " color: rgba(0, 0, 0, 0.3);\n", " background-color: pink;\n", - " border-radius: 20px;\n", + " border-radius: 30px;\n", " transition: all 0.2s cubic-bezier(0, 0.22, .3, 1);\n", " #box-shadow: inset 0 2px 0 rgba(255,255,255,0.5), 0 2px 2px rgba(0, 0, 0, 0.19);\n", " box-shadow: 0px 5px 5px rgba(0, 0, 0, 0.29);\n", @@ -967,7 +2086,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 18, "metadata": {}, "outputs": [ { @@ -977,19 +2096,22 @@ ".thetext > .widget-label {\n", " font-style: italic;\n", " color: blue;\n", - " font-size: 30px;\n", + " font-size: 35px;\n", "}\n", ".thetext > textarea {\n", + " align: center;\n", " padding: 10px 0 0 10px;\n", " resize: none;\n", - " font-size: 15px;\n", + " font-size: 16px;\n", " color: black;\n", " background-color: lightgreen;\n", " border-radius: 20px;\n", - " border-width : 0px\n", + " border-opacity: 0.8;\n", + " border-width : 10px;\n", + " border-color: lightgrey;\n", " transition: all 0.3s cubic-bezier(0, 0.22, .3, 1);\n", " #box-shadow: inset 0 2px 0 rgba(255,255,255,0.5), 0 2px 2px rgba(0, 0, 0, 0.19);\n", - " box-shadow: 0px 5px 5px rgba(0, 0, 0, 0.29);\n", + " #box-shadow: 0px 5px 5px rgba(0, 0, 0, 0.29);\n", "}\n", ".thetext > ::placeholder {\n", " opacity: 0.5;\n", @@ -1002,16 +2124,19 @@ " font-size: 20px;\n", "}\n", ".thetext3 > textarea {\n", + " align: center;\n", " padding: 10px 0 0 10px;\n", " resize: none;\n", - " font-size: 15px;\n", + " font-size: 16px;\n", " color: black;\n", " background-color: lightblue;\n", + " border-color: lightgrey;\n", + " border-opacity: 0.8;\n", " border-radius: 20px;\n", - " border-width : 0px\n", + " border-width : 10px;\n", " transition: all 0.3s cubic-bezier(0, 0.22, .3, 1);\n", " #box-shadow: inset 0 2px 0 rgba(255,255,255,0.5), 0 2px 2px rgba(0, 0, 0, 0.19);\n", - " box-shadow: 0px 5px 5px rgba(0, 0, 0, 0.29);\n", + " #box-shadow: 0px 5px 5px rgba(0, 0, 0, 0.29);\n", "}\n", ".thetext3 > ::placeholder {\n", " opacity: 0.5;\n", @@ -1033,19 +2158,22 @@ ".thetext > .widget-label {\n", " font-style: italic;\n", " color: blue;\n", - " font-size: 30px;\n", + " font-size: 35px;\n", "}\n", ".thetext > textarea {\n", + " align: center;\n", " padding: 10px 0 0 10px;\n", " resize: none;\n", - " font-size: 15px;\n", + " font-size: 16px;\n", " color: black;\n", " background-color: lightgreen;\n", " border-radius: 20px;\n", - " border-width : 0px\n", + " border-opacity: 0.8;\n", + " border-width : 10px;\n", + " border-color: lightgrey;\n", " transition: all 0.3s cubic-bezier(0, 0.22, .3, 1);\n", " #box-shadow: inset 0 2px 0 rgba(255,255,255,0.5), 0 2px 2px rgba(0, 0, 0, 0.19);\n", - " box-shadow: 0px 5px 5px rgba(0, 0, 0, 0.29);\n", + " #box-shadow: 0px 5px 5px rgba(0, 0, 0, 0.29);\n", "}\n", ".thetext > ::placeholder {\n", " opacity: 0.5;\n", @@ -1058,16 +2186,19 @@ " font-size: 20px;\n", "}\n", ".thetext3 > textarea {\n", + " align: center;\n", " padding: 10px 0 0 10px;\n", " resize: none;\n", - " font-size: 15px;\n", + " font-size: 16px;\n", " color: black;\n", " background-color: lightblue;\n", + " border-color: lightgrey;\n", + " border-opacity: 0.8;\n", " border-radius: 20px;\n", - " border-width : 0px\n", + " border-width : 10px;\n", " transition: all 0.3s cubic-bezier(0, 0.22, .3, 1);\n", " #box-shadow: inset 0 2px 0 rgba(255,255,255,0.5), 0 2px 2px rgba(0, 0, 0, 0.19);\n", - " box-shadow: 0px 5px 5px rgba(0, 0, 0, 0.29);\n", + " #box-shadow: 0px 5px 5px rgba(0, 0, 0, 0.29);\n", "}\n", ".thetext3 > ::placeholder {\n", " opacity: 0.5;\n", @@ -1078,7 +2209,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 19, "metadata": { "scrolled": false }, @@ -1090,20 +2221,23 @@ ".thotext > .widget-label {\n", " font-style: ;\n", " color: blue;\n", - " font-size: 30px;\n", + " font-size: 35px;\n", " \n", "}\n", ".thotext > textarea {\n", + " align: center;\n", " padding: 10px 0 0 10px;\n", " resize: none;\n", - " font-size: 15px;\n", + " font-size: 16px;\n", " color: black;\n", " background-color: lightgreen;\n", + " \n", + " border-color: lightgrey;\n", " border-radius: 20px;\n", - " border-width : 0px\n", + " border-width : 10px;\n", " transition: all 0.3s cubic-bezier(0, 0.22, .3, 1);\n", " #box-shadow: inset 0 2px 0 rgba(255,255,255,0.5), 0 2px 2px rgba(0, 0, 0, 0.19);\n", - " box-shadow: 0px 5px 5px rgba(0, 0, 0, 0.29);\n", + " #box-shadow: 0px 5px 5px rgba(0, 0, 0, 0.29);\n", "}\n", ".thotext > ::placeholder {\n", " opacity: 0.5;\n", @@ -1126,20 +2260,23 @@ ".thotext > .widget-label {\n", " font-style: ;\n", " color: blue;\n", - " font-size: 30px;\n", + " font-size: 35px;\n", " \n", "}\n", ".thotext > textarea {\n", + " align: center;\n", " padding: 10px 0 0 10px;\n", " resize: none;\n", - " font-size: 15px;\n", + " font-size: 16px;\n", " color: black;\n", " background-color: lightgreen;\n", + " \n", + " border-color: lightgrey;\n", " border-radius: 20px;\n", - " border-width : 0px\n", + " border-width : 10px;\n", " transition: all 0.3s cubic-bezier(0, 0.22, .3, 1);\n", " #box-shadow: inset 0 2px 0 rgba(255,255,255,0.5), 0 2px 2px rgba(0, 0, 0, 0.19);\n", - " box-shadow: 0px 5px 5px rgba(0, 0, 0, 0.29);\n", + " #box-shadow: 0px 5px 5px rgba(0, 0, 0, 0.29);\n", "}\n", ".thotext > ::placeholder {\n", " opacity: 0.5;\n", @@ -1148,20 +2285,6 @@ "\n", "" ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] } ], "metadata": { diff --git a/Prototyp/Use_Fremd_WB.ipynb b/Prototyp/Use_Fremd_WB.ipynb index 78acb485..c46b978e 100644 --- a/Prototyp/Use_Fremd_WB.ipynb +++ b/Prototyp/Use_Fremd_WB.ipynb @@ -105,6 +105,96 @@ "print(outsentences, punctuations)" ] }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "oi\n" + ] + } + ], + "source": [ + "print('oi')\n" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Aktiv.txt hkldb_AllAktiv_old.hkl\r\n", + "atest1 hkldb_AllVorgangspassiv.hkl\r\n", + "atest1out hkldb_AllVorgangspassiv_old.hkl\r\n", + "Babelfish.jpg hkldb_AllZustandspassiv.hkl\r\n", + "Babelfish.png hkldb_AllZustandspassiv_old.hkl\r\n", + "bagofwordshkldb1Aktiv.pkl hkldbFremd_WB1.hkl\r\n", + "bagofwordshkldb1Vorgangspassiv.pkl hkldbFremd_WB2.hkl\r\n", + "bagofwordshkldb1Zustandspassiv.pkl hkldbFremd_WB_All.hkl\r\n", + "bagofwordshkldb2Aktiv.pkl hkldbIndi_Conju1.hkl\r\n", + "bagofwordshkldb2Vorgangspassiv.pkl hkldbIndi_Conju2.hkl\r\n", + "bagofwordshkldb2Zustandspassiv.pkl hkldbIndi_Conju_All.hkl\r\n", + "bagofwordshkldbFremd_WB1.pkl hkldbMedio1.hkl\r\n", + "bagofwordshkldbFremd_WB2.pkl hkldbMedio2.hkl\r\n", + "bagofwordshkldbIndi_Conju1.pkl hkldbMedio_All.hkl\r\n", + "bagofwordshkldbIndi_Conju2.pkl hkldbOpposites1.hkl\r\n", + "bagofwordshkldbMedio1.pkl hkldbOpposites2.hkl\r\n", + "bagofwordshkldbMedio2.pkl hkldbOpposites_All.hkl\r\n", + "bagofwordshkldbOpposites1.pkl hkldbShorts_All.hkl\r\n", + "bagofwordshkldbOpposites2.pkl hkldbShorts.hkl\r\n", + "bagofwordshkldbShorts.pkl \u001b[0m\u001b[01;34mhtml\u001b[0m/\r\n", + "bagofwords.pkl HurrakiWoerterbuch_nodoubles.txt\r\n", + "bagofwordstwolabel.pkl Indikativ_Conjunktiv.txt\r\n", + "brainBasaBuuka5.png Medio.py\r\n", + "ConjunctSolve.py mediowords.txt\r\n", + "DataBaseOneZeroshkldb1Aktiv.hkl oi.py\r\n", + "DataBaseOneZeroshkldb1Vorgangspassiv.hkl Passiv2Aktiv.py\r\n", + "DataBaseOneZeroshkldb1Zustandspassiv.hkl Prototype.ipynb\r\n", + "DataBaseOneZeroshkldb2Aktiv.hkl \u001b[01;34m__pycache__\u001b[0m/\r\n", + "DataBaseOneZeroshkldb2Vorgangspassiv.hkl requirements.txt\r\n", + "DataBaseOneZeroshkldb2Zustandspassiv.hkl SayYes.py\r\n", + "DataBaseOneZeroshkldbFremd_WB1.hkl SentGlue.py\r\n", + "DataBaseOneZeroshkldbFremd_WB2.hkl SentSeg.py\r\n", + "DataBaseOneZeroshkldbIndi_Conju1.hkl SolveShorts.py\r\n", + "DataBaseOneZeroshkldbIndi_Conju2.hkl svg.py\r\n", + "DataBaseOneZeroshkldbMedio1.hkl test1out\r\n", + "DataBaseOneZeroshkldbMedio2.hkl trainedSGD.pkl\r\n", + "DataBaseOneZeroshkldbOpposites1.hkl trainedSGD_twolabel.pkl\r\n", + "DataBaseOneZeroshkldbOpposites2.hkl untitled.txt\r\n", + "DataBaseOneZeroshkldbShorts.hkl UseConjunctiveSolve.ipynb\r\n", + "FASTsearch.py Use_ConjunctSolve.py\r\n", + "FremdWB.py Use_Fremd_WB.ipynb\r\n", + "Gegenwoerter.csv UseGenitivSolve.ipynb\r\n", + "GenitivSolve.py Use_GenitivSolve.py\r\n", + "GS_Utils.py Use_Medio.ipynb\r\n", + "hkldb1Aktiv.hkl UsePassiv2Aktiv.ipynb\r\n", + "hkldb1Aktiv_old.hkl Use_Passiv2Aktiv.py\r\n", + "hkldb1Vorgangspassiv.hkl UseSayYes.ipynb\r\n", + "hkldb1Vorgangspassiv_old.hkl Use_SayYes.py\r\n", + "hkldb1Zustandspassiv.hkl UseSentSeg.ipynb\r\n", + "hkldb1Zustandspassiv_old.hkl Use_SentSeg.py\r\n", + "hkldb2Aktiv.hkl UseSolveShorts.ipynb\r\n", + "hkldb2Aktiv_old.hkl Use_SolveShorts.py\r\n", + "hkldb2Vorgangspassiv.hkl \u001b[01;34mVerbesserungen\u001b[0m/\r\n", + "hkldb2Vorgangspassiv_old.hkl voilastate.db\r\n", + "hkldb2Zustandspassiv.hkl Vorgangspassiv.txt\r\n", + "hkldb2Zustandspassiv_old.hkl Zustandspassiv.txt\r\n", + "hkldb_AllAktiv.hkl\r\n" + ] + } + ], + "source": [ + "ls\n" + ] + }, { "cell_type": "code", "execution_count": null, diff --git a/Prototyp/Verbesserungen/Input152.txt b/Prototyp/Verbesserungen/Input152.txt new file mode 100644 index 00000000..8d79e395 --- /dev/null +++ b/Prototyp/Verbesserungen/Input152.txt @@ -0,0 +1 @@ +ich würde über die Straße gehen, wenn das Wetter schöner wäre . diff --git a/Prototyp/Verbesserungen/Input153.txt b/Prototyp/Verbesserungen/Input153.txt new file mode 100644 index 00000000..064d90ca --- /dev/null +++ b/Prototyp/Verbesserungen/Input153.txt @@ -0,0 +1 @@ +der Gang des Lennart war nicht ominös, weil Trüffelschweine nicht lukrativ sind . diff --git a/Prototyp/Verbesserungen/Input154.txt b/Prototyp/Verbesserungen/Input154.txt new file mode 100644 index 00000000..8ae69fe1 --- /dev/null +++ b/Prototyp/Verbesserungen/Input154.txt @@ -0,0 +1 @@ +ich gehe nach oben, da es unten etwas zu dunkel ist . diff --git a/Prototyp/Verbesserungen/Input155.txt b/Prototyp/Verbesserungen/Input155.txt new file mode 100644 index 00000000..f8344098 --- /dev/null +++ b/Prototyp/Verbesserungen/Input155.txt @@ -0,0 +1,7 @@ +wie auch immer die Präsidentschaftswahl in den USA am Ende ausgehen wird, etwas steht jetzt schon fest : +wer in der Meinungsforschung beschäftigt ist, sollte einen Berufswechsel ins Auge fassen . +jede Kristallkugel ist zuverlässiger als diese Branche . +einmal kann eine katastrophale Fehleinschätzung wie die von 2016 verziehen werden, als ein Sieg von Hillary Clinton sicher zu sein schien . +sobald es aber ein zweites Mal passiert, ist Vertrauen dauerhaft verspielt . +selbst wenn Joe Biden die Präsidentschaft doch noch erringen sollte : +von einer tiefgreifenden Trendwende, einem Erdrutschsieg gar, kann keine Rede sein . diff --git a/Prototyp/Verbesserungen/Input156.txt b/Prototyp/Verbesserungen/Input156.txt new file mode 100644 index 00000000..ace7ad17 --- /dev/null +++ b/Prototyp/Verbesserungen/Input156.txt @@ -0,0 +1,4 @@ +in den nächsten Tagen und Wochen gilt es die Ursachen für das Ergebnis zu analysieren . +allerdings bitte nicht allzu eilfertig . +wenn sich ein so großer Teil der politischen Fachwelt verschätzt – es waren ja nicht nur die Demoskopen ! +–, dann ist es keine dumme Idee, erst einmal tief Luft zu holen . diff --git a/Prototyp/Verbesserungen/Input157.txt b/Prototyp/Verbesserungen/Input157.txt new file mode 100644 index 00000000..7f684445 --- /dev/null +++ b/Prototyp/Verbesserungen/Input157.txt @@ -0,0 +1,7 @@ +Beispiel: Corona . +in den USA und andernorts wurde vor allem darüber gestritten, wie sehr Donald Trump sein Umgang mit der Seuche geschadet hat, ob nämlich mehr oder weniger . +aber vielleicht hat er ihm gar nicht geschadet, sondern genutzt . +die Wahrheit ist : +wir wissen es nicht . +wir wissen offenbar insgesamt sehr viel weniger über Stimmungen und grundsätzliche Einstellungen eines großen Teils der Bevölkerung, als wir glauben . +das ist bedrückend . diff --git a/Prototyp/Verbesserungen/Input158.txt b/Prototyp/Verbesserungen/Input158.txt new file mode 100644 index 00000000..d33c1fc9 --- /dev/null +++ b/Prototyp/Verbesserungen/Input158.txt @@ -0,0 +1,8 @@ +das Problem ist nicht in erster Linie, dass jemand derlei versucht . +das Problem ist, dass ein beträchtlicher Teil der Öffentlichkeit dazu stehend applaudiert . +die Amis sind halt blöd ? +von wegen . +auch in Teilen Europas steht Demokratie derzeit nicht hoch im Kurs, ein Blick nach Ungarn oder Polen ist aufschlussreich . +und der Verlauf der US-Präsidentschaftswahlen kann nur Wasser auf die Mühlen von Rechtspopulisten sein . +trübe Aussichten . +unabhängig davon, wie der nächste Präsident der Vereinigten Staaten heißen wird . diff --git a/Prototyp/Verbesserungen/Output152.txt b/Prototyp/Verbesserungen/Output152.txt new file mode 100644 index 00000000..1d51d132 --- /dev/null +++ b/Prototyp/Verbesserungen/Output152.txt @@ -0,0 +1,6 @@ +ich werde ueber die Strasse gehen . +wenn das Wetter schoener war . +das Wetter entsteht draussen an der Erd·ober·flaeche . +es gibt verschiedenes Wetter . +zum Beispiel : +Sonnenschein Bewoelkung Regen Wind Hitze Kaelte . diff --git a/Prototyp/Verbesserungen/Output153.txt b/Prototyp/Verbesserungen/Output153.txt new file mode 100644 index 00000000..1980b3cb --- /dev/null +++ b/Prototyp/Verbesserungen/Output153.txt @@ -0,0 +1,2 @@ +der Gang des Lennart war nicht ominoes . +weil Trueffelschweine nicht lukrativ sind . diff --git a/Prototyp/Verbesserungen/Output154.txt b/Prototyp/Verbesserungen/Output154.txt new file mode 100644 index 00000000..974a84ec --- /dev/null +++ b/Prototyp/Verbesserungen/Output154.txt @@ -0,0 +1,2 @@ +ich gehe nach oben . +da es unten etwas zu dunkel ist . diff --git a/Prototyp/Verbesserungen/Output155.txt b/Prototyp/Verbesserungen/Output155.txt new file mode 100644 index 00000000..60642510 --- /dev/null +++ b/Prototyp/Verbesserungen/Output155.txt @@ -0,0 +1,16 @@ +von einer tiefgreifenden Trendwende . +eine Trend-Wende ist eine Änderung . +eine Änderung von einer bestimmten Richtung . +wie auch immer die Praesidentschaftswahl am Ende ausgegangen wird . +etwas steht jetzt schon fest . +die Praesidentschaftswahl ist in den USA . +die USA sind ein Land in Amerika . +wer in der Meinungsforschung beschaeftigt ist . +sollte einen Berufswechsel ins Auge fassen . +jede Kristallkugel ist zuverlaessiger als diese Branche . +einmal kann eine katastrophale Fehleinschaetzung wie die von 2016 verziehen werden . +als ein Sieg von Hillary Clinton sicher zu sein schien es . +sobald es aber ein zweites Mal passiert . +ist Vertrauen dauerhaft verspielt . +selbst wenn Joe Biden die Praesidentschaft doch noch erringen sollte . +von einer tiefgreifenden Trendwende, einem Erdrutschsieg gar, kann eine schweigene sein . diff --git a/Prototyp/Verbesserungen/Output156.txt b/Prototyp/Verbesserungen/Output156.txt new file mode 100644 index 00000000..13e4d92d --- /dev/null +++ b/Prototyp/Verbesserungen/Output156.txt @@ -0,0 +1,7 @@ +in den naechsten Tagen und Wochen gilt es die Ursachen fuer das Ergebnis zu analysieren . +allerdings bitte nicht allzu eilfertig . +wenn sich ein so grosser Teil der politischen Fachwelt verschaetzt – es waren ja nicht nur die Demoskopen ! +–, dann ist es eine kluge Idee, erst einmal tief Luft zu holen . +eine Idee ist ein Einfall im Kopf . +an eine Idee denkt man . +sie ist ein Gedanke . diff --git a/Prototyp/Verbesserungen/Output157.txt b/Prototyp/Verbesserungen/Output157.txt new file mode 100644 index 00000000..6c07c450 --- /dev/null +++ b/Prototyp/Verbesserungen/Output157.txt @@ -0,0 +1,13 @@ +in den USA und andernorts vor allem darueber stritt jemand . +die USA sind ein Land in Amerika . +Beispiel : +Corona . +in den USA und andernorts wurde vor allem darueber gestritten, wie sehr Donald Trump sein Umgang mit der Seuche geschadet hat, ob naemlich mehr oder weniger . +aber vielleicht hat er ihm gar nicht geschadet . +Sondern genutzt . +die Wahrheit ist . +wir wissen es nicht . +wir wissen offenbar insgesamt sehr viel weniger ueber Stimmungen und grundsaetzliche Einstellungen eines grossen Teils der Bevoelkerung . +das Wort offenbar ist ein Adjektiv . +als wir glauben . +das ist bedrueckend . diff --git a/Prototyp/Verbesserungen/Output158.txt b/Prototyp/Verbesserungen/Output158.txt new file mode 100644 index 00000000..5bba1633 --- /dev/null +++ b/Prototyp/Verbesserungen/Output158.txt @@ -0,0 +1,27 @@ +das Problem ist nicht in erster Linie . +dass jemand derlei versucht . +das Problem ist . +dass ein betraechtlicher Teil der Öffentlichkeit dazu stehend applaudiert . +die Amis sind halt bloed ? +von wegen . +auch in Teilen Europas steht Demokratie derzeit niedrig im Kurs . +das Wort Demokratie ist griechisch . +es heisst auf deutsch : +"Herrschaft des Volkes" . +ein Blick nach Ungarn oder Polen ist aufschlussreich . +Ungarn ist ein Land in Mittel-Europa . +der ungarische Name lautet Magyarország . +Ungarn ist ein Binnen·staat . +das heisst : +um Ungarn herum sind nur Laender . +kein Meer . +die Haupt·stadt von Ungarn ist : +Budapest . +Polen ist ein Land in Mittel·europa . +die Menschen die in Polen leben heissen Polen . +die Haupt·stadt von Polen ist Warschau . +und der Verlauf der US-Praesidentschaftswahlen kann nur Wasser auf die Muehlen von Rechtspopulisten sein . +Truebe Aussichten . +unabhaengig davon . +wie der naechste Praesident der Vereinigten Staaten heissen wird . +Praesident gibt es in verschiedenen Bedeutungen . diff --git a/Prototyp/Verbesserungen/Verbesserungen152.txt b/Prototyp/Verbesserungen/Verbesserungen152.txt new file mode 100644 index 00000000..cbbe2b46 --- /dev/null +++ b/Prototyp/Verbesserungen/Verbesserungen152.txt @@ -0,0 +1,6 @@ +ich werde ueber die Strasse gehen . +wenn das Wetter schoener ist . +das Wetter entsteht draussen an der Erd·ober·flaeche . +es gibt verschiedenes Wetter . +zum Beispiel : +Sonnenschein Bewoelkung Regen Wind Hitze Kaelte . diff --git a/Prototyp/Verbesserungen/Verbesserungen153.txt b/Prototyp/Verbesserungen/Verbesserungen153.txt new file mode 100644 index 00000000..1980b3cb --- /dev/null +++ b/Prototyp/Verbesserungen/Verbesserungen153.txt @@ -0,0 +1,2 @@ +der Gang des Lennart war nicht ominoes . +weil Trueffelschweine nicht lukrativ sind . diff --git a/Prototyp/Verbesserungen/Verbesserungen154.txt b/Prototyp/Verbesserungen/Verbesserungen154.txt new file mode 100644 index 00000000..974a84ec --- /dev/null +++ b/Prototyp/Verbesserungen/Verbesserungen154.txt @@ -0,0 +1,2 @@ +ich gehe nach oben . +da es unten etwas zu dunkel ist . diff --git a/Prototyp/Verbesserungen/Verbesserungen155.txt b/Prototyp/Verbesserungen/Verbesserungen155.txt new file mode 100644 index 00000000..0c328914 --- /dev/null +++ b/Prototyp/Verbesserungen/Verbesserungen155.txt @@ -0,0 +1,17 @@ +wie auch immer die Praesidentschaftswahl am Ende ausgehen wird . +etwas steht jetzt schon fest . +die Praesidentschaftswahl ist in den USA . +die USA sind ein Land in Amerika . +wer in der Meinungsforschung beschaeftigt ist . +der sollte einen Berufswechsel ins Auge fassen . +jede Kristallkugel ist zuverlaessiger als diese Branche . +einmal kann eine katastrophale Fehleinschaetzung verziehen werden . +wie die von 2016 . +als ein Sieg von Hillary Clinton sicher zu sein schien . +sobald es aber ein zweites Mal passiert . +dann ist Vertrauen dauerhaft verspielt . +selbst wenn Joe Biden die Praesidentschaft doch noch erringen sollte . +von einer tiefgreifenden Trendwende kann keine Rede sein . +eine Trend-Wende ist eine Änderung . +eine Änderung von einer bestimmten Richtung . +und von einem Erdrutschsieg kann keine Rede sein . diff --git a/Prototyp/Verbesserungen/Verbesserungen156.txt b/Prototyp/Verbesserungen/Verbesserungen156.txt new file mode 100644 index 00000000..e1955e65 --- /dev/null +++ b/Prototyp/Verbesserungen/Verbesserungen156.txt @@ -0,0 +1,9 @@ +in den naechsten Tagen und Wochen gilt es die Ursachen fuer das Ergebnis zu analysieren . +allerdings bitte nicht allzu eilfertig . +wenn sich ein so grosser Teil der politischen Fachwelt verschaetzt . +es waren ja nicht nur die Demoskopen ! +erst einmal tief Luft zu holen . +das ist dann eine kluge Idee . +eine Idee ist ein Einfall im Kopf . +an eine Idee denkt man . +sie ist ein Gedanke . diff --git a/Prototyp/Verbesserungen/Verbesserungen157.txt b/Prototyp/Verbesserungen/Verbesserungen157.txt new file mode 100644 index 00000000..f580600e --- /dev/null +++ b/Prototyp/Verbesserungen/Verbesserungen157.txt @@ -0,0 +1,14 @@ +Beispiel : +Corona . +wie sehr Donald Trump sein Umgang mit der Seuche geschadet hat . +naemlich ob mehr oder weniger . +vor allem darueber stritt jemand in den USA und andernorts . +die USA sind ein Land in Amerika . +aber vielleicht hat er ihm gar nicht geschadet . +sondern er hat ihm genutzt . +die Wahrheit ist . +wir wissen es nicht . +wir wissen offenbar insgesamt sehr viel weniger ueber Stimmungen und grundsaetzliche Einstellungen eines grossen Teils der Bevoelkerung . +das Wort offenbar ist ein Adjektiv . +als wir glauben . +das ist bedrueckend . diff --git a/Prototyp/Verbesserungen/Verbesserungen158.txt b/Prototyp/Verbesserungen/Verbesserungen158.txt new file mode 100644 index 00000000..5c47e470 --- /dev/null +++ b/Prototyp/Verbesserungen/Verbesserungen158.txt @@ -0,0 +1,27 @@ +das Problem ist nicht in erster Linie . +dass jemand derlei versucht . +das Problem ist . +dass ein betraechtlicher Teil der Öffentlichkeit dazu stehend applaudiert . +die Amis sind halt bloed ? +von wegen . +auch in Teilen Europas steht Demokratie derzeit niedrig im Kurs . +das Wort Demokratie ist griechisch . +es heisst auf deutsch : +"Herrschaft des Volkes" . +ein Blick nach Ungarn oder Polen ist aufschlussreich . +Ungarn ist ein Land in Mittel-Europa . +der ungarische Name lautet Magyarország . +Ungarn ist ein Binnen·staat . +das heisst : +um Ungarn herum sind nur Laender . +kein Meer . +die Haupt·stadt von Ungarn ist : +Budapest . +Polen ist ein Land in Mittel·europa . +die Menschen die in Polen leben heissen Polen . +die Haupt·stadt von Polen ist Warschau . +und der Verlauf der US-Praesidentschaftswahlen kann nur Wasser auf die Muehlen von Rechtspopulisten sein . +Truebe Aussichten . +wie der naechste Praesident der Vereinigten Staaten heissen wird . +davon ist das unabhaengig . +Praesident gibt es in verschiedenen Bedeutungen . diff --git a/Prototyp/Verbesserungen/indexDerVerbesserungen.txt b/Prototyp/Verbesserungen/indexDerVerbesserungen.txt index c663e4d0..147ea53b 100644 --- a/Prototyp/Verbesserungen/indexDerVerbesserungen.txt +++ b/Prototyp/Verbesserungen/indexDerVerbesserungen.txt @@ -1 +1 @@ -151 \ No newline at end of file +158 \ No newline at end of file diff --git a/Prototyp/hkldbFremd_WB1.hkl b/Prototyp/hkldbFremd_WB1.hkl index 4526bc61bc560ca36b4b5bdd7824923a7a40caf2..150bbbda807377655b68e3c160242b1534db7ff4 100644 GIT binary patch delta 49901 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 delta 50137 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%0Dev-FFwiVJ-~Qb{Ijypck4fQ0_fLXckjurKhL%Qu zz~9p7gRG>;IX3$KK5?WlgZ{8joHW@JXbN1@Xs+>Y_qIT8A^}gMH_*@&DlwbPX7eVG zufZEIM>G-!3mrY0t&m|R32_)~1W=wtRPjP$lMdHba5s6@}k%_FsIp8M_A&W>3X zPrN0#g+V@R9iL&R(UXE*c00v>1MA>i^DMplBu27s(knnNaL|r_Y3)L@j7b=+ZL;EQ zna|}aTR2vskSSxH()Q6Czr;qjUa5c`DmX^p_)?CupyGYLZCgl`WEwV#cp{L{Q zW7(8DUU zT0RKq;L;pwNV5xfDx<|eT97;u$sT1F(&W3xiGxJdDNLgPy@1_nIOkE?DXKALZ*8zF^qCECUy(%ufTK z=wp*yvt3tfpb?OV>F|Bxz0|Q^+%|IrlboPqk=-pJPb1EfCs+fr$(1e~|F~4F3;Ce~ zd0neC%VU?5F`7-$+4QCT;?_|`{J;i04b4nAQ;#c?*Q=mgHGy<$XypO%YHQly;7~Y7 zy8PM!(Is3O7bX)&zLzWxFw)@lZ)YTnld;L>ke@8m?_@d!Sw*sh8V|Wr0}OOzyJu%p zfNY_azY^&aH;exe=!@&6tE$XCuLr9T3b%N-k+JSFU7f!sOv>WY^_muPU0kq=AZuj4 zmg@@SMv+mms00F4L-rUwEogxpdEGVxS>a`JCOv(NSUB5L1H=Lbf0*+J(8uB8`lcYs z7aKfvt~@d+uE`WhOQY*j^B`mJx|h(>4snt^>gjcQ;b5#lAr6rnF0l(E$3&~ty|Vxti+03Bqf{MX z*OuPV%68K1=Us8u)z!(n`qi$gJJB4%?VDE+yKr8aHg=gd`54Dv#m@K9tRuk4`daE) z?E+EkR=UW`DZh&T2x&l~cfXBab%b)y8tAHi(JZyvhBGWn$0=Bnk*rCh{lKz!JnyPj zyPBu*t^w9%pNH!q7?U$VYlAXD)tO|pe(QpG@=K-1c{*8e?Q9-q7v55OqCY16#wl!} zr@scO(TA-#!;zg+OmvP_nku>frw|C5dK?PAMtaaHjhDLr4CoMIQ>EK%7v5Ax8Kibx zWa}=3em0%IZ8=^jB`QTEiHrAvu*3~rv*F)BAU@nkZNq3CHjAUL4GSTONOo!6t%AB5z zr*lG~T_~eR7vWb`ttmS9*9z2ms^F|4U8gZlQBW*BUc~Tl`hZ9LMRsj*s9o)^^R5W% za-QN{6>8V1(`XLCm@#Upx?Ymc7m8jZy>^4N`?CLHL->EC-{q7A!hU*LwKRQ&fnA2Y zjeeplYJ}l}$s-k@y`+xWJjk*Zm^(_$%e;*cYe1Sng<%|-YT;%c&`fW5ve`9Hgb5=q zjFO+LmR^zCOdFblVUXMs^I}(e+*E8Jn?QHNyLXXsdWe3^>gAdp&2<$(x-=J+?P&2_ z-Bbr-SCVYCfl>cps2Kz4_()}O{g|{Bo|anR1Tq$e+H8tAvr3@i?rtG9K}O%gpsaz& zsy1zfzoFJk3MD@*D3LTRw~vv=%(9l+aM16q3DvcD!4MkA7_uR5$R(G@DkaE}+exve z+~pyYr4}$0w>55@F4cQLQfEs667aj`WwZo9e__#ME3y)dX$B-%VMgRyi8Oe;OJp{B|8U|MiEKg2Skn*zGsMGg=VEMt>>|ZF#zx2{ zQs$lkLEYnCV+5=6dBSwlRZ=NptdSC|r$B&9MoO;6enT)b7_-4951@nD1e z$^+7m3b^?{6P@C-4YK)|q&3pl&ySi&W9vpcXw_Tzb9n5S)}t}EYVqipJKQc!Y?Ne+ z*P6UaO!<>`GWcUcGMugV{e8ppxw(VO-WS9#=|0?k(wL4VIDG3E2W|fff6k2>i$BZ9 zI^@WulZ}HSDRuv!WS9E!i`y512n_Ti9mq4-r3KBBe5Ncn2`+ql@MymD z^JeMT8CeChfu-F$E*c@aFViml9q{A(GLuH2@hYud$_N5CcRm)@+A_g$=+6@zv}4so zY_i`?WLqosX-JXIF5QV=oSbS&9*I-kbB$X0xMPIZDBr$WJ3`2>W2QFmpeCp&%r^Sw zmD&Zubu?#-cHZJLc6@6+t%LH zML^O*^6$22X9}Ak1c!GuF#(Pl#UbA%G<2^vNY;Al2&~ZDEY0-TVy@Ab#Z9weA)GAD zE+H#p%XK>;(^ZB@xd_v9JaejmS%|yFb(uVUt9F7Q#U%&b?$(aVTW`kT^-a+J8Exjm zZ|Ir^8g*-J^O?k}1?gMlk6E-_ij9nj%rtre;ULqy7sm~Yg;0yjpS`uIDmkk}xQ9O+p=J@^ylTz#6|eE)^N^$lGAG z@YlG<8I&QtA@>xzv_?AvOMY#Qwt()wLKjGgq&DT0lU-W7cs?l4-Idspd@BV5TKU@B za(*z-zS(w@Nm7Va*Cy)ubjC8(nKmUpc=Do$r`e_V zFy3-;a`MLEo8H`{mFL}=kqjrd7z#uNz9ogex^~XOkp$e5p91e2ZL~|D1Ab<-F=?1X zPvg19Hp|1F)@qG{j@~6roj}QrQytX$9{$9xbULW<5hwQf&{GRpReZTwHou%$5H6cB z0ZbaULo3%WPQljoE)LRRz^}bNg`hDzfb{yQGM~WE2!_m zX%ndb&1vI@(lXA3cF15ULv%^%jEi<@R1goHLKv8ZL)s1SkTcq6!P$L>-7btwM#ef( zXBX#&*t7mFr+>9(5=cq%oHN^hcNW=l;>x% ztTZXSsa={M#%uh+hTRqYJj+B^e>r13b*;U`VL7K&HX8Ol6AHx583TpiIr#x*yH-k_hn zs%0XLpX{NwwYp+`nqY2rAE)!y>V^rQ%j?(bIt80`c@yXwqXc1pQy>K8k+@}Hy>6BW z=O5?>T|Iee&Vp=G77P=n-IjBSjnNX4L!22Q!ch(=lrTsbRbf=a=MBcCF?t_FBM_cL znfkx#v@p1p(0HcaHgBsKBuiYmqzq=y8n?v=(zVMAa=M*Z$@O`=z5Y5c-EnOToo3bN&CG;3ZK)TwK#nzxYHm$d8JpN^W(L1t2#eO-94WArdupzkQr^_m z2-wl1IjR`IjKfl-1B| z|FDAT>*$8_n?W;9!od)`N-@#dEy{lK(bXq6!*Ul?z@;j<2PVPIMKtbPkVOAFjzIFz zmzw0`2XlWg9E@2R;dM$CnCN_!7H5D@PDbR}rDp-V{a!m@%u6Ya_UYu|on{qx1`_xB z;L;(`$#_Vy(!sc%Dk^q)hNAu;Lizy3D#qzuF84vn0+(SVX^C##kXeZ8F6sG ze5q0D8OE;%mRx3(BGdVGDZQ+fZ3iOqFa#JE=v4i*ET77=;_V8JaUVVUj=)45_TRyn zllJ{$nvSlp>I?NERF{ZZ4q9O^zEaEh?9S+FV;zp>ZqD?%QrW_+Z%q&<5+cW1FI<8< zn;J=_-iJd4qkCK&ZH6+`1YL@|F-N9Be}s{%fy*#U-NWQBv-AtawzzJdz8U&lnCvE( z*vk>Cz#Qr9Oing)4?FW?EN&n*BGfFh$u(XF1+)bckY9jJZn-H)xS`;4 zbXO>{iL8`hDhowinvmP3@so#`I$4fLh1v#x^98)GppRZ9Wz#O3{<~2{%+_BHAHO#U zO%aX-FBCz3=TfL$AVvaxC0Ac$nXlypgA6B2=-0XWu3SxXWVBHYvmhQaIywwK0cw9& zKUs>WjgwcstIrVV<9Yfq1|~6;dxG?)_w}P_T7`qq>&EMC(tf=8GuIaxZ7}jwO1#_~mH%!6o|S9o~EZOtHTn$NGRid3(k;;`UQxkBk6V>D(b>*JdFkS^lJDRxc`TCdjEEBQ$2iYL62)J{RX$2t}^WM2Jw6)w0OO76fN6psHOL_5x-hll6y2} z6e!~x;+V7YgWu}GpKiE*kwyGFC&k3O(<=#=z;i zTcPfnbN{1U7*$!&{-SbGt+uN!tJ(w-QZ_-VpWG65yYE{>ik&%GsudN6~5`17-{FQkB@ zZ8*1oItzmEG7~s3pOco_mN;l{C;nLfcge*}o!kksHS%+i!8;RV>w@`9y!&%`+02v~ z+@rGX;@>`(znq@}W<~??u>twE3Ip~;M)lH(hyJh>R)%R6url0Oaq+a)owMyy`WJe6 zTW7Mp0+B7!{{cEwrm4l_F8We_w>D)~ZjyNGOTGNwfe|26r@p~#y_J{aNxLpbxJ{Jr zKiWORX>4oWs)UU6sPE=*m2z=TZAV&_3r8YE=J!h5r?y?sEA6QIDr4!2#*v7d=}uQ} ztXAV_Tnm(TtI}@M^ffDh9`%NvsM0>CwxhjD+o6WGv=6BFs}pw3R3=P>z6{)_?AnA# zdhX}SKt5GOZGS>(ckwp7&F*W~Hm`mSJ%dV8poifmp^z0;aD>ubHebQ7Z zIZhjB#;c~GeGh+Ps1&RJNq_jnP;|k9D|Zj%6$`}>2bo0+VpzGi4mu_xIG{zg1QpiQ z=t-lm?KKo+I9-MAvF>7NCG2G`2xWT>r3eq0(r%a{JV`gV8wyII?^xk6*y-QqMVL!y z8(7ekGIEvclUSx^4Wc>Ynv&@JxS{C8xVWY$T1k(z8^)|F!lW?0LEnS*jm^Hz2br*8 zF#1xr8=UU)fV)hy)Samzq)6{Wm@UIOR|3W@jcGfmvL!Axv^xS<2ozuz#OzHwSVhfXzB*US0? zhP48{eZ9`C)0D@>*|hPOhQ29rp(w2`2(cr8P@({SOpIirf$8mw!A!|i-5SgjYH`~w zS2X!(=vRiZ#KeSsi1*FmkZV{LHw7SYCJ{FSp}KUf@mBiQTI1}BOtvqW^B=Dz%tD!o z!N8+-n5i+Nz``XCHr%>EEmmw+v9|JV$Rb8@}&w^s5m9OGfx=}sP&7VNTc>PuRL7h=+ zwCFT;l}Ng&@JeNo$)Prl^zO2%B2%f_?4}3rL9;?_R@36)tBcIlYEv_d9-Of3P^z(; z`#u)GCf{Z?CJE=vVJrn-GcZLZnZhs=q~-KE2#%lfFdf z@z)YKK@cmX{}W%BEB@Iazqfr#5~_@kQa}g&3>>X*0h%-iP9}4^ii&G3Ta}UK!)m*K zi_-2=+Z}bhO*>AnF^Z8OYdo8}gwbnZm#yqG$S=D)*BSGK5zP=~ zcPHtjOT8gIV!1(E7Ll>^6eP})3LQLpkU?DwGI5$NZ)|L;@w2pmMo&HQ=waB}ji@hD zAVI|rk&SfH2IH`0#)afIl9yh_rQwiDSlpCUN*f^3yNH2+j5PXT^4sTH7&lKA;Hv!@ z8G-m=X%cCROp=&BA2;oeJxhPR!FXH_R~wDO*0^@7mSM8py+X5+EEPj=wN5}_%AU*s z)a3wS$pY~HLe3|PkS_q|Ck}jc6S+yVju6++B6C5rc0ncCMQ(ECNZ#-+kLz&(NKex= zMqI8v^z=sK*N(WRSnxKui_>eF2EGIjRmVIb#A0E?FM%~O2rDMhQ`2VSd!wLh>}>Kj z)GIN2+ZjFZs@nKmV&35QX46%frWIDp4HCR0C2`BjxM6>M_zL=9rs)X%-_6GPw9;zw z>A7<5r#rkWbLa}2X=K7#U{+2vW4+?)J+k?h#75^FnFV=Er}h}-^WThN;$>;N$)xTR z$92j+i9EK}DE9qIX;`POGm5R0H%#Z$JAKsCw(jE1Z(TaxE*;-%WTI>8Miz70AWVC5FybDqn;O94j z{?X=YtI=GlPFeMex;*>M#)MhEo>Z>M3wH2qr z#EnI!!)mjg9(-V95$*fW#v$ek*F>Ol9;j^o@sgy)VzDn`#Q}NP4=GCzawEmGUtteiGARjD+A+&y7wxm<2WR1SDqBrIW?v+uVW_`UFfWRy z@6grqc#hZsTJg4N@;ng+K-UORBSxkmbf`&2?vap3N+3irFC19Dr-dv){MmdFC!I{u ztN>A%OOL&6+BU8n5gknlvjADq6b?5{S;I_!;NQ$j))eprc6(@l_jp35JiYGx!C1Cx zEM~sguGyv`RvQ|>91GHMul(KRDeGsw8NREkBUbtNVQZa{ny)nNlR6%@()nZ41|`ua zwwQX7{OIwm7;0sy{N2{%p*ROL%)!JL_6!dSsG1`$3te>M)41_=?<8=$Z+~u@E_Urv ztmW0JDpEyP{{oxf+^q~egnO{U$K=v}2z9vqw!CMj=WMK7r{g9#OD5tYTG4Pcv}*#DBqxj{Np&S z726uYJD!I6CU0%6f485y-Z7CjIGC7uO9|&>!Ya$VgFy*qD;T`NHZQpB$s(K!1n#S$ zsL1kSDhFr&+$7fo-pvmk0)3eAok_T5I4EHM>=Z9=YOL`G6faw26LcnU!+NioN3)tU z%Kc6B^LI>B+p;_ugdI;7Do(Colenh~l{KW?%sA{)Z(|FBqmVC%Saff|ofE6nn4{Y) zN(4e9S&E=5GRk$mj>nCb$2v46@r(%?AK6dp+>^zn!4~&EDS)tqxUtIwC!HD@<@(6T z9=W`s2!=|MMIIr4(R*4N%?KtVy{`GB2=NM6ctWnf&=aRjxov+E%;dzVxb9gIR=(oN zI+k#U{J<-O`X;hKf>R(wRtlk@r$|#z78lPXv*Xg=B@*)bi#-`DJqQkF!qC+`G_5#8 zs)brb^g>fjbWL1Z#=>B?`^mu*4k6q`Hj)<7r3s!k=}1+&qFb)=T!~mYPcRVO481BY z40El@;355Zd%HXhVWd685F&tC09jn)5Mh-po&_8?G?6_fSS8gc zui|Q9i zV-^S?jcCxxlUh|4Pq&ZT>sme5E-;-}}bAgYNs*yp8MrM`OB# z{~poV(lwdb>Z#EkER|JSztfBjIT`{rUM(b658poKF7^FJ>y_;kVVxD%^M)z$@(1Lj z9m!i9imCXX4&$i<%b~= z1}t+$^j#xA_+kQW{u3S~bNU+mBt>VT@po{0>2CSEcT#TWkM!VfoZ`FElOL6-Rig1) zdD$6rhEddf!|^n?t9W+($lEmfl^KafMhml`cBy^mvRIQ2u&(HETn|Q;as-)fE}pqo zetv}|g+4I%-uUaVh!<=L{PyN7i(Rb0PTrrDayz%>yoSv&#Ieevjl}n_liwX%hHQmNCT#4pj$zBTt470X;SU4Hc6=5}G!$U!lI zMam?3s<_cE6v?Ao{$nn%FA>1BC&WgREHlegV}e0>u!VT(&Hpjy&);PN!{t7^5_7&{ z5rZqgxxo_-*ER(kl_TTIvtAwu!4Z#e>Xlvu%D`^wvc*l4=%@cNk0<4sOniXgQs=FK z4-LIVoXIeU9}Zra2lTX|kO0uEKtEIn%LE;g;(|>+GS`T(W+mpvH5rCcoYv@i9o&2& zvcctv8_KnHEO3Bq5q7t@LwW=;2H{L3my0k=MlBL^_>+U#kbfGX`1I^|=5OTE7c83u`b{unJ}v&cdf+DRd3!Un9mY$D*cj%Baw-5*ZSu0eLgI zs@;Kc)=umT%PlDay=xU1nq`_rKEE|ZC*ZLpe*}Ec_Qb7>n&}p~e!V3f*|^L3PBf~l zz)A1E$}(OeZVpW_lwSD@Koy!F{|V|xJ$`>ak~pM%$Zr7}w5IXn5`$Mt^31TvlQO3# zo##W(F11Sokj&4#zE)>6m8w%WQ_mhuZNHvRU9Ccm^3gq(N@Z%687+N@@ivc6dCIkZ;A_N# z&Tj@>v4fBgEmi?y$cMnd^#a4d(yL<7|0-+J=!c*mr{2N!5O)xdulNun-Tq8r^3z5? z1<`Vxk)Qe$2+3tHSr8BO`A!3684?XJvJSJI3#p0BM^-3F4VCYx=k%)vOMsz zWw?-&sgMQ)zwK&a3A0{ThCJ#|mIFd@O%RTlK!BypW$(fs=O>pDnZ+%^re+VBNdNMR zWun!9f+KNT1;ppV@+&T1sMIWw*WQq36Kv@$2_wWJm$|}Eta0-sy0Dk27+a> zflTEYykl6Ej4iacE$!=spUK}D(~=niD;Obti8Ui)2!k6Dn2w3rF=% z1geLKV$g4;0Rob7;E?jZzPT zc5Gl!+O<9{DV~qBy>9N-U~pRO}nPN@hwZ{V1@ZcW3f*vqah=hUv=U-PaG*42Cmu7?~L zPBa_71O_kIl4oKr9MOKC{NNERs{C{$ZJ{{70D&(45Y%a&mWl8hq&zh+R=3C#8L#CL zA+E&+FW6uZ`nqea7N-b_MXM30R^^&c%Wg^=w#X-t8Zu2pzC0;%UCWB)AokVk_KUEX zk)Mkw%j4P{8?On+W=D^cS40*mbD6NhL)PfPS|Rn4m))PxyKYKbMfE2wV@%4CM2tNB z?xwWm7C5|68O9T;C6c`M=V?)aMlMZXxiq#0p*+Fu#Gz@7=4HTV3NF11aW+8Se0f~E zz};r_GDp}FMA=52(WS1<0@7S{IRe;IbzD~_F=HNikq)~oeRp0V=j#xqy`ccOaFCnV z1N7)+>CXu9F*@x8&P4a~fR2=}IgvJ1VGAgVfkf@$qivG?{xtdgt0@|)3uQi}s{tQ= zIw8h0C!X{qK%2iz3FMEzI@&HdyVB&ZY6>92$6uXgGOANo(=YllwdQS(kWYnn(XxL6 zdic|nJq~+(A$|G`2**zt>-N$_+%YE{Ea*;J{6Ly~TuPanr^)ykJT*;*3lhHp9PA4? zA#lcIR%ds8&5=2*Hv6fNl@5wwQ0iu=(1^Sm&?NR5%}KY5uRkC^m6M)KXn9~=_`x)J zxh3H*TCwLr**rew_JI%a7`}(n3{EN8wZLYP;X9w26vLU%S#ir}n#|O1m^i z8Lum@w0&y3!>BxEm(rH==cW6Vm%&ZM=?|yL@8zVVb8ro0C*Y}EwbMPtF1_(^+Oc^j zlSw9fJ<{|?(&RTEV~#JfvEst^Xup)b2a8c%2Ims~TCDXDyiQf}uEYvOHnO*r>O5`T z?6BMI0cCZRXVYBpyVI;W>F`V~)&7aAqm1BLXwic7#_Q?hI5^T0|T)yF7iSP)jSy)9;$eEWJ=DSj5N$ z`G0LN6P96^U0Iw6thY$6jb$5Q9tOdN3>CeM7B5UMZ;Pj~5>9r_hPY6g!BQfU$RQ~; zC3##H#l=ZhSRg$CKb*19w{|02wVaGI@HlGB5N#0gsP03C67xD(L?ECo(X*J!$;gB- z3kX<#G(AK(U59m*X@%LPQ8*fe1>TtL}2dt6$KFbbKxlU^jyg{RUN z(_fxSFG%yi^NYt{>>3xHB_BPNj)2IOAEYZ}_h`%@@Q8k~v`Kz9CnM$LGneWeP4ah< z#0l^Ice+y?-7Nope>#Y8^LD;*`hJa#W8cZHP1Wk2f=tzk6Ytx{p{**kny&6lPqJTd z%gE{G^kayQRpbhufpPr~dG1|_DLJiSIYr_-7lC;c|J2}r--_=Hjp82=))$DubR=n| zdP0!1BQ6Tb@4m#IspHQKV@tn^ap~XqBRXHlBgQ}GT}JhQw|~aFBCN~#Ev{1y8QdN9 zdMG`KyKswZemFhJO*EKEx(e_iK@`l-C3OI9xi29!a#e3x3qXw{ajN?soNuB9#*C>F z5i;2Nm#WD1(jCT(@ltakphM0tS4w)#8S3ODQ`za7g^(R-$XaQpYELfxEWRpC@DPlfjllk(oswDku+hu-!(w~0#l&-TXL;V zspmr`lZNQ$H1>Y_^mY22Oy(DT;il&g)z-3NilN=Ed&qLl2G{q+6H(X@mWg2+?~Qkn zd*Jc-rO;CAzD>A1KwbwlW0Ml=2S2k9rZnmQMPm_JN! zq1J|sk0axaC^D zI@dvp43J;RD;qO*3Dz`J{-^=AigzelOiu+eCXL@@ZSq0XTgrpOy_m!sj7>$X+D%G! zL{L-bE*4S7>8oF)%{&^DRMRJ!jhKOEOU6(^ojdRT0{Fc97bf!p?uWcGEkj-&O4i4O zR_-~E2D=ZUw|iLfFEY7be6 z!>|qN0#qKwrk|auhBh(FYs%O| zU;Qw>LY~{4;TJ|5)<6}3UeiQ!;HYET9cH*9k{;KL)^f`r87aTIBf~6YFioeCtPsM) zHPw|vKMiKQkZs+Cv;#&W!ai>koPP*WbS=(2OluaUkD#X(XGZ7?p^S35dP$~9Xsd@p zr+Orq`o)d8>Byyq2N%?fQOM;k!uV+1I77$6ML`9o8kh?gD20g2Fc}m9IpBUWUk9JC z2L;Nm(qnR1Q)|d*1XfMdp~5O$h-7|TbE$wBD<`=OXMHp>rQFlw21~O5PwPDTucev8 zmOQ5+u6eLxh9FtglRM4cFbLiQAP}CA`;VyPr&?CM?k_A{pnyuq1PXWCX{}8#o7J;S zPqf%)OaF^a1Sbjjg`#MTA5$PI#*qYw)yI+M-iN(*1a%ga+juJC#}FWqikKYx$n#@< zcAxyp>lte81wLvYv+UiCZ4ApEhF~g^S>1hA_wd~pjkAsUI=}9XXE-I_J8bKvN|$_? z_4o5(l1~FS_gn+`pxJbA+W)!uer^kV2XLO*NC$2yx`0mg#|#BayNaFWGmcTW5k=9u zzG2rURVLR|$)}B(ii(6>VrY{88fO!Sb;-*tnaOg}Ko(Z7xhrFcU{1NO4yz()I;BE8=-mujI-Wtz=TxX;I%`tvw9F(E5Ub%M zHDPc_2+0dbw!&R@9`N&*C-VRr%SMTf&IdE(_p%dOFke_!=~LixWngwdt>4Xy{nt+*{p z#+daxQ?$;$yo|VnD=NizrQaGQ#d`GiW0(NewL{E{zadyuQdt!Mujp4P1Ev zfpyQLCr4Tfa%#0xs#+R$l2MSBKyk*PtOWgfMdmzuZlrbPxVX4h&uAYcKG$@O**%xl zGz*bNGA|DyXG(HsotK7-tbbGuH$PG)mWo^NlE1q@Z1pL1O~0&aJ))YsIRkl42nG)pZFllLtHD0?b0E3 ze@P;wi-%C<+{-b5Fl05eB95kNbxP!TmsrP3?hy=XX;q=k6VX&mEd>_>B_=5}Bthv~ z=^In6MQz>nic#WlVz=L^v=h6(?`@@>SmmA{m9|SYf<(tDrk2FiT~$iELhUDCDi?`z zlA34L`<3#NS7>5q6+o9-Z?cLgideteF0D}7)rkR{)pov0Y@$m0u-b-?$Z6e`WaQ#f zRR{|>WFvGS22J`L@Q1!nA&<Vh8@~#2aRec5T>Q%cmSMn~`Ms#&~`L%DOwdaDZy|b#$EiYm6Le)8=zYp-utyb)xif4G;wNsN61PA`e>#lW2fW_fc zyz89W<-QI`Jwu~6T8(WT8l@Vrb%dHs=um!6ZdBkEYTNjL(sn7`8mEUq0O)1w07oyraUYPNHttv2?TPg{%GzxjjawbCLp41nR_XBXmF-(PS$zU`5x?-M z?Q?sTc9+_YKc=*s)$ufL1;IoqIr|x<|L_!Lysj}sqgjOOUKLQf9sv9^mhk^+$PI*F zMAQL|_bKgGwSV9>rQJ>uIJO~G^s4#=_R>FcMkXBrZVxYcV`P#Lz;-{gZHPzSke@ni zO_qareXFy$`~12b_=Ak3KP9+Dz%KUJ}EBp($6-G8Abn9ob{K?3{+S`mKE0lpl8tM$5?CRH%DdV zi=Cg%Dx}R1TkYa)N96qvTUDW#TdIaZ41U}Sv9{tl_8_JTl}urIp9LXy{)Iz*D)bax z&7hJ0vmQNqL{;Sx{$C*8XB}Ecpm{2!>5=za{R49!r;1zIIE(J;>=E zubAWmd`QJ4Uh0Sfo?7aNMy^DB_iJ6&A%0I@<176Et32GE1v=zQ&tlu6S6wJ;K5Nou zk_CN#6z}R+ySgT!IYejR!HsuduxnQ&Gk0znw>@YbVi*U@w@WP#CSy7%m3INI_*1yS zT%ELPCdbEF1$@rU=lIxF2Gf5zYs!(TtYpJO^c_g4|G-#ZU6Ba4lIgSXPt zcV!_~=2v_<+Er*TofZYO=WalUY#m+%D28zcivaN#RrN5&F9~NQnQA$l*ACnY_>eR^ zR(4c;C@eqq9D7slhuHj<9(8`>DWF5OUkp>4qA-(jk zSvKkM7KT!al*l9YGj?VTF`H3V)>L``@H0>5LGeb_Dl3-%=;wIiiZ}T>oKx`_puzy4 zhyQW$I`BBZD|g{}hlDh0kvsp?E_tpN)!#2jBb2|EIBth_o%~uzD}v-Ewr0t<$Bam= zxVb3XEVX~Z7sH_z>UN&zixDr%2Fcg58s3%)wJVarn$$_q)m*@@t3l2Or{$Uar&{IR zqf)TpiA%A`*-9knr5Vf~wFuT-HGhSq+j!>6Zf{E+zHS3!%^Ghjv?cc_RIUoKf}lJ? z1{nbEDe~{W&bn7C_dlN9C>9%6MW%^x^CQTN-!Ufbfcjw=CArH)Ezq!WN6(_`=*I;F~~ z+4APPY-Va*!`^|ZM}0kA^k7pqKEF`Qp{G=+OFj)~l7!96XugC&hLq8S(OOI2zc$+@ zeKR$CaL+?2Dx`~s2{vhi6F8=F8y?6r{wu_-%)d-;G^$hf)72D+bo`uek;63GDV5%g z>mg^G%f`ns=n&bMrDjRiY1#7m`%_E{>vJ5Qo>w?Jt!kJ1ue_^+bs0b8U5C}KbN#$4{(15- z<3us~C3eQCJa~wn>&cEy)bpA%EP#ZWV|jK8F9xZEhu}=DVnP{=q!K;)WcEtw2BAbQ zdn)@bQCBdXlzHhVPiLQ{6?<}iT?8{Oti&~NyUax;CPz8g&jdoIxHltFbvv0Y|F9>g zRHUyR$eF1IeB%=dJmNazE38IpWRlB)GE6?e4`ii;8Cp@cTx!574OSUq{u z-CrweU9U=bPkpXvrHKt3%U65@K2?h~4pYSS#K#Oenw0*;8Ed6V+n9Kv&nfN1eyjL| zw^24m9k6SuaznrRgUCch-7i&*B2289=!Gv;6q}zJIdi8`4RB?+fy7fEW%x? z_yz>~lC8x8)=gkb&t)gSZRu;a@FChIc;#%qRaRTR!YG?J6ye$trm!nF*>?=gluP{nVRHRe-2%v{9 zOYyt2gixvK?Hq;N>WUVZt=UMozO}Sat6A(SqF3$9sVa|am%>4^3Unb~0?Q@tdK9e- zHM3eDER@29kKG}REKJDnM0~A|X`k#F{z7hGgFv@y^W&%er zqB!7FX>6)zbt4hxS51GmKWEgqg@Omf4TjFeHBAj3<^Due2tHH6Ji$J%mcG6}=TFlt za0Mx@;a#3O*K{q5+t?l#ZxLBS?lqbw_bbsY239qX1$?+Z1}PMNne(AQU1MygY5Z3? z`D56pebS9kT-m36;8D^bb|YWMolMhF;}h}ju*nvUwUv)5O62a6#XfHxk^n$^n;Q_B z3lp=MiRu~hzOlAL0v$cxwn@9V!CQA|!Lni0`s8q(c@&D3v;_Tiqb>xk^8$}{R)AKr zzLO(Q`f(=ILiZ%_)(Ri}B&?{7)F^jIT+vJBfZs2R`Z)48b#eT#~A>%TU zngZc_2}A@0;MTisBFh>XtwY)c3%@GCcbptLMW-YatW}<%KQx)exd!SH%e&1N7st3( z8kx6Y1ByuOb`3|+J3AAR8Tb+kLQISGGp1hxpK+LM9Ogr@2-)PYWeXWLgxMmtA{Y)a zrz@Q@!Pb|V&-}H1)SPZalBX{KU!1K}G*6(bC)!4mnPd^Gp`8_7DIp#<6vvlrSk-KN zbO2Q{2-!hznP{6(Jc8*F_-_{r(Fiu8$fTDA#qfHT@XL}y8lPwzGsnC*pQYonG-2i2 zQ;Db$gu7+U?AJPS(37yVgnz5m-waKqyDM_qeyp z+x}^*7A6?sCH6Nq*Y0XU#MufRBb6m)D;^mYJ8PPKELJYqh;_=OpM7c@KHR{|00+Z9 zcY(a8k%_E$M#@fc8#y~R;Ktajm}GADq#^`C&I27pn1UarBw^R_1F47VZhDl^s_@kFVC zCfz6oCLX*|e&uajvaa2+5vBSM{LD6#k#mp5qt|4~!@smKW$kN@W5su%KwUquYs)DW z$0|eaMFeu-drU@dlFdJ)OvWSf{(jR%xUo;+NNqpI+NCC2a-#hv;6tPgPD2Vm1PvLT z3*^pOfdSG0RD`0#So6^2To|>+vP+X)G1O~HTaD^?P4;3&kH}I^rU!WLmjwTR$S5rck8=>q&%s`P1*GXwRK2#Db z%nRWIzBuS}36k=6dz)FcY~m>Ql3Yy-5zf)q&)PnoIEHe z7iU>G3b#VU#?X&Hw>?X(M{*ya(E(cteey`|{OojA-j*4vy<`_FNj9d4rr(!av?8Q$ z+Ks{m{*Y^;g}G;g9u}pFn3>8P&`|`wl2vOKl~u9G(FS}_&^6q>KwqhZow^s3{Ve8| z+@=Y{)7Ho4(%tvvzA>Tzgc|g5dnnvgTg!_AU+`1AM$v}*b3dnByK)QYbzQj$RSc1% zd<*j+gBae*VEro&=jCsA{lYfXb~W%k>Se8PvinPTdbdM;-*I~Pnp}KCb{XFV6)Loq ze!-w*E1;>2U9j+wwL6^&znP+ssA`I4h(n)R-Pk={({klW?i4!}$MgRHKiQQclXCd1 z>ACW?q1>59p_d-L7I-uVId<(Tb|{U0UCJJH8b;Zrz4+A-w>7eEwDkMExiIIUb4b`J z|9-~A8M#R&G_K_~0i-0Jx$ntEt?#{TZrX7V&PsO&$D>EZqne($2iR2{xoDLrPi^=U zMjA|Q;O~bYOZz3cNvxfP^h!$rI^H^7l>(R$FKTDX%TDHkj1N4@X0`OIvmWl@2u0rn zLayi8wcPt=ZnE*4W&VrnXUcQm&P}FcT&~$W6Hj+TBCMVJP^`1${r^nd$-WvTT|Fz8 z*~XX)N%6mFoUido-RCjsskb>k4z(*1=Uv^b%ke3$6;JoDUe&|x{zU~{qrQNQ0{xtTtmG&vMeM+ww73hwyii!@#{&_*R z9n5uk7wb19*QL({dAQx2C!aCFq$3~g%H1lq6)i^MAm~NF<7@PK{Q(|i&O=mHA;*R! z-jvXGE{_n0#KgXM`doZE37^ZGj}MCn$aIN`D=||VkLzP{6w617OKbE9TIbT$B|^yW z@(4>>$dA+xliX0f@Rc` zBYOXK4@-L{zW4}Tj-Hcf$W+fDLXlj8uQ1^g%$g14xW1lV^KfoEb#BO8h%#$=zgQ>K zc~Hm=)ZHA}qM73MYb(6|MsM^M$z0JCbQ6OamS?aC6oO8Ng31DwF*T`0$(7ge6%_82 z#0T6j6`|q9GTo!`6{-N)BZsQ1@~$}RBIDV$>9E?> zOS8u1y)&o~a6#r1%rPXDnaL2+4e5FEJ^PXBb73PYc%cZeRF(m}E_^D57X-Q*pdsad zcuDXV08cg6QSJln1v7yU6xvsJOfXt1)Kk!LC&xbO1NH;I;}7OjyQ-qRYk+li-_5%c zXUTdGnnR?tfy$+b^~ubWmycMKtOX5(^Xy`OrfhD>OQB*&LzC=TI7lg9H(@m*;1$}` zo(GCqUBhQRr!J?afg{x20ff3*c$YnaYa44GI*1)W9iwv# zM9e)zG2^vx9Y?U%$7dxXg`a*&kCLvBIVaMl`n5y`dA)Hx;{>S^;lk!cCGql zS*7cae`Hlk?a$=Vv;W8%Ii#;JdrYO&^HLrSWRDrzH#y5zDfPdWM{mfo4fgT)VEUU) zd3Vb{+no25AiK8YJ&S7GU*v_RYeyTITy!<+EQQ=7EyUAEX5wo{9zV34dHCY*9Ctbb z-_3R|P4UEK8u>DBiZDZd^vk?@;gX!>xH?F6T#|_+GGzk_7_u|x$?$?a1yMz z;0^TVhu(+Ahkt0bfkqJXS=$K!e9RdHlsI+EXCoKcXgeu&%5oSzF9Q1<6}rRu)4d?+jf zpF@|@$@CjlSquYf)Q!stQ;ebgGoFBQadivy>;?94j3=S(@flznz@Po~7e$E+1fMiY zevDaP8yn`-OFbE=tU-w_cJtZcvstYkEgw7lY*wqxY;r8*rU*3+EsImp_?A>+Y#0wo zK!s9ZUHuyJgd-SxfUo%p6pn`pGN+8CHlF~C_}G!Z6^(1xu$nb$Fg41)j5X?OfJT<9 z>9;=IkYB1uui`&At9gW5bWf`ltzo!ifqfBSP@(;f$T zB8f>8F?r5$A);a&#!>hyInSWiAyE2q)Rb*O+`Wk*q#h9Xd6NNh$2}vKOl*tu(kQxF z4i^1-tvbu7{4s9iBd01CTt2*C6PX|?$s)jy-8yid{L?pii_X16tI;M~E4omSz|t-P z;`Jot=>agh1O*J>)_F{6u{(JmCPiiKw|R3=A@tsF^QJkP=tL4d_u%=&fQ16sR(b5( zyfr|eoP9b^WN7zTg5jG3>6Q-Q{x3b9SG;Gr4Wwc0U%57iMcpRU2e51s5B7PqgJFBPR)JF|`74!zz1oJXIygK) zZ9-Kk(OC^*gO;PLXpAIfrBop88s&ogOYG?F<`rFADMrjZ#8Dbk<0bkgrBVylqZNHw zT0sgYHEjzDbrRARR(EwYf!`DdvQA_KERh@jlDA8aK9%1+JCZcR(x!6gI3uiI}Yb7itK+j|NJOd zgIWAnG~s-|#Utcz^z%UC7IN9l&`00V(T}hr{#Wtx{;FsGaDU%Y{3lR%w;;O|&Sp<=Aui$7Eo) zqqrzsm_|@P{2gLQXC-l@Mr7D%5ycY#1VNhbz;4GTy?Bq~9A$oP1rA4aQmW-=0Wt!H z`(^=tWI#!@JfIFML}oo~-j+|^;5aJpuXfIqFa2x2OD}qHL$b1eXo_J`Fpl>VY)A<>-fXHx@eMxF%txbX z5RBD)+wMr*ySTu{igbKUP60x;3E_i|&v(EUaXV<{^_rjWl$=urY40qS4w}+^@`f@; z49DNJclNi3`*!`RgyuvsSxv^)@!dmnr$PovMU2{%d zjr%Xpbm-|#G%ANWNz3%&LSvRR?50Z@=)kDV-p5Ti55v-JCacvEgIW4*ha54B1ZNe0i`yrVG4RR=RBobwmRG==AfF(`HC9rB;k`3S zKj)YOmTKP-R;Slgr|LDjl;Pi?!%qEzn+DCM$opq%N?QM`}q0HEns?2q~I$&InD8>LP>oKke&30j;_oC~5TEu8Cj!u?T!><%w z`$p#**D{jobX=O4D(qqPTv|kHU@6RxxhW?P9v!Vb*b$7t{*s3lsR5Ag%KHyU?@d!jDyV`#39GlVo`D> z92L#Yk)(V}1(JSzQoqsR+Y?Np7|*Oo(j1j}W^PU5{6b+*r~JZ&RKXe+THqioRs`ic z8asDtWtQdQ2FudE%&;G}+^eEc*#M>*r8B76hlZ>najDp2>!jpnm?2Ap;y9Qe>O`^y z*^`z!F7Iz02c3QeblL{x#I#HO!u{CX$B^VTX=S_~Q6#2>;r*~$1 zsLqO8Myv&#YwbhnE!ax%gf|0+)Iu?Ju}r-*RM!H7EOV{1(tDfQ(H0D82axl$EvRkG zWP%_gJsnx0@80aVE<3$~f^H~Wj+Y7vn?v5Z*12ZW`tZDPjum@_*rqMA!uIT&l}rV^ zL`5WhugaESAfnWmMI&l;Jz5HIq=b5`BxrFeuvGslQh3T&v8P+%AgOamhQd9Mv&UphKJupPN`3 zn3B>?HO>*hoM#0TAuubjD!f2mbgA<>dHY7^Jo!*rk27Z3mK-O0BnNN#d0ecWE!WD)=-qJ^F8)Z_-_3KVFG3!F zK;@F)TEBkVqfRW_+5o+RE$u90jTn=!JcTakd5xvTrW6GHhaim{gOoQu*>`AJvaYUk zZcvKy3}O>XTdrvAM7D7U#y{Af`xb#yOM_0Ec9989(8^4;}LXW?9xt)xn& zu~{q55bJ?)0Z}zEE+Z`pCv9+!6;EE-1*540sPQdLn5pcp0cAC>B3dYgOF4?h zz%{aHqq9Laq`B$}$jWN(+BStJFv4#pc|;H>min-epQpJlIvX6!b)cHYSuEcUc5d)$ z6SoA;uLgT}WvD(VN@T$1Dx7j73R;UhQ;CI=D_Xm?yXAd0S51Yz5)_sQlZi6m3h#y&}w~WVDvxnzh$WJ^P>j9BmL~6z3XN-xS_ELxX3&oaOLRb4=rdiGM68R24bro~U;=J8b{xu*7`kSEmC<^nnIJ>^Wu ze_?wq>kzs>=z=kOYB@jkwE5KDHLTD`BNWnVxXE$0G097};4-0u_!*btW`9kK;uf<% zK^!f7txJF86$C!X`IIErWVl|?2Qyt6R$s)jOq~U$W~Oc+o;l38V0WW&loFHWXOmox zq*)k3WWh1KMXThxHezG4LE^8iX8c~gsFYQIbZs-yESctR$)~5g(6&`faN+n?QrM--XPpd(QlXBgCGtWVr7ix0c7D-1oz5A8M|+8}Q@;##X@>+c?M#Vi24lN{;R7rq$1 zJFO)gWcsGtmEb?%l&N()TrrCU&x5@X%{=CSv!d60n&kz4`@nI$eg9EbWYBD?miv$6 z?N7fS_x4O^^ab7eNc14fi<(y9gvWiS{_{V_>PH1&)RJAU1la8Xo7-W1c9-t5xzPb* zzoX}-kD1TyIms%u<+u?Z`-Yp+rWund@(*qrqNWkMn-+nw9Jc{J;_m;?T`}FydJzqw zy81d-JiyiHxW`ExU)qAB{3+MF663L)N3;_1xMO9hDj@7KuS3%2x zwe;K8Yc|!$!>imNA8cajpegN_%4&DaiJgxKnY+=)@epC&18OdJ8=qA^_ea;)$(W$6 zppP7Lm8{H%+XEhwAP7vza&HQDHlQjijuFCTT?Q9Oxk$6rYeg!o`NqH;%lbfxST(dT zuvN6EJK^uuW~D5LhX(evST9RHaTO?4a^)wkJLOy~1akBf*Ec+~5xD_X0q)w`hBEQy z3N%%}@UZ(2N)}j{Qw$pB6%mU|&U?l!l#AuYXWW&0ILimVY4~r+T^bUZDy={w6=fZo zngc1em26fMUrc0D@uU?v7$Q^}1E7VAo}OWdXIA@g2bpE+JTg3bHBr&ItQw~GZS_EkZCpSejW1&F0{M=JZ9 zU?ri}ofWWM(QDZjNqLp&e!~MPX8MG7XBHi)Z~$X6IDne9y+b;R_AG-3ejr@f_j=%W zb{uXx_LzS1;6>~v_b==F@eP|4z@Pfl$)~>(w4Sy$UH6V3h` zBgreY9Ffl~4>&dWbB5Nah*XyZZrA(~%hO5ZFGj{}Ux%eWc*4IUi3)hNA6I$ism#}}cj*=)OkJcP@I;06F$S8l?%k7t=3xdpj3 zyJ60++;KT9m$B>JrE2dUo?4^k)Y4@6ZcMnbA3~b23v)Wcf8nkPIQPJ9Za|SYyJIYa z@oKf|KSRE9UKHocSe#=JP3X(VrhC5+U02!R8=9${r;R(;d@|HLdtC zUCL93Xia_KU*@n{uFz|rcgG%3_#pD^74F1?2rpDKu7sB3?4KOR?}EsHDN)T- zyZP|$qpVAnc`4pzT?T#&U9$g!e(R&Zb;n|bcnNwN_u6%REJjkfp8^RE+f^oL$9T2z zK!SYtms4LRmdP0jr~}3rJrclMM3WxadPQBdD491wxJ~T_f5+OjrFvk7o@B-MnN4Zm zaMKVqInq7kTjILVQ83Zy4l~c+G}uJMaMwi5?SUKvMISY5dlwkjfZ6kZ!a?IYYSlID zH?C`BpGm2aK8Hwfm59U2MKs;C=Jj zRHW)3#&xgRUOmTvLyel(WtZ#s+dS7Q`myKS#}&mZ2X(hMe=C69*c7z00w&$RUjZJv zNPeli=P8@y^g%4s*UPFw_g>XmStd*CS5K4IRCrEI@6 z$4#lsbRfmu+?C6!E-^INGV^?wEV;-tfLdgpC+7h~iESg6@oP=`c;t*0A$xHaFG3~u zXmKdvmp{AMn;J&}&jk5DPx73RB}o~y ze9uhRu+bzY7beM! zI!~@z5_HEDK;*@3eyS%S?Lu-G>k-Hkyw*%O{uRk9h=!R#0>#FR8r#I(P;6fI)Uifw zw_*a9wQy6El_awLOa=M$b}-EovqrPxz4zhky$Sh`j}*loC7J!@IU5vlMVBo`E`9;g zU-tq~kzQjeGV%jfr1UTp>Ar&%={B3h0d5LY)9^uV>NT4NpWvpE!ydyJWo4*#iF%dY zGZC#b9C`%LvZlSH-~Uq&s``9WYi5EPw6D;v_L z>T9juB6VtxQR)N!n3g86fs>6BSS)W(_PVE*5@`mP+fZ_o%_^qX%PpzidUNzgQ=K`+ z^D0z}$D7`x?R8iWzNCLT0?j54;@V3!PV38fkB6c_P-B$*9`9iv(ii^T11rAfKe$K6 z%pS3P#68k;5}kGGGx}|d(#G`aublLlM;neXyfcIk6JL*l0USB6c=Q*Faf?~w7r=Is3UgV>=@&YVRJ&N^Vkr$4Gu#Xj}F%>AD!MX*OL${H++!Q6x8Cs0X ziG=}_7p3ZlxKCV1m8#CyJ&7sDRJB1J+~n1F6@pwue<|79ugEu2z17m2=A9Sp$Odqv zi;UfI!dI=>7BY}ssEjSnO#`;8ij2KxZILLp3j4(o#bbxNemOw&+o-m+0}+G;mdc2w zEx9>Fgsfsm3PDCX00!GF^)&D9RBt8K(`}U1C6!b4KlOVTEAxGfrKczbi25m02PhAW zZ?X&xzorLKhNm zE~Dn*+Yv z*o+&#(yQNoa2mFU)8_L)&Gs7Jz3d=qk?t^Amm>XiDYc{MtbI?P*)3xyG4$1|y!y%+ zo|r%ctEG(~XYFOQZ9XR{MlH$P@3eq7aUK&jqxD|``V${{v8HtYlohEm6%qeNmj_Nl zkKqw+X)s&bKA=lkO-+G6@bB)E-k7zR))Q++P{054xPD-6HU_gwy7=m{TDE6a&tMGc6a3HOX-3VX=2t zqWT14e&B9xjHN7)1@-t%?)N75NDhjY5D~_ zJGKVuh%ci)P^@fg6kB}Y4&+mMbpD}KbUUpVe1a_zc5N|$;i6jU0y*q;ITVzn@LN+? zh>nL?RHWEc@R+=Az$@w};WZhgwi3LqK+tUs&mfSf53hhlz;qvAVObj54*V2VfT9Ap ztAp@SYzK{pM~p+TqJ-+Sy9t9sO1nUmD4V)a8^pP}z@s$C^EVfCIH%IOLS2NMoDP(~ zh#q5e<DV=e>S3q@kOK$| zcL2!YO4Z^`q)~dANeDNxg)Zf(ngT2?+wgm0gJp>9#z~mlaS&O_mc?C=C(u1JTZtpP zAd#(v9gf=|PjLD&J?|Tk|MlFpWN(@piS4XW=?|gNaF~_tHk$@-=cX_<1@4Peme>ZW$1zo5C&jvrA3C=h^}-jMg3iQSDi1< zyDOs1*PctqvVfw&p*n(widO-Pt?UYl>*OnSzT!=J>q5;aqtS+VD8+C^MJsCOLRHP} zGd2l&s=4;ks%S3CK3P8&OMCKrXh4>GF$^Z=Q0sJiFfa>!`Vez4MQ#b>sO6CDsn%Yr(zq_f&o4Z?@6@ z+5f`lGi){JV5Yx^v444-am?q&8%Ul|>4zxaMj(%;d6i6bqy7?%hl`UiUYWDnWF`zR z0~;Y2)y&IcSsw6lak7BVw4At_!!`KF2}QqoB=$p|5UvztQC;}&=!ME8{QE2t$ekDbMA zRox8v=JR6vjBBEmA4AtfA)tn#OEe+Yfn)jyhkP)c`fp_&hD{x+?_nKE2cg612f1m? zZ0dWIo5Ix8bC`ek5Bg#)C#nxWN)L>O8gokN`R`**iMsAUWj4Q5ef9lQqUF{*U zIIv1y+vr>TSl@axquVesRNJ_74>q-z(C0j??;?FJ{Z- zzTzTLn;=g}fNk&qOnEQlH+tgWiyZE3``oAB{z+WIEc=UIhx|lq4)((Sv#?auOyi!h z51JijDdlS^&PEZC{snZAz*WO>#0$T`-S@|l?20+arMU+33+9M~kBLHiOGU2Qi^jN< zszWk(`PYyqfO42F=%Q26FAY9Co6Xd)dYPeN;7VwCdX=I6X|r+cGNW;T8he8OAN8pc zp?VMQJP~JS57w_CTKQxgnF+5fRbToNNm1Aa`B%u@yTSirEo(A#C^qR?Bb|m0ZF`}^ z$R57Xd-n=+V`O%n=C989%FN{P666U?9-O1}70KhjrZ|do$A+)b-$%~|*H4xC^zK`Y zr_F* z7)~1-rQ)_1kfT(V{%jhC*@a@RZe1dRR(qOpKEWO-OWpp}svUTRo810BB+Qb1Ocdzg z4kBxud5B;lM{Q$J5-`>X|8zxU(hTsHP}v)Cfr2Vm=cUq7gUCpTh@yVAI178%eE6czW$`gf7qI2X@mE_-seAmrVq)dNO9W{TnO<(S{U)I>&re}R`4aywXm^N#+(sE9e!@_w>)M8uHm z@Lx0O#WBbyxXfA38TyyKD-stdCaS&{@&w{f&UgJax)*TMDQXhSxT)K08eWCV3Do#R8NU;_`-IDr z6`Au(kvQpD=i4Ap@bfUg`xlTmt$-ucw2olm3|MJc{_j{zrK*03@b@b6oI?N0a`03C z&U}Qs%{V)a=H;#M2f&RmS*||eci796I)G&skOsL{*OC`$=vJ6x>gJT2u+)29QbN{atx%QO5%CIT_7rNtrZhjhf zz$f}%s{HH=e{E7#Yp`2pWx70aQt{#x`Q0^H>H6>~|8t5y_FCa4WmYa7so6oY(C|P~ zSRPh;Y76xyCT-vz>&0Dls8iM0GV}x4`Fi2q|J{Ex?`MTa3#T-+Zo`M{CW>BgnzGwt zxt5RWG_-W!tDU3!{;lvF0N!cD2Z~JBmDV_Kd~J1>^`qY9QtUoIrRLa!cd?Y2$&nTUOptRHZm&&mBd1dvI3m z5S3ycfpxQSfP^2AX5c1dHi}Mc6?2dit>s&hN2=YCPP-3nR~?kgbiT4J7+x01+@Y?< zu+jEewuYynd?0OdqG|`ut*Bzs6y4cERP?#2r7P4{pGGxb;ySV5aD*0pJ!0r*A55XWtihuLU$BJl2;)!b%We|XVD}7H^iR--TUwk<_N}-3o9(w<{r`c`fbXO-Tl8#ob8;-uZ4z ao3>oMk7NLN1m(}~E_zNM+IZFs<^KWwp!N9x literal 6043136 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≥PT+4;PKmobNB<-TnXABG`VTqrR;3lG3E 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
0p5wvgXCri4J%Dg$e$E7#025#WOn?cj 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 {0T|lG3{@U9b73N%ju142A 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 zq#sG7A4#MiNu(c1q#sG7A4#MiNu(c1q#sG7A4#MiNu(c1q#sG7A4#MiNu(c1q#sG7 zA4#MiNu(c1q#sG7A4#MiNu(c1q#sG7A4#MiNu(c1q#sG7A4#MiNu(c1q#sG7A4#Mi zNu(c1q#sG7A4#MiNu(c1q#sG7A4#MiNu(c1q#sG7A4#MiNu(c1q#sG7A4#MiNu(c1 zq#sG7A4#MiNu(c1q#sG7A4#MiNu(c1q#r4yA1S0CDWo4Mq#r4yA1S0CDWo4Mq#r4y zA1S0CDWo4Mq#r4yA1S0CDWo4Mq#r4yA1S0CDWo4Mq#r4yA1S0CDWo4Mq#r4yA1S0C zDWo4Mq#r4yA1S0CDWo4Mq#r4yA1S0CDWo4Mq#r4yA1S0CDWo4Mq#r4yA1S0CDWo4M zq#r4yA1S0CDWo4Mq#r4yA1S0CDWo4Mq#r4yA1S0CDWo4Mq#r4yA1S0CDWo4Mq#r4y zA1S0CDWo4Mq#r4yA1S0CDWo4Mq#r4yA1S0CDWo4Mq#r4yA1S0CDWo4Mq#r4yA1S0C zDWo4Mq#r4yA1S0CDWo4Mq#r4yA1S0CDWo4Mq#r4yA1S0CDWo4Mq#r4yA1S0CDWo4M zq#r4yA1S0CDWo4Mq#tRdA8Di?X`~-%q#tRdA8Di?X`~-%q#tRdA8Di?X`~-%q#tRd zA8Di?X`~-%q#tRdA8Di?X`~-%q#tRdA8Di?X`~-%q#tRdA8Di?X`~-%q#tRdA8Di? zX`~-%q#tRdA8Di?X`~-%q#tRdA8Di?X`~-%q#tRdA8Di?X`~-%q#tRdA8Di?X`~-% zq#tRdA8Di?X`~-%q#tRdA8Di?X`~-%q#tRdA8Di?X`~-%q#tRdA8Di?X`~-%q#tRd zA8Di?X`~-%q#tRdA8Di?X`~-%q#tRdA8Di?X`~-%q#tRdA8Di?X`~-%q#tRdA8Di? zX`~-%q#tRdA8Di?X`~-%q#tRdA8Di?X`~-%q#tRdA8Di?X`~-%q#tRdA8Di?X`~-% zq#qfi9~q<{8KfT>q#qfi9~q<{8KfT>q#qfi9~q<{8KfT>q#qfi9~q<{8KfT>q#qfi z9~q<{8KfT>q#qfi9~q<{8KfT>q#qfi9~q<{8KfT>q#qfi9~q<{8KfT>q#qfi9~q<{ z8KfT>q#qfi9~q<{8KfT>q#qfi9~q<{8KfT>q#qfi9~q<{8KfT>q#qfi9~q<{8KfT> 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 z⋙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 diff --git a/Prototyp/hkldbFremd_WB_All.hkl b/Prototyp/hkldbFremd_WB_All.hkl index 6c042296ae0b713be8ef24337f9a68d2e823f732..00d3c962d8e3f8e2b0bd2567cff191113bfecea4 100644 GIT binary patch delta 447886 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

E;^yPjYAN6j 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�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 z z?Dqznu_%{1tBV6784ui{F&r06Ot7`BGv{ZgKpoffE zEcnCo)r^kpH`mB8+FdG6LAZAkUmw6Ps z;Ky*ZTG*B^^H$h&B2Ryr_lMN@wPB}6F|d!7e4UpgeFq()A1Y`Y`+m#=#qpGZ?{|)U zw9xXCagWD0a78~s%U)=SySurQ4eA4)Y6^JzI8Rmokw?J^`e;CfP{#M5#eW)CARUL1 zvuO#=_z#?i?~edv&T7a&Hj0SZAYlKwcmN!QQL`z#Gj0sHvkaV#f&}J&OM>=?|Btgb zkB_oQ{>NwLfn*Y{ASlEAph&_Ygi9mma3qf)Cn*lfsn)`NCcGNfl*O|C{J8G z;vEGw=;}m84PG0?Bdo_pQ5;v@&3bKEJc79H_uWOVzI_A{>EcACC{)6H~*7cTa&*8(Hu{zp&%+<*^Q^ zrAT0p{D+7Ss4d*Td<+E%(JtD*e9^4ehC}6q_rG$ZxS@u-WPJYMo)#BU*CFjet(sY) z&UBV+P(9){Q-#~Dy|I7!_~CW^D?&(LS*KnVgJ(xLmDs3W6Ykr;{4TquJ-K{^);lt7 z)V$&1-jpgbK-AXFLqdv5H6JRpd)oMLod~c(F&dGKvI-GaL=p?}ri>qY#cE4NrA@W3 z*EWnwJ3H|XTobE8Y?VmNu9z#tK?!b=-C{=o$ql$Bl^&{Eji+9C&7|!gm9{oEJw!=3 zwPB;vwmMOuh=$s2qtn(6M6!z22)?*_eMMERc5-yuZCdi!w6j1Ya#)nF)xu-bvVc`> zsBSYTLN$8|&xLJ~%F!Ga8ly@2!>m+}q%WtcQ%amZ^^;8rB#~&Abde!E`Z}E<4N`Pk zC0+ZBXu60j+h%cnyQCZ4?TIF|WpG)|N)@_c$Aj5%@#eR@O!(%eT9yf#<%?2znRpg* z$Du^rbI`z8je!P(J} z6K?n3)r1-87nK&)-uVf>(%!06ZQReguap+&dbIuV`;)Zif1WWy`B*e__%bMATOeES z&Y14F-e8Tr2b-~C3H_p;S?fZXgKBTJjwk6CJLGu2h7MCuZ8WN**1m&TYkMo^gwlCK zs`lfUK~bv3ZH$=vFw$MThX%6BDcZvw{Ik5eCEaT<$C}0Mm?zK>GdrbZwn+eWNw)w> zGooA4HOk)TbZtiOv{g5!oWC|DFDhg|1dT#$Zs8>Vf!t?=|9fzI#7f6jueGi-w_R zAB#`xW6X8uJ_tI!$9TfR6Uk**@^lv(mG3e3llX|J*^aP9eC~dF6mAN(W1yZMWgV#A z4(6>l0hzxaKr;_MGfL<*uUiMI`(1-WzA*S&Du-}5#8fRPQ&NW3H&QL`Sd!28F?&T$ z2G`V7xOx$q-SN5sTjTo{4#gvErMW9rd-AhII)~!vd^Z~S;xQzQ_&8y>G9Inab8Mye zXew(E-x$1+5H%lV^a7tSZ}p%f-Woo)^2Q4AKO}Pxpjq}6SARzMiFgiNlP+qOJkEZ{$pu9HvKG+quYYEG*i!@yIf87H1jSO=dJ08OB4DJJ<^ym zEmeP{F))po)a2iK%FnyT4Bj`7@hL|*$ z62gxh-98#iY}ueReH{z9EUX?JU5X$OBh$3OV@jn2(v_+S+zQ1Jxel$&UxG(1O2@=B z-qoiYObP+S(+~f|w6$?bXETo;?a;)u-xS}ZG^;a3#E73cDQ&T`?7UR=xVyFO)6)`_ z}ekHzq7K~76WC-^1aISph;rRfwoF3m`i&u2Vm0E8{JF$ms7Y*x5%`2UR5dWFDMRLYk$F3tT= z`f^9=3N1V#ZQ=;=U%}|+jcX~KKXM<`)s$3(!rLE8Uty0+FR!VhvlH$3Bk31%Jd20Z zSW9~bn52cZk-}(Sgflidgg~IReN%K0o9?=%wnmXCkdEz0Y$qEsH0)l%&0B;eDqD;85-*W`Q@& z?l%oaSy?-n#>(0YOx1!iWsYxs*|KnvuGT5ntrcMKXyX*DTQBKTRB7y#{86;(x6-VU zH-wsYL~?crTkR@*FQZj|n8sS#F@q`A(mrJL0)J(u>On^jp&LH7tYNIAeF1*A2Nx>$ z&){`Tss4yiBONVbLGA7n4xi)8G!8aPS^({F|6?_SA#QB z((K=BE51&v+?J%I)Bd6FD?VAS?$7l-`aU%}nl4F}J!84PPv56zMbp`4b6K6se>$hq z&)M2Cscb$v?&bZ(pUV$&_^3CnvzI_oDZ?}n^jQ3Z)anki|y2ZpAbY9_rmFFPaM za#e?Pw^8ZjW$PG^*^{GZ9;`G@*rt8bo*_C!d_ z#Rg04=0H8UIZSzxZjKAmO}&Ez-3?rY+R+Y<*v)ai0hV)#1+0PJ+7Z!mX}WglxB4Yn zTBI@wtUbs4E~Nu)4Es(5oUhJFXD>&w!5CrX%3-W5@<|II#nASqTSAwRrz5}vL6J+Y zx+hJKp`AmJk+&mY;jrSaq40KG1l;Z#Dus}w zckJj`14?n)3@x&~Qpc>>*e zSZlg>O^ zLPv9Kk&wn;;ZnT!riE`V5;v*Ju4dk(kEPMXMLgATT%FFEn~4D5kLcT$Zn+;pLV6>M zLkv6vKco4n%f)lGs|}IrzR|+s)_`~+c@x?QM7@yQ4XK{GXrbb`4-2n*7UapjC!IIc z7K1aAr=B}mo-CNNpm%8&K_@xAUkdsnG|D$KJN6KAAY*2BP*WVoOC>uZh5XrGWmQu zzqt7jZ5?%qK(bHj7~xdG-kuJ{w)q8o_Uu%h53zo{iqHPHaoukr2Zdqr%R z-Z!wE&W@k%cs~jr7@NXN;@YdpI3+VMBiaWe83i%^Lr6Gvnve@S1gT-d@gB@Ra3 zPft{WM=XPN_mX&@&VW@)-GlDNX=8SK$r82WGew4q-BsFnysbEduqi=9u~9sy1dqo*I7Qt){HNDp9Y z_|^i`!C{a39N$?*nh@^LF8>Zd1>Li7G>OkitnEG8%%1>MYq;bm0aVj3a+5Q=z*}&A z9~LzuJRt9KIM<;d+~1%ze%JV`Awhv>k9Z(JWr{}|H*mZZAlljncxY>@Ry=qKiZ5?g zJdmG`!5-e)TpoSb71K+&B?f!ome7&X4h{CeEs@}{?z!ZaNbn$5=KYxO;_@Ui`)zl5 z;FlQXq0P2;^>A!xqdnS_t-9^XE{W0jsuN%B4dD{8a7mowA(zBN572N=^6(}$kp|AD zigNlDeM(Z2$Fl0sE;f_8MOT}XAHe*6R7AK+#JEa-{VZn0cdhaetT}8GuGxS_1QR8l zgcgYT+=hrH+BV-KVu`|L?09r;zfo#>d39;1LYM({HKEc{Gopg_^TX*20^`Y)fEget z$P{2ZLPQ3n00BcpHuEKj>M!z-iThR&TcT6OPY7*@#4I|4p56${4d+ZSsmgHzhA@7& zJd!>(GtE}1hWd%P2(|8@f{b02>ec;4%5|_YHbxv>m51uww<{vIxOhg-sX1@^2us;PeOpVwF#*)EVRa)0FC%o&i^fLP(j$b(30eefu zQ@?%b%fsKjopAxK4!)D|bmCCMj>hvKTx|m^5!-~0Ey_G~Nu7F=I9;o$s;bkTcsFD8 zC8P3j*Nx4^YQ#(w@0HZFsyaj-MBIY$@ko8ZXLq4W_c^21k{v7FGf5MdV=e-!Qgx1F zEm9w>z@grt{uEBJHn>6?|6Yb`4Du3eScN=sRruN3+D+m;6QW$K4W;L&Unp`8;7zrM z{Zsy^38J{tJRA#9E;8Ncu&nBfmd%u1($rfeUE8u~x^7wSOXd1@N!PV9nyyclU6*lv zP~K1(zhs}2^Ajg$5H3XsZB~x9W&LGyvwCzqi0z+ zLaB%=+r%JBrDwar8pnp%;cum%$=y zKesY^tvi{;&Ranzt}u2rdCW6ITHOAG-9nrhj$i1JXNDcO5qzZm{K>-F_kW-0bL_>q zel=0oJfI>dy$>>L2_I%4&9!JHE=6b_&rM>@qhpf3bFc&95e%0&Gc4apa@nK3T5*w|33@o*e@$-^l}^Pk2%j#3b)u$w@s=*~yc-sapU{euS?q_#Sj!>vMeV z(XKw0s1Lmup^on{M<0w|sJNA#;j9P6U6`JKGgH!yaMDCrMC@|>8$&AG2nMTCr>H+J zbqaI%dw-+BBc-AW?eBYG8I+1%LpTGch(RPqeTegWdB)trIr&5zyWL|wTJqB)8*xU0_O`d%cn|kMff?mzo zW3>raUOr9};YjR5!}xoweOE`U=6*V6fp+&i#H@*&k)i!KPY?J=OM1fS3{v?-K1F2) znmQam5sFRnK!>VyC1&WemKK!uu^F@+*N@I1S!f=cA$>sOGb{=y4c+7n);}LXljH+( zG>s$n#NgQ{o7|Dob@zmci2pGK+)apDRyt;7XfMWOPu9kK6*F8pfVKw2B;qvmf(-5E zF-6lIZi7KS%$u9R7JB5ojJRz_ClQyr{B_83s89HILtZ2#=06d~4Pr5cP-u##$>`1Xf7+mJ|JC>r8?<`;BFc56J zfDqKw@8`zZm!1Y8C3t9ChE_y^2h*1p$>IT~IN$vjLvy7p4^A(j5&=pACWKATTr$#; zo1yJHIkz<4U^;^rz-C{D=^J9vSpf#c0=N{d9=?1LQjL0vL2(JjQNO}uuw}O&VL>j= zusr#vupq06HHy!li8koPzY;0U;HV(g24^IFjioGoo;8eb8R+)Dd~KgnU6#Q)#HiC0 z7UXhBpGboG5L%@aVvgWi#!iHEv)7ock@)TWb*#@(3-*4M(Pt<&$QA~!B?f-J$IwvL zjy#Co)fuenH5%M;Y!K8_Y>=(Yof~D^I6MufG3~5ojnX~GuB$r}ygEMgxM(NhT+D)^kJMK4FBj8f@@T}P8krJv(1a$$mAW9M+ zkaT@pxGy@LYW9uj%A|Vfs)*Ju-Lf34ia*+kIupot(2FNJpqJd|Mx??CM|?q?jEvMzKf zOVAdDc~IJ(!m@UA%yh@|(KrU4VgYnL!M#WU9lcg{AILDZQ4;JIGFTh^v)e-(mm|52 z_|sax8WCrI@ihKcelr4(eKWMdtMtcP#9r`qX0M?ZZ&qIbdwXlo!Z0`f1;7+d!((5A zJuTrlqO75Q>L-g!<6md?5(HiE>n9y=nfQ@h|5c)QTu9D;UdOcUG{Cd>g)e_AW0RdX z4a$Gz{4j&_U(xiUmFY8PjFi3q3C7lm3{$}`uvou-9bWkwjFJ2~zaZS=IzMB^dbE-+ zGJaEfBWTxngDm7)I}*uQtlYT-0}<07eu9WL;a?evj;?P_yl@-p1nRTD%do!SO3)5{ zhc6$%mvj#bkvg{jlp!K@9QY{%zJkavJOi}kUo)KBdiO_5p=CTttQ)2HcS<02@$WT( zCAwxw*CP9+(;59d#=p}l>FR%?@-UlD*uoXIj$Z`+kBC>~aYmiCy$>KI{ALj?Arks88Ayax(?498yqcX)yK=IG28re)O^VyWFf89nm>C{$P9e0QMQU%L^} zBGV(bY3lg?YW_x?Xd@9~8C)un*fE2ah-Y*)NboKaBZMN(`LVuIWN*ZIuzOKIy5-!l zcwlY02(Kv4k`b~bSgI_AZ^1ojI2;{FGcQ7`EU6Kmn~jxg)TQbT5&Qh}+;0p(B+a!I zaQeVqRIdKD9}cEBmZ;aAQBql}R+XxCNGOqBQc+TWCGs%NdM_hMD|;{FQthMnGNz1m zPbODO!+Gww;LLujka2xgM46+gBB}ih?Tq&`=GtpC&-)p@vFZ6aXzs9TGek5aVZ18@2$tv|}?cF08s{K># z$0HfxCF8}N0(wE1RaISzh%uCeg04}Btn}#PJX@jabXM*O!A0mYb)vXr zk#c?3h8Pd-MTcs%hp*52mam83wj(Q<|Mtp`tXI$Xlx!%e#lH|t2El61gRf^}2t`~8 zuSLYn%C#PNuvQ`R3;kKXK1BKLTebhCd_2nG$z&DCZ^)ZQDo}bRsX%e5EO1TfTD&{+ zq|%&`X?1K03nL*Pq~a=KzhzK?dWK*Uc=So2)aP3SkKV*K7GNg)ggnEvl+sSIl4k-1 zxEp{*DBW;eQVIXGFjJBo>kR%_5xOjs?7(g9a$#wflT}|=I?TySlekmTRm&Nq(-|`= zk$Y~{2Bn(cW3qk;w1*+%@r2J>4{S7hD`H`5{7 zigt3Hg|YpOBYlqRAxn*Vuqk>*dJ8k=KIw8P7lN@DBV&b9*OV!gx*2wZF^+SB>Mf3| zO5<;3WP?qaCURxBTajaxX|Dykd%)t}HA#SOmjRvUZVQLB?+5P5wCww=Fg?tz(8jNU zN8b3`S~FQ;dfH%;1U1mg=(!$YCR0!r_gO0L?DRPvxAI6+;ThTZKVgV3#u9v^11_@U z#|T8BH#z=nVX?x8^XBAdGqsm}`gt=eO)qgPT?pN_4c0zH!i%*Tb4Wuu9 zBzyJ-@@D@D-*d`_U^nKm(3k#h@WlF3H^bKX5%bjZH|&cdeO&J+5avWZAPiXoUuE)Z zq5VSYD0^I_n*gJjq+c;x)lWZiLWz8xsSRGOr;{M85`F*!BKcp3fO|q6aB4W7sU7W1 zn(jDd@T5^V(tkq_=u<*ka!;mnTXRenEiC%H?~vt)lk3aQqyKEH9v4m5EX(Z(u`K>q zFX=qzN7Gfya#IS|H%dA+m&)cv77th0%6v@NED8HU(G9AlTy~db;UWu#>uLFc(d|Ib z_IZ>(CE*0*-8jx;dH2PO;m;Hc*R*wG=z#?9o<9B1+AJVex@S4K*N2Ydf zo&K7FVl>5Mk*-5dzF0Iee~Eal8Hmf`=wrjOEXvMEM_d-EUnZdB7ww79vR?HSTTgJf zXm_FFL6aPPEDn9+1Fg>CS*9NN{cFhn+kIx1w&-f?$pO7LI8a);>F@ z*ylJ8Z5Rjq1bbv|mUj4l^sNmo@Cm>3!Ytmaml~|`UY(M~?g~?4`0%26Ue;-c7YWO= z`0(Oew0ii|T#V#}24eNgEo>cBv9>g(W@&>b=xYltP&qu3E#KYZQcj?e*Cq(FJL1b? zf5i%eHQuIujG9G8+0|2>mu2ymk-y^NEcTXtxFl2Fm;diO-rxil`P+{J%(O1jP`qv?8OIpF|0^YEUW$K&G7iOA#BwB9mKB$pfIFwI$- zDIcITtRpOFBi(4hV!=Bjyh_6rS!Vtjjds$jd7K)ySGkmhXl4DTzhH~s4xtj>k(*6K zf~%77JX&Cnoz(0*U#=;;HtRH#C$ck(O`aFf=-%Gxkf3XH39@^_hpx?n;jDf$;$|gq zD}*Q7ns400T#?h}P0;{Z^KEx!@!t8M!IqF7m}N`u%32#|Agvv^E9*DKy*JCEf(oJ3 zChW~xteix9e72sfUH)KJqM|-*!HJ@EB|ieGGop2gd1eo4Lm$D%wq=4?(z`&#MViv9&IA6vR zWQ0bb#p2B@vHwig?s#F@nGSq9zj!4E>MhiYZSjLBL=@*+G@s%+-((?!8{sWL()+e` zHnAJwZS?ALv`3C-;YRoXkaT@$f#mlOv%JEO@KM%jeuR(k=~jHYH-93GWB3t{0TB2R zjtM{_5v(>M^oEr87Ridf4;rj>N){zu{junI(IU$o5w7o(bj`m;({;#l$o0e70iyie?$@Yd`bu5V<&8L|UELceVI5e`0y_~6|!+1lWz^!VVkRtyoJo~u<40W0bF z{>2j_n^W=`*}RX9&bI8WF5yTRnhi&S4i;WMXTy;&EZcN!vmaqt_G0A@G)Jd;!jCXI z8-9eb+2(bXwsF~(>nb#x;6fOO@9xHTbYVqtPRXV{E4)218;G<`&gQKuk;kqHWqO0x zJT?3Dt!i#IZ&l7zeXE*+fu+q|BuJf|jrr7geztb&C;AHu+MpIO9Fc>#q@pg)4sZE9 z7G8|)H)K_6Ki!b^oc4TU)}`7xH)bVkp#`p?TE&f7nc>%O%*wX2L7i}ORyO@Dyz=I( zqjoLfhMXt+4-}pc?UfsHE{z>5^IxisId5+pf?F*i@#29lz1Nh~xnstO+bPHkf!ED= zUrkvx#oKDQ59&7K&P8fu#LR~IN}ZZtqAs&ns_Oh$#1BGxkFrX)*H+~oXfNLotnIIs ztOBuUSiFqDpLL#+O(o^!B?#uax{UwsDLGSAomWs*Qd{R)UQpx-m4-YSMY}8ejfzXk zVu0CrE{Ku=r7;78f(>w+OU@;a91eXdRhz>@Q!Gi+sp-*E&LhiZ8C;(t>D<9+x-waA zTqU_;r@2CvB)gUk#mqsY-{%EJNNb3ymOxm)_CXMVu0w`Vd0G4L3lY+xK>c&(*}trGSpkgWPvmmK&P2_h7XW$7nOb z8{Z>H-c7KP(R;6jxvd3RFnaIH*4`_~vUo3*;G=SAcg%GuZ-cje^*eyuzHAP=^{l}f z+q{qS6wn$T$aZdXN%VC2cbjOE{0F35_ugg-miP~rjuBm%r0aY%nyy!t6CUUKdP&#Q zL1pv8Wx^pQNPZ2S=a8zFZ`thUBf%T<0bi2MQFLsd5o)yg|HFdX zn744N#@3UqRlcR4P0^y%i$y~ikH3SfQ-=p&A_Pug_U#%s-SJ;5S0f!K1XHE)z06bO zKXMxM{A8I1G{b^_$a#>n6r=FL93XYVK&tZ(3sVa|I1Adq|FHdiaF(0~v<5kIgf_6d zx5=dxF3o;sz%H;=KQM;_ZJm{4)diI9_#ENTSiQ|@Ym^e%A#u}Zf(1vC@McNZEc>F< zb(no4x>iY7?aZOFPS-5U?eSdSF6g%5pQZ`Xgzd82eGb=m$_C3WjHYXn<+k};-!19f z{%E=~S#HeddcFcqoa_M>*4VOl4$iSy_B2sO5V~a9@4yJnuYCX~hXb{l zchrxg1OJ{8Vf>x1oX~#sy||Ip=gQ$5S>}y|qzTlLMpv?Sqba_U<(rtp;m4*&k5u0| zIkXX3P+`3(a&C^PH_?2Vk;7`!M`)B{7dW~m5`&ruKxUtDI)jNhcvqLKElkRhZy-nz zZ5J|sO|fUYlw)XWZ^(}&A!z}l$7)5Y!6Zi_o1epRyUihy8~Q@@e_B6__UuT{5gYm< z$FgkR&+Q9L5S!Ca=kd>o9pCCfBhSj4=Ctnlm__%OxP4lIh7Ru)Z+mS8IlPx&VsJ+* zLu)=mXb}W9P)TcE z8F9C}rNgCs3Fc1yWhR*GUJr7kt_y$oXy|`?HWqfI5B3H-(UbP&f zGWk{rV1!LQC;zvd#v$1?$xS&HyGC?WSmsSRiy0mV>*b*FnzYWdYLaykJI?DS3nPvmV{+~KW0oC9z5m&}m94tL0Mu347b zPjP)f(s_pF(g%8b)w0|)jO)uJojQ}s7H>6I*ve)zVZ9{m^F%kOW^mb^l`Fl~aV?$9 zLx;Bg9e|qfUe0M-x-jS81+H(U@{aDXy~}bZwsia7Ol;{cmhF=q%UvwC>AUgu2f&kV zVTo%2Ujk8>^Ir-?ZC{JQEsZy!<9(v%o746QIHvziVnZ9n#58Q>F}NFG|JoEg81+Bq zz<}-U&9TJ5rPb#oOPqSqIF~XL-y#k!R*vM~v4@N6e*JT;d$_RYPvyX#*T+el`8%-b z_%E_3&J2*$>SXmi@3?w(Lzokayf~IZ4#K>zetca2;kq3zOlG#c)!|z3#vGsa=Nogb z(iYy7uY1p(34sLQpKTXJS4#ni-vYU0yy-tT@Oc707rX`RSP`LL}3Nk7XFs#x9bSfl!a zFNANqC8x%&ExgEE7z=JTY}iz!`7iP=86XO9IpEF5+VBS#c?;~L1*3Q-BU73R2gPzk zOgjthhO|W&dtGxD*w=(2v2GCqz!R#$yO9#)g~2U>Pz?gUt;KzZ)$2Xw>&x+ermCjg zQ&m!*v1Ey+78D`iS}uF}7e>jT(l|Spv=fgxxB0NHdM?J#IIJTt|Ds%8jE@URq{F)4 z95MJ>*TTo+?JSH5!(Ke$2)ea*FUYkx_&q%Gr#B)O=XEs6wma35h)&)BF};sfF~Zsd%cb zT-~$7s{}63)&96=hh?o$8n5JG3YO=(6hC;|Ql5)pYTKI2dc_WdH`Xh*vglZlX29H6 zTL7b(e}e=pHeCXid=&vk9)d;-Yb&2F^f_(>XU5$E>RWIZbLP8Z?MMe0W>>xlr`TfnICD+fGg?Nzb+LL=)BINtHZS_|4`aLv0|JGcb`8n@2!0Wru!XbtH zcix|C3HeXT#$#AR#jDv!5-n}+|RgmKE{I9vkz-3osU0ZopN+O z9+p#X7{*kdkMAes=zKiPe36?w(vFV}H#aZVhq!0t={|dEZusKBRapGr$Yt~UeS6d?rDVbk+Z% zvguZ7<_cT;Pv|$hRV=^34uZd6+dIuc&?UOQP^q4pD;)%H5^Urk=&}qaJyo*(HP`Y~ zi5vup8e zTE{O|Q6mAid3kjoVTfAW&xDz{uJ5pUO6x2n^5WVvi2*SjR0dww)s znJhOhDNS8Pz-{8e5`FdtDMLV#;i&OF{?`d|qHlfP9 zSUF=xu6atn$%|9+D=oOKbieF#Y(AYMVTy0Yw2T@o%`YTYJ$B-SaCu6JFu)EYh5!1W$U*Lh7eU9T)BT+j6ZNjJJ@Z!}@T z-CRz-7X!d2!p67SksUxO*oeOBQ3HhNYD*f?(G{Yj)5SA=pSG(BAh~b1fV8u1KD_9= zz1p$1`R4k9z=ON-X$YV0J}@7L!L8cyy+ElfJmGGElJ8zG`^!zHM1q-BYM)z)t;~ zmv`!pXsJokhCb(AJD}$ohRFGx5N-I$+pTj>XaK^f4x?iaCF{FjnC2Yqf`=@yOe-ky zIbH)-Ms8@fsbBRbYF*3leB(**^xZ8NLwxQ(3}9eZ9~Qva-V@WmH2yGi5_#7vG{BRN z_r0dZ%nIBmkTVh3|{*nE-LIcj2m zY0X{KPehOt*V@$zamzcQ-}Yt_juWQT=cT$LiD{vC0i zs?}u`CAgBV{V~pe$v{yQ!P_cflWG@__wS$@91&NPAOwT<<#>O!Q_$3w*KOAPs=si& zC~ZQnQk*JRm5Qi)m7b~!gz3gfvj-RMwW>!FMmhfN<@17*Q8J@+|9}A~oncJ$4kF`MPk>U16EP!nCFq^tgpML?%(mgV*zxV~AR=uQ26^r24JF3a69K1_5i z`OKKOc=KB}D4fTm<;m~(O^TB;6D#$U!I)*mOKp6qW86mFV@FS{GmQwUm-Q1FUCjvoP}GOa}lS{vd_^}K0`FTP#H2)&bh8w zbZjhn@EvFPOf70!Uq9py8|Krl?$h1tG*xV4d?E$KLgfQ+wZ8q&LPHtPn6ZYEWU$7r z`*A*Y-H&0SHk9Y*be?pmK68E4NH>_`!xI5|m^U^^`FrB=K77V^v%PE^RD_e6~hC$hFmS>lC@P3a!6* zLZneEGbE|3*1}@;p$ia)xX!2Dd*}i=|0rk3R&Ipyh^zl^#k<=k|a7%zuC&!n88p5c7n4p`sFap zKfmJ+$=O3Ux|AVkW&NXPLYi7Ni4I=0Br0Y18~ky$EzQRY!ktW&j51y2NV&^0xFo0# z$g$lmn!a!bkZU%Ob3JI`kAe#(J>;_l7o_!NKl9i78^XxnCwh6gK(4dR$Jw@CFgPRR zlAgkXCa(M?vjnHeQPw3iXpTA&^hmk{iL_2+rLTHD7(Pt5RIKLBCPwL#}8MoMg#M=osXfdkN9{? z|JLA&a%G^Ja&3LiOxaMT8#>Ov`=Y$|e#ducK-|#j-{XCD{yJb5F)-`-&Vm^|H17Kz zQ^Lq2Pg_#b&ji|@Z+tGtpq}ukZ+r+d=l;V-@0ENAk+m)7_k{ruX?pHH*y=C(n8ZS?2O z3zge?u#>NGV6_|S=Masf4eofi9OCC7B&yTz+!lF*dDNxXGQcFZNm6>-CB`~k#KfHF zQY2lI?6Xd1!GP#IlCEr!UzE+r+f7_yYa2rU!4{B&jgz>nH`pf2NWJOw-!Q=P8IQef znBN?GlJ_xw9{b}!h7K$py+bvCI!+T2ChcQR19-tgk+W;8U%Pdo9%h#!`c0A}bq!XX zlW6Mj%sALdNXR+KkA$4FO^_*NSCXH@+6st@Awd0oxisD+Ax4 zu@}#}9cPgjnE)X_*D3)}J%Z;iO3JbBup0=UJx|+R%5i+UZ|ot=ifTXaubZQRLFTJ! z0FzS5>;$wU)c__~V=}`Ab`3hU>04Gxgnhjkpt!f51`4?@eYo0hx-J0^|jw( z$EqE~Hum*^1UB{#0g12C&s*pY<{=qnTFz2#vWPTop}VC>pFmsd-xsH|H=2mR$i7`5 zl60rvazsq4%{}P+|5h$kPT@O_)zNvspLflD(RjeZZt){C@5{`KKKq=na5?D^|JgZ{ zX0@&T<7m2wEZaWe`ff?r^kXz#yDWG2a($1aD~rh!4Vx$LO64S+~;X{M!7>UR~&jJQrT~q`%auJ)-)XwX_NTbZzC?{w=dyB0UyGY@f$TsD$lG zFR0b5*h*ok!}JYmj?9f~)Fyj*WycO}@!9_7|DWHD(8iqOe|yr1GMs%16TCK5zfpv4 zuLTo0E?w>(9g8>UtLjv^2d0Oe6a5~0>iB|CMX0ojc&gke!oP!Z#YPdtorAMS2A`{l zNPNLjF*RyhdCi6rb*`fjof_mWu+_Lr-TvS@?bdVsw`&c5%e!gfAQ382*y4OF?H)Kp z-Y*yD+VCcXY8u9A%P0BIiFXOAkl<5G=+2vvG_5~=8SmtS3APQvgh;=IF%+#{U8By_ zy%zBe=LVCti@Nh>B7@$|-FYM9L>o8)UK`RL>dt#%Ac{EDu0;^X^7UHvr+G`Yx=H>q zaV=6>rEYULO4Jq4AwOBR7TM-`m;9P#-jQzej+}QZASb+)sIQWsP%=^byQi%K*_R`v z>U)0e-plonsMK+>UU~hgLtXumhh8R0~zCMk+iaMM$^nC+WqAu#BA?Zh~5>F0a zsJsH!ws^(OFW+%LI|WV|tdVZr*UQjZrm?))_a6&ywDkNgd249*^OoZ1I?m9Mn)Cbr z7js?z{XfjvV)B@|8_^Ci7nc;rO91-@&dAesG1hjRdF&f7*ALisCmr#5mNkG}1HzR4l%j2cff*b>5#nTdSJKws)T^FL{0Ng6K7@QI=aTuY%Ykxq>ES(DNpbP!D#@bWeNLXKHIa~>2b=@1EOMYP1AfQ`9%mbPw4Z0egVd$Y z>3J4)iI&v9^BIw9p)Z96A~D&}PUbOdQaf1|4NK>Rc{CF(0PwBsw)wzY_jI!zl$4ss zuAKj&ZE|-jE%PLcagJ0Ahwt1~=X0dxX_ww*v2uM%S1x)eHpBQA{4k`1x7nY^{(*}P zwlwk&pq~5#Cfb32XJXSU@L!&QxGJsp2fm_)n%oUwh*I$}vIjyGEr8LhH zDs3$qpm$kHS2-9>orjm823sUV_2rC~WqA2kV{m<*d3r+9S(nF`8r#q)U20T(>jYbz ze|w_^tgX*n;d5Mp@2%Gl{En-6FzHQxSaeN$j%y6mT(?-*L!2)p;J!6aGXj0#8sV*e#~$V{c}Jd0aiNi$ zuZh9*>-n}roDp(Kck%SwmNJWHR?pSUqOL_Gm@E^4N78ldiKgq3W#?U7ACPpB zr=sbcZCp-zn*S_gx-qu)zeE#8WZCvM`Y(L~=5O%u2JW^DuXGALEC+a<=zCKN0NiT; znDU4Pz|T6y!71=)o;Ll^IIAY}lmze=JUqJ`jcnQa3TCThSMHk!qfzuc&GKjI9A7C+ z{&Sw?>N$z_OVm8wC_IJM`BAz049Ot*1zxuBm|eWuXMaVz<+(h0shbw0zc7cCw8420 zB1p&U^>0IT#HRV7!5nRxsHRQR#FLMUo$utC$HhV^w|}I4`&!;2r3g)O7H$DOFZ?|p zS-2wP`aZTIM^irO3k!5B(F&jwTjt*}BqA60_XcA^_FxBn`DNbPxb`o2;JY>d-}8P` zB41%OFz%WOk=71QdAqN!k8%V2%FHDA z5rgC(U?%?{4zKOi+U39I&9Enj@BcLqmPXe}x&5fW7 zmenR%Zac~K&62J$A)h9V-d>w5cWJwR%lliL@tJn{DfHa--#o*AsR?^s`|@{meEds( z_Fme1wVD0%;l7T^H#cDlPTU)tZw*d7bu_|{#pWk!9r;(d9Ou0h9(BxrH5up$`7qGO z<{Nqe8R%!^vw^NNhcdb5yNBnSwlE3axO~>C4uhou$DEj3!}6ts2=jbwzA(?n=SM$F zLUh?gw0Qlzh02Hcj^8AyQyCe#`^_;}BFTVlJ|!Qvc@h)BHlLag+k9HSWikng6UO

`$i?7brC|qemAU}NSr&nM&UG_=d7221du7WwlKd)7@)C=w2HR^E021Dp8@nb7WLS<^bty-NMv5j$$ za3HspyJ>)UC<_Zktu5KON))`xt_w# zqg2Fcw?vhG**B!3a(!jo#!z*sXmRt#;PAK_HACFotwgl=87>%obs=H(A*zA=66w*#?F39MYk>l}d z3$_#lVlqTD`daOdEd>{8XKR%;!P5Ea03n#BN<)I952e+=g0)JMN)Rk9NilFLo zt~FM1@7@q4?n?cte7;xID%Xvm6nuT%FebtjZl+z*rAX1#>4K)HlE`*Sx`ZHqr_-g# za$ptLcQf4>Tk@6BgaKKu-vW7lSnC=;BQDazY`P$V_>4~st^XOm(n})`_ zls#Z@-%tdxRytmX>=&Lp-SM8m8fh)B(Ud6NCMDP@A=D)}*@ToNy-(6bTB8Nn(lerS z&Za+X?H$o{5m~mq#`P{qH@f?iXhPekTvk6r?`86D^IO*Xd~Zf=R6?ZRr_PhscL;rF zt-9P1wj zh@2b?^^_dTWSV{NNyqXnN*2lXKcNNC>ngCvw~Jk$8xrX3G1=R_HHe$j|H|L}UQo&( zh21~S-0=e|v@!q7d<<{(Px*ZG@`u40NuKK`mb~uc3}@d7DS5VEERsiu7XOoyw`N7Y zl)T=b2sg@#^*?4T@`U?g?T7ixa+O|NfwpMDGRYdPM{xzT&vqSvN1_6)?8{m9-&jrk zBXhfBU;%q2&MJu3i3Sv~PK5nI{I3gTO32bZsKBCwkX()_5a=|%dO|2Q{v)6T)bJsUWvX*1s1Oa zNo#TeJ0-TGH&YKy1SaPim~1?GvB$OfX$q)MFpmrLz3#j*os@R7q86cXfYiN1!tUQ(qrN5 z`*kaPj*NocPad}#7QKFEjM9~tpp6$hu+X{+twYs)slgrRh$txFbXj>!)q*l-1TTUt z^yqpiNo%lxJrqB##6+Zw;DrWojX?{0cdN5;Kf0tq`%#^(Gbq-Ya^|nP2mus+Mk9xR zTLa*FD++l3yux6Oq^P-qfeWl-*6Kk=n^Z$(fvNt}Ce^nI*bA@fBbQ(*UW$8_O7#YU zj&{&`=8XaXR9}hlG*TeZ0<*n#|p1<3y` z2U3?p%fON}mq}?3NJw?M1`}eUtCw`ivVS_ArN2biDCwNn5Dw;}gJiC-`L07(Isdn$ zu_1ZZjshglx&e!V5p7QhFXGe`ELO(i7*i(Cx~%}ovvyeqZ{S_Hanf{q!D+rYJF;ip zj!%bPigD{Nj>eEUYcD`T;;g*_q^5fcIIY889Vurl_)6^>9d|KK>Dm_ zm@8!Ueip#^!jJ;PmKP~Zw3%V_?isYlwmi~jy#i>G4_Tn0fGX}+v5Xr5RXB&%tN1jG zPbtEm$f5N%fI(XC!vYxhyO7(hvvB{ESx`}?bLOP?txS+8c4Gw)d!6kvW3PKp$3$^{ zV&R3Nl(;?xv;}&U5?Vw4&geuA4{#~{&Q%1 zBoSU0LG&vMt=C0+O1T-NDqX4k2`PD$7HccL?I7<6-mt?z4Ypj#4lor-R- zPnMC}`yU0!?QMR>YpbWnvbK`QbsU$A>&naI;+pbL9a%ead-n=yOF4nv!U%OrZ<|gr zp5#?s1w1*@Y11EQP2~4>7V6uxShMWN@BIg)&17%aACNZHR%qFTgb?3pFI=p=i01eb zI1+q23lkl-`0$eXJNP0AB_K^0fDerXq#})yc03+m4sp&3pXzbqqVs`ag_PZUSRo`W z;jBVVmo%)9VD3G$kd=eJ5rr1zfOf$Ng+lcp<={>5K{+DrXYIcKQi?Nybc%kp5U*sf zE8piG+;cX!Cx$b|zI(~IVSGoGcEhREkQVrPv}KBSy9I6QB#A?rNE%-sRpFML-yr;Z! z6V6D_M#%2JT~$z_WnEoxS@@Z&3kKQey3oM#5=6)r9s;~?EvZ4+Z*kOH>rNP0QYkWz zQ55dVP$cpEV2f?DTB+{T{=Kc>mqjtlDcpC&=5Y^f$sR;$sM4;_Dau$Qd-m z*ILdcXRRr#LYnk);ekN>^v&hf_7TLHw{8k?WKjW$}o+^VmR(V1UV_-EiR}VVM|J<_7Bn#8F*J zAPSwwe!0mYWn`lkBa5nXZ&+9HJ(|2?@F{v{g5dx7bNNwT^Ky>9}AP$w+<|#$*fPME?Mp!%=OK3$~8=krfZeu&PiO~D(M0XqUjoB zxn)t2uwy6*w=r7_2^#gJ6&ey(M-f5uPaT?sK7yv<@pI!GN|E8&upi!?bKZRQuw0Iu zHW&R(aX1qCnQR<3f;ehI%W@19jpG0Wi55p5pU$g-!P+4dM1Vd5kBYa9%c4Pdq=ohdqx*oT&=WN zO=Pxv6Oe}Sb~Hk+R>hrI#GCd^gEf-Fo=HW#X`AB&upiStn=}b;ev*o`>4}r1Ad!^M z;?^4~5cJ=fTo_(|bP|lVjzqyD`zU5vc+7q}1-tg_BJJL%Q=)e5`P7X4FT3!*`5ZKp z{|u5?#<><-QS9~@tn#kCsEBuMQ&e~{Y;_lziy>{>ndq!o3%^CvN59_=_s(Ji#Kueu zgRh_M^9{^0W#B_o2E@8$&(}6DD_W$SKs$%e!Ci7kQ4w$2L4!8|qe$>wRD=ZI1>6)8 zd>0iV!FQm@JbVzlfJpEiC|ay^%q*nmGC1%(5G=wq{#6#9J}X%4RjOA5`ohH$G_gu) z{?+*MotcG*W%fF>{-G5`syG6*kX(G^-Pm&W+Q56W)nxK-6+M1lWj( zAOu+3emVNNW)`n@_9pGfl|ZOriv=O%^?-X~YmsGxAavoL*oto}XF(0@Z3jj(uLnkO zPFycAYPz9_H&c^)HWce`L^#_&qU7`TBG&ufMN|9A&Vm3n>H;L(61$3oTjGu)%k>so zkM4$q8c7sCz_)ud*Fb3Q!{7+F#ADGy1GmI|5E=s{?a+Nd#CN}SO<=dg{pi)0*jfel{&-kVP^-lFrgCU4QDi<}u`E5TH7$2ed< zxMS>_%iaC$)fK^*@xqKyVJg(t*3B~$Kl4jg7(*rfwdua1=fc1Eif(aeH|7^@>{srq zTBCJ*TpS#dQB$=ZS+6T=@yxWmu1-_`R$MJ3qt$r5q>M>8_eT+Js&;!TYg}K z$fn!!Tv0gd91(M|sTY${C@Q~2Bb3t1TbPA$=1u*Nl{cE8rzC5cVC`maJhrZcH_ zG|BN)YM8u78^9c&8g{6HJJtlITDbeZ;3l7A8rl%A=BW*mmEJkbUE8&HyOi!8k%*e(aALhC3*KllJ5av`BXA&{0c8k{01wU|=` znMfq$7K>0@cvH8qc(`&YnmByv&DcBq#ahC z&O8fSB&RDSTaTg5Q#;2(g8YUAwXU>|(cfV_v|m!pDaVO5il!FgF``^lPoojeIG#{m z%szq|gEJDL_A(Zs`cmesxeRo7j_Xre))kXBL=BT@))n(r4A1jL{Cc>lTyRENr|T?? z9sJkxKF7vl?T-*%#+#6JT*ZvJ_pcY1xdHnA^_YP@4gAB>q`t{uk24oH6tfm^HB(ii ze5$VMq~jX2FV4Em_IqzG=EJU9w7u_&Dj>JrKrXP;!r<1YV_;6-0`V4MDX0ZnZti3T z)n5_Qa5EZt@e`5#$N8sX4mI?k!5Se~)(oULQgT2FX1yFDV55noq~-{MIazsLd1wOdC_ zcf1%qevJoM@+}y!f?54cF)5hTFiok0nC#+|ck}E*KIIKQEjZIC3(-p!&gh|Q@a1BD z=qehZXtQrJW0cHr#S29;pKkkG#jHboU@*qHh)_={lTFb1^vQF$n2*3r;5t48YvTCn zeKfn}e&m{VylsG%^pVLL-Ly#gxR`EQ(D$?m9%IhvMgIqAf^S+heTi1Z-u<1ynGkt# zR`O*r&Pt3y-t}cM&Pu*2=Bx+Qte8of{j1`|%Ip`REs11xb{v*`SDdKWelYpb_OFQb zDhWSg8n1|zlTfUG+VLOo=~8@pG&g`F%Qo%6FU2$L)!{FHDHi7?Cu!1!wBX5N=eEH6 z7n8K<($^r%El0RMkV602mi*6Xx_~U#|BLI(B%Skr(R9hO?6a?=hUz6<_8+|Jf)B+oy9`XD}kmwwWu%JG!+k3or7T zYfsiL?-xLXrkDWh5-1gK{TC{upF;Q@B18nQb!z~0n>2a9BWzhMEX(TG6FV*;?PoZ|yp?))nx z0~GZwF+lE^j>|C@hvL(VzwC#(7@QJdO<_(zSF~s?bxsKgMJBE@k=a3ve_=vGz~?F@XOQ=`wsq+4oW z(i)zS9l$Xh`E1*B1MIUUK4>i|Vqhq@wy!u49x${&LJw`}E-n~96wzv{Da;QZ->s<= z?*lu|cGtwrQ}e1e;6Ut$?&8JToKK3A@nEtzcak^;!y7~-at+nMf{Rb9*%*o`!}-u! zwMrdoQ-gzT>(tA&W1kd{(fWT{Jdu;x%=)yro&Wajr^QQRMp2L>?YyJKBW5qLrAO?p z;04GxqZY)J)u^+QXI>C-Oi?m$*H>N9FQ=*!XJfHW@A|qb+y+)Rs^!|Iqs7hkaazJ> z#Ul~~LlrO!-Ld28cCj||v*OVg4Q3m2ni{_b?=)3k$9YaVf6K=~m746ppgx8=;LX4IvT2^f7NZ=kh!s@1pgp$PbMzrX5l0g>5K6J&iZPz zOEzl0UE@YNRtGqO-QmZjwG?~!Am?S_E%F?8?m;haH>mj1OnmFg;Rx|xI4gl z;@t*o9Fp>OpmcI>X}mdt(1rSx<~suHOEVizxK}j1P&k8euKIgT&UUXn zju1Nc1?V;zeNOt%ql{SOnCeny1p>HC2EZNdz~ZuVtfM%1glO)UwgQ z>;IAUCGbrZ+y6;!fwXKX6bQ7y1zE~g%3hX2SPis70F~}d+9XYyw2fV$ve>#;1+DV* z7FjH=Ra}btUaR!+b*X(&%X_T5{&gI!zZTmlT0VyAAq}aa|NWrInvU;-Uj*VVJLocy{ zZ~u6p7QAO8wVnZucw1k1$tIeWtTQA^Li^F!50*UcF#Rt}u=P<&|KyZ2Q~xMbp4&VG z#$f8NC{Y-=`7Z%u=C5ETrW&%9L%*tKB6hvgoQ(zs26}phVLTrXLeKp6s20+0pinak#P_9wCud=46q%15ddC`}CAcWOy6=E`*IiW5aCC7K{y? zV`Ks+?-*>A>`)U}9556w$tL4xhK7xdpG&gQi=+29U`-eg?;20Yjy8WxDcQ6T@#bXF zDB*>pI%46=U1Gyt_Yn>-e)G*A?^ zc~Lf*Lun+G9gxmwd;Y9xNw%;CL2GCYfMQFK6Hw>*9jjnJcCk)b%NiXNZn!5U9t5|= zrP)e(;z2I9ILT}v%EB9`Sfw|irX53A_^B+o8H0h53p9AhS^K7J<+h?{HMLsHVX9-S zS%-~duZ52>ha-B7)$(-HCdzN;169!jN9G%{NpbGc0FvUo9=??+PK{C++b>=Zn)60s z(Bf5HljRN?w)65puJi8({%+9utG(kQe1E)W0sYySt*n3F!U5vc)I|93-oYZMDeyRp zH67lcO)B&u4Iin{{Y0RBABlhu$|1hcK@lI5ZsWrQ?*XWkj-)sb5PwXC8Xvg`-|oLZ z?J%`KFR;^7j6YPPt%RH1TY-%C-Z4NB_c+2J}%5oyLO{^`aKDXnTi z%VzqNI=b5Vx2d(%56?lAX$$a&A-RsywLIPR8Kqlzy4FVP`5sEw8RWy1VUVZ--`Oqr zi@IK~oki>Q?lk&)$r7gU^&eN1`=YJ1fUV!Bzm|hKjvA3||7XF}uFWrXUZ!8a_63ADD!Rg@m6SV4U`@C^~5RgW+mIrYdkwfO7$_^$h{F@)6c^p3-VLi{21qHkp^}7@C7=wOkKRn=cyC;ptdzh~`i> z&!7(it`Rv;^%p)zQKv@cT&zmF#eOHZ=4vZzxgYmVx$f}m657)|yGK<``dh&|GT z=eDL3O(@{)@X_4ML3zeD&!n%X+10r)nk>6AYi3SKtd8;U%$##l>Z}}H#+h&`@w0N^ zL_i@_iZ6S~ifducWXZBPN8b;eo;wq6IxfjkuF0LrVX+%wig5{iw0%`h+v&#!gP-W0 zPqGV@bDw1Igt)`mUCQO3W!GFX1pF#^v76l{CLc_ZJkC}TtM284>*$Bivd3J3H=ogc z!AfZ^4E^@=0J#2K1TPV>yU%6*`k{uh`cw;xALRlENj1Cy1oydJRrSLSvg~j!G;Fq6 zZC5BI;q2VmBOySQN6v78-vxtDd0~&gnku$gO)F}u!iHfi5*5V1a*i-mhRw6u{u|Cd zZd%=kK?wwH$NNC}Z55UBR#Qq`jy$)Y8YxTOXeg7%*hat=?hIG3y3FsX_Q2m{c6gg* zu+J+ozvr$}mj9kR%a!3O3wf(Ta4CB%{>uK0Nx6zWvBb_N6#M*e^t;?+lruWyI5^hM zj&4JhWnp7N{k$ahJ~O*)emRSw?GMPzV^r-g0aOsbOHNf@`aO5NtIALmj=R!a1|A?8 z9#)d&J^j#q1oy+`YYmsl@uq;wBe%h$&Sh|b+~AQL`;ZqZJn)dY#LuFI!3A=8X$;)4 z2RGOj+b_m#F8Kx%Ajxo*yWB2iX(V^;F!q;FKIzhUsa&#vM>64u_kkRwJcXbY4sgpwW zIdrh|Rt*;gvbqNNV#g-sZ8_$;cFvkQONDh7Nl)-*X0N+F`UD01M1jHY!+}w_ilUZkvqKJ zdYjIj68vO3oIKr~Ljg~57Q~}?cN2MdmZQ&_92WBwdez>PLswhx*V)5x9}0ZovGLwG z9WJe0yZ7bjD_6YP`T&$av)``5hRgEb#O)fOc%;SRk%bBhL4Z01e-TtbI3!-i5?2Ma$@8f`;!x zj=VIdEpYclc6jr1k-YBjHGoK7?Pt*8r}MpQxga|^iK-wAq@ut#@p5UrL25at)<9)Q zch3Ao%O~`$>fh6NI_ooN6ORd@XE9kiYx+VEC6v)0xF~If#^5av)8`r^4L=BsBn83g z*YsnKQXW*Det5k7f5^x^zbvszJE4xmUzUK3_eOH)tf(nhG>D|82+2{_Zv?#-%Hh6H z{ka@rnT(wkk#cFB+y>QBM6l3VhK<5P#N?vB$9rO-KDl&H3_A+XwGYfy&R-Y-Pg%S( zr!Du7zk_eal1nz)C=C+b>wtWW1u=+LGY&}Oos+B~P$>)OhLw_JCgzg!_CT_nR^cs9VR<$k1i<$0hK- znmjL8SwBHNj)ZecdaknnCri3C)}GV0f6co<*z#ODx|yM2LZxVfY&OY<(sJRrE$>KG z28E7AS?=VrZ078$iKzeTqlxi@C-vG8BfPUpI((qntO)^4CTyv70Fq5IRT4=0O+M# zBa)#iS2+8Ia=a5O#*1^KKCtO*;n(T740OtX>ASod5nVP>=W1SJN;}ep~}c>aiK-h5IYLbzC~TucXqd z6dUyZMkzLPk4P)0TP-KhkL9eqTmx^oTCP7G#q@GCzdg^9crdxiv=JEj723}>0(+oV9!=tVq!6P?{7=O8B*eN5{RY^c8qHgXv)7-5Ei`x+#5IRn z=zZ}{CH}A6nZ|~;<$vXZzb0hNBh9NH45D7mlJbOJCCxh^kBot(8K8MFdZY5=af7kNS*}*u`8#cS$XEV?o0LBaMar= zEw7`WE$XCF5?!vFrz3vKZ&xRky6AGPJl%CI<#+OOP6gBY`K$)YFtqHWf~tQv?WyPr zojhHC6whaMJdhb1rytoO#pjrtrz<|X@G%!?y*x9A4kf{Tk0n5B>QbT=Etmu2;H<7~ zS)TIKIJoGCjM9ydW$?+IOqlokP6jd|48^5DCWN7|Gcs-K@<{jUw2@VioSCOv1t`5& zwz!4-l10G0YUZX18=vel|b#VZEJ*#aa z!$am7935+nWq#)x*-@X;_T;(TpwT=6+!*M$8S_W(q6vLg^aBsdI!{$im7MB?Tb<$9 zNpWxyzPbV~_@hGvd>$+~fO6oE+yI?jYWy+HIw%$#B5-^Mu&oKlBr7v6v{D{usIqMvQCZ{juy@(2_?;L$uLK^c`W5jI z4uIXhF98QtO{JTK|I2_NiXP@pV?HnVRdu1s;(OyMrb%&^dE^l>a8E`qlM~GtvYrJ> zsGl7(o%xu;hM9(dZM8Dv&)h`wbZMJE=xz=wjz4oV75TONvH=-z$G-&b%y??5Jj$Ne z@~`Qi;i(396$EMYc$NOI=U=Tn^JnhLF-1i++cW&Zifyh+5B#jo@RwDTS7d<03;tiB zv?e8vG?nI&8C4xMcSzRKJT%vZAxD#}A(*F6vS>xs^kh(UH z3@Lr6qoVrbQCQn`U!NzQJOzKLX%BrxZv%v>S>?=Q2T)-!T&E3&_C16X7GV!5uZ$hP zeo*J_`W#>sraUsO?xFg+ZpyPto1wlFGPv<$<$LKfG#`f_&@hv2wU0OzW*u6eweHWm zczu@qP#&$%#=7#-Yaa-4tBw zgeGPU?+ZP5a?21fhduyxoHay6$bxHqMgW`N1lbBhCCA>(W9HBod1Ma#pg|*Z=nIl6 zfqK#g^&|W>R)+Fr7svL7St-Xc?j*fa@#0LgNCfxhvbtx!a}8zA&u^cg#3%F zBhzR?wxBqVyCa6?Ywn0K0x~>3Adk%#P7mNZZgM^aC0kyc$4?G)OoJ?Tm2{p43jGmN zAshV>uO&Nwr4z!#5BlPc}<*Q>xzOZ~nqkeuqEnlAnwLng1+jJxj9TE!!;__zZZ!p=? zlqY89^Fv9vEVD7*Co1xy6szgVXw`w^K=AQ$&IYPhE!V))Ew@sBEiYGpIJ#U5Pj@~*`TXpLqFkT5ag99>?flM>Un_VO2ADw^tv9(*N!XD9nYuo>4x5JPafUS>v#~w3f1LP z0FsA%U>of_Y!F= z%EKr55ar=B0T3QT4TWKf(2k+9IY!wShEHDR&7VIzHpcTk2Q6jQ)v zcnt8MepZS95!h+|DPOQqnY1d`{sc`t0ZpWE1`y%lH(;keBCvxS#EoY`BSviyvjCK5 z;luAUe%SUf3qWZqz!(pv0$AWS#uU))P8}EdaBKS(2tHgA&A|msO`sEZLkXaHekI6H zA7}`9R3Og7paQse6La#34TF5~bj*q|G(oWG@tWsItVn5{3I~u4qYB#kzwrc|tZ@8# zL!T^KUg4R6Y7cw1OI_GOocF#E8h*Q{ro@&MQ|5w01abnLR9G$diIL&8?CrMUhHdir z!EkY>8p6lHYu|8aK(4B&Ut+i{Y)Dl;cs+lDRPDS&`SbPs8II#|5I5fq%SwoM;E`wB zs*Iama(~-{uo(QJK2g3eh6TK@l&9N9N3R_a2N|!q& zE^cgwpRN6r|2l>YR~k>`-=n0Q%-^FNKbgPYGOWr2S9sv23Vg*&*Z=zlW%L{Qx79hv zQzX28llpk%HGor|G;}kZb_mp9djT{1?wYdZ1%254BiUth%LQ?3TxEWE!MTaafM<;A^y#)x$a9+|M8d?r<{voJDm6CKS-!gD{jJz7&6APQx7~yP6 z`l)=M^607jym|dtMb$o!OHMS#Wy(_w)iz5^RS3ch+91>@#JUT|4ev;m_r`k4T-EIP zf{;%RDC52<8k%2bsF7Pu>~zX&aVq_AFvIqiJg*-_&#Qze6|l-T23+#v@cjDPvij)~ zyM^SO5?2ndpUZfO$|IkbKQNTbi34ijrF1&*0p~)T&npMt%uj@yV$Z#qpJ!BlaTQ+E zHv{5kz-#KEqQZme8UAXJ2l$sAMtK5gDbIko7a%<)aA(OIV825~2q<&IPxd+Bon^tY zKB)Y8`NTxigaR@YQwmhW8kM7OLIGN@$>T|$?NAQ45gd~WF1EvF7LXm52ZMv#VH4Tt zP|yxbEznJC^l#f{6$t)qRBQ`rgt2QaPN;;gwKOd$AUkZ0294}6$VWSD5kZq7O&dc? z3v~Y&8e*3MGPd{M2$j;tP`Wy7C9_=s_Clf;46(HZ%Ah2#Xozj35o>!H4j-O_5xaPK z0VvG&D+=fWNuh>}46)0BOfawOI{AEQ;OwdMrNAc6zumlC_dapGYid+wmbgTi;j){laefZj0tG zt&D_DKuba=SBOG~b7?IXx(NQp=&j_dn*gubsa%NxBHI( z4c+dsz8i@+ZZh7X0aP$7$BhLPmg71q)q4XMy~s_1=%GkAa?!gV@J;)S?MdFKQPu+{D?P;URv5-xgZtKCcZ@X+<5q=L4@4Wq&0I9NcY+9Mh;l)Rn;#9Yh01g!G_ zlw;>Qx(*fW)y{R`+M=a^j&mc}F$D;+xpLG!YPq(&v zj}o-Tzrm<@0;)OkH`w=)oc}1GTP7VEHnP&5rBR_+o+vQawQ%axA@gg*@R zyd`Qmp=DH#AAC047K>@MTryAF_fWoi-Z|@OWJWhh>M6s}{4BJd$L`Rxh`ru6fjzvo zb)2);tFagU2eOB;JB|zN?T&-J=J3A@luzT-y=EL#mJ=|2Ro;~@{Rvf^Fh2;)rJX9E zt1utv%wh13Hwx$~%n9n%4oKrpbLX3)m4f2@AM6t}Qrx2p+Ri^b2t@9bCUPzR5uh#k z$0oQ5^C5`bKQ{4>#hWl+aFH83A07>ZN=|>%0wVWK0mbk5uLcf9uKjBgx!NxYT+`QF zLo|OY4px-qpZQ>I(FSYdHw+p^@c3Ck7Q8hMB6j@(^T@66#HKEC9p?yI*9>?E>t6t^ z|E(|)$M#&H@21h((yvg}VHCpS0ypx`Q>hS3vx8W*e~Adm$TJs`5_=pV9{H4!_oqf) zR&1fJ!`#P)gP9jcr{kH_ZMfLX8&ZgFg|r*TLiDFG1#N*B*y`OpqL40|$Qnx0w8J2u zDUCEP`L(>aRf%radmkm;&dWJC@oG7tBd}Z+FPF@luaF z?ZXPuEpuaRY@D7&tJEfIp|DCN0UuvT%hXH9f`GFtF{Tkv0l7bF#|u<0X}%6_!(39R z+}?a0@9proH#ZrHzmD~jtx_h`aem_z;4hp~NS9&KqWNn`DMU-fKAq6}pd4L>Nfn`? zfG_08euG-^HjLz)$)Hg@jYR^qowEx!n4F81H)a=-#|SUNtR!UN7Y10R^H9faO)R!R z`R34N z$0ujpdqn zxh~#LwLYQUSgwVaYpKHebS=?E8HU~(XzN21H$%-*j&3W2xEWU$>Q*Pk&A1vGI%Zq} z?aD&jjB5)aZpQTjLm$hqO_h2>p?+N%FO#w088^UZCyWE3XIGVt5IkcykYsN&?qMXQ z-cd-GNq1ATEs(~TN!B|HHIEER>b-^Jkhv79%6QiX;?$^$6APZPuaE`LI8dmZnmCU4 zGhVlQP!RCV@X=`p3PHe~j}($-KN>AX=0{M9VmlusI1oJJ5n!aZMPP)2XS6`8j;oA7 z@QkCtNY~Q>BfEFmKwCZog15`Y0kLtxf@eGfpRIkNuyTMehqVS^Kn##g7r zIhWXmb=dj`;ib89dHXg$TVtDHlXi0-c)uEgpxY+ML;JDA_-yg)gcI;Z9_Oa!5d)%j zZEZKz@3$@NC@{fEfB7yWyr_L`zw(+A`BG2N?Yz$kw+mni3%k{A_mvdxHP-d@VEl{i z@*LUHXFEKO2M^+z4L%5<5sb+Q`r$3P#m+c0yEXuC*ttFO4nvh(7?wuGZ}V5WWq78p zk~s<3V!p&SEe0+Q)Ktn1CJ4%5n{P|CJsRVJP2)28b>|hfdc!u`7*h~d#87S7_L`Eh z@Qac#$dxdT@dfYe)s!cc0J>FdcUs==_drA0)q*P9WM%ar*PPL|{6T?A7X-n8Ap2GL zqIgERD;O-QD2M+k4TD^+ff?}nImCi5s$l;r-wkptiq9yoV0-OP1UzHeuK^D^3v7d3 zDN0JoZHcB=3(4x~(xi$m0RLYhSv@b4RCPcag}k#<7jg={`!<*ISJ{BM3&O5LovNm3 zd0P-Kd<(7pok9iQLPNU(6~ad_BWrJ=P5Ngce+w-u3}1QYm=x3Z8Z@$bKIOW)ozEAY zd?2dxO0PaJabA(RmD+uOw3TXjfYS0q^s|%K*UU$fTAwzu9wsijsa%qwmXo6vY}Uy_ z2OA5P@iBd-2|xpXXHB0A^r6ymp62|$1N zjWBE!EJJdlLDsly{u!w?#<};?4}?iW3J-9i1r|P)YLyNGti^TnnFVHXk_9$WgGJYU z2RrGy??5MZS|g1kBUueePI@E@ zB@S=;P9SLbM%LUH3)_yZ_yE-OWGC4+vovH#Si@u|*)|ginGee0dF#*=r{FC`QJxKi zu~->D05TpcBbh-X+h&dqZSP6@2FW?sxp&N3A`KPB5+}W$eI;Pp{~_BJFf4Z}xjP4@ znAT~a$gElB#PD;LM_4eK7mO@%Vp^?GPN%eO8U0M-<*Zjmm$UJ-GmG-=yj*XYSne{o zSzFF43enFjUa<2ye= zX8m&P+}?(Pv8GJDbCt*6aXO5bDL<}q@|{k6koyXfy56|0R_O@z@QK9!(8JwXPKq{C zr1!A1D0!p_@^_eadE;~n2$?TOM22%nxR^uR_%9Hgzt+Hr$ks-L-OZ7)NIO{`rx0le zKip78xG>aC7E}=YQwtaffNrS4J=R;!fJ>OO|y&r1HI9dVN8XBAw=i@F78^!s6e2nv< z_cAxlZgobPX2!kBxoe$ErKufIC0b^;XnaNX3b+RJ+q^+C-|bWi`fV0%w1b4pF&jdB z%!f+$cbx!S&SodsXpd>QkTY{Lan^Z|q^{>am}*J}LX3~YFl}DJE5;SX5oj4Z%K9l( z%HxtYBW38@I6}~x_ij8Rg&%h+pNH2-2t%YQGZ)0e(U6FMJdX{x^;S7@R#Cd0A(4gvOuQ%Lm4vmAB?D7&_ors+rB0 zKVzVKRA0Cd{DTlTE@-rl9QAKf<4_F$Q)k$p>9GUJY;=*njdMkr0lvRbfq3fL`AjJf zcSTiT=V_mn@;iCC$c*T6atftwsr0j(m+M*`T`t1YRy*bQP`Ooxmi*{~T|C`eNcj<7 zVg0V?axFaFS?6M*$vT*4=ttKpNm zm&vePZC8vbu9?Q#wpl4ISgtx#UE~1K`-%LQ_SvqBcUe0YW83Je3{<$|n(IJXXQ}+K zXV(_FV9}bE4js-QtEGFfOaUC>k+{=Y@TpfalZUR0GmkWI0T^-96fJM8jLr#v%;gi!|hOS{ZVU(l! zKu2=h=lP5di_=BB2fCCgJ05xXtjPr(t%cIU-GhLOB58F8Ty4`HeHfTaw;wD}t30qr>YUc$jgdpJZ7Y|tEAK4OA}r<340h$EX24EmrDwY*R82Se zA&E| z!DkCx@}aOPt$sZO4Vd58?J0vj&mve|uYiqhuiO{|2d=kN$Pb4HyxkYq)a5nKMFU~K z`X1m69u#1^(ekgxZ65h66Zi-+;N3O9+pjz`)V1Q0`l+;+ZA_6u>>c@e^;1l;-zU$M zlVdRCqr5By<#X*76#3B)DDhcsx9--~y~$Iz}bn zZaVG3({6vc3|r9i!E9b+$mrN;hOghuf)xavE8t0o$!0iA?~zMtsy$)j1lSvAUse(H zly4u)4yMCX^U7o4qWpoFUFNE(u7G`TrQhd8bNf=(-a#{#Dmy2@b^V@d7!(uK>-wlC zchR)fIu)+heFqX9cqzmzscT(iN!=DTN~NAUP#f%!Vp^>$HPC!d^witQ(>+a;Z(V}Z zuA%nH=yJ_G-O)<<$-JE7|Dwy)@^n)t46uh3Te~SXPM_V$?6qF+(hYK4E$xQ!$?Wmk zpsOuoCWJ&WU8jxD$ZlbtNO}$CP4n$8rTjJZBo;1j?;%Q>!=tTI9aM7u1T)B;`&?wi zJrGTad7lf{fkNZ)ENSn(;?#wc;e)K=bm^m@i_VgU_c34?rp@%A0Bk_rXou+`mr_ut zUPeNT!SW;lYrLt}Dt!&Wa$jb9duc~qWXC#okW(< zvt(N~zwXj4UKGrCK?0e@+rJzdiWdtSUt_4yfP0rf;ic)u_dxTp$2Em5sZU&VYg*|y zuWj-1K5RQGOtQrdx9>GvWVnSv{WHVuQz{jLG`@{d`-M3Fli_xnD}V$*Mh{T zICSJ>>+o`h-=fDRY6w%xMx0u0cg; za5?UQSTb*ww>|c!3m(M?#}|>kl^D%mLwpf=YxHK}rpkeb7CTHsi-envD9}k%H{NWl zuK)qWaFos=&_wRE87&}mkGE_XOrstaB9m{s~4R2R6!0t2^wN)hc% z&C#%u69@8fZ%SvDRuT4TMS^)q%aplAFmJ&_MPil$4r_G@%c~ zE6{`iD^g2}#DEoS1UV~^CyZEe3DiOnD;g?`NOSMhX|nu0Vx$T3(FdY8fUsGs1#Bp- zyEwE0s5B#QI*3%2CQ^}Igsi@%=!|5pD-t#%QFq=NdCyFF9{5BF*_X z4HCIOZY8PeyqUP{xdp~9yR6@P8_2|J^^!1(>fKatUw9C&p0yP(>xXYe#?S?Fx4_u$ z3)5i3>K*`hVVbBGEcX>D83*U2OM4jUH9@94?}se*Hp>wW8!6AjMWj6MBWxXz#+7{M z0|H&N)A0o7>jKnz{x`NXx?kg~tv8*p&1rqb1RY$uB_nRTp) zHacF>ppg!Jjs(80h0AC&=TDV+flrkAc3!TQw?!@2thWuzb@FnKwrH8J<>{v9D8HM^ zB^g3p(FL1$y8UfvKb$0H8y)&*NzwPbP^2q*oWh*{2NKIPy%U8ML@0iA4=l==( z;YqgcSD^#6lWgdL?IQl1MH{S=A1a}fY^m=Q(N4$5(foD4O=2gYC1@S*3eZrRKjp|C zgG$K;X?+JpPX1wDtm#t$+Q+ub9j4EUlt2CI-9~I%_*>q!>{P-tP)q;o*)`hLO1yc2_ql|e;O-ig8R$pi4o{Z;G)jv=WS zH#FL2S&Nx>VpK7k)V+0FB<-9TRdho-Q;0Ca%gG$ET25<$iCSV#$Kr;_2uiEvWGkg@ zqv)rVmrJxRj4o*7Y3Jf%5OEf6)2x0}F(v^?jiZb8BL^s*lZ)w~Ygd(vP94-M$0q_y zp~(VE_(n{9a&dP6g_KH>QA`aR1S2jt@xht4&*?R@FQ7rE`iYl_KjcNb8!zoZm~!xHEiGJous3IyX~ zFUwvmEcS3fH8_fCKax$p_d+eS+H2ihOx8xeh7Bj*tj)z}M_M-qzi(yLrc0Y<7q?~ngKaDaHOeAe1zbCiKtO48Ee!f2 zs)dKMVm-mC-vL)8@}QFarRlK1YPo^FmljyQ+ck8g>#r|X&VP~YUCRenuOoU~34G!R zP2=S{d27^x+N-rrxqnCT{KV$^=z2PNy5~AJJ{9NY{Ma}>3kgZPNg#xxsNO-080HkW z1v>fyBR6V{SR08Ew4sylEEa5N7MReuPl>ywc$sNbT3c?@eCVA6#mYyW$tk9XquZZ+ zfaIoUAK^7aIXpOFIaI7|LE%9oso@cz>RM;I6gQ`sE^HYNqTqzWePd0J2pxn|tKm^$ zYE_zZXKpkd&82yLY4S%%CTca(sIp8>(|6Bm(s{tj)8 z4jbnD7aN$ck9`?bn%K*TdR8N<^Irn8ommi)rn>_~M{@_`T=*IxbJ}KGr7Wmqhix`Y z{;4Nn6tiID?}^B)QuhfWt?4zw)_#JM*71fw8p`AcoU^-C&RS0*XQ-$@5Rl=M%dOoY z0{$tYZ5R#{wA9C9tuaRW_TAc8Q!h~`o9CR7x_*ZKd~&kLn&BL=);JJOb0p3! zZaXqC73PBE3)Eq3E=V@@b*sh&Mc4cTru{0bH|`u2YK1hI{bx;oisl6hvf0h%X54pJ z3zeT<&t|I&n#eVo-MXET^q)I7NG-8$cn0ZCg2@T1fhRXIb7PpB z&QFZdu;Db-lHkVa-8aNdOeeU>5^Egp*3DKFW!X(u>jkKkY{U9tZZ^N;w!bVOdwfTe z!!!26Yr^EG6o6d@m#;#5NBgf!ZSz7zo&8J!C_ zv@}-hl-q%`84MZv1ng-#GE<##@A?^wjCIO!OTo~A3#n!%b?}GfV}=SIwT9)0)|jru ze-S%kAz3 zR^7tO*?51b<%Isha_zjFm9wLkv*~PMxlSs#($KqHZ!G(Zbp@rF%5Q3!kIzXt?y^?l5fR-EqzQ;ki*Wy*m`V*Im2Gt?2i#=In&C(yh#pI866rcci ze05c<$uHmvIv{eFqtvau=uj8sAZQy+l`x1>--q~OfGP2P2-p(aQbTlcBcM)0rlfv0 zaHOfmO@Ym;s8lMXQP-qxgSs_cgQKIKi94v8$qQi2z8?dmZPiG#UMql0+F^ocp09)9 zwL^`7g0tGKFpdt7nW7BXX-bf0LoFX=v4w01vq+@4ophk~`O{aN6x`C*Ya zXRC;9r0F4m!op`c4!R*yWq}t(Srzdtp00ILe%dnpv%$PIx?CzxJ8CK4&dY`OM3*z) zPU+-E`kBScwLgJrJ$zP}G7N@RD(K?{8(*Qc3b380yI=LP4f*D-Ky2Lo)ZFlczyy2L zCbh+_ubNQikGg5qbPzaByb0W6@*~J`qi1}q>1pB^gS^PkxP>4u7_#6Plk15}>Jczd z9{`Rq#*0+@qML$acWUfn+zrUa;Mm6qlL6A`+cbB$1>YtL{A=(h=Gz>UR@}Du1~!sk z)P%CZe`>9?sHQ31A!|h>dNsC+{>hU(ugQyml7X#PnJ497x3V_gI!;^g?9&0 zRTxeap5FPkktTox?+(IIfn?>X)9#tZp0>lM-LM$%`Voc_Q`n~oN9&JlLU~ju&qV(jWS-zZd#kYd%r;43H<*PFvm^vqKz4P<*(0y?`9pGsZD=1@y!s(#`VwW_o9_Ac>z!+i zTPx&=5^RW9h6nE*1b2GN*)?arZ7e?)Hf(p^7vu8y%7gN-W+fb#0(YtXRq`8QLzQ`v z?3q#Qs&vP-J@}@3xN!zs=9YM1kqdWs2f?1~Wl$0p-4M15Vv@zk$+5VT4H3JlJk4{J zFT320NyAonwpMt8aL$?m#|kQILLqr!c;Je*+um|dGcFv;n!1T?VdLLJaAUcm%oaPg z9Ij47EHPK5>?)HNrpW6nwtC9g5_;CcIcd<4KFSjZ_th%Scigc`q|CcHHUq9Ndn)}k zW$=`scfx>-%Bw@L^;_<#@_Q6(g*Rt#bq#FC!>(~Kqb3Ny?;SiNU4h6xU?rJ6dT1ZC zlHxo#Vp`9+t)?Sq+g?BC2EVO+u!n+&jP$4m92rRiJ-C*uTS_xcBbQHYz^n559?44@ zFX!X(qn2ybfF1bzrx} zqw7F88w9bzMzN;DcEve2k8d&Cl?&(QQl|p2@R4WMqB?b(4|VJek9bHO(e;I14t< z@d&dZezLLwT#ck_bz?ocBMJL$kq|<1qucSv2Lql6R(eEf>i&&YmjbPMu8@=~`aS z!keO&)0?Jz@Ab@2>fg|^* zyX}G9w?K#8?4ihCcj~M-BGO2fkCDG_B-9Q_<2lW&TRg%!O_I{Ppv%}n%^?fHu-(os z*EMLul(tvsF$_>({~JKl9^S;bNe2j8>Mh_?I0evlOnC_69N$M@O+(Q6s0I)v%6=b7 zl=&c)O1_T^d+K39*ilp;aG(`FwYXc z4t8@l=7PH|@sI=(Roey?KWs@c9oL|tH3HdajXX=p43NfUp82`x$zh}E-+XS^1a&Tc zZsB0FQRA)W-vTaty(#jN=i=9!l1~yad;=gCDxue#nz}p`+TlYD7;+Xl1%TP(dR&Cf zymM6%PSrabMZJZW3m>4CsO1FCv0OVZ*Unq4mJ90)V7X3SF0t`sbcO9a-F*t$4^EHV z%GfwPi-(_h+oRi;D9|5y$i8fchEw>7w>0|99}D#1qZrmtV5a#*4TFz&^}ifx3>r74Woda5rE;D z>fT>r2D?$c#E#*VE)Xz0Q=R;$o1dw+8@!~<68k7o>5lb{oCI zSVc+h@1>!-5o+!K&si{34Per9UD@BO`(n`C>>S{|*xZaHc$Fg;yy?=FtOjOl#>!S& zEpS~qPD6)6*EzyVx^ftmY8m0>x^krVVqJNOmvm(Z)XjCJmBWiQT_T`k0YyyB6O@5T zUhx^suIXMhfcxI_+34!pk{%gVk~kIssVD%okf}Gmx0Yng_;78HW0q#F&*A%vwWfwZeLy zZni5=Cwp(|FMN*rziYPG|0wcHc>mw{7Z~+#u}6|SW-*2p3{SB{pcsSab)ks?AbHMZ-Z%{{^glZy(6Y`e>_wv7Uyj{} z&ccrvz~72NK-X#l+Hkpm@2h)8Zy4Bgg-*$<`dNC6DVEP=;mUbdsRwF1t&C=7fYVE6 zK&b{3#k9#uVk)e~NlfdDE*8^BfQ#uqgNKW0$b}?g6wV-l#G4$UGOuux181!of+hc+ z0QX*?f@2%tlDiS&k#F^4Jo2qxSg(a@y`+Bi6+fZL+I}&buIo9P|3PK9Eo9;EuT~jj z;mEJ^!gjL#Mz2y3t9pKLlG+0w%iIQWGFT(Z;V@HdGj|tog?n!lK`a<~qZfjatG)&0 zaHAK3k>BOjT`Nr6D)D!Dmr3J|9(r33Vv*nLg;?YVgq~Y+z`Fs0l&L$ z`SV(%QI$hBs&d^=f@=`-(_Uc>0>fgHk@af2lmhK$G1#R@tJ()r&oQCxII1Eq{C}e= z`4z8nLat7i(u^J+kFx1Cm}%L|9q(wENQ=J;vH`xNx>`Ojw0^1&0yeXB^K>Lk`3<~W z!*9{$T6wxFLitU+oO4hKPEhJR)4Is#sP1(S6Ib^qycenacfF+U>wqCr_pfUlo8J>S-u>Bq5N+yx7bd`#zNxiH0u)iN}%jgO_}XH*%qudOye6 z0M-2u0-|Q!>RZaK(jLI|Q5A&0mF#D^wwFqxwS5G5VA@{q zJz}i;oWK|=``q{e-sU>1G1eYag33OWIsJ^(*{4KVe|l}yns{Ids!|Nb@hhO( ze;vHT9V^FES8`oHO2bCF-cmxkUY8h(^wT<|WUm${3Drn)QV9i0DtZK3jDeDx<3Svl zDH3Z+B5<^7|7o1VG`d6?^ItWV0b3?5o{!^*)SKNvGvR^Q0=i@*)XF{;m9Cb-CO}0Mhvc<2jpq*4daR~M3+nDX~$KR z-^0s=Z;CEwzM0a=w?NDI16}&4Bwf?8vP3t~P*N`g64^1YKnwKQ57z=QD>PynE)$43 z`O`RvjJ-ap(^zEeD~TAqkyj0sP^a}~myk{_j;5q3o5V?IJc)XJZizlQV4p?YT-M_r z^^(mU%3;vxfi8~#?c;&TusjBpk}^nr)fM$}c?ms~V0jc|eIdIi+j&(9t&MkRuqY}v zhg#@dK<#0WYPLo`qCrH(3fZVw4^cY| zhf7GYJ^&&!T(wi6XE&N2XZ3=a0{u#w^{~cY&*K8F>7PypfBh3B@PKO6{&w;|5ZFBr zm%z!)$6(fffZb1RdLFu)Dc6@ZT%=sv0T>Gx72yM?og-A0VOU2@R=f>=7#jZ(J;2&| zy1Sk7t-M_8o6+UEc{=hIaV6(O9V?5_2ru-6tiG4d=#xzDfD&;Da((eS+l-P z0w**E1#bF)lMd6nqQIfT{DedW1+Eb)CxPpI8wC!v<|jhOCOseLFntPF@19p9V zEmhLxSZtN~Jiy^S2V^Cp$kDNn<|pCqZ)@foHpBLoMg8tc6vQ$%m4{HD`aHs?|wz z8hxZW|Ds-RG5W~dXq9}rfsIpL@<1Qi8=)g!I$YFj@~Mh*pif`IztG1Ai{wGdz`nky zMe=YTEt1*7XeYosmVG%eXG`?aB6*^Qj5Oy+A05u`jrW=BoE)Dz92#`I*g88G^RyAv zTD6>$r|U;jeikp6l^R{Ho~N5I5hP~s@OlYFGZ zXFLw7iWa(wj3rv=P7-JWt89bRG1(`WWyo{yOya2{8&0gxX4NpeEY>=QkWoK&FVWe; z)$VK`t#l1VXO7K#E$W+54tZq|149z*bAK~`iQUM{}4sKco6{xp^6wKh5FV~@p*z9#a2%DWLQpXz3;$~<1mPwYr$|=b&R6|VnZ!o=}Rgdu*3vgkL9V29Ez5AK)5x`VKJ;A!gN_U zW~vF|O^1zF+IBQ=8r+XX&StNShoy37L5#9>m9KWi*fRJy1haeoZg5+uvO>9IHOSdw z%~c+Wlz*dgEx<0hK4Pr zIzGvz@*$^AhT0HZ$A=;>XXXP!Etjef5H|T48hE*I9eqwMXRfDo@^$pHiI+<>?29g# z%+vP$Fo+&fn%^Gf#JK`3S2AxsLmPvL9y z3Huayp{$9|q*d_xz~Wk8+x{01!OD9-C>HjJ%0toY`Sz146u{CprsJSb*v4ebiHCi( zi+K|O<8P)OV8|#m_9Fr^dZ?|%chN&_rdA(wW=>IdZt*2Z%>WG_Y?GRv@sWA>PYoLd z$A)|ij(wC^lOc_-KPLYj8m$EtLd)w#sDfEuw=-~Pc|EJKX8xCeZTc4wuF%@yQ?B_! zy?KHvtdm#^?}aC?eg4c9=u=g}%Xh2v`5Nq9?ge>wppHvNR2$L#Kj_>n1 z^=<}?-upU%tfA@kJ|XK0-E~Il{lKT3TC9euM5PrbQ23Cz?P>ruFbRx@#;-s`*sa5# zG*o1EeZh?f+ectLbhk!}qd{kpiMOGh%WW%fgDT%bo3LCbFV_%`uCJA+yS||OZeFhC zET;8Cwq2BA=sgeZen@FN|Dr_;A`Yiyo|O=+H1G0NyCV{8f) zYM$n&(b_V@FN{`{>ji!qt)D~H^yt@gh7AwgHY^ZXE1L(djWl4bY@X^cV{?&>@O4aL z+YOAhp;LjiwAFsPoVZ>?hO9NM^yBTQwOmB&IeV(e3v42*5ne8fH$^R1uQg4Xy~IC1 zF?BgLRsDMwPuH%5*1)L)%fQ$;Jqy>|oooEUnj1yc!P=58-Lk{Sg9)tGxM*<@7pZpt z8L54vfA2N5oCUmfoeeZjTRKHadTC^Wv==_V`Gs4621`B&1q%n|ji#YJkA$Z-hhR75 zap7q$5QGP%(#M78%^f~k^)%))P#8pF!^k#|FaTOOJ3z+jC0Wy5KB(|qo z6rh%CG<+0PpxUq81}{>?QlSte&;Rr4v!<;gWh9?<#M#E3z}b2;jJg_)v#fdn-^Y_C zZIFD|`jwQ)lQ?rYyWB$XbPAX4p#{ZC$4%YC(gEqAtN2xBp`d?@s;qH={~9)N&4<2F9^K8ZT$y z?N!SO?Z!e>nC4svq0<`!1q{lzgprN>>y+`5}d7GeFp&Xw2l|S(7)*{Mr z7;0dTf~>v9M~+y_`^Xr^4)|OEw&dY=9i}h*%8O&wlhru)d{4O0z}RpN45k5#n40{N zzL=}Y-!*uoCVvE`n40{aO7;E#GXK(vh!pur=us5r2=CD+pz3MAvvK;P##?uU!+ZYi zGg8l4zjFI4349>n6l5wz?TVL_{|=u&@v#X8LPOtDy3J=PRdqKh#+Xuey1-k6sagNn;0_Rw+mX~YcjaAEa>5a#74ZPg)dQ&N8s0CYix-*9In|Q(I z#OQLJJl&(5z2LvOzwj|4*J>`+h6~$<6f@8<# zp`}W}AobWWUI9xaf>WO}Tctl)2Tj-t1Utt7kuTqnVoHuC*gU3`Sst-EPS==Hh>tzC zR5>+E^>DM$1Ik-tOW`%I!mPIIXG`!vHblryE`%(FIUb6{{(c zJuWw2<;K|3HqKTGj*Rvdz=*a>j}y>3kS(@Lza2hy+HxI?(DkLHNw-9i0kPo@UshTY zTbsfAREb{?Tr_Ve6}(PNh?Q$M0E$CU9UiVU!n0pnfQ$NUfeU>v)BJh$_$#T*F_IC8c3gxPs1I@;Z5L%%znpAtahD({=#jcmarNIM?nEc!E|A3c>O`^2*2~`dto}yVb$1WMl0=Wf@$!#T7RITJhLK5&XO{c zNt(M`wrPS(CRQ2D8Z2&8fJ%iR4RiNdQ-waekYByGmd`JbGU?6O1Y@XN9Ya#q)q()y zIaA;EQsJB_>Za>(ez}J|g!MO&UwR13d~+$q(QMR!k%@I9jJ-$OwE0^;KmgTg)Xvks zLzExk(`e+G=yLM2l(zkYewtU{Y;5Q{5nV3A)7DdzZ{_7ywtN{~u#2aAzoz_TUa@8K6Zr`t3iix{6n)XB2d8emKFEes~9m1@{L#1RTwnUTLa0ut_{sM`(7zs6( z3X2h(0v~0amM*o|`Dg>sc^|_=akn2MJgrymIwLuclqyg92N53BN6(bfnVO#gPM{0S z2&w%ako9zErcpyf;hG>DEib*R$ZKzJ7w1p1ypETW+y37`(2n*H9NN|RN&dGWgu8pk zfZ_EL%%Z(xI7t`>=L9J^7GT(v=5EV5Rtgt28c&sy;nl4nBg5+y@gxWb^_<)#_8gOL zGd-ozV9-CJyFDU|4i`eC+q{u>lbKRL_MjCme+Yg);Ozm zq{#!awPXiq!oRrP6&r}QyDq?ZhArIjX?$EXCj_GGpH80c8Ls5~Ryu!W?eyrsH}iBy z3gu_Nl;dwCgfPi2hqm7ghKqIs@0m9K-1(l$EEICI6$VM6$O@?_y0KGGMn*-E6z1Dzc zyeTM`;{#;9bwZ`&Obw4<&?va!c!Jja)vXYp`jUY1(+6fJ#2PVjrNhTpA!-%AujdLD#;9NE14krh{fXbcc4y z6(w_1fM$bzP%B+mX}pwSL%+l(0oor=r@-4=n*+-FXHxidK=Vm1VQc<2$tpbvwVZaq zi>k3b1te@-Y5FvTq%;elvzXG%qf#MA<9e*tsmmMJntm>E%Sr$tdhZK0^0G<=gt(>W z3j~BMJ=B_29AIC#{jeG;q1zAU+5oA|Yc*)3Hn)O=vCR)YYLYobRc$(S$T%u%c{xLM z^yo_FY5P{nZ{X$RJ<;XtJng%K@|$?M#K?ou1?7h*ZF>Zo56_^psM7j(p!R9HIv{8t z671_)>(iybLBmhXodn~xR%5UBdVxJW4bX4{j128G0LGBnP3+-efJ0D8;K(IRFWwO# zy|^!$y@oqT^n_N?cn#etj8~NDd--_%7%HXl>TG1tNHgvipuOPVeN@;KQa4d{Me66vQw1X%c!iN4ad9k)&d z(pogqlAjTfJ??=+J891bls`S{p&guyULa_;#{*W=EMHsB;{m24{{@oFHW^;ikdco3 z7jYJOfjZa<>BXZVvf**DH&K*dr_OZvO39Y6bRc7>Ax{Xnre8G!;u@X|DA!yygAZ1m zi{2$%^`~I0=0M{X|Br=vYwZqDq@gb~V5A#AfFZ&{?K0d%e zDr_IZBsyL7%%CKH2~!Q zLr_isrOSZ7hTZ^qP|oT6VZcMk$9PD3%jlqh^_PHlPyj{wJXFAr2}pj>JRMhn!2PTV zT;#lfi~gg!C*F6@i)n23MXJk zVm}HG2hcP%ni{|&ZjLPQlf}lX&^lgyIUr3Al2)FgHH)mzY|nMYl-#`0{0-m8S=llq;5TaljdDE@5uo2S>R2 zmV)M6^9-1E3xgEnXr%^@l=6Zg?wBaCsll24S`JYiOwBrEY;}YSzhj=x8T&&mPd6=~ zeDg{oDYQPiToX@&TO~F4RDa=Pq-T2;1vR^l^sIALkSx1vOH0A=36w0&!gfwnOG?fM~QVo{sAgPAh>L6_6084(IrP`eu zAQo6)0QnJ0;B7Rx58t~cIIV6VcOo%AMp2DNw#HV781ak@X8`)ompaI}B zkC1OM@{+5wtVee(o(wtRJ^bD~nSF8JN}!2r!8XZq2L z0t=$l%8h&$SO#atZm15n9b0lEh18iSB|CsICcp*X%T&Y77r zXC5h{>{I(ReB>oH;w@N)LF`_4-lMotbF#7d23WTp>-&i#pU7;CeBjw z9xB@!>ECQFXNh82H~BXDU~s&^2zY`ey-e1Bmuy%4qoVD?+2{bZ-R^t}68{u&;}w2{ zNMuQ}j0d`qxPO(^E*&fqg4i(?(DPIgUU9KQO&G;)YJZ`K5@o%vlZe?P;X5YE(opmH z#C5pqd=h(u&nHo+b$2H`6<~Z3;h`nUezOZaOc{{-R#9Tg0K2K~0|MxHrO0A>9jc<7 z0Zku)cCnYTPG|tp7Uh0KT4?!@c+Ubkj9|3=vq*DHC~NEIMdX=GDTh|GU>hm(W8#l_ zO~x;}07O?k^UEULRp-{_I|7LBsZWKv$XT!Z9;#n8VUl!K14x-9;X8Ux-x0txDC2>c z__$f1xyP&;k*s%#4{V?4?2JGU%J3M%EpNKH(`t@=sx{T=rHBNJx~)4lB9@K zjOt5kSXXLsq7!8-M(;S3%eA)i0|Kj#0)btu#>M4Yd81UhPQ8&R7vOS@e<#-0%F7)F zf)zKRxbm-aMen2tKP0BIx)p0oQHsf4#YEL9Xkg)okjKtw+Of2pd>%`0_|M_nT7IOt z1mCZ*_9+(LufdE~gNo7346lL6@UyHJKOF{>NqBHECA1oy$dGk#F}j%@g9xx0dm>;`V6ydR}WXNFP6qeA+I3@ucp1v8z6$__tnDl3Iu`=z}sWVJD6-E5y zE%)ML^2Mf$z|y6Q8Ls@~$pkAlrI^+X9hVdfYXx=|k zi%Q_6x_xG`vZq8nsb;f~ah~$x<;62idsqzz*okZA0_X{rY;w5>3zALFC%ziy5wK<` zvn)ra7Y?vX3yXzdDOB2()EO8o^)*zE*AS$p1;`uAI%!;)fG>4d?;KOpD&TDw-({w; z8Cy*iHL?wopBQe;~M8aUgk zT#L>=%0;-Gmp5LO6UachW-d24`(|QE74-6QeIB*?HcCFJedV1TTPJohYPFm9u`N(U z3qz@GEt1IcPa53`B>s8jY`f$s7EWeRPYeO%5RYc&LN$0alVq(Th-?C}N}F{en|!`> zDOgN7tpX&}1m$UqThB?=#lj{XYW5ZY$Rh2_pypFqJwXYp7(TQS4O%_G7Qao+Hinu04`2Rf2*2J{!2(r*W74 zd;&b=E;lN0M+2npRgt}3P*KJz7Bw1w9ca1yo=MXC8bmU$ufh2K?nP~gxOfk%np&^- zII46zS7{rkTa^>&N4X9zXW>m(Q5)q0U!{BURASLglR2=wI_3lsBY(nkbjW z%eg1$yM@bjbSBEB{Y2%=v-GdI8?P@Vh5d)}@ExOr_7Tvpdg~gN()o_cR;wFnez@6apSX10&(amn`X*0-S zs+P1~?yjb@ZlIe?XFgO*`)!6)H{0OFB$Wf*cvgfbX7EU^aAJm2o=mtfGf*K^u<(Hk zV8rE)a+5)yDB?<&Mlo3V$ugmejdUyfvQ3acdNj0G3#B20K8ZIt4Wfg`z{(0kYE12; z7&45OZJk8O@bWfpq_$6X3md68>t#_bv2k$cy%pfmMr!6XHyQRhB0MncQ;D{QECSd( z)lEa8Wx88;gwUv8<0d~Ssj7&=&zhzoXP8C$8iBK>c_L>t-Q{r7*dwcbs*0lH$L@kj zeg&|hjF=>?)C?V>4TwuAqkr2A})iRmsnvoFT2)yFb4z6Gi@h!>zBE4 z+b_1#Eo}RtrN5aG1ex}LT)d3iwgSn;JkvK5x%K~aLY`@dTUj#hI&tsUP~fJ4TnfbA z@b)+u$krnIgJj;zbb8Ue7rM#37m!dBlyOt3x!A35Dxt1dxM@%6IMjUV{TkT)Ez-2H zp+eBcKSx1=wMYQ4jphl~aGDBJw|hNSi|K2q{r zHWK@_=$`HF5ypvq;XR4v9`|~ziM>==u*P?bzY| z(KynuhqjgSY>ya=^W?iE_B`UFwoN_cBmd{d}?zkjfdKC1E`9%k`ekH#MzN26CF!ieg%6INw95=ZhcXxgH zEOroPnWY&sOrJw2!|vZ#gT_6kXhzWL3_l zQ-E>}T&}YjsadNXC|F(~uCfl(zY#8&_A!;!3bS}Q_ZWR|=5ih1C(5P$K;_KS${o+T zSEmT|bJyn;VZKKq4Xu2_9|L0yT_5RXtt(uuLRZ|?;?9u*?^0Z3k{;}N5^rnChDd;PAXr4)nL1i;{g|i zdCkm_RiWelWBikv2DxYP5ShKrn@({6Hl zGy*}7*b@+0XWYVK2&a_anV!R9=w_(9@QelGmo&aCagi_f1ef)kTX=#CZGh23dl(x$ z^zz{s_q+K^T;XmW@_KrE61|>o9`bs0qexSES`UvtmD9NB(_j@mLASXCvG;&<3w2OGGDvZLznrm1~dgz2p3-FI|-GX z-+?ux5;p$$S9N;k#;0mm+KE^;{*u z`+Tv@F4;WFD|f&ai{8FiHmB{XvDB$Epr({NRs(hBMIMUtSgAoI_h+Gp4t;co1HFcZ z#UAn+^xD&|Wwp;R9fV3LhGLOMUf@~*9mYJ>G$HA5YACBW(= zkA}Plw}uWU%(}H6$fw>eeHPf}Oma_6B{=<${f$Cd#$)a>ogvsz!+gu1ZSIBN1@fXwlG|@1aEl zGKH>?*F$TDeh<2%r!v^vVor_f2Cqmpdk`Q}0#vh`^Q;1#wJJ#ua5*yw>NxREEx1B8 z9&&}YB$6DdCM^}nq}i~()_;18rf`;X0_4ro(Uzswlcbbvm*gH~s{k(CwZb z2Y=!!fV0*%1h%8G#bPRa(EZHe7EsOhdp%^z_h`7tl*4y4<$CAQeB;{LbzsLH;sg6M z;KK6*={}9H>_&oxPp9NQ3?q*{oq}zm$?6}(7CxO4hYIlN6jRfF51kr3ufZZCzMtq4 zbcN`$9Te$8jgNA=#_mz+$~=H{VXQ^7PM5N%)B&*;FL;zar4A9C;|PI^eUNF9ChmzY zc-jMot?mub9d=;wfrgC^4B$H+80hMWquKJ7Fq-ke;6qj|g!lq5dV1jprY?m1lNB_96zv%<0W!kKXY*GIODL1!o|Iy$fb>`2Zo8axKP&Zo5 znCIXIiROr8^0NIJ`tIVRs^#azQPsiA=3nW1fXg)`d$D5GVQJyzSSo$5<8m3^k%@v0 zyxct6%Yw@Au_}G!;_mZ=U8xY`^c7fyU8$l*cToS-d*O)#%R}yH;r!t+T)))Vw0tkH ziAmqBKX@qVJE|ZWFr zHh5_v{rN*~T1XpyLj}am2ZL8P#7BRDjy6bMW!SH3N8?nK>{WIj|8T7G!mpDDnZ5>W zRiQ=96!-FyDIVk%oP>0#mlsX3PCV@?b@cY)o|2BtVS$R-uF}9puy**^WG^6}+hU7= zjDjrEy%c1DHQ-z{(u*Dp#yJm%N+`%;3?z?ahYFKKTwsbvGhogXp{Hrowv6=(lN{=H zrk5tU9H^8gxu!7;nu2yXQ-F5*r%`a0FvY9P{CSi(YGYRtHplKPcBG*mGw}@?WBg8P&13((rHV}_L6DvL#^-KbRX#242`xxwt(#c zn>RmZ9t!TLhDsk6*eiWgF>tBEf19M)@`lIL(E=mATT&4+w8=T@B>ygJu7Wkk4~ ze0}1~kj=}k8|iy9m$Ug3MkV)M=39W2ix zb~}#30_gQM2jHO^==D?i>Co$|wO(&15PBV7E{fdZRq*8^RslK$KJ4|K%PP|)sNuwL z_CQ{_m)wC+B6E>48Yx1Hcw|9^S8!T!2yUQi*<--Rpk8uX!{sEHF#+qauU#y zU$9lQ7US;*tdE$7hdxX%1Uk_SL~{{?ImbDsGGGKbE=(*zEemYIiO9$-sL zy=9IUp=E4sc?>Y^yAv*-NUwNlvD>OaBA?)8m|Z4ctBr)tM-mlMfQlobgKKW4*2`%37jHynfr3mr4`<2)fa5t8$RQu6?t64h1zC4L)zAHil{b&9L9&Fb$T)C zLD!eMb1)yW2$5cZjN;4Bm$;@6(5dUKO2o1hU1O za(k4J{ZA`Nu>UNJQPQ(Sne+#wq0vz}`j(&#m$xqIrX2kP zHb?ud^hUq=V>skqZtqc|xdVMmbVmgr=xy&;LWxrD5zT=SOWY0oIuq&2!vugEZ5*ah6dg)Rjx&ECkj}(oHv8ougW#>a`RC7 zp2g+rFU7K+-=LX37}_s~#y_rP4(O4Ttp6@q2lI#$-8$et(?um@9ri-Ar|nMz>o8p7 zuHzzsJIr(&A74V5ZuNe!UdqX1cY>Rt7EE<(vR_d`XC|`}$%|jkdfAyGpe4PFWtHf9 zhx$Al=x1s-dX<-}UE385n}UZ8vjuGXuZKr&+paEA{=UAas3V3&gbg$9On_=mEXif3 z4mm_6S^r!OAiZq4q=Zf#7LiaBlyMih*ji*E z>MPDWEJ3qw3gu2FT4^i{y-gvCH78@VSNc%SFeT)hioLDsB^6&WOex^ zG}G0)N(2Le8tsE_Wd>r|j$Q_zip8yS>ZAD#$CX~<4V)KG_#TxC^4_e+#SHbpgLZ4 z+)SzFCvzB8qz=9I#J^-{JV`%~aD>?ld{|!xFL&-$f`O7@%d)5W@q7C`{KwGx43*=& zoPB92{va!xe%^U6l>@xo@GF%gylh*g`~da#%N|yaztB9N*Sj-1xUyuRF-4$;Rt0UF zN`zGbrewMsG=<&icpQ3`r^(!inu6~^+%0Iz>HjXXOIu+AU`J>A1kkw?6yZ$T4AWkw z8yT>vnPj=22qBZ${-~}Ym?3jl2_uoq0&SW2dYG{EqEm(x(mds(mrB0XI~=`jy$xNv+mJY9lQ zQ|?oQJ^*sNJKu<#!p|hmns!tCC18y?)%ILKhPlhVhmbXV0ODl<8l}m6rG)O(Av8=5 z_ZC6JeYVw53*D(}eW!#nPXANGMj5B!J7&y$o3PoTj8V_I@4>9cjve$4X*&iZmhH6d zgKF=r&jQ-s)o9E5M8JmeY}v<4D4q>#!2EDua%>HdC;t#s@?LkA_q5|{u~#FfHH64s z_DPtvSX3KV`b^HEI-CVoQA-=RoSC;smCMvyh;rH72W<8yx_~iWHk8wMb?{}xz9g7x zh32oQY&{7i@RW!8CvyJ--(&}KuKU178T zDGmxu=hWSYgJS!2UOIxeokz`UnrcdtdiVry=NGVwww^v^&o8P~#9P>X*zb=~(CRz@ zz%tH5UVl?VKOZGL9HIfkY);CEe!lfdhBTVeWMx}F-ybGxf1k2CU7ZFn?W?iB?<$jd zm@k?#;&#ZeVo{b3@r^T?$08thnM2vT)H_(Y#O%BBM%)ds4TQWCkg-Fa+Sku=onpog zuMh4Zz&Um7g7JOVI1AL2A?^wC3TL2Hc0fANnbK@XrP0I0vYWEiJtPWsLfX;-51jkL zS+vq*_Kg_O*XPW~n+mvX069ReDU$~)Uz>dsjaMsaaA(9=sZ2@oW%Ya0AjeD}Ln04W z736AN?^JwAzPy3#SQ?A$CveET*2S(jD4!+yuI&jQ*1^RFWlFMdgn2PM@Ca{SI+bO~ zzRf+UWwWF0$-W6j{xnId?>b|5R$oxDfBm#YDevW*i`iHq3kpk#3Rz6>B8Qw^P?X=D z9nvo@2&Wm~-pPf@TKZXkfqX?TCrd{Hn z4`lFQWWbN$%E)ZE^OAJ|r@m&G6AA+~<0A67Ia%#~egVV>yF{f}`JNNMkwEr)+&q-DgA7G7m=q zJ{~a=wD$a$%&Dng=%Wj!D>YD*#d5xnBGsGutYzTCRGnmmVT-d?E0=5UL#Y#R7VErrzPLPHTI-|S5e|~-T;ron-}pM8zUhmzmK)T7?fKRW_eICQ$Ziy`WkB)# zwcRZM#ej4+5$CE(1ooEDre7w-KxPuUF-;wE=B?b zuQdp8*_KROH7K~YC4&mS1(cC_+&@FD?MF5 z8ijRxM1;4D26yTqKzIv8h>~Z)+^HuCVA|s?-IN;(NB1|~05$mwN5ja;+V7(qrO#>j z7==;;_`Z+$+@T2XVO7D~^d3hAH*+62%&Au81nN=F!sT*#dsVrx-hPy`a=FY1@}j@3 zmP;QDfxSdn78kT1p|V3wofJ_k0%|7Me2*?D1{NjDJ7UDNNCIT1Xppt3rvw+&PH++<&;{60_P0g>9 zcIrs^OxgIRFjJ!Lf5>Obp(CK@(Os>7gF(X_6(0)7iZ)#UIV#$q=QmxT_B`YSGPSf5 zH2X%Q#WWsjsroFPxr8T(G#cHJe`^3KN5u&sgypFCl%%{+KD^HwHwC_c(K%Gz(In;n z&c`Cy^|?l2?tciVd|~ogldHq0EV-c<$B6S;Cqb-dDLw*F z!Fv}$x;9hGS(v(+!}XU24#&3ZEU{<(iNIxp97Y$~fAtBzAXEFl!FDlM&^XdZ5h=D` z7%0l0`9A`M+g~<=U$A>PZJGUi`|FWw`1V&rik}><0e;m3q_mmv9WzTO(W+2pW%f*- zwU=MmJjcbuKtH;0X}P=8rI9d;J=qtOE!D5ihvq?k-3`RJWs3#sI0VV1QQ2_9lBo{7 zi8L50S=h4}tnw&7S>=fuII_y4{A877zGNNgr*lKY7{7jQh*o)$pNkO``rghf zG(Vjvm&wcaXMm;}N=2PTB5lw(v^VlhP%O>fptjHRlfC%?C?b24HUoJ^%biU;xBT|d zSyS44zq0k#2=9BGsg@GQj_Z>x(yt?<7tQj+Mz(7O{Z($NSL;Nhsa^qCSehrDPZ}@r zm41D^pw8b6I?u+7XOu5G{`(wI%@vwzw%;sh0GVoszpJS(Ab7f|u7aAlsV?%9sV>*x zk*O{u1r@px*H3N5eqmDq6~BVjKEw2%Q9fEfwG<(5Xs0U#-dX}8Z!}AV37K42X_0;! z#fh_Q7Kv-WTSG<`dXt|lw5~Yh<3w)t>pl*u{yoq(=HqM{4Qh|CYi-tutGkDwVYq)o zJq#O`AWOH+4TLPrBG>PN-=}c@&fR|6>v&uPg>*ISCb|SAMY_TdigaO{<4(su9qf(xcYL5OgK?^AB3x|~EpRmsaGkp2eVAsRgHg+}LBFEGqHT_6 zKy@H>kn+Ml|Fu_JKTaGec3$=#qwjG(q6|MI%2|0i`!oQ3TuHNzNlMlS8Ij-kyg)wM z$QDlibz?x+Fe!fhbF86gBU|)#Dvve$b9&bw(f{T!X~(Q#7x2D7Yxxc}y8Z>f#b{M# zb(9T?w!Glqlsq794n#LEE^y-QelL5C!)6|=EPca&f#Q6_f4%W`rR5EO;r!%mX8|nZ zFgDsYIkm#M9u{ZUvJ{ee#j;(3C2z}u6j}|!;tkS4%CqIo@`d;!Ms4Gb@?&yC<3@u& zyfNy1)9*E13nA33u9(qgfRqV_HS#i3L2+@ZJi}mjTo*HD%Tv2u&)zqYJ>9%4O@Qr& znDG{Qnu(>Rlx?x@#oexj$1v8*i<9$;{4z^5u->^wzC)S(j=vy%0G`tqxC_{y@Ojo2 z@>BZ$%7J(MwqEm>tbkMn>mdW>a%X_jLGu3NUc;BV4tUp1PnVAQ$!pMio4PD;T<9_y zj$iRUTLXQz@AV-t(|n>0nB17qXSf0HItj|HZon%zi+=B?D+z^A!EWhA(9F~Dg}DpA zX{g9uI86ga&@FNU?PvVD8;JWezXN`DZt*@-r0duVySD%0h`}A2IHAJq>9%uz%$|;; z7^hBSsq)^#FgZou^Yg^%4c$t~UFcn!=q|u_bQdJr6qcck2YA*Vr8*!Sf_+K}&?f{4 zSn6J?xe95ex~ni`dc3 zEsax@cjeNVQvajTO26|_6f zz&g^q$Qo)u>pHG?ZTW)Up$p*UdiU!4ey(>dPUH@q053sn^1gBw9t{9gd**OdH0xAy z-oSe@y$>~1T@MS5BukCRTl*Fb9C-oNrQ`(!Nvg5B6b){qwp8#>&VV4s79}Eo#p!NLS3jKG<^=ws2b=MPB`eB#^nd{jE%|5?fGlD`s7FJ920?KqkZOYj#8mD;B+ z=Kyg^`i$_^_k~eW3YF~Zi_7mXK)aYd{f~x>?CBT8ob?1D%LX|NT(o~BGKU7WgERLK z)Jn|RzGT>F0sg&+jXeQs`vI`ACqR)roQZyhN$b(%8K%de2D%&{`wh$|OD|+7QzsEx zh5yP&L*0K%GYhSpH&uJ>I*+L34P46&ycMdP&?=NuPi)(Nrq-%*hO<M$#?=njGXwkXA=P2MiCVWgS!&ca!j5`w9X=TEW1gU3w8S@eF63Pj{RaLtY zE>rhW01IVVunz8mD=S05MG0s}mC+#>SSBNzc@fq4s2rEkhS0K8lc8 zKn|~9%GNTvf{A^PdN~Dt#I9g=04ltKDW#1=SPC&(r-HzSg%9Xv1ldj4Moq%%fTrR?!t;)6OG@x7umkTe) zzZ=qG`6Kkf(7KWU#kpW(Q6j)rUhZ(ycQcQF2y9N2YvkpYE%e>OCQ75X($Jcb}w(6`}xDl}q22WNk zpPn#kyoi)59ELQAN1&!nSJpzWIXq>Qd$KaI*UTPLexdp3N_2Y5L|1}6@e*Ve!$!VAUN5mp+k*t-b38!Jq;bm-ic{!6wu*V+RM@P`s3@IFT!-=iaIM)|mAm5)_3X6Lvd)CPCa)bP!sld6;DSxQ+KTtMe{NUTnc&K~} zyz^i?Zg7w2Ym)u&{^+eelV`EjeuYyWYAW~mT=F8taiHwu3wzN!8fC>knES|8eMs|xjpB>kvg197l&8KV@>QRK0Kfs+iF-RTVv*h#^jZ9 zUiS*N1>ubKxG2`+j_A8hWe(#w+;MQOr{ivRj?ONRvtJLI;a&lIZ$n<}7#CI+9V(km zSLC-IDjV3n?>eV{g7S|;WkXDknc?W$hsydHO?gfq?M}QxvjX3pXw?*mJgQefEtp63 z5=nWXOlKM`pqX9HG~Ovw_I1BvhVf47_r{#$cu&dos;=a@?XGr*{y0b1D0>v0VpxnA%ccQj5DJQ>PpF0GxSxx_7vbKG2Re!eVv z!?qNdcYoAbHUH5C9mZf;&Vy_4+;~2<;WE%vj{6$kjqsx2Jy6ra7t8>!M>%b4q?N0l zA+l%bQBK<$CW^L;cQ3~k`h8@R}&1XZ)Zyxe&?eXrwk;YEpZ5ngUxLf;#>T<*F=xiBv`=F|5G$-!Ajb)sM{ zF9&MryBeuzzBf@Wlb7u~fhT?zl0hPELy2zO5E)V4bwlJL&Qu*FrMV|srtXNy$T#kY zj2HNx{^7HBX+k;Wze86M4br9MnEy`N6OCRpx||(}TtR=F`**W+zHu+)igNPrbXxgd zNLG2*y^z`Ev==fA#uM#@T*07G_`+-f+MiR)bEJ-|mBrJ_`Q0n9M$3%UytMb=QdkEx z?}n4zKoM*?<+KxWod%5jx+SQp$$CF3Q|FbRGqu@4!&rhZY%&gk>#<^V+iz|z}p*HB9%UC>%`|H9#N&Hbaa0P)+)$pO6Qg)%xD_J)u2#oUHS+2}{PQ4$2GuaM;W;+S)%Wi=7-tNK7eQAK9%nnE%)}YY=$BOQ646-YzGT`;i8XOzzvHN&@4gO7?d|RbtzA zA9GE54QPAsId*E$ikgI{2LBY0LHv+iItGJK3m-yT`#Aw?>fS3|0$lVeOv6_&?=V~Y zy@rcyEqq5?tM@Q%zgSO#hHCdlQA2+K%Gk!$*u%`$UI3KEG|J4U1YoC6jDh2W(@??Z z@HC7*$NU0+>#9c~5eigr{%x2UOy1wQjWt#z+SuQTuJ&I@@#4R+NgvX*o+}rYHfUg_ z3S8PedAN*DaXWuUwlMThs?bgAQP+iFT1^$ou!0LYC^W69?Du&T?9%|O@au=c_NP^l zWgV>HBFoylf{qa4e55pSfU0E`0OQ)$ya4|()TLJ7f2eXzyxi8CzFW9lWMZOR8!vZG zrtemg8)690O%#mqa_hVb?Fd2t8??5O`&H;GFI3`;3fe(345{EdNNIiH_lM$^h%_4M zV==oU7Q*~2ULn^yN;2djvAp3+h$zG&x?NA&r@QeU%G=-~oLX!fS|LS|oXV>+{@`lEbocYIMcC9`FMQ@ZHg8;tU0EHl>ZJ z5Q1dTQ<+HG8+!>t1LGFsKTQnENr&Q=>4d;?+6=c=Q zp=yfY$Ykn4-pVv#bfxxO4jWO^E0onem-EquHefCvU43&brj1a^?zZ<}*xRxz$X{8e zAtQffUIn_=f-;llw#^qb7yXsxq`AgPit#d7N_(%9;yq0**{HneuPhhQB|(almKA`G zy{U;460-tQ=Z(t!iz;RsFXxrG(_G-KI7IT=3p9x2t=wEe-pWlR)p&CSdjI$idnB(y z@JDfaDI@||YGLE`^k+J+UvRFc32(q4ZwEFViWw5p*|E74{Fb7=NaEn*0NSshl8?=r$NHRGwZ3YS-yBgWA<^V*t^wc|gFos1(v+)IV4uvvOx~RkL|C)oTcAOVygUJ1ulV%&r-#$;F4n(ns$hh)aIf3e6ubP9{C)8+F&TyQ{ay$Loz~wUHXA%YFAE|8n2^!Cjee~ZY0=*|h0#U)gKoZ zI!*$WeO3fTTKy+Sbupo;@6U$r&zjCz{}OsNb;}UQg!4B{$XnDsW_%*4M}V9$wn=&= z)zfl51@x{yDL@X{1%U)dF)JxR2S7dO>ZS$c=sEI~fW90-eeMr6z;XmO$rx+TWNrbi zOG^%D-p+u4?krA!6yAUy7!dY}aCRC-@K}0x<0AwwbB_rIu4@GSd2VpWYar?TXGDMu z?l6+-lmp!0jtq1$xDx_saE(7v?Y8f8fW#3DB-z{v0?5=MkSVldVnA6v1Tux9slYkv zazfc=pJp-sh4nlyZ2}JKrUvNrXO0GstZr6-?y+Z13BcoIoJm!g<2tjb^vztEBfK%H zT$|oFlxyX3;mfJfs$7JZTeIkUJC|$B!Lokv-%1}09ZRA4{83H)cS#Q|(*yeKf(J2k z12nnZ5zRYQ(FgM7Ow-7V&lSlF!Ap4Nc|cxhC?^k(U~-7Oma&&vjN25b1AL1&dIEcn zWdS;cxiOJF^D@#v0WKN0&gB8!xS@961pG7OcCpeoBLMZTW)oj*8LA*ViIHv+0OBix zvDE>3MNsouOlj*0Vfad;#W;;>3hx^Q2(xYpkSE~R5YkCZL4ZzT))V6`P{z5rwNPMB zK@BhC^p!`aTp9rSns3qQiW9RvM8rl z{Z^`zDP6mMKZz!)okU>cbt^2!x2eWh<i+e-K*F@;g7NAtl4R3kOL4e6FeiPNb^R zjXJTY`f)C2=Pgs^^p+|kw+AlIuqrxA_KS92_U?j~(Z%$T9Hx7q?W;mqx4K1>-G@vE zUl1BPxr3%UUJYGrkL^nOTk3G@*hOXYLaf%%^e2_GdD-r)WIs?I+7U<(MSjJCA!`u{ zTirqY4;L>-&QLkR%l4cq{CNlW0^?6n*|L~^ztK{S|B=hf*_BkT{WNo<<8O0Vczf@!Ls4N$^}LnPD$WsGELem)>6YmH=+081Kj0 zpC57=%<|7^BdwuDK#2iLks~lsvA0GTO3GnF7#*o5i}4}C80+2(l-TfofU-s$*WlrB ziyWol=6aXl)g9&V>OT zHUto@&~H>v*uNQ^v~PhXmUa1zhL7?^z;{f^^flpgKpAH#*LUJ9g+n;@BcG-=DIXn# zes22TH9+9MH3G9c1$_9>WA0A@dgxK_=DKr)kOfj1@1Tm(jxuK>{ulgd_8LXc$^>U4 z_fKvp8-D>q>EivYj_!KB-%+`(d?eX8;i{a_0VtQn(H0_D_^*?A5L(ha5M z4`M9qPapuMjl9c}lJ!p%sZ;mAfUx6_BpQ+`nX|>V{Eh#n=C>7Z0UrO>cyuLI>ON8R zfHgU$Kysz>!GJZqqcLrAKdeRxNR<{-WN>A4)4(+~X2`42fJ)}Cos&jZ>h2n=)@&gG*N&582bt^xE192G?;M#Vr6VTTm3mB>exe_w*uAJy z*?NLU1n;m7%~moGrH7LmFQW>=+nyd2jVD)T8G9`*gMA_&+_q+S%azR3%2m@A=Q-Cw z!R^i~cBapPLvr;4+a+QjahqtJY%wi?Uy2#}_h4tq@Z6p}P-#l7958HdD(n`)F*e*h zcfze`_;m=1FLDN)#gLNR7d@6*Il>rPT;?n)%3G6P=JNH0BYXCUAUq!kSKZ;1y4)it zOYm%<+_yLTo24FjxQ{)r2S?trG|%a>^@js**qWLnPly@D4xn1(LJteuXNlSY3p`CI z4VNJ4dgH}O1*LgDxG)dN+igpYMR~UFHj`ueLZe(D-)hYBhf{60gtL0FZ7w+Lhhy@* zVA<4IYS2{VgtiZlneKHQh70w{$$;1$T;p?=mMZu3uDl4SgECw(C~(4gzVbrv%BiXN z2^!+e_qdg_y(_Pr+V>V`ah`h}G%OFZ#`~ZZgS+8Paa(3mfvZ>s?%9Kc15#N6dI&C% zi_83eS-wnJ)2H&OK|Lm7$b(}_vig4EVyG)y8Ie{wqEFhwZccXXo!wn1mLF1ynC7A=7c^YAj_l3B}VEn)8)uJJ&ULHCkbD{_`EUamOqvu47+0-JbX z5z*0ehr?!3+PdXiOu>vwxNJD^ub!Y=l5BEZm8kpKmyzz9FCopeURFtiGxG`NpCFRQv^u2)#HdQ6c zwexbkMoC^>xg|yTJ$>KM>Vgj3n{XUh!fBdZ3c1Ol{~B1z(@Is<%9J1X{{fNYA8`*TMrOIeIB)fv zm3R_Y_jaXl5=RcjN9^yxt;J!L(Zf&o0)2f;W8C$T)|#`Xz{i!!%zo+}9-Qw!BdD>> zCX4BA`2F*nO`r;GUsO^)%KvDfkmSG@L~_;%0+kDL7?AAvN|;H}Pwv2qF|HvB_0mLY z{}Oc+(>;E#0eegtQpH}L`k_*BSE-?eIP3ik1Lfgikg2*_>Th}jsyUH67T|UMR!MOK zhM?*v;u{RcUzMrS zn91e2T>Ww^>rVkS(+5NQN)lApajwF|3hQ~fsW`~OZaRm3oRoZ)D9-$q+k|jD(I!9= zEMt(2!r#LxdF;dQ$S=k|NI~6&9P%3YYhF`OalfYaKAtS61kn@yvcJWYJRCZI$O2%u zwRezGU|Do_?Qv7O1m7_Qmd>Vf;Jgsoe>m55O8`Mg}@Yi&v6%2f^T{yHS&I;8NiXL;X~!j9veg#SLj7H)9-lTC}d~1 z2KD$bRQxIQ7a%??U4lPA;bHPP29w;~iv^f?flIz5C|uye>24ZT;#df8h5rGy-~}#I zU}li4eYOS=tv!53Yp-h$opzXQLH)D?^?rVkf+PYmAj71PGd2D?<_o}%Rzciad;xSo zwHmjEQ-XClA!{jtt7TiDmhle`htu^{LE2|=Xu!zWuO#LKb>$2FYlHe$8ZPwnf)oi9 zhdSw!Zrdv43|IMi0<;P28IHC!LE#w=nym^6TKIz@7L##AWpv@;?EuXaB%4^NL8EMt z#Q+&H;3^~XgOdyE?n)dtO}yN;mA>clf#`TFQLc`cBTvwGb^j#mr9?RgFNa@&Hc?tz zVQ7*)F_Z)adxF{;gzjRgXKc_KGAErLBn6FekVt_;fyb3z{@@a+vr4(iALPMhXplD( zC2@byVysiPt+>?^y|6S`o1!f5S9yc-QoqW<(I-Q}GGi}vi~U|$*0B6nLpB8G_BYL< zcxA&}dOv(l%y31tctbGPIFzkx{GK4b%>)iV`rH+;^y$gg3(A)pgO@7aPeu+<#%~I) zREBI0E>DBJQxye17De#-Bd>*D+o}|A4vsQq-xDOyV3*!GZ9gnZm$nAUGtj$%dj|Ev zuAagD(2wjc;zHmk<(Ldp!abTwH{UPl&7vXj#%t^Dpt5HO-*@4WUXKz3kpCUc2gvn;9=WM)Gmd zh&O!(@M&4yP_Nq#BR))M^&P;YtZwmFf@I!XHDF}k;X9glUE^pnsB1}_4D2SuyL>iq zjf9CXojp;sRSImW-g7<>T!7Jv9I|cvbBaY?4PQEP|ExeeeIc+;0BqJZw zpplV3PMl>OBW80!4*fkxyU?p>i~XyLyWpj8L1fcWGfJ*utl z1ud0M5i)pFJ6!@`^rUv@k3ll;=QLpS#L^jlW39j#g=1>}kry6+yF0CN=T+neU zag3*(rgA3VJ8j@{=I*pts@9ju%l4l1UEO1i4Z*U$4P+il0@mSGY#RuTxBfS%SHnMb z?bY}nyjN?0JD$O^6S+g{eO}=1#>qE<_5KsOb@ENTThV%Vt76t$X_@qCx>Og8PMgYN zDqDM2k@fCdrTIo^z2Q4rZ@pR6tGP*4!dN9$?pH;F^-jP>2`tUfHg3N!sL~w^yaJou zA8OF9z~YQJgrMPF$q9fBZ@?xs4kxC#{k~8`NcMYp71?i{Pg?$Dj;IorKWM!#s-or3 zc19j9e`J{34L$pa!t-exprQTucz<)ltFoWUe!A(LM5~$ur8|-Hdjz#Z@~89n&4q* z9%W5hs?lSzrApp4C4R~2~=zC?;FE>bB0IbBmU z+)^c6Q$&^ZSJ5@azIO!qOOc%}R4Fv#egPW3_tRNgCA{~8R=fuKNlVl`0;*Z~v&3B5}MnRNw>s^3t zl)9~fLppvh@z!(^WE^_-j_41Yt025yZlFKSjpxG}Kr)^Ru~&B=NkyQ{9&`Wvn-O+t z7xc^}1Nd}=f5Q4G{Rzxxc=eq@p3ktcfg??l9uP<6Nq$-K2AiLm+4O#6XAjE_#Tyd(B>`^P$sn8dKPih}EO)a2|&-W4Y})be9| zg6ne^^sp2LReVQN#kykx!lP$Kz+He(Ku>-gq3Q_>L;8XMV%CeyFRP*{=X=0=s^Lw+ z2gdZHt>V%$3>JlLZx+*;lmfYKAY%{TG9IA}JX7V&=)-cX<`wBKu6&UM8_G`OAV!tqb%)Et?#{_>5A2D<=C(W`iEW?zoPLOS zjeh@Q)s0g3R3;R?=I5#_joIu!;m80UGi6)c>g~Cy-Pz?kc}e5dJ+&;cR}U(Jql-K@ zK+l7n`$@^KZ+h(k*tv&8g)3W@Do4&%b*3zFmIl3$%(k?kP?1||HV#|@A+XLh9@y%3 z`r*HCfwy3n+vg~mm%t8jM-{n3KWiO^L$jfShGy<})U5%K!&`9SAF8_Ef{UMpc?oX8 znFd3TQBpte_o!6pY5XE|+5P}rYxe#MmMNfKYsQKDFY2<)N8yQqqtImwN3lB+t%hoH zHIl0nT@Cn-uEyU4&JJY+mn&6w1=p5RP2k28I8Y~JwdQK1Rtv7iNtoHPdsPe03eMXD zpaNJ}NYn3%-Z88iCbf=qI>e?)Eiy_2M_z`dn%*(vBRrEcsE%-fQJe{~xSW|cMwQFd z8;5e)TrM_%{<9!O+4}F&j1kDF7Ca#u@1v{96}lP- z-1j9r85pb)m^-E`fv&M4ff%1Pi4!=F6KHCgQcbaj(-Nt3O{qo)O+ZSp?3X0KVuO4- zN412_66m1WE@rSO&~SzT>-3Y&kTPN>Xhx)&PZJnucuh5Ww~eRnwwNyaswz5u)NIhX zhWUV&IYY}eY!qq;-|;@hJYrRzUya+P)`iu=<`gRP3Rdw9(=tGIL+x7NYk|g>d8Ghs zND<4VysBDp7pbNc=jhc4Z0FC@EvA97s%XZ~(*c(^ubMoNLJb$HnL$g8v!8Y73$1G>d+A>B7|+;?Xb09T&;XCO?7K=b}k2c z{>qVwb~EOFyz4H>x~0T>7noH?H>Zu>Qf`e@LZL)&4FSiAt5j@9|{t3xgG(2dRs;l)KI@HTsi3_~JSqNOv7F}8ua)CDr zw-6VwvjRyLZ>!eBEh(nz9%vwow;Xik+UWTXxLIo6PS9v(us)y@g5mkwt0`LW9+K+Z z1}eq!f5vwJ&Dt>`D(8cw1MKmv!@%_TIYU8@wrhIS{-CHwpKgP2!9AcypKjv{j=@z= zQu`W_zg>nRrf6q?YGJMWT7-6==P0`wY|V@Y|?KNtV|{`r6;q08)Vd5t!vK zS)8BzDoHg$8BebwuZyz-YU%rYcBrA*0l0fjvgWu2&|FuZRyU}P&l1t9D>Ij+DF-oL5>x9R* zH&~Sm>ja=252i9?Wd4hoQ3Z2(Iq)eoo@ZFnKT$Ys>*v*ad z8Pv4<#BSKc9$7<%bAkpBHPAJ(h76}n@UlS;chu~oYXo-&b$enBZM}TPn$EV=B-<#& zNB90Gb-}l&BpIydMX*Cq6KUV`t)^lnNJMDKW z^%vKeLw4TPs-6m6kA2X=72nF)R^{wE`zROZat7XPRnDr@fO6&~_>ZCe3ZzF*6>i8P zzT~O&uZ0W7?NnAPl$TQ3wp>|uNzIlN;rEDV?+lS=90k{Kp2vQx^6Z#SJYy24d0lwM zz1MaQQqU?8exMAHNU)uHn`%fx$I>tDXoZz!*os+Iy4+W z_yTNNphkEB7N@Z=XHJ5nGt-{yfq0{yN%pZ33fDY~R6YwLJ6srbmrKDIbyNN|+oQ+R(L3mduWRPrm zvPSu`Q_Ubrv)NNbqaz2l40D@mqBk7A1s2m!|5A0Z{{}sZm9_< zTYs%uuB0ESaU{WV(+9Ue;n9`KBQ;xCks`&E{~f6*9^M1W?Dre*YTOj-HUrY&vIH>v zO&FU`+45S=efgNyB`Dt@Pry(;x!6z~wl^xa`fg4ce&1%b9g?laIeGHk23dZnJFJZ1 zf~NdNPdI0i-OjQJ^6Q2o`GTIZotDJ%-NyVfxm&j~H{`i>ye5yA{GKBDcct?6np=|` zRy^x!oDem>QDc_+Co^<~dA?HiVvS+CVM(mV%}V-PHIH4}4X=B~`aIY}4ptPvAC+xvJFe`jx^vSQ3vV>vA9Z2KFUQjlBpB22B!EovsIMkwRZ zio7HaEp&_C;zR3hrfO_!#duiP+Pb&8=mg&OZg{&!(QkXB1^EzF0?(lupdz~Popr2+ zoTD!^c;p;?3?_?hBIokCHJ9U5=hm=}8)s=3m&+gg=ic)XjEagkBp~lqNlp$!{m7yoC@Y4{hCN&^C=qkLd(eNH2zn#Iyj^J zu38;{N7lXmG~#1UlJWO0@X)x|Lj;>{+{ri?YMGE zOOUbn-%tx>LukpUB?oDY296x0j9PM#(y0mAAUAD&FL-@xXssTAfZ9E_mI4sw9)igZ zvxM7*Fle-~FiwP4aEV>A)EuI~q%%j(t5xGRNpr_=7APJ*c@?ae9tv^f)d3-9on}kL%Tpg^*<*YC3%CZs@-Hb+zQzxHWv_*Q_JGisx}UL5^-I=GW@W zDpXhx)WDWiu4ii~X-b+CdBcqcufSW;LU0z+Ny5HTK$X6X0Q% zzK%K=(^{53oO!kpJbdo(WvC?Mg^kd!_d%zunlMRvNW(>*%nlf*%qp~UJ#FIzs(LRF ziVE7!{9H|R;q%==^LA?7#Ty0gFbvWBNUh)p;@!l(p#7R3*dJ;kKhSZYmTo3S z6WKE#AgvRyBCyVb0x(Lr+DyonJXb?WRAL8E>F`owvw-Y@v!Hab7iyI=XH})cQI+-@ zbt?wSzE!KQlTn@9YH6ALBvguq zRC-e*Ez%}H!>8e!KZ5aKS93hzO!TRsaL+&`8OKurS=txy7nu?LPD6$o*Zetg7Wj;i zHGB?#A1@_-S=;4OVh2pgEWN+sd9VPO-oO3}1`YQaIs{}dE$VNVzOPjd?$UBmVMfTG z2pM~{-eiVK-s{hhW&Q^B4p}ux`k#i3E+PIxV?l|Xt~G}OoH>fE{!1 zkdkrb@k!F4kmhsLKXX&M)GMUyJ9k-rvW`{B7_#@A)F&jYDoK&kL$s`Xign1*IWS0j zL&M19fSZsywCP{NQ?qr0L(0~#)u(1-88u6#kp!*94<5&h4BF8TV1gSHBD+3WLx$>B zHztG*NA@VX-RS~390=ZVA$=gA9%qJVAPkSz(5{waECZ&XL7gH3n+O?59Tx+zi97=- zPCio!SAFa;c(^MHzGRXD+SWWHL>6_P224SV3g6M9P9tD8DC1?u?5je;Wkxco*}xe~ z4Ard}2L78Rmy!rppLhxM+~YlmwORE*b>b;<+J; zSzDuFBWt=6x*4p(f^4poGG|X!a)C`$@?0(#pGu8Uy479PhN;RAOG3lebnQ{12 z;Fxn;s2t&C!wBV;oY1gkxlf1j?>E@-A4B_;4TOi6bN5o&yp(=!NZE-0k;^@~NFkL2 z{O9(g(a&;1@K&_YXzKC0>;GSm8`kk29}S K>B=Z?9T(;({$$o1{`7%>ID}(W~RJt3v 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�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 z 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 + + + + + + example of animation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Prototyp/html/pathformer.js b/Prototyp/html/pathformer.js new file mode 100644 index 00000000..06747130 --- /dev/null +++ b/Prototyp/html/pathformer.js @@ -0,0 +1,276 @@ +'use strict'; + +/** + * Pathformer + * Beta version + * + * Take any SVG version 1.1 and transform + * child elements to 'path' elements + * + * This code is purely forked from + * https://github.com/Waest/SVGPathConverter + */ + +/** + * Class constructor + * + * @param {DOM|String} element Dom element of the SVG or id of it + */ +function Pathformer(element) { + // Test params + if (typeof element === 'undefined') { + throw new Error('Pathformer [constructor]: "element" parameter is required'); + } + + // Set the element + if (element.constructor === String) { + element = document.getElementById(element); + if (!element) { + throw new Error('Pathformer [constructor]: "element" parameter is not related to an existing ID'); + } + } + if (element instanceof window.SVGElement || + element instanceof window.SVGGElement || + /^svg$/i.test(element.nodeName)) { + this.el = element; + } else { + throw new Error('Pathformer [constructor]: "element" parameter must be a string or a SVGelement'); + } + + // Start + this.scan(element); +} + +/** + * List of tags which can be transformed + * to path elements + * + * @type {Array} + */ +Pathformer.prototype.TYPES = ['line', 'ellipse', 'circle', 'polygon', 'polyline', 'rect']; + +/** + * List of attribute names which contain + * data. This array list them to check if + * they contain bad values, like percentage. + * + * @type {Array} + */ +Pathformer.prototype.ATTR_WATCH = ['cx', 'cy', 'points', 'r', 'rx', 'ry', 'x', 'x1', 'x2', 'y', 'y1', 'y2']; + +/** + * Finds the elements compatible for transform + * and apply the liked method + * + * @param {object} options Object from the constructor + */ +Pathformer.prototype.scan = function (svg) { + var fn, element, pathData, pathDom, + elements = svg.querySelectorAll(this.TYPES.join(',')); + + for (var i = 0; i < elements.length; i++) { + element = elements[i]; + fn = this[element.tagName.toLowerCase() + 'ToPath']; + pathData = fn(this.parseAttr(element.attributes)); + pathDom = this.pathMaker(element, pathData); + element.parentNode.replaceChild(pathDom, element); + } +}; + + +/** + * Read `line` element to extract and transform + * data, to make it ready for a `path` object. + * + * @param {DOMelement} element Line element to transform + * @return {object} Data for a `path` element + */ +Pathformer.prototype.lineToPath = function (element) { + var newElement = {}, + x1 = element.x1 || 0, + y1 = element.y1 || 0, + x2 = element.x2 || 0, + y2 = element.y2 || 0; + + newElement.d = 'M' + x1 + ',' + y1 + 'L' + x2 + ',' + y2; + return newElement; +}; + +/** + * Read `rect` element to extract and transform + * data, to make it ready for a `path` object. + * The radius-border is not taken in charge yet. + * (your help is more than welcomed) + * + * @param {DOMelement} element Rect element to transform + * @return {object} Data for a `path` element + */ +Pathformer.prototype.rectToPath = function (element) { + var newElement = {}, + x = parseFloat(element.x) || 0, + y = parseFloat(element.y) || 0, + width = parseFloat(element.width) || 0, + height = parseFloat(element.height) || 0; + + if (element.rx || element.ry) { + var rx = parseInt(element.rx, 10) || -1, + ry = parseInt(element.ry, 10) || -1; + rx = Math.min(Math.max(rx < 0 ? ry : rx, 0), width/2); + ry = Math.min(Math.max(ry < 0 ? rx : ry, 0), height/2); + + newElement.d = 'M ' + (x + rx) + ',' + y + ' ' + + 'L ' + (x + width - rx) + ',' + y + ' ' + + 'A ' + rx + ',' + ry + ',0,0,1,' + (x + width) + ',' + (y + ry) + ' ' + + 'L ' + (x + width) + ',' + (y + height - ry) + ' ' + + 'A ' + rx + ',' + ry + ',0,0,1,' + (x + width - rx) + ',' + (y + height) + ' ' + + 'L ' + (x + rx) + ',' + (y + height) + ' ' + + 'A ' + rx + ',' + ry + ',0,0,1,' + x + ',' + (y + height - ry) + ' ' + + 'L ' + x + ',' + (y + ry) + ' ' + + 'A ' + rx + ',' + ry + ',0,0,1,' + (x + rx) + ',' + y; + } + else { + newElement.d = 'M' + x + ' ' + y + ' ' + + 'L' + (x + width) + ' ' + y + ' ' + + 'L' + (x + width) + ' ' + (y + height) + ' ' + + 'L' + x + ' ' + (y + height) + ' Z'; + } + return newElement; +}; + +/** + * Read `polyline` element to extract and transform + * data, to make it ready for a `path` object. + * + * @param {DOMelement} element Polyline element to transform + * @return {object} Data for a `path` element + */ +Pathformer.prototype.polylineToPath = function (element) { + var newElement = {}, + points = element.points.trim().split(' '), + i, path; + + // Reformatting if points are defined without commas + if (element.points.indexOf(',') === -1) { + var formattedPoints = []; + for (i = 0; i < points.length; i+=2) { + formattedPoints.push(points[i] + ',' + points[i+1]); + } + points = formattedPoints; + } + + // Generate the path.d value + path = 'M' + points[0]; + for(i = 1; i < points.length; i++) { + if (points[i].indexOf(',') !== -1) { + path += 'L' + points[i]; + } + } + newElement.d = path; + return newElement; +}; + +/** + * Read `polygon` element to extract and transform + * data, to make it ready for a `path` object. + * This method rely on polylineToPath, because the + * logic is similar. The path created is just closed, + * so it needs an 'Z' at the end. + * + * @param {DOMelement} element Polygon element to transform + * @return {object} Data for a `path` element + */ +Pathformer.prototype.polygonToPath = function (element) { + var newElement = Pathformer.prototype.polylineToPath(element); + + newElement.d += 'Z'; + return newElement; +}; + +/** + * Read `ellipse` element to extract and transform + * data, to make it ready for a `path` object. + * + * @param {DOMelement} element ellipse element to transform + * @return {object} Data for a `path` element + */ +Pathformer.prototype.ellipseToPath = function (element) { + var newElement = {}, + rx = parseFloat(element.rx) || 0, + ry = parseFloat(element.ry) || 0, + cx = parseFloat(element.cx) || 0, + cy = parseFloat(element.cy) || 0, + startX = cx - rx, + startY = cy, + endX = parseFloat(cx) + parseFloat(rx), + endY = cy; + + newElement.d = 'M' + startX + ',' + startY + + 'A' + rx + ',' + ry + ' 0,1,1 ' + endX + ',' + endY + + 'A' + rx + ',' + ry + ' 0,1,1 ' + startX + ',' + endY; + return newElement; +}; + +/** + * Read `circle` element to extract and transform + * data, to make it ready for a `path` object. + * + * @param {DOMelement} element Circle element to transform + * @return {object} Data for a `path` element + */ +Pathformer.prototype.circleToPath = function (element) { + var newElement = {}, + r = parseFloat(element.r) || 0, + cx = parseFloat(element.cx) || 0, + cy = parseFloat(element.cy) || 0, + startX = cx - r, + startY = cy, + endX = parseFloat(cx) + parseFloat(r), + endY = cy; + + newElement.d = 'M' + startX + ',' + startY + + 'A' + r + ',' + r + ' 0,1,1 ' + endX + ',' + endY + + 'A' + r + ',' + r + ' 0,1,1 ' + startX + ',' + endY; + return newElement; +}; + +/** + * Create `path` elements form original element + * and prepared objects + * + * @param {DOMelement} element Original element to transform + * @param {object} pathData Path data (from `toPath` methods) + * @return {DOMelement} Path element + */ +Pathformer.prototype.pathMaker = function (element, pathData) { + var i, attr, pathTag = document.createElementNS('http://www.w3.org/2000/svg','path'); + for(i = 0; i < element.attributes.length; i++) { + attr = element.attributes[i]; + if (this.ATTR_WATCH.indexOf(attr.name) === -1) { + pathTag.setAttribute(attr.name, attr.value); + } + } + for(i in pathData) { + pathTag.setAttribute(i, pathData[i]); + } + return pathTag; +}; + +/** + * Parse attributes of a DOM element to + * get an object of attribute => value + * + * @param {NamedNodeMap} attributes Attributes object from DOM element to parse + * @return {object} Object of attributes + */ +Pathformer.prototype.parseAttr = function (element) { + var attr, output = {}; + for (var i = 0; i < element.length; i++) { + attr = element[i]; + // Check if no data attribute contains '%', or the transformation is impossible + if (this.ATTR_WATCH.indexOf(attr.name) !== -1 && attr.value.indexOf('%') !== -1) { + throw new Error('Pathformer [parseAttr]: a SVG shape got values in percentage. This cannot be transformed into \'path\' tags. Please use \'viewBox\'.'); + } + output[attr.name] = attr.value; + } + return output; +}; diff --git a/Prototyp/html/vivus.js b/Prototyp/html/vivus.js new file mode 100644 index 00000000..7127c575 --- /dev/null +++ b/Prototyp/html/vivus.js @@ -0,0 +1,859 @@ +'use strict'; + +var setupEnv, requestAnimFrame, cancelAnimFrame, parsePositiveInt; + +/** + * Vivus + * Beta version + * + * Take any SVG and make the animation + * to give give the impression of live drawing + * + * This in more than just inspired from codrops + * At that point, it's a pure fork. + */ + +/** + * Class constructor + * option structure + * type: 'delayed'|'sync'|'oneByOne'|'script' (to know if the items must be drawn synchronously or not, default: delayed) + * duration: (in frames) + * start: 'inViewport'|'manual'|'autostart' (start automatically the animation, default: inViewport) + * delay: (delay between the drawing of first and last path) + * dashGap whitespace extra margin between dashes + * pathTimingFunction timing animation function for each path element of the SVG + * animTimingFunction timing animation function for the complete SVG + * forceRender force the browser to re-render all updated path items + * selfDestroy removes all extra styling on the SVG, and leaves it as original + * + * The attribute 'type' is by default on 'delayed'. + * - 'delayed' + * all paths are draw at the same time but with a + * little delay between them before start + * - 'sync' + * all path are start and finish at the same time + * - 'oneByOne' + * only one path is draw at the time + * the end of the first one will trigger the draw + * of the next one + * + * All these values can be overwritten individually + * for each path item in the SVG + * The value of frames will always take the advantage of + * the duration value. + * If you fail somewhere, an error will be thrown. + * Good luck. + * + * @constructor + * @this {Vivus} + * @param {DOM|String} element Dom element of the SVG or id of it + * @param {Object} options Options about the animation + * @param {Function} callback Callback for the end of the animation + */ +function Vivus(element, options, callback) { + setupEnv(); + + // Setup + this.isReady = false; + this.setElement(element, options); + this.setOptions(options); + this.setCallback(callback); + + if (this.isReady) { + this.init(); + } +} + +/** + * Timing functions + ************************************** + * + * Default functions to help developers. + * It always take a number as parameter (between 0 to 1) then + * return a number (between 0 and 1) + */ +Vivus.LINEAR = function(x) { + return x; +}; +Vivus.EASE = function(x) { + return -Math.cos(x * Math.PI) / 2 + 0.5; +}; +Vivus.EASE_OUT = function(x) { + return 1 - Math.pow(1 - x, 3); +}; +Vivus.EASE_IN = function(x) { + return Math.pow(x, 3); +}; +Vivus.EASE_OUT_BOUNCE = function(x) { + var base = -Math.cos(x * (0.5 * Math.PI)) + 1, + rate = Math.pow(base, 1.5), + rateR = Math.pow(1 - x, 2), + progress = -Math.abs(Math.cos(rate * (2.5 * Math.PI))) + 1; + return 1 - rateR + progress * rateR; +}; + +/** + * Setters + ************************************** + */ + +/** + * Check and set the element in the instance + * The method will not return anything, but will throw an + * error if the parameter is invalid + * + * @param {DOM|String} element SVG Dom element or id of it + */ +Vivus.prototype.setElement = function(element, options) { + var onLoad, self; + + // Basic check + if (typeof element === 'undefined') { + throw new Error('Vivus [constructor]: "element" parameter is required'); + } + + // Set the element + if (element.constructor === String) { + element = document.getElementById(element); + if (!element) { + throw new Error( + 'Vivus [constructor]: "element" parameter is not related to an existing ID' + ); + } + } + this.parentEl = element; + + // Load the SVG with XMLHttpRequest and extract the SVG + if (options && options.file) { + self = this; + onLoad = function() { + var domSandbox = document.createElement('div'); + domSandbox.innerHTML = this.responseText; + + var svgTag = domSandbox.querySelector('svg'); + if (!svgTag) { + throw new Error( + 'Vivus [load]: Cannot find the SVG in the loaded file : ' + + options.file + ); + } + + self.el = svgTag; + self.el.setAttribute('width', '100%'); + self.el.setAttribute('height', '100%'); + self.parentEl.appendChild(self.el); + self.isReady = true; + self.init(); + self = null; + }; + + var oReq = new window.XMLHttpRequest(); + oReq.addEventListener('load', onLoad); + oReq.open('GET', options.file); + oReq.send(); + return; + } + + switch (element.constructor) { + case window.SVGSVGElement: + case window.SVGElement: + case window.SVGGElement: + this.el = element; + this.isReady = true; + break; + + case window.HTMLObjectElement: + self = this; + onLoad = function(e) { + if (self.isReady) { + return; + } + self.el = + element.contentDocument && + element.contentDocument.querySelector('svg'); + if (!self.el && e) { + throw new Error( + 'Vivus [constructor]: object loaded does not contain any SVG' + ); + } else if (self.el) { + if (element.getAttribute('built-by-vivus')) { + self.parentEl.insertBefore(self.el, element); + self.parentEl.removeChild(element); + self.el.setAttribute('width', '100%'); + self.el.setAttribute('height', '100%'); + } + self.isReady = true; + self.init(); + self = null; + } + }; + + if (!onLoad()) { + element.addEventListener('load', onLoad); + } + break; + + default: + throw new Error( + 'Vivus [constructor]: "element" parameter is not valid (or miss the "file" attribute)' + ); + } +}; + +/** + * Set up user option to the instance + * The method will not return anything, but will throw an + * error if the parameter is invalid + * + * @param {object} options Object from the constructor + */ +Vivus.prototype.setOptions = function(options) { + var allowedTypes = [ + 'delayed', + 'sync', + 'async', + 'nsync', + 'oneByOne', + 'scenario', + 'scenario-sync' + ]; + var allowedStarts = ['inViewport', 'manual', 'autostart']; + + // Basic check + if (options !== undefined && options.constructor !== Object) { + throw new Error( + 'Vivus [constructor]: "options" parameter must be an object' + ); + } else { + options = options || {}; + } + + // Set the animation type + if (options.type && allowedTypes.indexOf(options.type) === -1) { + throw new Error( + 'Vivus [constructor]: ' + + options.type + + ' is not an existing animation `type`' + ); + } else { + this.type = options.type || allowedTypes[0]; + } + + // Set the start type + if (options.start && allowedStarts.indexOf(options.start) === -1) { + throw new Error( + 'Vivus [constructor]: ' + + options.start + + ' is not an existing `start` option' + ); + } else { + this.start = options.start || allowedStarts[0]; + } + + this.isIE = + window.navigator.userAgent.indexOf('MSIE') !== -1 || + window.navigator.userAgent.indexOf('Trident/') !== -1 || + window.navigator.userAgent.indexOf('Edge/') !== -1; + this.duration = parsePositiveInt(options.duration, 120); + this.delay = parsePositiveInt(options.delay, null); + this.dashGap = parsePositiveInt(options.dashGap, 1); + this.forceRender = options.hasOwnProperty('forceRender') + ? !!options.forceRender + : this.isIE; + this.reverseStack = !!options.reverseStack; + this.selfDestroy = !!options.selfDestroy; + this.onReady = options.onReady; + this.map = []; + this.frameLength = this.currentFrame = this.delayUnit = this.speed = this.handle = null; + + this.ignoreInvisible = options.hasOwnProperty('ignoreInvisible') + ? !!options.ignoreInvisible + : false; + + this.animTimingFunction = options.animTimingFunction || Vivus.LINEAR; + this.pathTimingFunction = options.pathTimingFunction || Vivus.LINEAR; + + if (this.delay >= this.duration) { + throw new Error('Vivus [constructor]: delay must be shorter than duration'); + } +}; + +/** + * Set up callback to the instance + * The method will not return enything, but will throw an + * error if the parameter is invalid + * + * @param {Function} callback Callback for the animation end + */ +Vivus.prototype.setCallback = function(callback) { + // Basic check + if (!!callback && callback.constructor !== Function) { + throw new Error( + 'Vivus [constructor]: "callback" parameter must be a function' + ); + } + this.callback = callback || function() {}; +}; + +/** + * Core + ************************************** + */ + +/** + * Map the svg, path by path. + * The method return nothing, it just fill the + * `map` array. Each item in this array represent + * a path element from the SVG, with informations for + * the animation. + * + * ``` + * [ + * { + * el: the path element + * length: length of the path line + * startAt: time start of the path animation (in frames) + * duration: path animation duration (in frames) + * }, + * ... + * ] + * ``` + * + */ +Vivus.prototype.mapping = function() { + var i, paths, path, pAttrs, pathObj, totalLength, lengthMeter, timePoint; + timePoint = totalLength = lengthMeter = 0; + paths = this.el.querySelectorAll('path'); + + for (i = 0; i < paths.length; i++) { + path = paths[i]; + if (this.isInvisible(path)) { + continue; + } + pathObj = { + el: path, + length: Math.ceil(path.getTotalLength()) + }; + // Test if the path length is correct + if (isNaN(pathObj.length)) { + if (window.console && console.warn) { + console.warn( + 'Vivus [mapping]: cannot retrieve a path element length', + path + ); + } + continue; + } + this.map.push(pathObj); + path.style.strokeDasharray = + pathObj.length + ' ' + (pathObj.length + this.dashGap * 2); + path.style.strokeDashoffset = pathObj.length + this.dashGap; + pathObj.length += this.dashGap; + totalLength += pathObj.length; + + this.renderPath(i); + } + + totalLength = totalLength === 0 ? 1 : totalLength; + this.delay = this.delay === null ? this.duration / 3 : this.delay; + this.delayUnit = this.delay / (paths.length > 1 ? paths.length - 1 : 1); + + // Reverse stack if asked + if (this.reverseStack) { + this.map.reverse(); + } + + for (i = 0; i < this.map.length; i++) { + pathObj = this.map[i]; + + switch (this.type) { + case 'delayed': + pathObj.startAt = this.delayUnit * i; + pathObj.duration = this.duration - this.delay; + break; + + case 'oneByOne': + pathObj.startAt = (lengthMeter / totalLength) * this.duration; + pathObj.duration = (pathObj.length / totalLength) * this.duration; + break; + + case 'sync': + case 'async': + case 'nsync': + pathObj.startAt = 0; + pathObj.duration = this.duration; + break; + + case 'scenario-sync': + path = pathObj.el; + pAttrs = this.parseAttr(path); + pathObj.startAt = + timePoint + + (parsePositiveInt(pAttrs['data-delay'], this.delayUnit) || 0); + pathObj.duration = parsePositiveInt( + pAttrs['data-duration'], + this.duration + ); + timePoint = + pAttrs['data-async'] !== undefined + ? pathObj.startAt + : pathObj.startAt + pathObj.duration; + this.frameLength = Math.max( + this.frameLength, + pathObj.startAt + pathObj.duration + ); + break; + + case 'scenario': + path = pathObj.el; + pAttrs = this.parseAttr(path); + pathObj.startAt = + parsePositiveInt(pAttrs['data-start'], this.delayUnit) || 0; + pathObj.duration = parsePositiveInt( + pAttrs['data-duration'], + this.duration + ); + this.frameLength = Math.max( + this.frameLength, + pathObj.startAt + pathObj.duration + ); + break; + } + lengthMeter += pathObj.length; + this.frameLength = this.frameLength || this.duration; + } +}; + +/** + * Interval method to draw the SVG from current + * position of the animation. It update the value of + * `currentFrame` and re-trace the SVG. + * + * It use this.handle to store the requestAnimationFrame + * and clear it one the animation is stopped. So this + * attribute can be used to know if the animation is + * playing. + * + * Once the animation at the end, this method will + * trigger the Vivus callback. + * + */ +Vivus.prototype.drawer = function() { + var self = this; + this.currentFrame += this.speed; + + if (this.currentFrame <= 0) { + this.stop(); + this.reset(); + } else if (this.currentFrame >= this.frameLength) { + this.stop(); + this.currentFrame = this.frameLength; + this.trace(); + if (this.selfDestroy) { + this.destroy(); + } + } else { + this.trace(); + this.handle = requestAnimFrame(function() { + self.drawer(); + }); + return; + } + + this.callback(this); + if (this.instanceCallback) { + this.instanceCallback(this); + this.instanceCallback = null; + } +}; + +/** + * Draw the SVG at the current instant from the + * `currentFrame` value. Here is where most of the magic is. + * The trick is to use the `strokeDashoffset` style property. + * + * For optimisation reasons, a new property called `progress` + * is added in each item of `map`. This one contain the current + * progress of the path element. Only if the new value is different + * the new value will be applied to the DOM element. This + * method save a lot of resources to re-render the SVG. And could + * be improved if the animation couldn't be played forward. + * + */ +Vivus.prototype.trace = function() { + var i, progress, path, currentFrame; + currentFrame = + this.animTimingFunction(this.currentFrame / this.frameLength) * + this.frameLength; + for (i = 0; i < this.map.length; i++) { + path = this.map[i]; + progress = (currentFrame - path.startAt) / path.duration; + progress = this.pathTimingFunction(Math.max(0, Math.min(1, progress))); + if (path.progress !== progress) { + path.progress = progress; + path.el.style.strokeDashoffset = Math.floor(path.length * (1 - progress)); + this.renderPath(i); + } + } +}; + +/** + * Method forcing the browser to re-render a path element + * from it's index in the map. Depending on the `forceRender` + * value. + * The trick is to replace the path element by it's clone. + * This practice is not recommended because it's asking more + * ressources, too much DOM manupulation.. + * but it's the only way to let the magic happen on IE. + * By default, this fallback is only applied on IE. + * + * @param {Number} index Path index + */ +Vivus.prototype.renderPath = function(index) { + if (this.forceRender && this.map && this.map[index]) { + var pathObj = this.map[index], + newPath = pathObj.el.cloneNode(true); + pathObj.el.parentNode.replaceChild(newPath, pathObj.el); + pathObj.el = newPath; + } +}; + +/** + * When the SVG object is loaded and ready, + * this method will continue the initialisation. + * + * This this mainly due to the case of passing an + * object tag in the constructor. It will wait + * the end of the loading to initialise. + * + */ +Vivus.prototype.init = function() { + // Set object variables + this.frameLength = 0; + this.currentFrame = 0; + this.map = []; + + // Start + new Pathformer(this.el); + this.mapping(); + this.starter(); + + if (this.onReady) { + this.onReady(this); + } +}; + +/** + * Trigger to start of the animation. + * Depending on the `start` value, a different script + * will be applied. + * + * If the `start` value is not valid, an error will be thrown. + * Even if technically, this is impossible. + * + */ +Vivus.prototype.starter = function() { + switch (this.start) { + case 'manual': + return; + + case 'autostart': + this.play(); + break; + + case 'inViewport': + var self = this, + listener = function() { + if (self.isInViewport(self.parentEl, 1)) { + self.play(); + window.removeEventListener('scroll', listener); + } + }; + window.addEventListener('scroll', listener); + listener(); + break; + } +}; + +/** + * Controls + ************************************** + */ + +/** + * Get the current status of the animation between + * three different states: 'start', 'progress', 'end'. + * @return {string} Instance status + */ +Vivus.prototype.getStatus = function() { + return this.currentFrame === 0 + ? 'start' + : this.currentFrame === this.frameLength + ? 'end' + : 'progress'; +}; + +/** + * Reset the instance to the initial state : undraw + * Be careful, it just reset the animation, if you're + * playing the animation, this won't stop it. But just + * make it start from start. + * + */ +Vivus.prototype.reset = function() { + return this.setFrameProgress(0); +}; + +/** + * Set the instance to the final state : drawn + * Be careful, it just set the animation, if you're + * playing the animation on rewind, this won't stop it. + * But just make it start from the end. + * + */ +Vivus.prototype.finish = function() { + return this.setFrameProgress(1); +}; + +/** + * Set the level of progress of the drawing. + * + * @param {number} progress Level of progress to set + */ +Vivus.prototype.setFrameProgress = function(progress) { + progress = Math.min(1, Math.max(0, progress)); + this.currentFrame = Math.round(this.frameLength * progress); + this.trace(); + return this; +}; + +/** + * Play the animation at the desired speed. + * Speed must be a valid number (no zero). + * By default, the speed value is 1. + * But a negative value is accepted to go forward. + * + * And works with float too. + * But don't forget we are in JavaScript, se be nice + * with him and give him a 1/2^x value. + * + * @param {number} speed Animation speed [optional] + */ +Vivus.prototype.play = function(speed, callback) { + this.instanceCallback = null; + + if (speed && typeof speed === 'function') { + this.instanceCallback = speed; // first parameter is actually the callback function + speed = null; + } else if (speed && typeof speed !== 'number') { + throw new Error('Vivus [play]: invalid speed'); + } + // if the first parameter wasn't the callback, check if the seconds was + if (callback && typeof callback === 'function' && !this.instanceCallback) { + this.instanceCallback = callback; + } + + this.speed = speed || 1; + if (!this.handle) { + this.drawer(); + } + return this; +}; + +/** + * Stop the current animation, if on progress. + * Should not trigger any error. + * + */ +Vivus.prototype.stop = function() { + if (this.handle) { + cancelAnimFrame(this.handle); + this.handle = null; + } + return this; +}; + +/** + * Destroy the instance. + * Remove all bad styling attributes on all + * path tags + * + */ +Vivus.prototype.destroy = function() { + this.stop(); + var i, path; + for (i = 0; i < this.map.length; i++) { + path = this.map[i]; + path.el.style.strokeDashoffset = null; + path.el.style.strokeDasharray = null; + this.renderPath(i); + } +}; + +/** + * Utils methods + * include methods from Codrops + ************************************** + */ + +/** + * Method to best guess if a path should added into + * the animation or not. + * + * 1. Use the `data-vivus-ignore` attribute if set + * 2. Check if the instance must ignore invisible paths + * 3. Check if the path is visible + * + * For now the visibility checking is unstable. + * It will be used for a beta phase. + * + * Other improvments are planned. Like detecting + * is the path got a stroke or a valid opacity. + */ +Vivus.prototype.isInvisible = function(el) { + var rect, + ignoreAttr = el.getAttribute('data-ignore'); + + if (ignoreAttr !== null) { + return ignoreAttr !== 'false'; + } + + if (this.ignoreInvisible) { + rect = el.getBoundingClientRect(); + return !rect.width && !rect.height; + } else { + return false; + } +}; + +/** + * Parse attributes of a DOM element to + * get an object of {attributeName => attributeValue} + * + * @param {object} element DOM element to parse + * @return {object} Object of attributes + */ +Vivus.prototype.parseAttr = function(element) { + var attr, + output = {}; + if (element && element.attributes) { + for (var i = 0; i < element.attributes.length; i++) { + attr = element.attributes[i]; + output[attr.name] = attr.value; + } + } + return output; +}; + +/** + * Reply if an element is in the page viewport + * + * @param {object} el Element to observe + * @param {number} h Percentage of height + * @return {boolean} + */ +Vivus.prototype.isInViewport = function(el, h) { + var scrolled = this.scrollY(), + viewed = scrolled + this.getViewportH(), + elBCR = el.getBoundingClientRect(), + elHeight = elBCR.height, + elTop = scrolled + elBCR.top, + elBottom = elTop + elHeight; + + // if 0, the element is considered in the viewport as soon as it enters. + // if 1, the element is considered in the viewport only when it's fully inside + // value in percentage (1 >= h >= 0) + h = h || 0; + + return elTop + elHeight * h <= viewed && elBottom >= scrolled; +}; + +/** + * Get the viewport height in pixels + * + * @return {integer} Viewport height + */ +Vivus.prototype.getViewportH = function() { + var client = this.docElem.clientHeight, + inner = window.innerHeight; + + if (client < inner) { + return inner; + } else { + return client; + } +}; + +/** + * Get the page Y offset + * + * @return {integer} Page Y offset + */ +Vivus.prototype.scrollY = function() { + return window.pageYOffset || this.docElem.scrollTop; +}; + +setupEnv = function() { + if (Vivus.prototype.docElem) { + return; + } + + /** + * Alias for document element + * + * @type {DOMelement} + */ + Vivus.prototype.docElem = window.document.documentElement; + + /** + * Alias for `requestAnimationFrame` or + * `setTimeout` function for deprecated browsers. + * + */ + requestAnimFrame = (function() { + return ( + window.requestAnimationFrame || + window.webkitRequestAnimationFrame || + window.mozRequestAnimationFrame || + window.oRequestAnimationFrame || + window.msRequestAnimationFrame || + function(/* function */ callback) { + return window.setTimeout(callback, 1000 / 60); + } + ); + })(); + + /** + * Alias for `cancelAnimationFrame` or + * `cancelTimeout` function for deprecated browsers. + * + */ + cancelAnimFrame = (function() { + return ( + window.cancelAnimationFrame || + window.webkitCancelAnimationFrame || + window.mozCancelAnimationFrame || + window.oCancelAnimationFrame || + window.msCancelAnimationFrame || + function(id) { + return window.clearTimeout(id); + } + ); + })(); +}; + +/** + * Parse string to integer. + * If the number is not positive or null + * the method will return the default value + * or 0 if undefined + * + * @param {string} value String to parse + * @param {*} defaultValue Value to return if the result parsed is invalid + * @return {number} + * + */ +parsePositiveInt = function(value, defaultValue) { + var output = parseInt(value, 10); + return output >= 0 ? output : defaultValue; +}; diff --git a/Prototyp/svg.py b/Prototyp/svg.py new file mode 100644 index 00000000..ba11753a --- /dev/null +++ b/Prototyp/svg.py @@ -0,0 +1,5 @@ + + + + +class svg(object): \ No newline at end of file