Tekst genereren met Markovprocessen

Je doel bij deze opgave is om een programma te schrijven dat uit zichzelf “betekenisvolle” tekst kan genereren! Je gaat dit doel bereiken door het schrijven van een algoritme dat met behulp van zogeheten Markovprocessen tekst genereert.

import random


def main():
    words_follow = create_dictionary("tekst.txt")
    print(generate_text(words_follow, 100))


# functie #1
#
def create_dictionary(filename):
    """
    genereert een dictionairy waarin staat welke woorden na elk woord komt.
    """
    # bestand lezen
    with open(filename) as file:
        text = file.read()

    # woorden tellen
    words = text.split()
    print("Er zijn", len(words), "woorden")

    # het aantal keer dat elk woord voorkomt tellen
    words_follow = {}
    previous_word = "$"

    for next_word in words:
        if previous_word not in words_follow:
            words_follow[previous_word] = [next_word]
        else:
            words_follow[previous_word] += [next_word]
        previous_word = next_word
        if previous_word[-1] in ".?!":
            previous_word = "$"

    # words_follow teruggeven voor andere code
    return words_follow


# functie #2
def generate_text(words_follow, n_words):
    """
    genereert text via de markov process.
    """
    current_word = "$"
    tekst = ""
    for _ in range(n_words):
        next_word = random.choice(words_follow[current_word])
        tekst += next_word + " "
        current_word = next_word
        if current_word[-1] in ".?!":
            current_word = "$"
    return tekst


main()