From 2def5210d568279bb38890c2de282e171f4ff7dd Mon Sep 17 00:00:00 2001 From: Neil Smith Date: Wed, 16 Jul 2014 16:28:07 +0100 Subject: [PATCH] Made a few tweaks --- slides/caesar-break.html | 19 +++++++++++----- slides/caesar-encipher.html | 41 +++++++++++++++++++++++++++++----- slides/keyword-break.html | 6 ++++- slides/typingmonkeylarge.jpg | Bin 0 -> 52398 bytes slides/word-segmentation.html | 6 ++--- 5 files changed, 58 insertions(+), 14 deletions(-) create mode 100644 slides/typingmonkeylarge.jpg diff --git a/slides/caesar-break.html b/slides/caesar-break.html index 4d2ebfa..7a2fbf6 100644 --- a/slides/caesar-break.html +++ b/slides/caesar-break.html @@ -128,11 +128,11 @@ Use this to predict the probability of each letter, and hence the probability of --- -# An infinite number of monkeys +.float-right[![right-aligned Typing monkey](typingmonkeylarge.jpg)] -What is the probability that this string of letters is a sample of English? +# Naive Bayes, or the bag of letters -## Naive Bayes, or the bag of letters +What is the probability that this string of letters is a sample of English? Ignore letter order, just treat each letter individually. @@ -234,13 +234,20 @@ def unaccent(text): 1. Read from `shakespeare.txt`, `sherlock-holmes.txt`, and `war-and-peace.txt`. 2. Find the frequencies (`.update()`) -3. Sort by count -4. Write counts to `count_1l.txt` (`'text{}\n'.format()`) +3. Sort by count (read the docs...) +4. Write counts to `count_1l.txt` +```python +with open('count_1l.txt', 'w') as f: + for each letter...: + f.write('text\t{}\n'.format(count)) +``` --- # Reading letter probabilities +New file: `language_models.py` + 1. Load the file `count_1l.txt` into a dict, with letters as keys. 2. Normalise the counts (components of vector sum to 1): `$$ \hat{\mathbf{x}} = \frac{\mathbf{x}}{\| \mathbf{x} \|} = \frac{\mathbf{x}}{ \mathbf{x}_1 + \mathbf{x}_2 + \mathbf{x}_3 + \dots }$$` @@ -257,6 +264,8 @@ def unaccent(text): # Breaking caesar ciphers +New file: `cipherbreak.py` + ## Remember the basic idea ``` diff --git a/slides/caesar-encipher.html b/slides/caesar-encipher.html index 4ef1d34..4afd78d 100644 --- a/slides/caesar-encipher.html +++ b/slides/caesar-encipher.html @@ -82,6 +82,34 @@ chr() --- +# Using the tools + +Before doing anything, create a new branch in Git + +* This will keep your changes isolated + +Experiment in IPython (ephemeral, for us) + +Once you've got something working, copy the code into a `.py` file (permanent and reusable) + +```python +from imp import reload + +import test +reload(test) +from test import * +``` + +Re-evaluate the second cell to reload the file into the IPython notebook + +When you've made progress, make a Git commit + +* Commit early and often! + +When you've finished, change back to `master` branch and `merge` the development branch + +--- + # The [string module](http://docs.python.org/3.3/library/string.html) is your friend ```python @@ -95,6 +123,7 @@ string.punctuation ``` --- + # DRY and YAGNI Is your code DRY? @@ -131,7 +160,7 @@ if __name__ == "__main__": --- -# Doing all the letters +# Doing the whole message ## Test-first developement @@ -142,7 +171,7 @@ if __name__ == "__main__": --- -# Doing all the letters +# Doing the whole message ## Abysmal @@ -152,9 +181,11 @@ for i in range(len(plaintext)): ciphertext += caesar_encipher_letter(plaintext[i], key) ``` +Try it in IPython + --- -# Doing all the letters +# Doing the whole message ## Bad @@ -168,7 +199,7 @@ for p in plaintext: --- -# Doing all the letters +# Doing the whole message ## Good (but unPythonic) @@ -178,7 +209,7 @@ ciphertext = map(lambda p: caesar_encipher_letter(p, key), plaintext) --- -# Doing all the letters +# Doing the whole message ## Best diff --git a/slides/keyword-break.html b/slides/keyword-break.html index 08013f3..ddf82c1 100644 --- a/slides/keyword-break.html +++ b/slides/keyword-break.html @@ -115,7 +115,11 @@ for each key: Repetition of code is a bad smell. -Separate the 'try all keys, keep the best' logic from the 'score this one key' logic. +Separate out + +* enumerate the keys +* score a key +* find the key with the best score --- diff --git a/slides/typingmonkeylarge.jpg b/slides/typingmonkeylarge.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8078671cd21640e5dc7e15f5691f01ec0319e9f9 GIT binary patch literal 52398 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