Pre pokretanja projekta trebalo bi instalirati:
- tensorflow
- tensorlayer
- tqdm
- keras
- nltk
- pandas
- numpy
Takođe bi trebalo skinuti sleće fajlove i smestiti ih u folder "data":
Da biste pokrenuli aplikaciju i samostalno testirali model koji smo trenirale, potrebno je pokrenuti fajl main.py. Tada putem konzole možete prosleđivati rečenice i aplikacija će izbacivati odgovore na njih.
Radi lakše i brže provere, možete pokrenuti i fajl check_sentences.py. U ovom slučaju, u aplikaciji se prosleđuju pitanja koja smo mi izdvojile i prikazuju se zajedno sa izbačenim odgovorom.
U daljem tekstu ćemo detaljno objasniti postupak po kom smo dataset pripremile za treniranje i koji bi se mogao ponoviti u slučaju kreiranja novog dataseta.
Pokretanjem ovog fajla želimo da iz prvobitnog dataset-a izdvojimo samo one podatke koji su nam potrebni za obučavanje naše mreže. Naš prvobitni dataset predstavlja fajl RC_2013-06, koji sadrži sve komentare ostavljene na Reddit-u juna 2013. godine, zadate u JSON formatu. Uz određene kriterijume, iz ovog JSON fajla smo izdvojile komentare i njihove "najbolje" podkomentare i smestile ih u bazu podataka, odnosno u databaseChatbot.db. Ovaj korak nama je trajao nekoliko sati.
Nakon pokretanja ovog fajla, podaci iz databaseChatbot.db se smeštaju u dva nova fajla: from.txt i to.txt. Prvi fajl sadrži input rečenice, a drugi odgovarajuće output-e ili odgovore na rečenice iz prvog fajla. Svaka linija u from.txt fajlu odgovara istoj liniji u to.txt fajlu.
U ovom koraku se iz from.txt i to.txt filtriraju sve rečenice, reči i simboli koji nisu odgovarajući za treniranje naše mreže. Kao rezultat pokretanja ovog fajla generišu se train_from_filtered i train_to_filtered.
U ovom koraku se uz pomoć NLTK biblioteke koriguju neke od nepravilno napisanih reči kako ne bi stvarale teškoće prilikom obučavanja mreže. Kao rezultat pokretanja ovog fajla generišu se train_from_corrected i train_to_corrected.
Pokretanjem ovog fajla, generiše se metadataFirst.pkl, koji sadrži sve input rečenice iz dataseta i odgovarajuće outpute. Svaki input i output je predstavljen nizom brojeva, a svakom broju odgovara jedna reč. Takođe ovaj fajl sadrži tokenizer koji sadrži informaciju o vezi između brojeva i reči u vidu rečnika, kao i odgovarajuće metode za konverziju reči u brojeve i obrnuto. Ovaj fajl će se koristiti pri treningu i pri kasnijem korišćenju obučene mreže.
Nakon što je dataset kompletno pripremljen, može se preći na korak obučavanja mreže. Da bi se obučavanje mreže pokrenulo, potrebno je pokrenuti train.py.