def ngram(n, file):        text = open(file).read()        # n-1 Leerzeichen vor und nach Text einfuegen        text = (n-1)*' ' + text + (n-1)*' '        # Zaehler initialisieren        C_h = {}    # Zaehler fuer Kontext/History                    #  (z.B. bei Trigram:  C(w1 w2)     )        C_ngr = {}  # Zaehler fuer Ngram                    #  (z.B. bei Trigram:  C(w1 w2 w3)  )                    #  dictionary ueber Tupel aus h und letztem w        vocab = {}  # Vokabular (dictionary mit Zaehlern)        # Fenster von n Zeichen ueber den Text schieben        for Ngram in [ text[i:i+n] for i in range(len(text)-n+1)]:                # print 'Ngram: ' + Ngram                (h, w) = (Ngram[:-1],Ngram[-1:])                if w not in vocab:                        vocab[w] = 0.0                vocab[w] += 1                # Zaehler erhoehen (bzw. wenn noetig zuerst initialisieren)                if h not in C_h:                        C_h[h] = 0.0                C_h[h] += 1                                if (h,w) not in C_ngr:                        C_ngr[(h,w)] = 0.0                C_ngr[(h,w)] += 1        # Ergebnis: Tupel aus n und dictionaries von Zaehlern        return (n, C_h, C_ngr, vocab)