From 3dd9a9955a96726aec1d305c7ccb86e884bd04b2 Mon Sep 17 00:00:00 2001 From: Tobias Specht Date: Sun, 7 Apr 2024 15:51:03 +0200 Subject: [PATCH] Add Tagesordnung --- .github/workflows/publish.yml | 1 + poetry.lock | 179 +++++++++++++- pyproject.toml | 1 + scripts/analyze_dip.ipynb | 445 ++++++++++++++++++++++++++++------ 4 files changed, 548 insertions(+), 78 deletions(-) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index ccd84f8..b317721 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -73,6 +73,7 @@ jobs: name: artifact-data path: | scripts/gesetze.json + scripts/tagesordnung.json deploy-test: runs-on: ubuntu-latest diff --git a/poetry.lock b/poetry.lock index e2c52f0..e053189 100644 --- a/poetry.lock +++ b/poetry.lock @@ -396,6 +396,21 @@ files = [ {file = "charset_normalizer-3.3.2-py3-none-any.whl", hash = "sha256:3e4d1f6587322d2788836a99c69062fbb091331ec940e02d12d179c1d53e25fc"}, ] +[[package]] +name = "click" +version = "8.1.7" +description = "Composable command line interface toolkit" +category = "main" +optional = false +python-versions = ">=3.7" +files = [ + {file = "click-8.1.7-py3-none-any.whl", hash = "sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28"}, + {file = "click-8.1.7.tar.gz", hash = "sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de"}, +] + +[package.dependencies] +colorama = {version = "*", markers = "platform_system == \"Windows\""} + [[package]] name = "colorama" version = "0.4.6" @@ -864,6 +879,18 @@ MarkupSafe = ">=2.0" [package.extras] i18n = ["Babel (>=2.7)"] +[[package]] +name = "joblib" +version = "1.3.2" +description = "Lightweight pipelining with Python functions" +category = "main" +optional = false +python-versions = ">=3.7" +files = [ + {file = "joblib-1.3.2-py3-none-any.whl", hash = "sha256:ef4331c65f239985f3f2220ecc87db222f08fd22097a3dd5698f693875f8cbb9"}, + {file = "joblib-1.3.2.tar.gz", hash = "sha256:92f865e621e17784e7955080b6d042489e3b8e294949cc44c6eac304f59772b1"}, +] + [[package]] name = "json5" version = "0.9.24" @@ -1500,6 +1527,32 @@ files = [ {file = "nest_asyncio-1.6.0.tar.gz", hash = "sha256:6f172d5449aca15afd6c646851f4e31e02c598d553a667e38cafa997cfec55fe"}, ] +[[package]] +name = "nltk" +version = "3.8.1" +description = "Natural Language Toolkit" +category = "main" +optional = false +python-versions = ">=3.7" +files = [ + {file = "nltk-3.8.1-py3-none-any.whl", hash = "sha256:fd5c9109f976fa86bcadba8f91e47f5e9293bd034474752e92a520f81c93dda5"}, + {file = "nltk-3.8.1.zip", hash = "sha256:1834da3d0682cba4f2cede2f9aad6b0fafb6461ba451db0efb6f9c39798d64d3"}, +] + +[package.dependencies] +click = "*" +joblib = "*" +regex = ">=2021.8.3" +tqdm = "*" + +[package.extras] +all = ["matplotlib", "numpy", "pyparsing", "python-crfsuite", "requests", "scikit-learn", "scipy", "twython"] +corenlp = ["requests"] +machine-learning = ["numpy", "python-crfsuite", "scikit-learn", "scipy"] +plot = ["matplotlib"] +tgrep = ["pyparsing"] +twitter = ["twython"] + [[package]] name = "notebook-shim" version = "0.2.4" @@ -2190,6 +2243,109 @@ files = [ attrs = ">=22.2.0" rpds-py = ">=0.7.0" +[[package]] +name = "regex" +version = "2023.12.25" +description = "Alternative regular expression module, to replace re." +category = "main" +optional = false +python-versions = ">=3.7" +files = [ + {file = "regex-2023.12.25-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:0694219a1d54336fd0445ea382d49d36882415c0134ee1e8332afd1529f0baa5"}, + {file = "regex-2023.12.25-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b014333bd0217ad3d54c143de9d4b9a3ca1c5a29a6d0d554952ea071cff0f1f8"}, + {file = "regex-2023.12.25-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d865984b3f71f6d0af64d0d88f5733521698f6c16f445bb09ce746c92c97c586"}, + {file = "regex-2023.12.25-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1e0eabac536b4cc7f57a5f3d095bfa557860ab912f25965e08fe1545e2ed8b4c"}, + {file = "regex-2023.12.25-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c25a8ad70e716f96e13a637802813f65d8a6760ef48672aa3502f4c24ea8b400"}, + {file = "regex-2023.12.25-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a9b6d73353f777630626f403b0652055ebfe8ff142a44ec2cf18ae470395766e"}, + {file = "regex-2023.12.25-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a9cc99d6946d750eb75827cb53c4371b8b0fe89c733a94b1573c9dd16ea6c9e4"}, + {file = "regex-2023.12.25-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:88d1f7bef20c721359d8675f7d9f8e414ec5003d8f642fdfd8087777ff7f94b5"}, + {file = "regex-2023.12.25-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:cb3fe77aec8f1995611f966d0c656fdce398317f850d0e6e7aebdfe61f40e1cd"}, + {file = "regex-2023.12.25-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:7aa47c2e9ea33a4a2a05f40fcd3ea36d73853a2aae7b4feab6fc85f8bf2c9704"}, + {file = "regex-2023.12.25-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:df26481f0c7a3f8739fecb3e81bc9da3fcfae34d6c094563b9d4670b047312e1"}, + {file = "regex-2023.12.25-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:c40281f7d70baf6e0db0c2f7472b31609f5bc2748fe7275ea65a0b4601d9b392"}, + {file = "regex-2023.12.25-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:d94a1db462d5690ebf6ae86d11c5e420042b9898af5dcf278bd97d6bda065423"}, + {file = "regex-2023.12.25-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:ba1b30765a55acf15dce3f364e4928b80858fa8f979ad41f862358939bdd1f2f"}, + {file = "regex-2023.12.25-cp310-cp310-win32.whl", hash = "sha256:150c39f5b964e4d7dba46a7962a088fbc91f06e606f023ce57bb347a3b2d4630"}, + {file = "regex-2023.12.25-cp310-cp310-win_amd64.whl", hash = "sha256:09da66917262d9481c719599116c7dc0c321ffcec4b1f510c4f8a066f8768105"}, + {file = "regex-2023.12.25-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:1b9d811f72210fa9306aeb88385b8f8bcef0dfbf3873410413c00aa94c56c2b6"}, + {file = "regex-2023.12.25-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:d902a43085a308cef32c0d3aea962524b725403fd9373dea18110904003bac97"}, + {file = "regex-2023.12.25-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d166eafc19f4718df38887b2bbe1467a4f74a9830e8605089ea7a30dd4da8887"}, + {file = "regex-2023.12.25-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c7ad32824b7f02bb3c9f80306d405a1d9b7bb89362d68b3c5a9be53836caebdb"}, + {file = "regex-2023.12.25-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:636ba0a77de609d6510235b7f0e77ec494d2657108f777e8765efc060094c98c"}, + {file = "regex-2023.12.25-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0fda75704357805eb953a3ee15a2b240694a9a514548cd49b3c5124b4e2ad01b"}, + {file = "regex-2023.12.25-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f72cbae7f6b01591f90814250e636065850c5926751af02bb48da94dfced7baa"}, + {file = "regex-2023.12.25-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:db2a0b1857f18b11e3b0e54ddfefc96af46b0896fb678c85f63fb8c37518b3e7"}, + {file = "regex-2023.12.25-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:7502534e55c7c36c0978c91ba6f61703faf7ce733715ca48f499d3dbbd7657e0"}, + {file = "regex-2023.12.25-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:e8c7e08bb566de4faaf11984af13f6bcf6a08f327b13631d41d62592681d24fe"}, + {file = "regex-2023.12.25-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:283fc8eed679758de38fe493b7d7d84a198b558942b03f017b1f94dda8efae80"}, + {file = "regex-2023.12.25-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:f44dd4d68697559d007462b0a3a1d9acd61d97072b71f6d1968daef26bc744bd"}, + {file = "regex-2023.12.25-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:67d3ccfc590e5e7197750fcb3a2915b416a53e2de847a728cfa60141054123d4"}, + {file = "regex-2023.12.25-cp311-cp311-win32.whl", hash = "sha256:68191f80a9bad283432385961d9efe09d783bcd36ed35a60fb1ff3f1ec2efe87"}, + {file = "regex-2023.12.25-cp311-cp311-win_amd64.whl", hash = "sha256:7d2af3f6b8419661a0c421584cfe8aaec1c0e435ce7e47ee2a97e344b98f794f"}, + {file = "regex-2023.12.25-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:8a0ccf52bb37d1a700375a6b395bff5dd15c50acb745f7db30415bae3c2b0715"}, + {file = "regex-2023.12.25-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c3c4a78615b7762740531c27cf46e2f388d8d727d0c0c739e72048beb26c8a9d"}, + {file = "regex-2023.12.25-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ad83e7545b4ab69216cef4cc47e344d19622e28aabec61574b20257c65466d6a"}, + {file = "regex-2023.12.25-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b7a635871143661feccce3979e1727c4e094f2bdfd3ec4b90dfd4f16f571a87a"}, + {file = "regex-2023.12.25-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d498eea3f581fbe1b34b59c697512a8baef88212f92e4c7830fcc1499f5b45a5"}, + {file = "regex-2023.12.25-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:43f7cd5754d02a56ae4ebb91b33461dc67be8e3e0153f593c509e21d219c5060"}, + {file = "regex-2023.12.25-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:51f4b32f793812714fd5307222a7f77e739b9bc566dc94a18126aba3b92b98a3"}, + {file = "regex-2023.12.25-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ba99d8077424501b9616b43a2d208095746fb1284fc5ba490139651f971d39d9"}, + {file = "regex-2023.12.25-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:4bfc2b16e3ba8850e0e262467275dd4d62f0d045e0e9eda2bc65078c0110a11f"}, + {file = "regex-2023.12.25-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:8c2c19dae8a3eb0ea45a8448356ed561be843b13cbc34b840922ddf565498c1c"}, + {file = "regex-2023.12.25-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:60080bb3d8617d96f0fb7e19796384cc2467447ef1c491694850ebd3670bc457"}, + {file = "regex-2023.12.25-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:b77e27b79448e34c2c51c09836033056a0547aa360c45eeeb67803da7b0eedaf"}, + {file = "regex-2023.12.25-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:518440c991f514331f4850a63560321f833979d145d7d81186dbe2f19e27ae3d"}, + {file = "regex-2023.12.25-cp312-cp312-win32.whl", hash = "sha256:e2610e9406d3b0073636a3a2e80db05a02f0c3169b5632022b4e81c0364bcda5"}, + {file = "regex-2023.12.25-cp312-cp312-win_amd64.whl", hash = "sha256:cc37b9aeebab425f11f27e5e9e6cf580be7206c6582a64467a14dda211abc232"}, + {file = "regex-2023.12.25-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:da695d75ac97cb1cd725adac136d25ca687da4536154cdc2815f576e4da11c69"}, + {file = "regex-2023.12.25-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d126361607b33c4eb7b36debc173bf25d7805847346dd4d99b5499e1fef52bc7"}, + {file = "regex-2023.12.25-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4719bb05094d7d8563a450cf8738d2e1061420f79cfcc1fa7f0a44744c4d8f73"}, + {file = "regex-2023.12.25-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5dd58946bce44b53b06d94aa95560d0b243eb2fe64227cba50017a8d8b3cd3e2"}, + {file = "regex-2023.12.25-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:22a86d9fff2009302c440b9d799ef2fe322416d2d58fc124b926aa89365ec482"}, + {file = "regex-2023.12.25-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2aae8101919e8aa05ecfe6322b278f41ce2994c4a430303c4cd163fef746e04f"}, + {file = "regex-2023.12.25-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:e692296c4cc2873967771345a876bcfc1c547e8dd695c6b89342488b0ea55cd8"}, + {file = "regex-2023.12.25-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:263ef5cc10979837f243950637fffb06e8daed7f1ac1e39d5910fd29929e489a"}, + {file = "regex-2023.12.25-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:d6f7e255e5fa94642a0724e35406e6cb7001c09d476ab5fce002f652b36d0c39"}, + {file = "regex-2023.12.25-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:88ad44e220e22b63b0f8f81f007e8abbb92874d8ced66f32571ef8beb0643b2b"}, + {file = "regex-2023.12.25-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:3a17d3ede18f9cedcbe23d2daa8a2cd6f59fe2bf082c567e43083bba3fb00347"}, + {file = "regex-2023.12.25-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:d15b274f9e15b1a0b7a45d2ac86d1f634d983ca40d6b886721626c47a400bf39"}, + {file = "regex-2023.12.25-cp37-cp37m-win32.whl", hash = "sha256:ed19b3a05ae0c97dd8f75a5d8f21f7723a8c33bbc555da6bbe1f96c470139d3c"}, + {file = "regex-2023.12.25-cp37-cp37m-win_amd64.whl", hash = "sha256:a6d1047952c0b8104a1d371f88f4ab62e6275567d4458c1e26e9627ad489b445"}, + {file = "regex-2023.12.25-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:b43523d7bc2abd757119dbfb38af91b5735eea45537ec6ec3a5ec3f9562a1c53"}, + {file = "regex-2023.12.25-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:efb2d82f33b2212898f1659fb1c2e9ac30493ac41e4d53123da374c3b5541e64"}, + {file = "regex-2023.12.25-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:b7fca9205b59c1a3d5031f7e64ed627a1074730a51c2a80e97653e3e9fa0d415"}, + {file = "regex-2023.12.25-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:086dd15e9435b393ae06f96ab69ab2d333f5d65cbe65ca5a3ef0ec9564dfe770"}, + {file = "regex-2023.12.25-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e81469f7d01efed9b53740aedd26085f20d49da65f9c1f41e822a33992cb1590"}, + {file = "regex-2023.12.25-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:34e4af5b27232f68042aa40a91c3b9bb4da0eeb31b7632e0091afc4310afe6cb"}, + {file = "regex-2023.12.25-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9852b76ab558e45b20bf1893b59af64a28bd3820b0c2efc80e0a70a4a3ea51c1"}, + {file = "regex-2023.12.25-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ff100b203092af77d1a5a7abe085b3506b7eaaf9abf65b73b7d6905b6cb76988"}, + {file = "regex-2023.12.25-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:cc038b2d8b1470364b1888a98fd22d616fba2b6309c5b5f181ad4483e0017861"}, + {file = "regex-2023.12.25-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:094ba386bb5c01e54e14434d4caabf6583334090865b23ef58e0424a6286d3dc"}, + {file = "regex-2023.12.25-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:5cd05d0f57846d8ba4b71d9c00f6f37d6b97d5e5ef8b3c3840426a475c8f70f4"}, + {file = "regex-2023.12.25-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:9aa1a67bbf0f957bbe096375887b2505f5d8ae16bf04488e8b0f334c36e31360"}, + {file = "regex-2023.12.25-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:98a2636994f943b871786c9e82bfe7883ecdaba2ef5df54e1450fa9869d1f756"}, + {file = "regex-2023.12.25-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:37f8e93a81fc5e5bd8db7e10e62dc64261bcd88f8d7e6640aaebe9bc180d9ce2"}, + {file = "regex-2023.12.25-cp38-cp38-win32.whl", hash = "sha256:d78bd484930c1da2b9679290a41cdb25cc127d783768a0369d6b449e72f88beb"}, + {file = "regex-2023.12.25-cp38-cp38-win_amd64.whl", hash = "sha256:b521dcecebc5b978b447f0f69b5b7f3840eac454862270406a39837ffae4e697"}, + {file = "regex-2023.12.25-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:f7bc09bc9c29ebead055bcba136a67378f03d66bf359e87d0f7c759d6d4ffa31"}, + {file = "regex-2023.12.25-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:e14b73607d6231f3cc4622809c196b540a6a44e903bcfad940779c80dffa7be7"}, + {file = "regex-2023.12.25-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:9eda5f7a50141291beda3edd00abc2d4a5b16c29c92daf8d5bd76934150f3edc"}, + {file = "regex-2023.12.25-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cc6bb9aa69aacf0f6032c307da718f61a40cf970849e471254e0e91c56ffca95"}, + {file = "regex-2023.12.25-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:298dc6354d414bc921581be85695d18912bea163a8b23cac9a2562bbcd5088b1"}, + {file = "regex-2023.12.25-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2f4e475a80ecbd15896a976aa0b386c5525d0ed34d5c600b6d3ebac0a67c7ddf"}, + {file = "regex-2023.12.25-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:531ac6cf22b53e0696f8e1d56ce2396311254eb806111ddd3922c9d937151dae"}, + {file = "regex-2023.12.25-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:22f3470f7524b6da61e2020672df2f3063676aff444db1daa283c2ea4ed259d6"}, + {file = "regex-2023.12.25-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:89723d2112697feaa320c9d351e5f5e7b841e83f8b143dba8e2d2b5f04e10923"}, + {file = "regex-2023.12.25-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0ecf44ddf9171cd7566ef1768047f6e66975788258b1c6c6ca78098b95cf9a3d"}, + {file = "regex-2023.12.25-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:905466ad1702ed4acfd67a902af50b8db1feeb9781436372261808df7a2a7bca"}, + {file = "regex-2023.12.25-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:4558410b7a5607a645e9804a3e9dd509af12fb72b9825b13791a37cd417d73a5"}, + {file = "regex-2023.12.25-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:7e316026cc1095f2a3e8cc012822c99f413b702eaa2ca5408a513609488cb62f"}, + {file = "regex-2023.12.25-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:3b1de218d5375cd6ac4b5493e0b9f3df2be331e86520f23382f216c137913d20"}, + {file = "regex-2023.12.25-cp39-cp39-win32.whl", hash = "sha256:11a963f8e25ab5c61348d090bf1b07f1953929c13bd2309a0662e9ff680763c9"}, + {file = "regex-2023.12.25-cp39-cp39-win_amd64.whl", hash = "sha256:e693e233ac92ba83a87024e1d32b5f9ab15ca55ddd916d878146f4e3406b5c91"}, + {file = "regex-2023.12.25.tar.gz", hash = "sha256:29171aa128da69afdf4bde412d5bedc335f2ca8fcfe4489038577d05f16181e5"}, +] + [[package]] name = "requests" version = "2.31.0" @@ -2483,6 +2639,27 @@ files = [ {file = "tornado-6.4.tar.gz", hash = "sha256:72291fa6e6bc84e626589f1c29d90a5a6d593ef5ae68052ee2ef000dfd273dee"}, ] +[[package]] +name = "tqdm" +version = "4.66.2" +description = "Fast, Extensible Progress Meter" +category = "main" +optional = false +python-versions = ">=3.7" +files = [ + {file = "tqdm-4.66.2-py3-none-any.whl", hash = "sha256:1ee4f8a893eb9bef51c6e35730cebf234d5d0b6bd112b0271e10ed7c24a02bd9"}, + {file = "tqdm-4.66.2.tar.gz", hash = "sha256:6cd52cdf0fef0e0f543299cfc96fec90d7b8a7e88745f411ec33eb44d5ed3531"}, +] + +[package.dependencies] +colorama = {version = "*", markers = "platform_system == \"Windows\""} + +[package.extras] +dev = ["pytest (>=6)", "pytest-cov", "pytest-timeout", "pytest-xdist"] +notebook = ["ipywidgets (>=6)"] +slack = ["slack-sdk"] +telegram = ["requests"] + [[package]] name = "traitlets" version = "5.14.2" @@ -2604,4 +2781,4 @@ test = ["websockets"] [metadata] lock-version = "2.0" python-versions = "^3.11" -content-hash = "80f45c19648ab83a8f5bbc6357fc346f14b2d1a1a970b243e2e6ab6f0485e738" +content-hash = "519bda4dff6e07717f9c91b97d5fcc2b89ef0866dd33dfb9338c928cd38097fb" diff --git a/pyproject.toml b/pyproject.toml index 7120498..c3d2860 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -11,6 +11,7 @@ jupyterlab = "^4.0.0" polars = "^0.19.00" matplotlib = "^3.7.1" pyarrow = "^13.0.0" +nltk = "^3.8.1" [build-system] diff --git a/scripts/analyze_dip.ipynb b/scripts/analyze_dip.ipynb index 6301db3..c720cf3 100644 --- a/scripts/analyze_dip.ipynb +++ b/scripts/analyze_dip.ipynb @@ -5,12 +5,41 @@ "execution_count": 1, "id": "97ad2d24-a37c-4fc7-a95e-6876c49b062c", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[nltk_data] Downloading package stopwords to /home/tobias/nltk_data...\n", + "[nltk_data] Package stopwords is already up-to-date!\n" + ] + }, + { + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 1, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "import json\n", + "import time\n", + "import re\n", + "import urllib\n", "from datetime import date\n", "import polars as pl\n", - "import numpy as np" + "import numpy as np\n", + "import textdistance as td\n", + "import requests\n", + "from bs4 import BeautifulSoup\n", + "import nltk\n", + "from nltk.stem.cistem import Cistem\n", + "from nltk.corpus import stopwords\n", + "nltk.download('stopwords')" ] }, { @@ -29,34 +58,33 @@ " white-space: pre-wrap;\n", "}\n", "\n", - "shape: (22,)
beratungsstand
str
"1. Durchgang im Bundesrat abgeschlossen"
"Für erledigt erklärt"
"Bundesrat hat zugestimmt"
"Bundesrat hat Zustimmung versagt"
"Verabschiedet"
"Im Vermittlungsverfahren"
"Bundesrat hat keinen Einspruch eingelegt"
"Beschlussempfehlung liegt vor"
"Einbringung abgelehnt"
"Überwiesen"
"Bundesrat hat Vermittlungsausschuss nicht angerufen"
"Dem Bundesrat zugeleitet - Noch nicht beraten"
"Verkündet"
"Für mit dem Grundgesetz unvereinbar erklärt"
"Zusammengeführt mit... (siehe Vorgangsablauf)"
"Dem Bundestag zugeleitet - Noch nicht beraten"
"Abgeschlossen - Ergebnis siehe Vorgangsablauf"
"Den Ausschüssen zugewiesen"
"Abgeschlossen"
"Noch nicht beraten"
"Zurückgezogen"
"Abgelehnt"
" + "shape: (21,)
beratungsstand
str
"Bundesrat hat Vermittlungsausschuss nicht angerufen"
"Abgelehnt"
"Abgeschlossen - Ergebnis siehe Vorgangsablauf"
"Noch nicht beraten"
"Bundesrat hat zugestimmt"
"Dem Bundestag zugeleitet - Noch nicht beraten"
"Verkündet"
"Beschlussempfehlung liegt vor"
"Bundesrat hat Zustimmung versagt"
"Im Vermittlungsverfahren"
"Für mit dem Grundgesetz unvereinbar erklärt"
"Verabschiedet"
"1. Durchgang im Bundesrat abgeschlossen"
"Abgeschlossen"
"Zusammengeführt mit... (siehe Vorgangsablauf)"
"Überwiesen"
"Zurückgezogen"
"Für erledigt erklärt"
"Den Ausschüssen zugewiesen"
"Einbringung abgelehnt"
"Dem Bundesrat zugeleitet - Noch nicht beraten"
" ], "text/plain": [ - "shape: (22,)\n", + "shape: (21,)\n", "Series: 'beratungsstand' [str]\n", "[\n", - "\t\"1. Durchgang im Bundesrat abgeschlossen\"\n", - "\t\"Für erledigt erklärt\"\n", + "\t\"Bundesrat hat Vermittlungsausschuss nicht angerufen\"\n", + "\t\"Abgelehnt\"\n", + "\t\"Abgeschlossen - Ergebnis siehe Vorgangsablauf\"\n", + "\t\"Noch nicht beraten\"\n", "\t\"Bundesrat hat zugestimmt\"\n", + "\t\"Dem Bundestag zugeleitet - Noch nicht beraten\"\n", + "\t\"Verkündet\"\n", + "\t\"Beschlussempfehlung liegt vor\"\n", "\t\"Bundesrat hat Zustimmung versagt\"\n", - "\t\"Verabschiedet\"\n", "\t\"Im Vermittlungsverfahren\"\n", - "\t\"Bundesrat hat keinen Einspruch eingelegt\"\n", - "\t\"Beschlussempfehlung liegt vor\"\n", - "\t\"Einbringung abgelehnt\"\n", - "\t\"Überwiesen\"\n", - "\t\"Bundesrat hat Vermittlungsausschuss nicht angerufen\"\n", - "\t\"Dem Bundesrat zugeleitet - Noch nicht beraten\"\n", - "\t\"Verkündet\"\n", "\t\"Für mit dem Grundgesetz unvereinbar erklärt\"\n", - "\t\"Zusammengeführt mit... (siehe Vorgangsablauf)\"\n", - "\t\"Dem Bundestag zugeleitet - Noch nicht beraten\"\n", - "\t\"Abgeschlossen - Ergebnis siehe Vorgangsablauf\"\n", - "\t\"Den Ausschüssen zugewiesen\"\n", + "\t\"Verabschiedet\"\n", + "\t\"1. Durchgang im Bundesrat abgeschlossen\"\n", "\t\"Abgeschlossen\"\n", - "\t\"Noch nicht beraten\"\n", + "\t\"Zusammengeführt mit... (siehe Vorgangsablauf)\"\n", + "\t\"Überwiesen\"\n", "\t\"Zurückgezogen\"\n", - "\t\"Abgelehnt\"\n", + "\t\"Für erledigt erklärt\"\n", + "\t\"Den Ausschüssen zugewiesen\"\n", + "\t\"Einbringung abgelehnt\"\n", + "\t\"Dem Bundesrat zugeleitet - Noch nicht beraten\"\n", "]" ] }, @@ -107,8 +135,8 @@ "df_vorgangspos = df_vorgangspos.with_columns(\n", " pl.col(\"datum\").str.to_date(format=\"%Y-%m-%d\")\n", ")\n", - "df_vorgangspos = df_vorgangspos.filter((pl.col('vorgangstyp') == 'Gesetzgebung') & (pl.col('typ') == 'Vorgangsposition'))\n", - "df_vorgang_duration = df_vorgangspos.group_by(['vorgang_id']).agg([\n", + "df_vorgangspos_gesetzgebung = df_vorgangspos.filter((pl.col('vorgangstyp') == 'Gesetzgebung') & (pl.col('typ') == 'Vorgangsposition'))\n", + "df_vorgang_duration = df_vorgangspos_gesetzgebung.group_by(['vorgang_id']).agg([\n", " pl.col('datum').min().alias('vorgang_start'), \n", "])" ] @@ -129,7 +157,7 @@ " white-space: pre-wrap;\n", "}\n", "\n", - "shape: (5, 16)
idabstractberatungsstandvorgangstypgestaarchivsachgebiettypwahlperiodezustimmungsbeduerftigkeitinitiativedeskriptoraktualisierttiteldatumverkuendung
strstrstrstrstrstrlist[str]stru64list[str]list[str]list[struct[3]]strstrstrlist[struct[1]]
"308776""Zustimmung zu dem am 21. Juli 2023 in Lauterbourg unterzeichneten Abkommen: Standardisierung grenzü…"Dem Bundestag zugeleitet - Noch nicht beraten""Gesetzgebung""XK002"null["Arbeit und Beschäftigung", "Bildung und Erziehung"]"Vorgang"20["Ja, laut Gesetzentwurf (Drs 76/24)"]["Bundesregierung"][{false,"Ausbildungsvertrag","Sachbegriffe"}, {false,"Auswärtige Kultur- und Bildungspolitik","Sachbegriffe"}, … {false,"Teilzeitarbeit","Sachbegriffe"}]"2024-03-25T15:18:40+01:00""Gesetz zu dem Abkommen vom 21. Juli 2023 zwischen der Regierung der Bundesrepublik Deutschland und …"2024-03-25"null
"308709""Zusammenfassung und anwendungsbezogene Konkretisierung der sich aus der Anwendung des BEPS-MLI erge…"Dem Bundestag zugeleitet - Noch nicht beraten""Gesetzgebung""D057"null["Öffentliche Finanzen, Steuern und Abgaben"]"Vorgang"20["Ja, laut Gesetzentwurf (Drs 75/24)"]["Bundesregierung"][{true,"BEPS-MLI-Anwendungsgesetz","Rechtsmaterialien"}, {false,"Bundeszentralamt für Steuern","Institutionen"}, … {false,"Unternehmensbesteuerung","Sachbegriffe"}]"2024-03-25T15:24:10+01:00""Gesetz zur Anwendung des Mehrseitigen Übereinkommens vom 24. November 2016 und zu weiteren Maßnahme…"2024-03-25"null
"308703""Zur Sicherstellung einer tat- und schuldangemessenen Reaktion im Einzelfall bei Fallkonstellationen…"Überwiesen""Gesetzgebung""C084"null["Gesellschaftspolitik, soziale Gruppen", "Recht"]"Vorgang"20["Nein, laut Gesetzentwurf (Drs 74/24 (bes.eilbed.))"]["Bundesregierung"][{true,"Gesetz zur Anpassung der Mindeststrafen des § 184b Absatz 1 Satz 1 und Absatz 3 des Strafgesetzbuches","Rechtsmaterialien"}, {false,"Gesetz zur Bekämpfung sexualisierter Gewalt gegen Kinder","Rechtsmaterialien"}, … {false,"Strafzumessung","Sachbegriffe"}]"2024-03-25T13:28:46+01:00""Gesetz zur Anpassung der Mindeststrafen des § 184b Absatz 1 Satz 1 und Absatz 3 des Strafgesetzbuch…"2024-03-25"null
"308700""Umsetzung von EU-Regelungen im Bereich der GAP betr. Einführung der sozialen Konditionalität zur En…"Dem Bundestag zugeleitet - Noch nicht beraten""Gesetzgebung""F017"null["Landwirtschaft und Ernährung"]"Vorgang"20["Nein, laut Gesetzentwurf (Drs 70/24)"]["Bundesregierung"][{true,"Agrarsubvention","Sachbegriffe"}, {false,"Arbeits- und Sozialstandards","Sachbegriffe"}, … {false,"Verordnung der EU","Sachbegriffe"}]"2024-03-25T15:21:09+01:00""Erstes Gesetz zur Änderung des GAP-Konditionalitäten-Gesetzes""2024-03-25"null
"307621""Behebung struktureller Probleme im Bundeshaushalt und Einleitung der qualitativen Konsolidierung zu…"Bundesrat hat Vermittlungsausschuss nicht angerufen""Gesetzgebung""D056"null["Öffentliche Finanzen, Steuern und Abgaben"]"Vorgang"20["Nein, laut Gesetzentwurf (Drs 20/9999)"]["Fraktion BÜNDNIS 90/DIE GRÜNEN", "Fraktion der FDP", "Fraktion der SPD"][{false,"Agrardiesel","Sachbegriffe"}, {false,"Arbeitslosenversicherung","Sachbegriffe"}, … {false,"Öffentliche Einnahmen","Sachbegriffe"}]"2024-03-22T11:56:31+01:00""Zweites Haushaltsfinanzierungsgesetz 2024""2024-03-22"null
" + "shape: (5, 16)
idabstractberatungsstandvorgangstypgestaarchivsachgebiettypwahlperiodezustimmungsbeduerftigkeitinitiativedeskriptoraktualisierttiteldatumverkuendung
strstrstrstrstrstrlist[str]stru64list[str]list[str]list[struct[3]]strstrstrlist[struct[1]]
"308708""Maßnahmen zur Steigerung der Attraktivität der beruflichen Bildung: Einführung eines Validierungsve…"Dem Bundestag zugeleitet - Noch nicht beraten""Gesetzgebung""K007"null["Arbeit und Beschäftigung", "Bildung und Erziehung", "Medien, Kommunikation und Informationstechnik"]"Vorgang"20["Ja, laut Gesetzentwurf (Drs 73/24)"]["Bundesregierung"][{false,"Ausbildungsvertrag","Sachbegriffe"}, {false,"Behinderter","Sachbegriffe"}, … {false,"Schulzeugnis","Sachbegriffe"}]"2024-03-27T17:08:03+01:00""Berufsbildungsvalidierungs- und -digitalisierungsgesetz (BVaDiG)""2024-03-27"null
"302813""Ermöglichung massiver und zügiger Investitionen in Modernisierung und Ausbau von Eisenbahninfrastru…"Im Vermittlungsverfahren""Gesetzgebung""J015"null["Verkehr", "Öffentliche Finanzen, Steuern und Abgaben"]"Vorgang"20["Ja, laut Gesetzentwurf (Drs 379/23 (bes.eilbed.))"]["Bundesregierung"][{false,"Bahnstrecke","Sachbegriffe"}, {false,"Bahntechnik","Sachbegriffe"}, … {false,"Wettbewerb","Sachbegriffe"}]"2024-03-27T09:36:30+01:00""Viertes Gesetz zur Änderung des Bundesschienenwegeausbaugesetzes""2024-03-26"null
"300144"null"Bundesrat hat Zustimmung versagt""Gesetzgebung""B039"null["Medien, Kommunikation und Informationstechnik", "Staat und Verwaltung"]"Vorgang"20["Ja, laut Gesetzentwurf (Drs 226/23)"]["Bundesregierung"][{false,"Abgabenordnung","Rechtsmaterialien"}, {false,"Barrierefreiheit","Sachbegriffe"}, … {false,"Öffentliche Verwaltung","Sachbegriffe"}]"2024-03-27T09:30:43+01:00""Gesetz zur Änderung des Onlinezugangsgesetzes sowie weiterer Vorschriften zur Digitalisierung der V…"2024-03-26"null
"308776""Zustimmung zu dem am 21. Juli 2023 in Lauterbourg unterzeichneten Abkommen: Standardisierung grenzü…"Dem Bundestag zugeleitet - Noch nicht beraten""Gesetzgebung""XK002"null["Arbeit und Beschäftigung", "Bildung und Erziehung"]"Vorgang"20["Ja, laut Gesetzentwurf (Drs 76/24)"]["Bundesregierung"][{false,"Ausbildungsvertrag","Sachbegriffe"}, {false,"Auswärtige Kultur- und Bildungspolitik","Sachbegriffe"}, … {false,"Teilzeitarbeit","Sachbegriffe"}]"2024-03-26T13:54:05+01:00""Gesetz zu dem Abkommen vom 21. Juli 2023 zwischen der Regierung der Bundesrepublik Deutschland und …"2024-03-22"null
"308709""Zusammenfassung und anwendungsbezogene Konkretisierung der sich aus der Anwendung des BEPS-MLI erge…"Dem Bundestag zugeleitet - Noch nicht beraten""Gesetzgebung""D057"null["Öffentliche Finanzen, Steuern und Abgaben"]"Vorgang"20["Ja, laut Gesetzentwurf (Drs 75/24)"]["Bundesregierung"][{true,"BEPS-MLI-Anwendungsgesetz","Rechtsmaterialien"}, {false,"Bundeszentralamt für Steuern","Institutionen"}, … {false,"Unternehmensbesteuerung","Sachbegriffe"}]"2024-03-26T13:53:58+01:00""Gesetz zur Anwendung des Mehrseitigen Übereinkommens vom 24. November 2016 und zu weiteren Maßnahme…"2024-03-22"null
" ], "text/plain": [ "shape: (5, 16)\n", @@ -140,9 +168,46 @@ "│ ┆ ┆ str ┆ str ┆ ┆ str ┆ ┆ ┆ list[stru │\n", "│ ┆ ┆ ┆ ┆ ┆ ┆ ┆ ┆ ct[1]] │\n", "╞════════╪════════════╪════════════╪═══════════╪═══╪═══════════╪═══════════╪═══════════╪═══════════╡\n", + "│ 308708 ┆ Maßnahmen ┆ Dem ┆ Gesetzgeb ┆ … ┆ 2024-03-2 ┆ Berufsbil ┆ 2024-03-2 ┆ null │\n", + "│ ┆ zur ┆ Bundestag ┆ ung ┆ ┆ 7T17:08:0 ┆ dungsvali ┆ 7 ┆ │\n", + "│ ┆ Steigerung ┆ zugeleitet ┆ ┆ ┆ 3+01:00 ┆ dierungs- ┆ ┆ │\n", + "│ ┆ der Attrak ┆ - Noch ┆ ┆ ┆ ┆ und -digi ┆ ┆ │\n", + "│ ┆ tivität ┆ nicht ┆ ┆ ┆ ┆ talisieru ┆ ┆ │\n", + "│ ┆ der berufl ┆ beraten ┆ ┆ ┆ ┆ ngsgesetz ┆ ┆ │\n", + "│ ┆ ichen ┆ ┆ ┆ ┆ ┆ (BVaDiG) ┆ ┆ │\n", + "│ ┆ Bildung: ┆ ┆ ┆ ┆ ┆ ┆ ┆ │\n", + "│ ┆ Einführung ┆ ┆ ┆ ┆ ┆ ┆ ┆ │\n", + "│ ┆ eines Vali ┆ ┆ ┆ ┆ ┆ ┆ ┆ │\n", + "│ ┆ dierungsve ┆ ┆ ┆ ┆ ┆ ┆ ┆ │\n", + "│ ┆ r… ┆ ┆ ┆ ┆ ┆ ┆ ┆ │\n", + "│ 302813 ┆ Ermöglichu ┆ Im Vermitt ┆ Gesetzgeb ┆ … ┆ 2024-03-2 ┆ Viertes ┆ 2024-03-2 ┆ null │\n", + "│ ┆ ng ┆ lungsverfa ┆ ung ┆ ┆ 7T09:36:3 ┆ Gesetz ┆ 6 ┆ │\n", + "│ ┆ massiver ┆ hren ┆ ┆ ┆ 0+01:00 ┆ zur ┆ ┆ │\n", + "│ ┆ und ┆ ┆ ┆ ┆ ┆ Änderung ┆ ┆ │\n", + "│ ┆ zügiger ┆ ┆ ┆ ┆ ┆ des Bunde ┆ ┆ │\n", + "│ ┆ Investitio ┆ ┆ ┆ ┆ ┆ sschienen ┆ ┆ │\n", + "│ ┆ nen in Mod ┆ ┆ ┆ ┆ ┆ wegeausba ┆ ┆ │\n", + "│ ┆ ernisierun ┆ ┆ ┆ ┆ ┆ ugesetzes ┆ ┆ │\n", + "│ ┆ g und ┆ ┆ ┆ ┆ ┆ ┆ ┆ │\n", + "│ ┆ Ausbau von ┆ ┆ ┆ ┆ ┆ ┆ ┆ │\n", + "│ ┆ Eisenbahni ┆ ┆ ┆ ┆ ┆ ┆ ┆ │\n", + "│ ┆ nfrastruk… ┆ ┆ ┆ ┆ ┆ ┆ ┆ │\n", + "│ 300144 ┆ null ┆ Bundesrat ┆ Gesetzgeb ┆ … ┆ 2024-03-2 ┆ Gesetz ┆ 2024-03-2 ┆ null │\n", + "│ ┆ ┆ hat ┆ ung ┆ ┆ 7T09:30:4 ┆ zur ┆ 6 ┆ │\n", + "│ ┆ ┆ Zustimmung ┆ ┆ ┆ 3+01:00 ┆ Änderung ┆ ┆ │\n", + "│ ┆ ┆ versagt ┆ ┆ ┆ ┆ des Onlin ┆ ┆ │\n", + "│ ┆ ┆ ┆ ┆ ┆ ┆ ezugangsg ┆ ┆ │\n", + "│ ┆ ┆ ┆ ┆ ┆ ┆ esetzes ┆ ┆ │\n", + "│ ┆ ┆ ┆ ┆ ┆ ┆ sowie ┆ ┆ │\n", + "│ ┆ ┆ ┆ ┆ ┆ ┆ weiterer ┆ ┆ │\n", + "│ ┆ ┆ ┆ ┆ ┆ ┆ Vorschrif ┆ ┆ │\n", + "│ ┆ ┆ ┆ ┆ ┆ ┆ ten zur ┆ ┆ │\n", + "│ ┆ ┆ ┆ ┆ ┆ ┆ Digitalis ┆ ┆ │\n", + "│ ┆ ┆ ┆ ┆ ┆ ┆ ierung ┆ ┆ │\n", + "│ ┆ ┆ ┆ ┆ ┆ ┆ der Ve… ┆ ┆ │\n", "│ 308776 ┆ Zustimmung ┆ Dem ┆ Gesetzgeb ┆ … ┆ 2024-03-2 ┆ Gesetz zu ┆ 2024-03-2 ┆ null │\n", - "│ ┆ zu dem am ┆ Bundestag ┆ ung ┆ ┆ 5T15:18:4 ┆ dem ┆ 5 ┆ │\n", - "│ ┆ 21. Juli ┆ zugeleitet ┆ ┆ ┆ 0+01:00 ┆ Abkommen ┆ ┆ │\n", + "│ ┆ zu dem am ┆ Bundestag ┆ ung ┆ ┆ 6T13:54:0 ┆ dem ┆ 2 ┆ │\n", + "│ ┆ 21. Juli ┆ zugeleitet ┆ ┆ ┆ 5+01:00 ┆ Abkommen ┆ ┆ │\n", "│ ┆ 2023 in ┆ - Noch ┆ ┆ ┆ ┆ vom 21. ┆ ┆ │\n", "│ ┆ Lauterbour ┆ nicht ┆ ┆ ┆ ┆ Juli 2023 ┆ ┆ │\n", "│ ┆ g unterzei ┆ beraten ┆ ┆ ┆ ┆ zwischen ┆ ┆ │\n", @@ -153,8 +218,8 @@ "│ ┆ grenzüb… ┆ ┆ ┆ ┆ ┆ Deutschla ┆ ┆ │\n", "│ ┆ ┆ ┆ ┆ ┆ ┆ nd und d… ┆ ┆ │\n", "│ 308709 ┆ Zusammenfa ┆ Dem ┆ Gesetzgeb ┆ … ┆ 2024-03-2 ┆ Gesetz ┆ 2024-03-2 ┆ null │\n", - "│ ┆ ssung und ┆ Bundestag ┆ ung ┆ ┆ 5T15:24:1 ┆ zur ┆ 5 ┆ │\n", - "│ ┆ anwendungs ┆ zugeleitet ┆ ┆ ┆ 0+01:00 ┆ Anwendung ┆ ┆ │\n", + "│ ┆ ssung und ┆ Bundestag ┆ ung ┆ ┆ 6T13:53:5 ┆ zur ┆ 2 ┆ │\n", + "│ ┆ anwendungs ┆ zugeleitet ┆ ┆ ┆ 8+01:00 ┆ Anwendung ┆ ┆ │\n", "│ ┆ bezogene ┆ - Noch ┆ ┆ ┆ ┆ des Mehrs ┆ ┆ │\n", "│ ┆ Konkretisi ┆ nicht ┆ ┆ ┆ ┆ eitigen ┆ ┆ │\n", "│ ┆ erung der ┆ beraten ┆ ┆ ┆ ┆ Übereinko ┆ ┆ │\n", @@ -165,44 +230,6 @@ "│ ┆ BEPS-MLI ┆ ┆ ┆ ┆ ┆ zu ┆ ┆ │\n", "│ ┆ ergeb… ┆ ┆ ┆ ┆ ┆ weiteren ┆ ┆ │\n", "│ ┆ ┆ ┆ ┆ ┆ ┆ Maßnahmen ┆ ┆ │\n", - "│ 308703 ┆ Zur Sicher ┆ Überwiesen ┆ Gesetzgeb ┆ … ┆ 2024-03-2 ┆ Gesetz ┆ 2024-03-2 ┆ null │\n", - "│ ┆ stellung ┆ ┆ ung ┆ ┆ 5T13:28:4 ┆ zur ┆ 5 ┆ │\n", - "│ ┆ einer tat- ┆ ┆ ┆ ┆ 6+01:00 ┆ Anpassung ┆ ┆ │\n", - "│ ┆ und schuld ┆ ┆ ┆ ┆ ┆ der Minde ┆ ┆ │\n", - "│ ┆ angemessen ┆ ┆ ┆ ┆ ┆ ststrafen ┆ ┆ │\n", - "│ ┆ en ┆ ┆ ┆ ┆ ┆ des § ┆ ┆ │\n", - "│ ┆ Reaktion ┆ ┆ ┆ ┆ ┆ 184b ┆ ┆ │\n", - "│ ┆ im ┆ ┆ ┆ ┆ ┆ Absatz 1 ┆ ┆ │\n", - "│ ┆ Einzelfall ┆ ┆ ┆ ┆ ┆ Satz 1 ┆ ┆ │\n", - "│ ┆ bei Fallko ┆ ┆ ┆ ┆ ┆ und ┆ ┆ │\n", - "│ ┆ nstellatio ┆ ┆ ┆ ┆ ┆ Absatz 3 ┆ ┆ │\n", - "│ ┆ nen … ┆ ┆ ┆ ┆ ┆ des Straf ┆ ┆ │\n", - "│ ┆ ┆ ┆ ┆ ┆ ┆ gesetzbuc ┆ ┆ │\n", - "│ ┆ ┆ ┆ ┆ ┆ ┆ he… ┆ ┆ │\n", - "│ 308700 ┆ Umsetzung ┆ Dem ┆ Gesetzgeb ┆ … ┆ 2024-03-2 ┆ Erstes ┆ 2024-03-2 ┆ null │\n", - "│ ┆ von EU-Reg ┆ Bundestag ┆ ung ┆ ┆ 5T15:21:0 ┆ Gesetz ┆ 5 ┆ │\n", - "│ ┆ elungen im ┆ zugeleitet ┆ ┆ ┆ 9+01:00 ┆ zur ┆ ┆ │\n", - "│ ┆ Bereich ┆ - Noch ┆ ┆ ┆ ┆ Änderung ┆ ┆ │\n", - "│ ┆ der GAP ┆ nicht ┆ ┆ ┆ ┆ des GAP-K ┆ ┆ │\n", - "│ ┆ betr. ┆ beraten ┆ ┆ ┆ ┆ onditiona ┆ ┆ │\n", - "│ ┆ Einführung ┆ ┆ ┆ ┆ ┆ litäten-G ┆ ┆ │\n", - "│ ┆ der ┆ ┆ ┆ ┆ ┆ esetzes ┆ ┆ │\n", - "│ ┆ sozialen ┆ ┆ ┆ ┆ ┆ ┆ ┆ │\n", - "│ ┆ Konditiona ┆ ┆ ┆ ┆ ┆ ┆ ┆ │\n", - "│ ┆ lität zur ┆ ┆ ┆ ┆ ┆ ┆ ┆ │\n", - "│ ┆ Ent… ┆ ┆ ┆ ┆ ┆ ┆ ┆ │\n", - "│ 307621 ┆ Behebung ┆ Bundesrat ┆ Gesetzgeb ┆ … ┆ 2024-03-2 ┆ Zweites ┆ 2024-03-2 ┆ null │\n", - "│ ┆ strukturel ┆ hat Vermit ┆ ung ┆ ┆ 2T11:56:3 ┆ Haushalts ┆ 2 ┆ │\n", - "│ ┆ ler ┆ tlungsauss ┆ ┆ ┆ 1+01:00 ┆ finanzier ┆ ┆ │\n", - "│ ┆ Probleme ┆ chuss ┆ ┆ ┆ ┆ ungsgeset ┆ ┆ │\n", - "│ ┆ im Bundesh ┆ nicht ┆ ┆ ┆ ┆ z 2024 ┆ ┆ │\n", - "│ ┆ aushalt ┆ angerufen ┆ ┆ ┆ ┆ ┆ ┆ │\n", - "│ ┆ und ┆ ┆ ┆ ┆ ┆ ┆ ┆ │\n", - "│ ┆ Einleitung ┆ ┆ ┆ ┆ ┆ ┆ ┆ │\n", - "│ ┆ der qualit ┆ ┆ ┆ ┆ ┆ ┆ ┆ │\n", - "│ ┆ ativen Kon ┆ ┆ ┆ ┆ ┆ ┆ ┆ │\n", - "│ ┆ solidierun ┆ ┆ ┆ ┆ ┆ ┆ ┆ │\n", - "│ ┆ g zur… ┆ ┆ ┆ ┆ ┆ ┆ ┆ │\n", "└────────┴────────────┴────────────┴───────────┴───┴───────────┴───────────┴───────────┴───────────┘" ] }, @@ -228,6 +255,17 @@ { "cell_type": "code", "execution_count": 6, + "id": "1b58a67e-21a4-42a0-af79-4509ce935344", + "metadata": {}, + "outputs": [], + "source": [ + "#df_vorgang_docs = df_vorgangspos.filter(pl.col('dokumentart') == 'Drucksache').group_by('vorgang_id').agg(pl.col('fundstelle').struct.field(\"dokumentnummer\").explode())\n", + "#df_gesetze = df_gesetze.join(df_vorgang_docs.select(['vorgang_id', 'dokumentnummer']), left_on='id', right_on='vorgang_id', how='left')" + ] + }, + { + "cell_type": "code", + "execution_count": 7, "id": "89f4ca04-8678-4c2a-8be9-ef935ba42fe5", "metadata": {}, "outputs": [], @@ -245,7 +283,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 8, "id": "3c39d006-5656-4a1e-9cb8-f3d0fe5ab2b7", "metadata": {}, "outputs": [], @@ -264,7 +302,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 9, "id": "d497e172-3e80-46f3-a795-26dc0f720a69", "metadata": {}, "outputs": [], @@ -274,7 +312,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 10, "id": "2563ad5e-bd77-4fa3-bb9b-ceae20e8ae5e", "metadata": {}, "outputs": [], @@ -284,7 +322,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 11, "id": "eb76d5f4-c006-4278-8de0-73ce19e2048b", "metadata": {}, "outputs": [ @@ -298,7 +336,7 @@ " white-space: pre-wrap;\n", "}\n", "\n", - "shape: (8, 3)
break_pointcategoryvorgangsdauer_count
f64catu32
7.0"(-inf, 7.0]"1
14.0"(7.0, 14.0]"3
30.0"(14.0, 30.0]"19
60.0"(30.0, 60.0]"22
120.0"(60.0, 120.0]"70
240.0"(120.0, 240.0]"103
365.0"(240.0, 365.0]"5
inf"(365.0, inf]"1
" + "shape: (8, 3)
break_pointcategoryvorgangsdauer_count
f64catu32
7.0"(-inf, 7.0]"1
14.0"(7.0, 14.0]"3
30.0"(14.0, 30.0]"19
60.0"(30.0, 60.0]"22
120.0"(60.0, 120.0]"71
240.0"(120.0, 240.0]"109
365.0"(240.0, 365.0]"5
inf"(365.0, inf]"1
" ], "text/plain": [ "shape: (8, 3)\n", @@ -311,14 +349,14 @@ "│ 14.0 ┆ (7.0, 14.0] ┆ 3 │\n", "│ 30.0 ┆ (14.0, 30.0] ┆ 19 │\n", "│ 60.0 ┆ (30.0, 60.0] ┆ 22 │\n", - "│ 120.0 ┆ (60.0, 120.0] ┆ 70 │\n", - "│ 240.0 ┆ (120.0, 240.0] ┆ 103 │\n", + "│ 120.0 ┆ (60.0, 120.0] ┆ 71 │\n", + "│ 240.0 ┆ (120.0, 240.0] ┆ 109 │\n", "│ 365.0 ┆ (240.0, 365.0] ┆ 5 │\n", "│ inf ┆ (365.0, inf] ┆ 1 │\n", "└─────────────┴────────────────┴─────────────────────┘" ] }, - "execution_count": 10, + "execution_count": 11, "metadata": {}, "output_type": "execute_result" } @@ -332,7 +370,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 12, "id": "f64505de-ecb2-42fa-b269-8f304acebfe2", "metadata": {}, "outputs": [ @@ -371,7 +409,7 @@ "└────────┴────────────┴────────────┴───────────┴───┴───────────┴───────────┴───────────┴───────────┘" ] }, - "execution_count": 11, + "execution_count": 12, "metadata": {}, "output_type": "execute_result" } @@ -383,7 +421,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 13, "id": "aed89740-24dc-4fc5-9508-4d65baee2f2a", "metadata": {}, "outputs": [ @@ -417,7 +455,7 @@ "└────────┴──────────┴────────────┴────────────┴───┴────────────┴───────────┴───────────┴───────────┘" ] }, - "execution_count": 12, + "execution_count": 13, "metadata": {}, "output_type": "execute_result" } @@ -425,6 +463,259 @@ "source": [ "df_gesetze_public_bins.filter(pl.col('duration_bin') == pl.col('duration_bin').max())" ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "6d953f03-1ad3-483b-988e-9e72e188452b", + "metadata": {}, + "outputs": [], + "source": [ + "def map_gesetze(tokens):\n", + " overlap = df_gesetze.with_columns(pl.col('titel.stem').map_elements(lambda x: td.lcsstr.normalized_similarity(tokens, x)).alias('similarity')).select(['titel', 'titel.stem', 'id', 'similarity'])\n", + " overlap_ = overlap.sort('similarity', descending=True)\n", + " overlap = overlap_.filter(pl.col('similarity') > 0.4)\n", + " if overlap.shape[0] == 0:\n", + " print(overlap_.head())\n", + " raise RuntimeError('Count not find any Gesetze with similarity > 0.4')\n", + " if overlap.shape[0] > 1:\n", + " if overlap.row(1, named=True)['similarity'] * 2 > overlap.row(0, named=True)['similarity']:\n", + " print(f'Error: could not map gesetz: {tokens}')\n", + " print(overlap.head())\n", + " raise RuntimeError\n", + " #print(overlap.head())\n", + " return overlap.row(0, named=True)\n", + "\n", + "bad_words = [\n", + " 'beratung',\n", + " 'erst',\n", + " 'zweit',\n", + " 'dritt',\n", + " 'gebrach',\n", + " 'entwurf',\n", + " 'eine'\n", + "]\n", + "stopwords_german = stopwords.words('german')\n", + "def rm_stop_words(txt):\n", + " words = txt.split()\n", + " words = list(filter(lambda x: x not in stopwords_german, words))\n", + " return ' '.join(words)\n", + " \n", + "def pre_process(txt):\n", + " txt = ' '.join(txt.split())\n", + " txt = re.sub(r'[a-z]\\)', '', txt)\n", + " txt = re.sub(r'des von der .*(fraktio|bundesregierung)', '', txt)\n", + " txt = re.sub(r'^–', '', txt)\n", + " for word in bad_words:\n", + " txt = txt.replace(word, '', 1)\n", + " return rm_stop_words(txt)\n", + "\n", + "stemmer = Cistem()\n", + "def stem(txt):\n", + " words = []\n", + " for word in txt.split():\n", + " words.append(stemmer.segment(word)[0])\n", + " return ' '.join(words)\n", + "\n", + "def map_top_gesetze(soup):\n", + " tagesordnung = {}\n", + " for conf in soup.find_all('div', {'class': 'bt-conference-title'}):\n", + " sitzung = conf.text.strip()\n", + " print(sitzung)\n", + " top_l = []\n", + " for thema in conf.parent.parent.find_all('td', {'data-th': 'Thema'}):\n", + " if thema.p:\n", + " for top in str(thema.p).split('

