45 lines
1.5 KiB
Markdown
45 lines
1.5 KiB
Markdown
|
# Solidabis koodihaaste
|
||
|
|
||
|
Haasteen tehtävänä on hakea lista rot-n enkoodattuja lauseita, tunnistaa oikea
|
||
|
`n` dekoodatessa ja palauttaa dekoodattu sana.
|
||
|
|
||
|
## Dekoodaus
|
||
|
|
||
|
Moduuli `Data.Caesar` toteuttaa dekoodauksen primitiivit. Kirjainta
|
||
|
siirretään vasemmalle n merkin verran, ottaen huomioon 'a', 'z', 'å' ja 'ä'
|
||
|
rajat.
|
||
|
|
||
|
## Lauseen tunnistaminen
|
||
|
|
||
|
Moduulit `Data.Language` ja `Data.NGram` toteuttavat primitiivit tulosten tunnistamiseen.
|
||
|
|
||
|
- http://practicalcryptography.com/miscellaneous/machine-learning/tutorial-automatic-language-identification-ngram-b/
|
||
|
|
||
|
Käytän n-grameja suomalaisten lauseiden tunnistamiseen, tai tarkemmin
|
||
|
sanottuna, suomalaiselta vaikuttavien lauseiden tunnistamiseen.
|
||
|
|
||
|
1. Lue jokin suomalainen corpus
|
||
|
2. Rakenna siitä n-gram malli
|
||
|
3. Jokaista lausetta varten, vertaa lauseen n-grameja mallia vasten
|
||
|
|
||
|
Yritä-erehdy menetelmällä löysin rajaksi ~-8. Sitä suuremmat ovat
|
||
|
todennäköisesti suomalaisia lauseita, tai ainakin sitä muistuttavaa.
|
||
|
|
||
|
Corpuksena käytin [Sydäntalven tarinaa](http://practicalcryptography.com/miscellaneous/machine-learning/tutorial-automatic-language-identification-ngram-b/)
|
||
|
josta siistin englanninkielisen alun ja lopun. Kirja ei ole repositoryssa
|
||
|
mukana.
|
||
|
|
||
|
## Suoritus
|
||
|
|
||
|
```
|
||
|
nix-build release.nix -A koodihaaste
|
||
|
result/bin/koodihaaste config.yaml
|
||
|
|
||
|
curl http://localhost:8080
|
||
|
```
|
||
|
|
||
|
Aukeaa myös selaimella.
|
||
|
|
||
|
Saatan myös pistää paketin pyörimään https://koodihaaste.introitu.info mutta ei
|
||
|
ole siellä vielä kirjoitushetkellä.
|