a
This commit is contained in:
commit
ca199d89b3
109
00_Informacje_na_temat_przedmiotu.ipynb
Normal file
109
00_Informacje_na_temat_przedmiotu.ipynb
Normal file
@ -0,0 +1,109 @@
|
|||||||
|
{
|
||||||
|
"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",
|
||||||
|
"- Koehn, P. (2009). Statistical Machine Translation. Cambridge: Cambridge University Press. doi:10.1017/CBO9780511815829\n",
|
||||||
|
"- Philipp Koehn. \"Neural Machine Translation\". 2020.\n",
|
||||||
|
"- https://web.stanford.edu/~jurafsky/slp3/3.pdf\n",
|
||||||
|
"- Jacob Devlin, Ming-Wei Chang, Kenton Lee, Kristina Toutanova. 2019. BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding. North American Association for Computational Linguistics (NAACL).\n",
|
||||||
|
"- Colin Raffel, Noam Shazeer, Adam Roberts, Katherine Lee, Sharan Narang, Michael Matena, Yanqi Zhou, Wei Li, Peter J. Liu. 2020. Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer. Journal of Machine Learning Research vol 21, number 140, pages 1-67.\n",
|
||||||
|
"- Radford, Alec and Wu, Jeff and Child, Rewon and Luan, David and Amodei, Dario and Sutskever, Ilya. 2019. Language Models are Unsupervised Multitask Learners\n",
|
||||||
|
"- https://jalammar.github.io/illustrated-transformer/\n",
|
||||||
|
"- https://www.youtube.com/watch?v=-9evrZnBorM&ab_channel=YannicKilcher\n",
|
||||||
|
"- https://www.youtube.com/watch?v=u1_qMdb0kYU&ab_channel=YannicKilcher\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"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": null,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": []
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"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
|
||||||
|
}
|
779
01_Kodowanie_tekstu.ipynb
Normal file
779
01_Kodowanie_tekstu.ipynb
Normal file
File diff suppressed because one or more lines are too long
70
01_materialy/a.txt
Normal file
70
01_materialy/a.txt
Normal 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.
|
||||||
|
|
||||||
|
9–10 luty 1942
|
69
01_materialy/b.txt
Normal file
69
01_materialy/b.txt
Normal 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
|
4484
01_materialy/magiczny-ogrod.txt
Normal file
4484
01_materialy/magiczny-ogrod.txt
Normal file
File diff suppressed because it is too large
Load Diff
1
01_materialy/polski_tekst.txt
Normal file
1
01_materialy/polski_tekst.txt
Normal file
@ -0,0 +1 @@
|
|||||||
|
zażółć gęślą jaźń
|
Loading…
Reference in New Issue
Block a user