Laboration 2: Autocomplete och autocorrect
Laboration 2 består av tre delar som behandlar villkorssatser, jämförelser och sanningsvärden, användning av for- och while-loopen, sträng- och list-hantering med hjälp av loopar, samt inläsning och användning av data lagrad på fil i CSV-format.
- Del 1: Pythonuppgifter 2. Pythonuppgifter som automaträttas.
- Del 2: Autocomplete. Detta är en tillämpningsövning på det ni gjort i Pythonuppgifterna. (görs i par och redovisas)
- Del 3: Autocorrect med hjälp av minimum edit distance. (Frivillig del)
Redovisning, inlämning och kompletteringar
- Information om den muntliga redovisningen, samt eventuella kompletteringar kan ni läsa om sidan Redovisning.
- Information om inlämning av Pythonuppgifter hittar ni på sidan Inlämningar.
- Efter redovisning lämnas koden för Del 2 in via Sendlab.
Checklista för redovisning
- Demonstrera programmet ni gjort i Del 2, Uppgift 2.
- Ge exempel på följande i er kod:
- villkorssats
- jämförelse
- sanningsvärde
- loop (for eller while)
- Peka ut och förklara er kod som läser in ordfrekvensinformation (Uppgift 2, Del 2).
- Förklara hur er lösning på uppgift 2 använder ordfrekvensinformationen vilka steg den tar för att komma fram till de(t) ord den returnerar.
Del 1: Pythonuppgifter 2
Börja med Pythonuppgifter 2 innan ni börjar på Del 2. Pythonuppgifter 2 går igenom det mesta ni behöver för att lösa uppgiften i del 2.
Del 2: Autocomplete
I Del 2 ska ni skriva en autocomplete-funktion i programmeringsspråket Python. En autocomplete-funktion utgår från vad användaren börjat att skriva och förutspår resten av ordet. Funktionen kan förstås göras i princip hur enkel eller sofistikerad som helst. Den absolut enklaste formen kanske jämför indata mot en ordlista och returnerar det “första bästa”, medan en mer avancerad metod tar hänsyn till hur vanligt förekommande ordet är, eller vilka ord användaren har skrivit tidigare.
I den här laboration kommer ni att skriva koden i en texteditor och köra den i terminalen.
Det är starkt rekommenderat att göra minst Övning 0-3 från lektionen innan ni börjar på Del 2 på Laboration 2.
Diverse tips till Laboration 2, del 2
Uppgift 1
Er första uppgift är att skriva en funktion som returnerar förslag på hur användaren kan fortsätta på det användaren börjat skriva på. För steg 1 ska inte filerna med frekvensinformation användas.
Fundera ut vad ni vill att autocomplete ska göra
Fundera först på vilken strategi ni vill implementera. Ni kan exempelvis låta er funktion returnera det första bästa ordet som börjar på rätt bokstäver, eller låta den returnera en uppsättning förslag som användaren får välja mellan.
De begränsningar ni har att jobba med är att funktionen ska returnera något som kan skrivas ut.
En körning kan exempelvis se ut så här:
Type word: bast
Autocompletion finished: bastu
Type word: enhö
Autocompletion finished: enhörning
Type word: fik
Autocompletion finished: fiktiv
Type word: programmer
Autocompletion finished: programmering
En variant med autocomplete som returnerar fler än ett ord skulle kunna se ut så här (inte verkliga exempel):
Type word: bast
Autocompletion finished: bastu, bastun
Type word: enhö
Autocompletion finished: enhörning
Type word: fik
Autocompletion finished: fiktiv, fiktiva
Type word: program
Autocompletion finished: programmet, programmen
Formulera en plan med de steg som ska göras
Försök att formulera vilka steg som behövs för att funktionen ska göra det ni vill att den ska göra. Dra nytta av att ni är två som jobbar tillsammans; ni kan skriva på var sitt förslag och sedan be den andra personen läsa det och förklara det tillbaka till dig.
Implementera funktionen
Skriv sedan klart funktionen autocomplete()
ovan så att den förutsäger slutet på ett inmatat ord enligt er valda strategi. Det är tillåtet att ändra på antalet argument som funktionen autocomplete()
använder.
Uppgift 2
Er andra uppgift är att
- skriva en ny autocomplete-funktion som föreslår ord baserat på ordfrekvensdata
- dokumentera era funktioner med funktionskommentarer (se nedan)
Skriv en helt ny funktion istället för att ändra på er existerande funktion. I er kod kan ni enkelt byta vilken funktion som används genom att kommentera bort den raden som använder den gamla funktionen, och sedan lägga till en rad som använder er nya funktion. Genom att behålla den gamla funktionen tar ni heller inte sönder den kod som som ni skrev till steg 1:
|
|
Ni får själva välja om ni använder en av de existerande .csv
-filerna för att läsa in ord och deras ordfrekvenser, eller om ni använder er av ett fil-par (t.ex. alphabetical_words
+ alphabetical_freq
) för att läsa in ordfrekvensdata.
Dokumentera även er kod med funktionskommentarer (se nedan).
Del 3, Autocorrect (frivillig)
I del 2 letade ni bland tillgänglig data efter ord som började på det användaren hade skrivit. I del 3 ska ni istället försöka leta bland tillgänglig data efter ord som användaren försökte skriva.
För den frivilliga uppgiften ska ni:
- skriva ytterligare en funktion som istället för komplettera det användaren skrivit istället korrigerar det användaren skrivit
- dokumentera era funktioner med funktionskommentarer
Sidansvarig: Johan Falkenjack
Senast uppdaterad: 2024-01-08