'):\n", + " top = BeautifulSoup(top, 'lxml')\n", + " vorgang_id = None\n", + " for a in top.find_all('a'):\n", + " drucksache = df_vorgangspos.filter((pl.col('dokumentart') == 'Drucksache') & (pl.col('fundstelle').struct.field(\"drucksachetyp\") == 'Gesetzentwurf') & (pl.col('fundstelle').struct.field(\"pdf_url\") == a['href']))\n", + " if drucksache.shape[0] == 0:\n", + " continue\n", + " if drucksache.shape[0] == 1:\n", + " vorgang_id_new = drucksache.row(0, named=True)['vorgang_id']\n", + " if vorgang_id and vorgang_id != vorgang_id_new:\n", + " raise RuntimeError('vorgang id missmatch')\n", + " vorgang_id = vorgang_id_new\n", + " if drucksache.shape[0] > 1:\n", + " print(drucksache)\n", + " raise RuntimeError('Found multiple vorgang ids for document')\n", + " if vorgang_id:\n", + " gesetz = df_gesetze.filter(pl.col('id') == vorgang_id).row(0, named=True)\n", + " print('* ' + gesetz['titel'])\n", + " top_l.append(gesetz)\n", + " else:\n", + " txt_ = top.get_text(' ')\n", + " for txt in txt_.split('Drucksache'):\n", + " if 'gesetz' in txt.lower() and 'entwurf' in txt.lower():\n", + " txt = stem(txt)\n", + " txt = pre_process(txt)\n", + " gesetz = map_gesetze(txt)\n", + " print('* ' + gesetz['titel'])\n", + " top_l.append(gesetz)\n", + " print()\n", + " tagesordnung[sitzung] = top_l\n", + " return tagesordnung\n", + "\n", + "def get_tagesordnung_gesetze(kw):\n", + " res = requests.get('https://www.bundestag.de/apps/plenar/plenar/conferenceweekDetail.form', {'year': 2024, 'week': kw, 'limit': 10})\n", + " time.sleep(0.3)\n", + " soup = BeautifulSoup(res.text, 'lxml')\n", + " return map_top_gesetze(soup)" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "08fee33d-a1d7-408a-bfeb-805a22e126bb", + "metadata": {}, + "outputs": [], + "source": [ + "df_gesetze = df_gesetze.with_columns(pl.col('titel').map_elements(stem).map_elements(rm_stop_words).alias('titel.stem'))" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "47f3e4d1-9700-4abc-84f2-06293eb565cd", + "metadata": {}, + "outputs": [], + "source": [ + "#df_vorgangspos.filter((pl.col('dokumentart') == 'Drucksache')).select(pl.col('fundstelle').struct.field(\"pdf_url\"))\n", + "#df_vorgangspos.filter(pl.col('fundstelle').struct.field(\"pdf_url\").eq('https://dserver.bundestag.de/btd/20/106/2010664.pdf'))" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "9d99ca02-9aa7-4dc8-a983-df30439ba5bf", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "20. März 2024 (159. Sitzung)\n", + "\n", + "21. März 2024 (160. Sitzung)\n", + "* Gesetz zur Durchführung der Verordnung (EU) 2022/2065 des Europäischen Parlaments und des Rates vom 19. Oktober 2022 über einen Binnenmarkt für digitale Dienste und zur Änderung der Richtlinie 2000/31/EG sowie zur Durchführung der Verordnung (EU) 2019/1150 des Europäischen Parlaments und des Rates vom 20. Juni 2019 zur Förderung von Fairness und Transparenz für gewerbliche Nutzer von Online-Vermittlungsdiensten und zur Änderung weiterer Gesetze\n", + "* Gesetz zur rechtssicheren Einführung einer Bezahlkarte im Asylbewerberleistungsgesetz (Bezahlkartengesetz - BezahlkG)\n", + "* Zweites Gesetz zur Änderung des Umweltstatistikgesetzes, zur Anpassung bestimmter Vorschriften über den Schutz geografischer Herkunftsangaben im Landwirtschaftsbereich und zur Änderung des Bundesnaturschutzgesetzes\n", + "* Drittes Gesetz zur Änderung des Bundesschuldenwesengesetzes\n", + "* Gesetz zu dem Übereinkommen vom 12. März 2019 zur Gründung des \"Square Kilometre Array\"-Observatoriums\n", + "\n", + "22. März 2024 (161. Sitzung)\n", + "* Zweites Gesetz zur Änderung des Betriebsverfassungsgesetzes\n", + "\n", + "10. April 2024 (162. Sitzung)\n", + "* Zweites Gesetz zur Änderung des Schwangerschaftskonfliktgesetzes\n", + "* Gesetz zur Reform der missbräuchlichen Anerkennung von Vaterschaften\n", + "\n", + "11. April 2024 (163. Sitzung)\n", + "* Gesetz zur Anwendung des Mehrseitigen Übereinkommens vom 24. November 2016 und zu weiteren Maßnahmen\n", + "* Zweites Gesetz zur Reform des Kapitalanleger-Musterverfahrensgesetzes\n", + "* Gesetz zur Bekämpfung des Wohnungseinbruchdiebstahls\n", + "* Erstes Gesetz zur Änderung des GAP-Konditionalitäten-Gesetzes\n", + "* Gesetz zur Verbesserung des Klimaschutzes beim Immissionsschutz, zur Beschleunigung immissionsschutzrechtlicher Genehmigungsverfahren und zur Umsetzung von EU-Recht\n", + "\n", + "12. April 2024 (164. Sitzung)\n", + "\n" + ] + } + ], + "source": [ + "res = requests.get('https://www.bundestag.de/tagesordnung')\n", + "soup = BeautifulSoup(res.text, 'lxml')\n", + "div = soup.find('div', {'class': 'bt-module-row bt-module-row-sitzungsablauf'})\n", + "url = urllib.parse.urlparse(div['data-dataloader-url'])\n", + "week = int(urllib.parse.parse_qs(url.query)['week'][0])\n", + "\n", + "top = {}\n", + "for prev in range(1, 10):\n", + " tagesordnung = get_tagesordnung_gesetze(week - prev)\n", + " if tagesordnung:\n", + " top.update(tagesordnung)\n", + " break\n", + "top.update(get_tagesordnung_gesetze(week))\n", + "for prev in range(1, 10):\n", + " tagesordnung = get_tagesordnung_gesetze(week + prev)\n", + " if tagesordnung:\n", + " top.update(tagesordnung)\n", + " break" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "60617dda-dea8-431a-bd18-a5cb6c985df5", + "metadata": {}, + "outputs": [], + "source": [ + "json.dump({day: [gesetz['id'] for gesetz in value] for day, value in top.items()}, open('tagesordnung.json', 'wt'))" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "1510372d-0e77-4675-a50b-3f9f8b7f755f", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'gesetz rechtssich einführung'" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pre_process(stem('Erste Beratung des von der CDU/CSU-Fraktion eingebrachten Gesetzentwurfs zur rechtssicheren Einführung '))" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "77137b23-6398-4652-aec1-695302139583", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'gesetz durchführung'" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pre_process(stem(' – Zweite und dritte Beratung des von der Bundesregierung eingebrachten Entwurfs eines Gesetzes zur Durchführung'))" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "a4b8d356-0f72-407c-b571-f378428eac75", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'zweit gesetz änderung umweltstatistikgesetz'" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pre_process(stem('a) Zweite und dritte Beratung des von der Bundesregierung eingebrachten Entwurfs eines Zweiten Gesetzes zur Änderung des Umweltstatistikgesetzes '))" + ] } ], "metadata": {