Een tekst lezen waar veel hetzelfde woord in staat is best vervelend. Vandaar dat je beter af en toe een synoniem gebruikt. Heb je geen inspiratie, dan vind je op het internet vlot een website die voor een gegeven woord een synoniem levert.

In deze oefening gaan we in een stukje tekst woorden vervangen door een synoniem. In deze oefening gebruiken we een kort bestand kort.csv1 waarin slechts vijf synoniemen staan.

Opgave

Schrijf de functie lees_synoniemen(bestandsnaam) die het opgegeven bestand inleest. Het bestand is gestructureerd zoals kort.csv2. De functie maakt een dictionary aan die woorden mapt op hun synoniem. Ook de omkeerde mapping wordt toegevoegd.
Er is geen foutafhandeling gevraagd. Je mag dus veronderstellen dat het bestand kan geopend worden, en dat elke lijn in het bestand exact één komma bevat.

Voorbeeld

>>> lees_synoniemen("kort.csv") 
{'rustig': 'ontspannen', 'ontspannen': 'rustig', 'wandelen': 'stappen', 'stappen': 'wandelen', 'slim': 'intelligent', 'intelligent': 'slim', 
 'dom': 'onwetend', 'onwetend': 'dom', 'vreugde': 'geluk', 'geluk': 'vreugde'}

Schrijf een tweede functie vervang(tekst, woordenboek). Deze functie geeft het stukje tekst terug waarbij elk woord dat voorkomt in het woordenboek vervangen werd door een synoniem.
Je mag veronderstellen dat de tekst geen hoofdletters, en ook geen leestekens bevat.

Voorbeeld

>>> woordenboek = lees_synoniemen("kort.csv") 
>>> vervang("na het werk wil ik rustig wandelen in het bos", woordenboek)
na het werk wil ik ontspannen stappen in het bos

Tips

Ik vind het juiste type niet voor de parameters van deze functies. def lees_synoniemen(bestandsnaam: str) -> dict
def vervang(tekst: str, woordenboek: dict) -> str
Hoe kan een functie een dictionary aanmaken en teruggeven?
  • Initialiseer in de functie een lege dictionary (d = {})
  • Voor elke nieuwe key voeg je de value toe met d[key] = value.
  • Geef de dictionary terug met return d
Hoe voeg ik de omgekeerde mapping toe? Voor elke lijn in het bestand voeg je als tweede element toe: d[value] = code.
Hoe moet ik het synoniemenwoordenboek doorgeven aan de functie vervang?
  • Die moet je niet opgeven in de functie die gevraagd is!!
  • Enkel als je de functie wilt controleren door een aanroep wordt de dictionary meegegeven (zie gegeven code).
  • Jij moet er dus van uitgaan dat de tweede parameter van de functie een dictionary bevat met een synoniemenwoordenboek.
Hoe kan ik één woord in zin vervangen?
  • Splits de zin in woorden en onthoud de woorden in een lijst;
  • Overloop alle woorden en vervang de woorden die een synoniem hebben in de lijst.
  • Plak de woorden van de lijst terug aan elkaar met de methode join
Hoe gebruik ik dan het synoniemenwoordenboek?
  • Controleer of een woord in het synoniemenwoordenboek voorkomt.
  • Indien het woord een synoniem heeft, vervang je het woord in de lijst door zijn synoniem.