# Se på de andre kodefilene før du ser på denne. # Importerer trigram-funksjonalitet fra NLTK from nltk import trigrams # Importerer korpus from nltk.corpus import inaugural # Importer defaultdict from collections import defaultdict # Importer NumPy (må installeres først) import numpy as np # Leser inn setninger kennedy_sents = inaugural.sents('1961-Kennedy.txt') # Vi begynner med å telle trigram_counts = defaultdict(lambda: defaultdict(lambda: 0)) for sentence in kennedy_sents: for w1, w2, w3 in trigrams(sentence, pad_right = True, pad_left = True): trigram_counts[(w1, w2)][w3] += 1 # Nå gjør vi om tellingene til sannsynligheter trigram_model = defaultdict(lambda: defaultdict(lambda: 0.0)) for w1_w2 in trigram_counts: total_trigramcount = sum(trigram_counts[w1_w2].values()) for w3 in trigram_counts[w1_w2]: trigram_model[w1_w2][w3] = trigram_counts[w1_w2][w3] / total_trigramcount # Genererer tekst til slutt (lagret som en liste) text = [None, None] sentence_is_finished = False while not sentence_is_finished: key = tuple(text[-2:]) words = list(trigram_model[key].keys()) probabilities = list(trigram_model[key].values()) text.append(np.random.choice(words, p = probabilities)) if text[-2:] == [None, None]: sentence_is_finished = True # Gjør til slutt om teksten til en streng text_string = ' '.join([word for word in text if word]) print(text_string)