cw 01 w trakcie

This commit is contained in:
Jakub Pokrywka 2022-02-18 16:28:22 +01:00
parent 732b134412
commit 884e6611d0
6 changed files with 917 additions and 0 deletions

View File

@ -0,0 +1,92 @@
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"![Logo 1](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech1.jpg)\n",
"<div class=\"alert alert-block alert-info\">\n",
"<h1> Ekstrakcja informacji </h1>\n",
"<h2> 0. <i>Informacje na temat przedmiotu</i> [ćwiczenia]</h2> \n",
"<h3> Jakub Pokrywka (2022)</h3>\n",
"</div>\n",
"\n",
"![Logo 2](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech2.jpg)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Informacje ogólne"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Kontakt z prowadzącym\n",
"\n",
"prowadzący: mgr inż. Jakub Pokrywka\n",
"\n",
"Najlepiej kontaktowąć się ze mną przez MS TEAMS prywatnych wiadomościach lub mailowo jp40407@st.amu.edu.pl. Odpisuję co 2-3 dni. Można też umówić się stacjonarnie, na zdzwonko w godzinach dyżuru (wt 12.00-13.00) lub umówić się w innym terminie.\n",
"\n",
"\n",
"## Literatura\n",
"Polecana literatura do przedmiotu:\n",
"\n",
"\n",
"\n",
"## Zaliczenie\n",
"\n",
"\n",
"\n",
"Do zdobycia będzie conajmniej 600 punktów.\n",
"\n",
"Ocena:\n",
"\n",
"- -299 — 2\n",
"\n",
"- 300-349 — 3\n",
"\n",
"- 350-399 — 3+\n",
"\n",
"- 400-449 — 4\n",
"\n",
"- 450—499 — 4+\n",
"\n",
"- 500- — 5\n",
"\n",
"\n",
"**Żeby zaliczyć przedmiot należy pojawiać się na laboratoriach. Maksymalna liczba nieobecności to 3. Obecność będę sprawdzał co zajęcia. Jeżeli kogoś nie będzie więcej niż 3 razy, to nie będzie miał zaliczonego przedmiotu** \n"
]
}
],
"metadata": {
"author": "Jakub Pokrywka",
"email": "kubapok@wmi.amu.edu.pl",
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"lang": "pl",
"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.8.3"
},
"subtitle": "0.Informacje na temat przedmiotu[ćwiczenia]",
"title": "Ekstrakcja informacji",
"year": "2021"
},
"nbformat": 4,
"nbformat_minor": 4
}

670
cw/01_Język.ipynb Normal file

File diff suppressed because one or more lines are too long

70
cw/01_materialy/a.txt Normal file
View File

