Tekst genereren met Markovprocessen

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():
    dict = create_dictionary("tekst.txt")
    print(generate_text(dict, 100))

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

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

    # het aantal keer dat elk woord voorkomt tellen
    d = {}
    pw = '$'

    for nw in words:
        if pw not in d:
            d[pw] = [nw]
        else:
            d[pw] += [nw]
        pw = nw
        if pw[-1] in ".?!":
            pw = '$'

    # d teruggeven voor andere code
    return d


# functie #2
def generate_text(d, n):
    """
    genereert text via de markov process. 
    """
    cw = '$'
    tekst = ''
    for i in range(n):
        nw = random.choice(d[cw])
        tekst += nw + " " 
        cw = nw
        if cw[-1] in ".?!":
            cw = '$'
    return tekst

main()