From 946ec47b20439fa2492723942d1eba0d0ef2dae2 Mon Sep 17 00:00:00 2001 From: bpietrzak <> Date: Thu, 20 Jun 2024 19:58:19 +0200 Subject: [PATCH] Little push --- lab/lab_11.ipynb | 85 ++++++++++++++++++++++++++---- lab/lab_15.ipynb | 133 +++++++++++++++++++++++++++++++++++++++++++---- 2 files changed, 197 insertions(+), 21 deletions(-) diff --git a/lab/lab_11.ipynb b/lab/lab_11.ipynb index 0a8ce14..83b5aaf 100644 --- a/lab/lab_11.ipynb +++ b/lab/lab_11.ipynb @@ -52,13 +52,45 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 10, "id": "german-dispute", "metadata": {}, "outputs": [], "source": [ "def sentence_split(text):\n", - " return []" + " segments = []\n", + " start = 0\n", + " i = 0\n", + " n = len(text)\n", + " while i < n:\n", + " if text[i] == ' ' and i + 1 < n and text[i + 1].isupper():\n", + " segments.append(text[start:i])\n", + " start = i + 1\n", + " i += 1\n", + " segments.append(text[start:])\n", + " return segments\n" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "adbae35b", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['Dzien dobry,', 'CZy ten', 'TEKST zostanie poprawnie podzielony?']" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "text = \"Dzien dobry, CZy ten TEKST zostanie poprawnie podzielony?\"\n", + "sentence_split(text)" ] }, { @@ -71,13 +103,44 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 13, + "id": "064c2343", + "metadata": {}, + "outputs": [], + "source": [ + "import re\n", + "import requests\n", + "from bs4 import BeautifulSoup" + ] + }, + { + "cell_type": "code", + "execution_count": 14, "id": "guilty-morocco", "metadata": {}, "outputs": [], "source": [ - "def sentence_split_enhanced(text):\n", - " return []" + "def fetch_page_content(url):\n", + " response = requests.get(url)\n", + " soup = BeautifulSoup(response.content, 'html.parser')\n", + "\n", + " for unwanted in soup([\"script\", \"style\"]):\n", + " unwanted.decompose()\n", + "\n", + " page_text = soup.get_text()\n", + "\n", + " clean_text = re.sub(r\"\\s+\", \" \", page_text)\n", + " return clean_text" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "7a2d689a", + "metadata": {}, + "outputs": [], + "source": [ + "text = fetch_page_content('https://www.mountainjade.co.nz/pages/greenstone-meanings-and-designs/toki-adze')\n" ] }, { @@ -187,15 +250,12 @@ "metadata": { "author": "Rafał Jaworski", "email": "rjawor@amu.edu.pl", - "lang": "pl", - "subtitle": "11. Urównoleglanie", - "title": "Komputerowe wspomaganie tłumaczenia", - "year": "2021", "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, + "lang": "pl", "language_info": { "codemirror_mode": { "name": "ipython", @@ -206,8 +266,11 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.10" - } + "version": "3.11.9" + }, + "subtitle": "11. Urównoleglanie", + "title": "Komputerowe wspomaganie tłumaczenia", + "year": "2021" }, "nbformat": 4, "nbformat_minor": 5 diff --git a/lab/lab_15.ipynb b/lab/lab_15.ipynb index cb0382e..5246df0 100644 --- a/lab/lab_15.ipynb +++ b/lab/lab_15.ipynb @@ -62,11 +62,42 @@ ] }, { - "cell_type": "raw", + "cell_type": "markdown", "id": "academic-crest", + "metadata": { + "vscode": { + "languageId": "raw" + } + }, + "source": [] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "9020428a", "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Collecting language_tool_python\n", + " Downloading language_tool_python-2.8-py3-none-any.whl (35 kB)\n", + "Requirement already satisfied: pip in /home/potato/.virtualenvs/praca/lib/python3.11/site-packages (from language_tool_python) (22.0.2)\n", + "Requirement already satisfied: tqdm in /home/potato/.virtualenvs/praca/lib/python3.11/site-packages (from language_tool_python) (4.66.4)\n", + "Requirement already satisfied: requests in /home/potato/.virtualenvs/praca/lib/python3.11/site-packages (from language_tool_python) (2.31.0)\n", + "Requirement already satisfied: wheel in /home/potato/.virtualenvs/praca/lib/python3.11/site-packages (from language_tool_python) (0.37.1)\n", + "Requirement already satisfied: idna<4,>=2.5 in /home/potato/.virtualenvs/praca/lib/python3.11/site-packages (from requests->language_tool_python) (3.7)\n", + "Requirement already satisfied: urllib3<3,>=1.21.1 in /home/potato/.virtualenvs/praca/lib/python3.11/site-packages (from requests->language_tool_python) (2.2.1)\n", + "Requirement already satisfied: certifi>=2017.4.17 in /home/potato/.virtualenvs/praca/lib/python3.11/site-packages (from requests->language_tool_python) (2024.2.2)\n", + "Requirement already satisfied: charset-normalizer<4,>=2 in /home/potato/.virtualenvs/praca/lib/python3.11/site-packages (from requests->language_tool_python) (3.3.2)\n", + "Installing collected packages: language_tool_python\n", + "Successfully installed language_tool_python-2.8\n" + ] + } + ], "source": [ - "pip3 install language_tool_python" + "!pip install language_tool_python" ] }, { @@ -79,16 +110,25 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 2, "id": "relative-anaheim", "metadata": {}, "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Downloading LanguageTool 6.4: 100%|██████████| 246M/246M [00:07<00:00, 34.5MB/s] \n", + "Unzipping /tmp/tmp2yjlywpj.zip to /home/potato/.cache/language_tool_python.\n", + "Downloaded https://www.languagetool.org/download/LanguageTool-6.4.zip to /home/potato/.cache/language_tool_python.\n" + ] + }, { "name": "stdout", "output_type": "stream", "text": [ - "[Match({'ruleId': 'EN_A_VS_AN', 'message': 'Use “an” instead of ‘a’ if the following word starts with a vowel sound, e.g. ‘an article’, ‘an hour’.', 'replacements': ['an'], 'offsetInContext': 16, 'context': 'A sentence with a error in the Hitchhiker’s Guide tot he ...', 'offset': 16, 'errorLength': 1, 'category': 'MISC', 'ruleIssueType': 'misspelling', 'sentence': 'A sentence with a error in the Hitchhiker’s Guide tot he Galaxy'}),\n", - " Match({'ruleId': 'TOT_HE', 'message': 'Did you mean “to the”?', 'replacements': ['to the'], 'offsetInContext': 43, 'context': '... with a error in the Hitchhiker’s Guide tot he Galaxy', 'offset': 50, 'errorLength': 6, 'category': 'TYPOS', 'ruleIssueType': 'misspelling', 'sentence': 'A sentence with a error in the Hitchhiker’s Guide tot he Galaxy'})]\n" + "[Match({'ruleId': 'EN_A_VS_AN', 'message': 'Use “an” instead of ‘a’ if the following word starts with a vowel sound, e.g. ‘an article’, ‘an hour’.', 'replacements': ['an'], 'offsetInContext': 16, 'context': 'A sentence with a error in the Hitchhiker’s Guide tot he ...', 'offset': 16, 'errorLength': 1, 'category': 'MISC', 'ruleIssueType': 'misspelling', 'sentence': \"A sentence with a error in the Hitchhiker's Guide tot he Galaxy\"}),\n", + " Match({'ruleId': 'TOT_HE', 'message': 'Did you mean “to the”?', 'replacements': ['to the'], 'offsetInContext': 43, 'context': '... with a error in the Hitchhiker’s Guide tot he Galaxy', 'offset': 50, 'errorLength': 6, 'category': 'TYPOS', 'ruleIssueType': 'misspelling', 'sentence': \"A sentence with a error in the Hitchhiker's Guide tot he Galaxy\"})]\n" ] } ], @@ -122,13 +162,86 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 3, "id": "sound-teaching", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[Match({'ruleId': 'NIETYPOWA_KOMBINACJA_DUZYCH_I_MALYCH_LITER', 'message': 'Nietypowa kombinacja małych i dużych liter. Czy nie powinno być: \"półkolonieróżne\"?', 'replacements': ['półkolonieróżne'], 'offsetInContext': 43, 'context': '...dorosłych Półkolonie Blog O nas Kontakt PółkolonieRóżne Jak wyglądają aktywności i warsztaty po...', 'offset': 316, 'errorLength': 15, 'category': 'CASING', 'ruleIssueType': 'misspelling', 'sentence': '- Sky Blue Education Blog Półkolonie Kontakt O nas Programowanie Minecraft Python Tworzenie stron Języki obce Dla dzieci Dla dorosłych Programowanie Minecraft Python Tworzenie stron Języki obce Dla dzieci Dla dorosłych Półkolonie Blog O nas Kontakt PółkolonieRóżne Jak wyglądają aktywności i warsztaty podczas półkolonii Sky Blue?'}),\n", + " Match({'ruleId': 'UPPERCASE_SENTENCE_START', 'message': 'To zdanie nie zaczyna się wielką literą', 'replacements': ['Zobacz'], 'offsetInContext': 43, 'context': '... warsztaty podczas półkolonii Sky Blue? zobacz także: Jak skutecznie wpłynąć na efekty...', 'offset': 398, 'errorLength': 6, 'category': 'CASING', 'ruleIssueType': 'typographical', 'sentence': 'zobacz także: Jak skutecznie wpłynąć na efektywność nauki u uczniów (osiem teorii motywacyjnych)?'}),\n", + " Match({'ruleId': 'ZDANIA_ZLOZONE', 'message': 'W tym zdaniu złożonym brakuje przecinka lub spójnika między jednym czasownikiem („bierzemy”) a drugim („planując”).', 'replacements': [], 'offsetInContext': 43, 'context': '...wacyjnych)? Jest kilka elementów, które bierzemy pod uwagę planując aktywności dla dzieci. Po pierwsze i najważniejsze, szukamy fo...', 'offset': 524, 'errorLength': 50, 'category': 'PUNCTUATION', 'ruleIssueType': 'typographical', 'sentence': 'Jest kilka elementów, które bierzemy pod uwagę planując aktywności dla dzieci.'}),\n", + " Match({'ruleId': 'ZDANIA_ZLOZONE', 'message': 'W tym zdaniu złożonym brakuje przecinka lub spójnika między jednym czasownikiem („widział”) a drugim („jest”).', 'replacements': [], 'offsetInContext': 43, 'context': '...wo znalezienie seansu, którego nikt nie widział jest w zasadzie niemożliwe. Często rezygnujemy z różnych pomysłów, ...', 'offset': 919, 'errorLength': 35, 'category': 'PUNCTUATION', 'ruleIssueType': 'typographical', 'sentence': 'Dodatkowo znalezienie seansu, którego nikt nie widział jest w zasadzie niemożliwe.'}),\n", + " Match({'ruleId': 'ZDANIA_ZLOZONE', 'message': 'W tym zdaniu złożonym brakuje przecinka lub spójnika między jednym czasownikiem („planując”) a drugim („tworzymy”).', 'replacements': [], 'offsetInContext': 43, 'context': '...z będą mieć z niego frajdę. Po trzecie, planując każdy dzień tworzymy odpowiedni balans pomiędzy rodzajami warsztatów. Te wymagające komputera mieszamy z krea...', 'offset': 1856, 'errorLength': 78, 'category': 'PUNCTUATION', 'ruleIssueType': 'typographical', 'sentence': 'Po trzecie, planując każdy dzień tworzymy odpowiedni balans pomiędzy rodzajami warsztatów.'}),\n", + " Match({'ruleId': 'ZDANIA_ZLOZONE', 'message': 'W tym zdaniu złożonym brakuje przecinka lub spójnika między jednym czasownikiem („Układając”) a drugim („dbamy”).', 'replacements': [], 'offsetInContext': 43, 'context': '... z kreatywnymi i manualnymi wyzwaniami. Układając szczegółowy harmonogram dbamy o odpowiednią dynamikę, propocję i różnorodność.Po czwarte, por...', 'offset': 2007, 'errorLength': 63, 'category': 'PUNCTUATION', 'ruleIssueType': 'typographical', 'sentence': 'Układając szczegółowy harmonogram dbamy o odpowiednią dynamikę, propocję i różnorodność.'}),\n", + " Match({'ruleId': 'POZA_TYM', 'message': 'Prawdopodobnie zbędny przecinek. Poprawnie: \"Po czwarte poruszamy\".', 'replacements': ['Po czwarte poruszamy'], 'offsetInContext': 43, 'context': '...ednią dynamikę, propocję i różnorodność.Po czwarte, poruszamy się w świecie nowych technologii. Z jed...', 'offset': 2095, 'errorLength': 21, 'category': 'PUNCTUATION', 'ruleIssueType': 'typographical', 'sentence': 'Po czwarte, poruszamy się w świecie nowych technologii.'}),\n", + " Match({'ruleId': 'POZA_TYM', 'message': 'Prawdopodobnie zbędny przecinek. Poprawnie: \"Poza rzeczamy typowo technologicznymi dodatkowo\".', 'replacements': ['Poza rzeczamy typowo technologicznymi dodatkowo'], 'offsetInContext': 43, 'context': '...o wielu aktywności, które organizujemy. Poza rzeczamy typowo technologicznymi, dodatkowo eksperymentujemy, rozwiązujemy zagadki,...', 'offset': 2428, 'errorLength': 48, 'category': 'PUNCTUATION', 'ruleIssueType': 'typographical', 'sentence': 'Poza rzeczamy typowo technologicznymi, dodatkowo eksperymentujemy, rozwiązujemy zagadki, malujemy, kleimy, wycinamy, majsterkujemy i oczywiście brudzimy się.'}),\n", + " Match({'ruleId': 'SIE_SENT_END', 'message': 'Zaimek „się” nie powinien znajdować się na końcu zdania.', 'replacements': [], 'offsetInContext': 43, 'context': '...my, majsterkujemy i oczywiście brudzimy się. Nie ukrywamy, że oprócz bezpieczeństwa...', 'offset': 2581, 'errorLength': 3, 'category': 'WORD_ORDER', 'ruleIssueType': 'style', 'sentence': 'Poza rzeczamy typowo technologicznymi, dodatkowo eksperymentujemy, rozwiązujemy zagadki, malujemy, kleimy, wycinamy, majsterkujemy i oczywiście brudzimy się.'}),\n", + " Match({'ruleId': 'SENTENCE_WHITESPACE', 'message': 'Dodaj spację między zdaniami', 'replacements': [' Półkolonie'], 'offsetInContext': 43, 'context': '...wodniego i wprowadzają wyjątkowy klimat.Półkolonie, które organizujemy w Oleśnicy, Kiełczo...', 'offset': 3019, 'errorLength': 10, 'category': 'TYPOGRAPHY', 'ruleIssueType': 'whitespace', 'sentence': 'Półkolonie, które organizujemy w Oleśnicy, Kiełczowie i Wrocławiu są skierowane przede wszystkim do rodziców, którzy szukają czegoś więcej niż przechowania dzieci.'}),\n", + " Match({'ruleId': 'SKROTOWCE_BEZ_DYWIZU', 'message': 'Prawdopodobny błąd zapisu odmiany; skrótowce odmieniamy z dywizem:\"KATEGORIEB-log\".', 'replacements': ['KATEGORIEB-log'], 'offsetInContext': 43, 'context': '...ducation Rynek 48/111, 56-400 Oleśnica #KATEGORIEBlog Półkolonie Kontakt O nas #OFERTAPółkolo...', 'offset': 3453, 'errorLength': 13, 'category': 'SPELLING', 'ruleIssueType': 'misspelling', 'sentence': 'ZAPISY NA PÓŁKOLONIE 727 936 890 biuro@skyblue.education Rynek 48/111, 56-400 Oleśnica #KATEGORIEBlog Półkolonie Kontakt O nas #OFERTAPółkolonie Programowanie – Minecraft Języki obce dla dorosłych Angielski dla dzieci #BEZPIECZEŃSTWORegulamin Polityka prywatności © SKY BLUE 2020.'}),\n", + " Match({'ruleId': 'SKROTOWCE_BEZ_DYWIZU', 'message': 'Prawdopodobny błąd zapisu odmiany; skrótowce odmieniamy z dywizem:\"OFERTAP-ółkolonie\".', 'replacements': ['OFERTAP-ółkolonie'], 'offsetInContext': 43, 'context': '...KATEGORIEBlog Półkolonie Kontakt O nas #OFERTAPółkolonie Programowanie – Minecraft Języki obce d...', 'offset': 3493, 'errorLength': 16, 'category': 'SPELLING', 'ruleIssueType': 'misspelling', 'sentence': 'ZAPISY NA PÓŁKOLONIE 727 936 890 biuro@skyblue.education Rynek 48/111, 56-400 Oleśnica #KATEGORIEBlog Półkolonie Kontakt O nas #OFERTAPółkolonie Programowanie – Minecraft Języki obce dla dorosłych Angielski dla dzieci #BEZPIECZEŃSTWORegulamin Polityka prywatności © SKY BLUE 2020.'}),\n", + " Match({'ruleId': 'SKROTOWCE_BEZ_DYWIZU', 'message': 'Prawdopodobny błąd zapisu odmiany; skrótowce odmieniamy z dywizem:\"BEZPIECZEŃSTWOR-egulamin\".', 'replacements': ['BEZPIECZEŃSTWOR-egulamin'], 'offsetInContext': 43, 'context': '...bce dla dorosłych Angielski dla dzieci #BEZPIECZEŃSTWORegulamin Polityka prywatności © SKY BLUE 2020. A...', 'offset': 3584, 'errorLength': 23, 'category': 'SPELLING', 'ruleIssueType': 'misspelling', 'sentence': 'ZAPISY NA PÓŁKOLONIE 727 936 890 biuro@skyblue.education Rynek 48/111, 56-400 Oleśnica #KATEGORIEBlog Półkolonie Kontakt O nas #OFERTAPółkolonie Programowanie – Minecraft Języki obce dla dorosłych Angielski dla dzieci #BEZPIECZEŃSTWORegulamin Polityka prywatności © SKY BLUE 2020.'})]\n" + ] + }, + { + "data": { + "text/plain": [ + "[Match({'ruleId': 'NIETYPOWA_KOMBINACJA_DUZYCH_I_MALYCH_LITER', 'message': 'Nietypowa kombinacja małych i dużych liter. Czy nie powinno być: \"półkolonieróżne\"?', 'replacements': ['półkolonieróżne'], 'offsetInContext': 43, 'context': '...dorosłych Półkolonie Blog O nas Kontakt PółkolonieRóżne Jak wyglądają aktywności i warsztaty po...', 'offset': 316, 'errorLength': 15, 'category': 'CASING', 'ruleIssueType': 'misspelling', 'sentence': '- Sky Blue Education Blog Półkolonie Kontakt O nas Programowanie Minecraft Python Tworzenie stron Języki obce Dla dzieci Dla dorosłych Programowanie Minecraft Python Tworzenie stron Języki obce Dla dzieci Dla dorosłych Półkolonie Blog O nas Kontakt PółkolonieRóżne Jak wyglądają aktywności i warsztaty podczas półkolonii Sky Blue?'}),\n", + " Match({'ruleId': 'UPPERCASE_SENTENCE_START', 'message': 'To zdanie nie zaczyna się wielką literą', 'replacements': ['Zobacz'], 'offsetInContext': 43, 'context': '... warsztaty podczas półkolonii Sky Blue? zobacz także: Jak skutecznie wpłynąć na efekty...', 'offset': 398, 'errorLength': 6, 'category': 'CASING', 'ruleIssueType': 'typographical', 'sentence': 'zobacz także: Jak skutecznie wpłynąć na efektywność nauki u uczniów (osiem teorii motywacyjnych)?'}),\n", + " Match({'ruleId': 'ZDANIA_ZLOZONE', 'message': 'W tym zdaniu złożonym brakuje przecinka lub spójnika między jednym czasownikiem („bierzemy”) a drugim („planując”).', 'replacements': [], 'offsetInContext': 43, 'context': '...wacyjnych)? Jest kilka elementów, które bierzemy pod uwagę planując aktywności dla dzieci. Po pierwsze i najważniejsze, szukamy fo...', 'offset': 524, 'errorLength': 50, 'category': 'PUNCTUATION', 'ruleIssueType': 'typographical', 'sentence': 'Jest kilka elementów, które bierzemy pod uwagę planując aktywności dla dzieci.'}),\n", + " Match({'ruleId': 'ZDANIA_ZLOZONE', 'message': 'W tym zdaniu złożonym brakuje przecinka lub spójnika między jednym czasownikiem („widział”) a drugim („jest”).', 'replacements': [], 'offsetInContext': 43, 'context': '...wo znalezienie seansu, którego nikt nie widział jest w zasadzie niemożliwe. Często rezygnujemy z różnych pomysłów, ...', 'offset': 919, 'errorLength': 35, 'category': 'PUNCTUATION', 'ruleIssueType': 'typographical', 'sentence': 'Dodatkowo znalezienie seansu, którego nikt nie widział jest w zasadzie niemożliwe.'}),\n", + " Match({'ruleId': 'ZDANIA_ZLOZONE', 'message': 'W tym zdaniu złożonym brakuje przecinka lub spójnika między jednym czasownikiem („planując”) a drugim („tworzymy”).', 'replacements': [], 'offsetInContext': 43, 'context': '...z będą mieć z niego frajdę. Po trzecie, planując każdy dzień tworzymy odpowiedni balans pomiędzy rodzajami warsztatów. Te wymagające komputera mieszamy z krea...', 'offset': 1856, 'errorLength': 78, 'category': 'PUNCTUATION', 'ruleIssueType': 'typographical', 'sentence': 'Po trzecie, planując każdy dzień tworzymy odpowiedni balans pomiędzy rodzajami warsztatów.'}),\n", + " Match({'ruleId': 'ZDANIA_ZLOZONE', 'message': 'W tym zdaniu złożonym brakuje przecinka lub spójnika między jednym czasownikiem („Układając”) a drugim („dbamy”).', 'replacements': [], 'offsetInContext': 43, 'context': '... z kreatywnymi i manualnymi wyzwaniami. Układając szczegółowy harmonogram dbamy o odpowiednią dynamikę, propocję i różnorodność.Po czwarte, por...', 'offset': 2007, 'errorLength': 63, 'category': 'PUNCTUATION', 'ruleIssueType': 'typographical', 'sentence': 'Układając szczegółowy harmonogram dbamy o odpowiednią dynamikę, propocję i różnorodność.'}),\n", + " Match({'ruleId': 'POZA_TYM', 'message': 'Prawdopodobnie zbędny przecinek. Poprawnie: \"Po czwarte poruszamy\".', 'replacements': ['Po czwarte poruszamy'], 'offsetInContext': 43, 'context': '...ednią dynamikę, propocję i różnorodność.Po czwarte, poruszamy się w świecie nowych technologii. Z jed...', 'offset': 2095, 'errorLength': 21, 'category': 'PUNCTUATION', 'ruleIssueType': 'typographical', 'sentence': 'Po czwarte, poruszamy się w świecie nowych technologii.'}),\n", + " Match({'ruleId': 'POZA_TYM', 'message': 'Prawdopodobnie zbędny przecinek. Poprawnie: \"Poza rzeczamy typowo technologicznymi dodatkowo\".', 'replacements': ['Poza rzeczamy typowo technologicznymi dodatkowo'], 'offsetInContext': 43, 'context': '...o wielu aktywności, które organizujemy. Poza rzeczamy typowo technologicznymi, dodatkowo eksperymentujemy, rozwiązujemy zagadki,...', 'offset': 2428, 'errorLength': 48, 'category': 'PUNCTUATION', 'ruleIssueType': 'typographical', 'sentence': 'Poza rzeczamy typowo technologicznymi, dodatkowo eksperymentujemy, rozwiązujemy zagadki, malujemy, kleimy, wycinamy, majsterkujemy i oczywiście brudzimy się.'}),\n", + " Match({'ruleId': 'SIE_SENT_END', 'message': 'Zaimek „się” nie powinien znajdować się na końcu zdania.', 'replacements': [], 'offsetInContext': 43, 'context': '...my, majsterkujemy i oczywiście brudzimy się. Nie ukrywamy, że oprócz bezpieczeństwa...', 'offset': 2581, 'errorLength': 3, 'category': 'WORD_ORDER', 'ruleIssueType': 'style', 'sentence': 'Poza rzeczamy typowo technologicznymi, dodatkowo eksperymentujemy, rozwiązujemy zagadki, malujemy, kleimy, wycinamy, majsterkujemy i oczywiście brudzimy się.'}),\n", + " Match({'ruleId': 'SENTENCE_WHITESPACE', 'message': 'Dodaj spację między zdaniami', 'replacements': [' Półkolonie'], 'offsetInContext': 43, 'context': '...wodniego i wprowadzają wyjątkowy klimat.Półkolonie, które organizujemy w Oleśnicy, Kiełczo...', 'offset': 3019, 'errorLength': 10, 'category': 'TYPOGRAPHY', 'ruleIssueType': 'whitespace', 'sentence': 'Półkolonie, które organizujemy w Oleśnicy, Kiełczowie i Wrocławiu są skierowane przede wszystkim do rodziców, którzy szukają czegoś więcej niż przechowania dzieci.'}),\n", + " Match({'ruleId': 'SKROTOWCE_BEZ_DYWIZU', 'message': 'Prawdopodobny błąd zapisu odmiany; skrótowce odmieniamy z dywizem:\"KATEGORIEB-log\".', 'replacements': ['KATEGORIEB-log'], 'offsetInContext': 43, 'context': '...ducation Rynek 48/111, 56-400 Oleśnica #KATEGORIEBlog Półkolonie Kontakt O nas #OFERTAPółkolo...', 'offset': 3453, 'errorLength': 13, 'category': 'SPELLING', 'ruleIssueType': 'misspelling', 'sentence': 'ZAPISY NA PÓŁKOLONIE 727 936 890 biuro@skyblue.education Rynek 48/111, 56-400 Oleśnica #KATEGORIEBlog Półkolonie Kontakt O nas #OFERTAPółkolonie Programowanie – Minecraft Języki obce dla dorosłych Angielski dla dzieci #BEZPIECZEŃSTWORegulamin Polityka prywatności © SKY BLUE 2020.'}),\n", + " Match({'ruleId': 'SKROTOWCE_BEZ_DYWIZU', 'message': 'Prawdopodobny błąd zapisu odmiany; skrótowce odmieniamy z dywizem:\"OFERTAP-ółkolonie\".', 'replacements': ['OFERTAP-ółkolonie'], 'offsetInContext': 43, 'context': '...KATEGORIEBlog Półkolonie Kontakt O nas #OFERTAPółkolonie Programowanie – Minecraft Języki obce d...', 'offset': 3493, 'errorLength': 16, 'category': 'SPELLING', 'ruleIssueType': 'misspelling', 'sentence': 'ZAPISY NA PÓŁKOLONIE 727 936 890 biuro@skyblue.education Rynek 48/111, 56-400 Oleśnica #KATEGORIEBlog Półkolonie Kontakt O nas #OFERTAPółkolonie Programowanie – Minecraft Języki obce dla dorosłych Angielski dla dzieci #BEZPIECZEŃSTWORegulamin Polityka prywatności © SKY BLUE 2020.'}),\n", + " Match({'ruleId': 'SKROTOWCE_BEZ_DYWIZU', 'message': 'Prawdopodobny błąd zapisu odmiany; skrótowce odmieniamy z dywizem:\"BEZPIECZEŃSTWOR-egulamin\".', 'replacements': ['BEZPIECZEŃSTWOR-egulamin'], 'offsetInContext': 43, 'context': '...bce dla dorosłych Angielski dla dzieci #BEZPIECZEŃSTWORegulamin Polityka prywatności © SKY BLUE 2020. A...', 'offset': 3584, 'errorLength': 23, 'category': 'SPELLING', 'ruleIssueType': 'misspelling', 'sentence': 'ZAPISY NA PÓŁKOLONIE 727 936 890 biuro@skyblue.education Rynek 48/111, 56-400 Oleśnica #KATEGORIEBlog Półkolonie Kontakt O nas #OFERTAPółkolonie Programowanie – Minecraft Języki obce dla dorosłych Angielski dla dzieci #BEZPIECZEŃSTWORegulamin Polityka prywatności © SKY BLUE 2020.'})]" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "def find_errors(website_url):\n", - " return []" + "import re\n", + "import requests\n", + "from bs4 import BeautifulSoup\n", + "import language_tool_python\n", + "import pprint\n", + "\n", + "\n", + "def fetch_page_content(url):\n", + " response = requests.get(url)\n", + " soup = BeautifulSoup(response.content, 'html.parser')\n", + "\n", + " for unwanted in soup([\"script\", \"style\"]):\n", + " unwanted.decompose()\n", + "\n", + " page_text = soup.get_text()\n", + "\n", + " clean_text = re.sub(r\"\\s+\", \" \", page_text)\n", + " return clean_text\n", + "\n", + "\n", + "def identify_language_errors(site_url):\n", + " issues = []\n", + " page_content = fetch_page_content(site_url)\n", + " language_tool = language_tool_python.LanguageTool('en-NZ')\n", + " matches = language_tool.check(page_content)\n", + " for match in matches:\n", + " if match.ruleId != 'MORFOLOGIK_RULE_EN_US':\n", + " issues.append(match)\n", + "\n", + " pprint.pprint(issues)\n", + " return issues\n", + "\n", + "identify_language_errors('https://www.mountainjade.co.nz/pages/greenstone-meanings-and-designs/toki-adze')\n" ] }, { @@ -170,7 +283,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.10" + "version": "3.11.9" }, "subtitle": "15. Korekta gramatyczna", "title": "Komputerowe wspomaganie tłumaczenia",