@ -0,0 +1,70 @@
# tekst pochodzi z https://wolnelektury.pl/media/book/txt/baczynski-orfeusz-w-lesie.txt
Pod tym dębem, pod stuletnim, wśród gałęzi skrył się,
a deszcz pierzchnął, siedmiobarwnym łukiem nad nim wzbił się.
Ledwie okiem w nim utonął, w barwnej brodząc nucie,
blady błękit tęczę wchłonął, dąb zawołał: «Zbudź się.
Czas na ciebie, czeka lira, nowej pieśni głodna,
wdrąż się w ziemię, bij o niebo, serca przepal do dna.
Ze mną, boski Orfeuszu, zmierz muzyczną siłę,
mnie pokonasz — śmierć przemożesz, którą zwyciężyłem.
Popatrz: uschnie młoda łoza, runie smukła jodła,
patrz: topole śmierć podcięła, ale mnie nie zmogła.
W niebo śpiewem rosnę, w ziemię korzeniami wrastam,
me milczenie jest strumieniem, a ma pieśń liściasta!»
Więc Orfeusz chwycił lirę rozmodloną dłonią,
strunę trącił, już obłoki przebudzone dzwonią.
Jeszcze głosu nie wydobył, już na wargi drżące,
jak na liście, promieniście wbiega młode słońce.
I pieśń począł.
Wrył się w ziemię takim jasnym tonem,
że wzleciały ponad drzewa krety uskrzydlone,
że strumienie, co pod ziemią ciemno się poczęły,
nad brzegami, co je więżą, w lirę się wygięły.
Wzniósł się w górę, ręką jeno ciężar strun odmierzał,
a już wiatrem swego głosu w żołędzie uderzał,
a żołędzie melodyjnie trącając się wzajem,
rozdzwoniły włosy wierzby nad leśnym ruczajem,
a w tych włosach smutek nagły wylągł się tak cicho,
że nie będąc jeszcze szeptem, szeptał: «Eurydyko…»
Jeno woda pochwyciła to czułe wezwanie,
a już w kwiaty je wkropliła na leśnej polanie,
a tam trawy zielonawe w korzenie wszeptały
i już drzewa jej imieniem szumieć poczynały.
Targnął strunę, bo nie szeptem śmierć miał głuchą przemóc,
lecz wołaniem tak wysokim, jak gwiazda nad ziemią:
«Chcecie? Rozpacz wam wyśpiewam: płomieniste góry
rosną we mnie, burza wraża w ziemię kły wichury.
Chcecie? Błyskawicą chłostam, serca gryzę gromem,
w ręku piorun mam i rozpacz w oku nieruchomem,
a ta rozpacz w gniew urasta, a ten gniew jest burzą
przeciw tobie, której kształty czarno się marmurzą».
Już nie słowem, ale głosem w twardą korę nieba
tłukł Orfeusz, aż sypnęła ciężkich gwiazd ulewa…
Wtedy przerwał, bowiem uczuł, że mu głos uwięźnie
w niebie drżącym jeszcze…
Ale dąb milczał potężniej.
6. Porażka
«Eurydyko, porażka jest słodka.
Chwała tobie, któryś mnie zwyciężył!»
Mijał strumień. Trzcina wiała wiotka.
Las się kończył i zaczynał księżyc.
A te skały, co wyrosły ostre,
zdały mu się czułym zapewnieniem.
A tę noc obejmował jak siostrę,
nazywał najczulszym imieniem.
I przemierzał strunami śpiącemi
oddalenie nie objęte słowem,
i jak klucz do zamkniętych podziemi
niósł na wargach milczenie dębowe.
910 luty 1942

69
cw/01_materialy/b.txt Normal file
View File

