python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
iso-lc
on sentencepiece-ohjelmalla luotu Unigram-malli, joka on koulutettu samalla aineistolla kuin alla oleva lstm2-malli.
Mallissa on 24000 sanaketta.
Kaikki tämän repon ohjelmat käyttävät tätä mallia.
Mallit on koulutettu suomenkielisellä Wikipedialla (696 Mt), suomalaisilla eroottisilla novelleilla (103 Mt) ja Gutenberg-projektin suomenkielisillä teoksilla (464 Mt). Mallien kouluttamiseen on käytetty Fastai-kirjastoa ja sen oletusasetuksia.
- lstm2.pth – Valmiiksi koulutettu AWD-LSTM-malli.
- tf1.pth – Valmiiksi koulutettu Transformer-malli.
- txl1.pth – Valmiiksi koulutettu TransformerXL-malli.
Oletetaan, että aineisto on tiedostossa aineisto.txt
.
Aineisto voidaan enkoodata seuraavasti:
python3 encode.py aineisto.txt aineisto.npy
Tämän jälkeen kielimalli voidaan kouluttaa seuraavasti:
python3 train-model.py iso-lc.vocab aineisto.npy 5
Komento tallentaa luomansa mallit models/
-kansioon.
Luodun mallin avulla voi arpoa tekstiä interaktiivisesti seuraavasti:
python3 sample-model.py iso-lc final_model
Interaktiivisessa tilassa voi antaa kehotteen, ja mallin avulla arvotaan tekstiä joka todennäköisesti tulisi kehotteen perään.
On myös mahdollista muuttaa joitain parametreja komennoilla, erityisesti /n <pituus>
muuttaa generoitavan tekstin pituutta
ja /temp <luku>
muuttaa todennäköisyysjakauman skaalauslukua (0.7 on yleensä hyvä).
Tiedostoissa Kalevala.ipynb
, Vaalidata.ipynb
ja Pyhis.ipynb
on esimerkit mallin hienosäätämisestä tietyntyyppisen tekstin generoimiseksi.
Data on tätä varten muutettava CSV-muotoon esimerkiksi seuraavasti:
cat data.txt | sed -E '/^$/d;s/"/""/g;s/^|$/"/g' >data.csv
data/vaalidata.p6
: Muuttaa Ylen vaalidatan alkuperäisestä CSV-muodosta yksisarakkeiseen CSV-muotoon, jonka voi syöttää helposti mallille.data/vaalidata-puolueet.p6
: Muuttaa vaalidatan muotoon, jossa on mukana tieto puolueesta.sekalaista/filter-by-names.p6
: Skripi syö CONLL-U-tiedoston ja valitsee joukon erisnimiä ja filteröi pois lauseet, joissa ei käytetä näitä erisnimiä.sekalaista/find-nearest.p6
: Skriptillä voi etsiä tekstitiedostosta annetuilla sanoilla. Hyödyllinen, jos haluaa selvittää, mihin teksteihin generoitu teksti perustuu. Hitaahko.sekalaista/format-election-data.p6
: Skriptin avulla voi tehdä Markdown-tiedoston generoidusta vaalikonedatasta.sekalaista/lausepuhelu.p6
: Skripti interaktiiviseen tekstingenerointiin: ohjelma kirjoittaa tekstiä, sitten ihminen kirjoittaa vähän tekstiä ja sitten taas ohjelma, jne.