Aktualizacja notatnika

This commit is contained in:
Filip Gralinski 2022-03-08 18:09:12 +01:00
parent cfd8f7b81b
commit 06fb4fbeb1
17 changed files with 282 additions and 663 deletions

File diff suppressed because one or more lines are too long

View File

@ -9,7 +9,7 @@ Używać będziemy generatorów.
*Pytanie* Dlaczego generatory zamiast list? *Pytanie* Dlaczego generatory zamiast list?
#+BEGIN_SRC python :session mysession :exports both :results raw drawer #+BEGIN_SRC ipython :session mysession :exports both :results raw drawer
import requests import requests
url = 'https://wolnelektury.pl/media/book/txt/pan-tadeusz.txt' url = 'https://wolnelektury.pl/media/book/txt/pan-tadeusz.txt'
@ -31,7 +31,7 @@ Powrót pani
*** Znaki *** Znaki
#+BEGIN_SRC python :session mysession :exports both :results raw drawer #+BEGIN_SRC ipython :session mysession :exports both :results raw drawer
from itertools import islice from itertools import islice
def get_characters(t): def get_characters(t):
@ -45,7 +45,7 @@ Powrót pani
['K', 's', 'i', 'ę', 'g', 'a', ' ', 'p', 'i', 'e', 'r', 'w', 's', 'z', 'a', '\r', '\n', '\r', '\n', '\r', '\n', '\r', '\n', 'G', 'o', 's', 'p', 'o', 'd', 'a', 'r', 's', 't', 'w', 'o', '\r', '\n', '\r', '\n', 'P', 'o', 'w', 'r', 'ó', 't', ' ', 'p', 'a', 'n', 'i'] ['K', 's', 'i', 'ę', 'g', 'a', ' ', 'p', 'i', 'e', 'r', 'w', 's', 'z', 'a', '\r', '\n', '\r', '\n', '\r', '\n', '\r', '\n', 'G', 'o', 's', 'p', 'o', 'd', 'a', 'r', 's', 't', 'w', 'o', '\r', '\n', '\r', '\n', 'P', 'o', 'w', 'r', 'ó', 't', ' ', 'p', 'a', 'n', 'i']
:end: :end:
#+BEGIN_SRC python :session mysession :exports both :results raw drawer #+BEGIN_SRC ipython :session mysession :exports both :results raw drawer
from collections import Counter from collections import Counter
c = Counter(get_characters(pan_tadeusz)) c = Counter(get_characters(pan_tadeusz))
@ -65,7 +65,7 @@ Napiszmy pomocniczą funkcję, która zwraca *listę frekwencyjną*.
Counter({' ': 63444, 'a': 30979, 'i': 29353, 'e': 25343, 'o': 23050, 'z': 22741, 'n': 15505, 'r': 15328, 's': 15255, 'w': 14625, 'c': 14153, 'y': 13732, 'k': 12362, 'd': 11465, '\r': 10851, '\n': 10851, 't': 10757, 'm': 10269, 'ł': 10059, ',': 9130, 'p': 8031, 'u': 7699, 'l': 6677, 'j': 6586, 'b': 5753, 'ę': 5534, 'ą': 4794, 'g': 4775, 'h': 3915, 'ż': 3334, 'ó': 3097, 'ś': 2524, '.': 2380, 'ć': 1956, ';': 1445, 'P': 1265, 'W': 1258, ':': 1152, '!': 1083, 'S': 1045, 'T': 971, 'I': 795, 'N': 793, 'Z': 785, 'J': 729, '—': 720, 'A': 698, 'K': 683, 'ń': 651, 'M': 585, 'B': 567, 'O': 567, 'C': 556, 'D': 552, '«': 540, '»': 538, 'R': 489, '?': 441, 'ź': 414, 'f': 386, 'G': 358, 'L': 316, 'H': 309, 'Ż': 219, 'U': 184, '…': 157, '*': 150, '(': 76, ')': 76, 'Ś': 71, 'F': 47, 'é': 43, '-': 33, 'Ł': 24, 'E': 23, '/': 19, 'Ó': 13, '8': 10, '9': 8, '2': 6, 'v': 5, 'Ź': 4, '1': 4, '3': 3, 'x': 3, 'V': 3, '7': 2, '4': 2, '5': 2, 'q': 2, 'æ': 2, 'à': 1, 'Ć': 1, '6': 1, '0': 1}) Counter({' ': 63444, 'a': 30979, 'i': 29353, 'e': 25343, 'o': 23050, 'z': 22741, 'n': 15505, 'r': 15328, 's': 15255, 'w': 14625, 'c': 14153, 'y': 13732, 'k': 12362, 'd': 11465, '\r': 10851, '\n': 10851, 't': 10757, 'm': 10269, 'ł': 10059, ',': 9130, 'p': 8031, 'u': 7699, 'l': 6677, 'j': 6586, 'b': 5753, 'ę': 5534, 'ą': 4794, 'g': 4775, 'h': 3915, 'ż': 3334, 'ó': 3097, 'ś': 2524, '.': 2380, 'ć': 1956, ';': 1445, 'P': 1265, 'W': 1258, ':': 1152, '!': 1083, 'S': 1045, 'T': 971, 'I': 795, 'N': 793, 'Z': 785, 'J': 729, '—': 720, 'A': 698, 'K': 683, 'ń': 651, 'M': 585, 'B': 567, 'O': 567, 'C': 556, 'D': 552, '«': 540, '»': 538, 'R': 489, '?': 441, 'ź': 414, 'f': 386, 'G': 358, 'L': 316, 'H': 309, 'Ż': 219, 'U': 184, '…': 157, '*': 150, '(': 76, ')': 76, 'Ś': 71, 'F': 47, 'é': 43, '-': 33, 'Ł': 24, 'E': 23, '/': 19, 'Ó': 13, '8': 10, '9': 8, '2': 6, 'v': 5, 'Ź': 4, '1': 4, '3': 3, 'x': 3, 'V': 3, '7': 2, '4': 2, '5': 2, 'q': 2, 'æ': 2, 'à': 1, 'Ć': 1, '6': 1, '0': 1})
:end: :end:
#+BEGIN_SRC python :session mysession :exports both :results raw drawer #+BEGIN_SRC ipython :session mysession :exports both :results raw drawer
from collections import Counter from collections import Counter
from collections import OrderedDict from collections import OrderedDict
@ -88,7 +88,7 @@ OrderedDict([(' ', 63444), ('a', 30979), ('i', 29353), ('e', 25343), ('o', 23050
:end: :end:
#+BEGIN_SRC python :session mysession :results file #+BEGIN_SRC ipython :session mysession :results file
import matplotlib.pyplot as plt import matplotlib.pyplot as plt
from collections import OrderedDict from collections import OrderedDict
@ -119,7 +119,7 @@ Co rozumiemy pod pojęciem słowa czy wyrazu, nie jest oczywiste. W praktyce zal
Załóżmy, że przez wyraz rozumieć będziemy nieprzerwany ciąg liter bądź cyfr (oraz gwiazdek Załóżmy, że przez wyraz rozumieć będziemy nieprzerwany ciąg liter bądź cyfr (oraz gwiazdek
— to za chwilę ułatwi nam analizę pewnego tekstu…). — to za chwilę ułatwi nam analizę pewnego tekstu…).
#+BEGIN_SRC python :session mysession :exports both :results raw drawer #+BEGIN_SRC ipython :session mysession :exports both :results raw drawer
from itertools import islice from itertools import islice
import regex as re import regex as re
@ -138,7 +138,7 @@ Załóżmy, że przez wyraz rozumieć będziemy nieprzerwany ciąg liter bądź
Zobaczmy 20 najczęstszych wyrazów. Zobaczmy 20 najczęstszych wyrazów.
#+BEGIN_SRC python :session mysession :results file #+BEGIN_SRC ipython :session mysession :results file
rang_freq_with_labels('pt-words-20', get_words(pan_tadeusz), top=20) rang_freq_with_labels('pt-words-20', get_words(pan_tadeusz), top=20)
#+END_SRC #+END_SRC
@ -147,7 +147,7 @@ Zobaczmy 20 najczęstszych wyrazów.
Zobaczmy pełny obraz, już bez etykiet. Zobaczmy pełny obraz, już bez etykiet.
#+BEGIN_SRC python :session mysession :results file #+BEGIN_SRC ipython :session mysession :results file
import matplotlib.pyplot as plt import matplotlib.pyplot as plt
from math import log from math import log
@ -172,7 +172,7 @@ Zobaczmy pełny obraz, już bez etykiet.
Widać, jak różne skale obejmuje ten wykres. Zastosujemy logarytm, Widać, jak różne skale obejmuje ten wykres. Zastosujemy logarytm,
najpierw tylko do współrzędnej $y$. najpierw tylko do współrzędnej $y$.
#+BEGIN_SRC python :session mysession :results file #+BEGIN_SRC ipython :session mysession :results file
import matplotlib.pyplot as plt import matplotlib.pyplot as plt
from math import log from math import log
@ -222,7 +222,7 @@ logarytmicznej dla **obu** osi, otrzymamy kształt zbliżony do linii prostej.
Tę własność tekstów nazywamy **prawem Zipfa**. Tę własność tekstów nazywamy **prawem Zipfa**.
#+BEGIN_SRC python :session mysession :results file #+BEGIN_SRC ipython :session mysession :results file
import matplotlib.pyplot as plt import matplotlib.pyplot as plt
from math import log from math import log
@ -249,7 +249,7 @@ Tę własność tekstów nazywamy **prawem Zipfa**.
Powiązane z prawem Zipfa prawo językowe opisuje zależność między Powiązane z prawem Zipfa prawo językowe opisuje zależność między
częstością użycia słowa a jego długością. Generalnie im krótsze słowo, tym częstsze. częstością użycia słowa a jego długością. Generalnie im krótsze słowo, tym częstsze.
#+BEGIN_SRC python :session mysession :results file #+BEGIN_SRC ipython :session mysession :results file
def freq_vs_length(name, g, top=None): def freq_vs_length(name, g, top=None):
freq = freq_list(g) freq = freq_list(g)
@ -294,7 +294,7 @@ po prostu na jednostkach, nie na ich podciągach.
Statystyki, które policzyliśmy dla pojedynczych liter czy wyrazów, możemy powtórzyć dla n-gramów. Statystyki, które policzyliśmy dla pojedynczych liter czy wyrazów, możemy powtórzyć dla n-gramów.
#+BEGIN_SRC python :session mysession :exports both :results raw drawer #+BEGIN_SRC ipython :session mysession :exports both :results raw drawer
def ngrams(iter, size): def ngrams(iter, size):
ngram = [] ngram = []
for item in iter: for item in iter:
@ -317,7 +317,7 @@ Zawsze powinniśmy się upewnić, czy jest jasne, czy chodzi o n-gramy znakowe c
*** 3-gramy znakowe *** 3-gramy znakowe
#+BEGIN_SRC python :session mysession :results file #+BEGIN_SRC ipython :session mysession :results file
log_rang_log_freq('pt-3-char-ngrams-log-log', ngrams(get_characters(pan_tadeusz), 3)) log_rang_log_freq('pt-3-char-ngrams-log-log', ngrams(get_characters(pan_tadeusz), 3))
#+END_SRC #+END_SRC
@ -326,7 +326,7 @@ Zawsze powinniśmy się upewnić, czy jest jasne, czy chodzi o n-gramy znakowe c
*** 2-gramy wyrazowe *** 2-gramy wyrazowe
#+BEGIN_SRC python :session mysession :results file #+BEGIN_SRC ipython :session mysession :results file
log_rang_log_freq('pt-2-word-ngrams-log-log', ngrams(get_words(pan_tadeusz), 2)) log_rang_log_freq('pt-2-word-ngrams-log-log', ngrams(get_words(pan_tadeusz), 2))
#+END_SRC #+END_SRC
@ -348,7 +348,7 @@ transkrybować manuskrypt, pozostaje sprawą dyskusyjną, natomiast wybór
takiego czy innego systemu transkrypcji nie powinien wpływać takiego czy innego systemu transkrypcji nie powinien wpływać
dramatycznie na analizę statystyczną. dramatycznie na analizę statystyczną.
#+BEGIN_SRC python :session mysession :exports both :results raw drawer #+BEGIN_SRC ipython :session mysession :exports both :results raw drawer
import requests import requests
voynich_url = 'http://www.voynich.net/reeds/gillogly/voynich.now' voynich_url = 'http://www.voynich.net/reeds/gillogly/voynich.now'
@ -370,28 +370,28 @@ dramatycznie na analizę statystyczną.
9 OR 9FAM ZO8 QOAR9 Q*R 8ARAM 29 [O82*]OM OPCC9 OP 9 OR 9FAM ZO8 QOAR9 Q*R 8ARAM 29 [O82*]OM OPCC9 OP
:end: :end:
#+BEGIN_SRC python :session mysession :results file #+BEGIN_SRC ipython :session mysession :results file
rang_freq_with_labels('voy-chars', get_characters(voynich)) rang_freq_with_labels('voy-chars', get_characters(voynich))
#+END_SRC #+END_SRC
#+RESULTS: #+RESULTS:
[[file:02_Jezyki/voy-chars.png]] [[file:02_Jezyki/voy-chars.png]]
#+BEGIN_SRC python :session mysession :results file #+BEGIN_SRC ipython :session mysession :results file
log_rang_log_freq('voy-log-log', get_words(voynich)) log_rang_log_freq('voy-log-log', get_words(voynich))
#+END_SRC #+END_SRC
#+RESULTS: #+RESULTS:
[[file:02_Jezyki/voy-log-log.png]] [[file:02_Jezyki/voy-log-log.png]]
#+BEGIN_SRC python :session mysession :results file #+BEGIN_SRC ipython :session mysession :results file
rang_freq_with_labels('voy-words-20', get_words(voynich), top=20) rang_freq_with_labels('voy-words-20', get_words(voynich), top=20)
#+END_SRC #+END_SRC
#+RESULTS: #+RESULTS:
[[file:02_Jezyki/voy-words-20.png]] [[file:02_Jezyki/voy-words-20.png]]
#+BEGIN_SRC python :session mysession :results file #+BEGIN_SRC ipython :session mysession :results file
log_rang_log_freq('voy-words-log-log', get_words(voynich)) log_rang_log_freq('voy-words-log-log', get_words(voynich))
#+END_SRC #+END_SRC
@ -406,7 +406,7 @@ Podstawowe litery są tylko cztery, reprezentują one nukleotydy, z których zbu
a, g, c, t. a, g, c, t.
#+BEGIN_SRC python :session mysession :exports both :results raw drawer #+BEGIN_SRC ipython :session mysession :exports both :results raw drawer
import requests import requests
dna_url = 'https://raw.githubusercontent.com/egreen18/NanO_GEM/master/rawGenome.txt' dna_url = 'https://raw.githubusercontent.com/egreen18/NanO_GEM/master/rawGenome.txt'
@ -423,7 +423,7 @@ a, g, c, t.
TATAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTA TATAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTAACCCTA
:end: :end:
#+BEGIN_SRC python :session mysession :results file #+BEGIN_SRC ipython :session mysession :results file
rang_freq_with_labels('dna-chars', get_characters(dna)) rang_freq_with_labels('dna-chars', get_characters(dna))
#+END_SRC #+END_SRC
@ -436,7 +436,7 @@ Nukleotydy rzeczywiście są jak litery, same w sobie nie niosą
znaczenia. Dopiero ciągi trzech nukleotydów, /tryplety/, kodują jeden znaczenia. Dopiero ciągi trzech nukleotydów, /tryplety/, kodują jeden
z dwudziestu aminokwasów. z dwudziestu aminokwasów.
#+BEGIN_SRC python :session mysession :results file #+BEGIN_SRC ipython :session mysession :results file
genetic_code = { genetic_code = {
'ATA':'I', 'ATC':'I', 'ATT':'I', 'ATG':'M', 'ATA':'I', 'ATC':'I', 'ATT':'I', 'ATG':'M',
'ACA':'T', 'ACC':'T', 'ACG':'T', 'ACT':'T', 'ACA':'T', 'ACC':'T', 'ACG':'T', 'ACT':'T',
@ -472,7 +472,7 @@ Z aminokwasów zakodowanych przez tryplet budowane są białka.
Maszyneria budująca białka czyta sekwencję aż do napotkania Maszyneria budująca białka czyta sekwencję aż do napotkania
trypletu STOP (_ powyżej). Taka sekwencja to /gen/. trypletu STOP (_ powyżej). Taka sekwencja to /gen/.
#+BEGIN_SRC python :session mysession :results file #+BEGIN_SRC ipython :session mysession :results file
def get_genes(triplets): def get_genes(triplets):
gene = [] gene = []
for ammino in triplets: for ammino in triplets:

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 7.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 5.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 6.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 8.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 41 KiB

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 7.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 8.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 6.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

After

Width:  |  Height:  |  Size: 9.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 7.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 8.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 7.8 KiB