@ -0,0 +1,69 @@
# tekst pochodzi z https://pl.wikipedia.org/wiki/UTF-8
UTF-8 (ang. 8-bit Unicode Transformation Format) system kodowania Unicode, wykorzystujący od 1 do 4 bajtów do zakodowania pojedynczego znaku, w pełni kompatybilny z ASCII. Jest najczęściej wykorzystywany do przechowywania napisów w plikach i komunikacji sieciowej.
Spis treści
1 Zalety i wady
1.1 Zalety
1.2 Wady
2 Sposób kodowania
3 Przykład
4 Zobacz też
5 Linki zewnętrzne
Zalety i wady
Zalety
Każdy tekst w ASCII jest tekstem w UTF-8.
Żaden znak spoza ASCII nie zawiera bajtu z ASCII.
Zachowuje porządek sortowania UCS-4.
Typowy tekst ISO-Latin-X rozrasta się w bardzo niewielkim stopniu po przekonwertowaniu do UTF-8.
Nie zawiera bajtów 0xFF i 0xFE, więc łatwo można go odróżnić od tekstu UTF-16.
Znaki o kodzie różnym od 0 nie zawierają bajtu 0, co pozwala stosować UTF-8 w ciągach zakończonych zerem.
O każdym bajcie wiadomo, czy jest początkiem znaku, czy też leży w jego środku, co nie jest dostępne np. w kodowaniu EUC.
Nie ma problemów z little endian vs big endian.
Jest domyślnym kodowaniem w XML (również w jego aplikacjach: XHTML, SVG, XSL, CML, MathML).
Wady
Znaki CJK zajmują po 3 bajty zamiast 2 w kodowaniach narodowych.
Znaki alfabetów niełacińskich zajmują po 2 bajty zamiast jednego w kodowaniach narodowych.
UTF-8 nie używa przesunięć zasięgów, co stanowi dodatkowe utrudnienie dla implementacji UTF-8 (szczegóły poniżej)
Sposób kodowania
Mapowanie znaków Unicode na ciągi bajtów:
0x00 do 0x7F bity 0xxxxxxx, gdzie kolejne „x” to bity licząc od najwyższego
0x80 do 0x7FF bity 110xxxxx 10xxxxxx
0x800 do 0xFFFF bity 1110xxxx 10xxxxxx 10xxxxxx
0x10000 do 0x1FFFFF bity 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
0x200000 do 0x3FFFFFF bity 111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
0x4000000 do 0x7FFFFFFF bity 1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
Znaki z przedziału ASCII (0 do 127) kodowane są jako jeden bajt, czyli m.in. litery alfabetu łacińskiego. Polskie znaki diakrytyczne kodowane już są jako dwa bajty. W listopadzie 2003 roku kodowanie UTF-8 zostało ograniczone zgodnie z RFC 3629 ↓ do 0x10FFFF pozycji, w celu zapewnienia zgodności z ograniczeniami systemu UTF-16. Rezultatem było usunięcie wszystkich sekwencji złożonych z 5 i 6 bajtów oraz około połowy sekwencji 4-bajtowych. W ten sposób pozostało dokładnie 17 • 65536 - 2048, czyli 1 112 064 pozycji znaków możliwych do zakodowania w UTF-8. Pomniejszenie liczby kodów o 2048 wynika z zarezerwowania kodów z zakresu od U+D800 do U+DFFF dla kodowania UTF-16.
Teoretycznie w UTF-8 ten sam znak można zapisać na kilka sposobów. Przykładowo znak ASCII / (ukośnik) można zapisać jako:
00101111
11000000 10101111
11100000 10000000 10101111itd.
Stanowi to zagrożenie bezpieczeństwa m.in. dla serwerów, które sprawdzają obecność znaku / w ścieżkach. Z tego powodu standard UTF-8 przewiduje, że poprawny jest wyłącznie najkrótszy możliwy sposób zapisu, a każdy program musi odrzucać znaki zapisane dłuższymi sekwencjami niż minimalna.
Problemu tego można byłoby uniknąć, przy okazji skracając nieznacznie wielkość danych, jeśli wykorzystano by zasadę przesunięć typu:
sekwencje 1-bajtowe kodują 0x80 (128) różnych znaków od 0x00 do 0x7F
sekwencje 2-bajtowe kodują 0x800 (2048) różnych znaków od 0x80 do 0x87F
sekwencje 3-bajtowe kodują 0x10000 (65536) różnych znaków od 0x880 do 0x1087F
itd.
Przykład
Kodowanie na podstawie znaku euro €:
Znak € w Unicode ma oznaczenie U+20AC.
Zgodnie z informacjami w poprzednim podrozdziale taka wartość jest możliwa do zakodowania na 3 bajtach.
Liczba szesnastkowa 20AC to binarnie 0010 0000 1010 1100 po uzupełnieniu wiodącymi zerami do 16 bitów, ponieważ tyle bitów trzeba zakodować na 3 bajtach w UTF-8.
Kodowanie na trzech bajtach wymaga użycia w pierwszym bajcie trzech wiodących bitów ustawionych na 1, a czwartego na 0 (1110…).
Pozostałe bity pierwszego bajtu pochodzą z najstarszych czterech bitów kodowanej wartości w Unicode, co daje (1110 0010), a reszta bitów dzielona jest na dwa bloki po 6 bitów każdy (…0000 1010 1100).
Do tych bloków dodawane są wiodące bity 10, by tworzyły następujące 8-bitowe wartości 1000 0010 i 1010 1100).
W ten sposób rezultatem są trzy bajty w postaci 1110 0010 1000 0010 1010 1100, co w systemie szesnastkowych przyjmuje postać E2 82 AC.
Poniższa tabela pozwala zrozumieć sposób kodowana różnej długości numerów kodowych Unicode w UTF-8.
Unicode Unicode binarnie UTF-8 binarnie
1. bajt 2. bajt 3. bajt 4. bajt UTF-8 szesnastkowo
$ U+0024 0100100 00100100 24
¢ U+00A2 000 10100010 11000010 10100010 C2 A2
€ U+20AC 00100000 10101100 11100010 10000010 10101100 E2 82 AC
𐍈 U+10348 00001 00000011 01001000 11110000 10010000 10001101 10001000 F0 90 8D 88

