X-Git-Url: https://git.njae.me.uk/?a=blobdiff_plain;ds=sidebyside;f=language_models.py;h=0fa6e85dc7f3732e2c36a1c1bc4ead827005023e;hb=f420062910c850658815504763c8ca77067bac82;hp=8824bca4597327623798382288c2bcffb9d8005b;hpb=5184c96f06f9f97d6af9b3d994e9b227cbb8b76c;p=cipher-tools.git

diff --git a/language_models.py b/language_models.py
index 8824bca..0fa6e85 100644
--- a/language_models.py
+++ b/language_models.py
@@ -126,6 +126,7 @@ def log_probability_of_unknown_word(key, N):
 Pw = Pdist(datafile('count_1w.txt'), log_probability_of_unknown_word)
 Pl = Pdist(datafile('count_1l.txt'), lambda _k, _N: 0)
 P2l = Pdist(datafile('count_2l.txt'), lambda _k, _N: 0)
+P3l = Pdist(datafile('count_3l.txt'), lambda _k, _N: 0)
 
 def Pwords(words): 
     """The Naive Bayes log probability of a sequence of words.
@@ -143,15 +144,29 @@ def Pbigrams(letters):
     """
     return sum(P2l[p] for p in ngrams(letters, 2))
 
+def Pbigrams(letters):
+    """The Naive Bayes log probability of the bigrams formed from a sequence 
+    of letters.
+    """
+    return sum(P2l[p] for p in ngrams(letters, 2))
+
+def Ptrigrams(letters):
+    """The Naive Bayes log probability of the trigrams formed from a sequence
+    of letters.
+    """
+    return sum(P3l[p] for p in ngrams(letters, 3))
+
 
 def cosine_distance_score(text):
     """Finds the dissimilarity of a text to English, using the cosine distance
     of the frequency distribution.
 
     >>> cosine_distance_score('abcabc') # doctest: +ELLIPSIS
-    0.370847405...
+    0.73777...
     """
-    return norms.cosine_distance(english_counts, 
+    # return norms.cosine_distance(english_counts, 
+    #     collections.Counter(sanitise(text)))
+    return 1 - norms.cosine_similarity(english_counts, 
         collections.Counter(sanitise(text)))