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()