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