View File

@ -0,0 +1 @@
zażółć gęślą jaźń

View File

@ -0,0 +1,15 @@
Charles Baudelaire
O pierwszej nad ranem
tłum. Stefan Napierski
Nareszcie! sam jeden! Słychać już tylko przetaczanie się kilku zapóźnionych i wymęczonych dorożek. Na niewiele godzin uzyskamy milczenie, jeśli nawet nie spokój. Nareszcie! znikła tyrania twarzy ludzkiej i cierpieć będę już tylko przez samego siebie.
Nareszcie! zezwolono mi zatem rozprostować się w kąpieli ciemności! Naprzód podwójne zawarcie drzwi. Wydaje mi się, że to przekręcenie klucza wzmoże samotność moją i wzmocni barykady, które oto dzielą mnie od świata.
Straszliwe życie! Straszliwe miasto! Streśćmy powtórnie dzień: widzenie garstki literatów, z których jeden zapytywał mnie, czy można udać sie do Rosji drogą lądową (najwidoczniej sądził, że Rosja jest wyspą); wielkoduszna dysputa z kierownikiem pewnego czasopisma, który na każdy argument odpowiadał: „Tutaj, to partia ludzi uczciwych”, co zakłada milcząco, że wszystkie inne dzienniki redagują szubrawcy; ukłon, oddany jakimś dwudziestu osobom, z których piętnaście jest mi nieznanych; rozdawanie uścisku dłoni w tej samej proporcji, i to zaniedbawszy przez nieostrożność zaopatrzenia się wprzód w rękawiczki; wdrapanie się, gwoli zabicia czasu, podczas ulewy, na pięterko do baletniczki, która prosiła mnie o narysowanie jej kostiumu do *Venus*; ubieganie się w sposób przypochlebny o jednego z dyrektorów teatru, który powiedział, żegnając się ze mną: „Kto wie, czy nie powinien pan zwrócić się do Z…; jest to najbardziej ociężały, najgłupszy i najgłośniejszy z wszystkich mych autorów; z nim, być może, zdoła pan co osiągnąć. Niech go pan odszuka, a potem się zobaczy”; przechwalanie się (po co?) kilkoma szkaradnymi czynami, których nie popełniłem, i tchórzliwe zaprzeczenie kilku innych występków, których dokonałem z radością, przestępstwo fanfaronady, zbrodnia na czci ludzkiej; odmówienie przyjacielowi łatwej przysługi i udzielenie poparcia na piśmie skończonemu łotrowi; uf! czyżby to wreszcie koniec?
Niezadowolony z siebie i niezadowolony z wszystkich, pragnąłbym siebie odkupić i odzyskać nieco dumy w milczeniu i samotności nocy. Dusze tych, których miłowałem, dusze tych, których opiewałem, skrzepcie mnie, podtrzymajcie, oddalcie ode mnie kłamstwo i zatruwające wyziewy świata; i ty, Panie mój i Boże! użycz mi łaski zestawienia kilku pięknych wierszy, które by udowodniły mi, że nie jestem ostatnim z ludzi, że gorszy nie jestem od tych, którymi gardzę.