Experimentln softwaru pro klasifikaci webovch strnek
Patrik Dohnal - bakalsk prce
Prodovdeck fakulta Jihoesk Univerzity, esk Budjovice
-------------------------------------------------------------
Nvod na zprovoznn programu
-------------------------------------------------------------

1, Rozbalte obsah zipu do njak sloky.

2, Je poteba nainstalovat Python.

3, Dle doinstalovat vechny pouit knihovny, nejsna cestou je pip.

pip install numpy
pip install pandas
pip install sklearn
pip install bs4
pip install selenium

4, K seleniu je zapoteb sthnout webdriver pro prohle Chrome ve verzi,
kterou pouvte ve svm potai. Tento webdriver (chromedriver.exe) pesute
do sloky s ostatnmi scripty programu. V ppad, e Chrome nemte, bude nutn 
jej doinstalovat. Odkaz na webdriver:
https://sites.google.com/a/chromium.org/chromedriver/downloads


------------------------------------------------------------
TYPICK POUIT SOFTWARU BEZ NIJAKCH DETAIL NA KONCI README
------------------------------------------------------------


------------------------------------------------------------
Nvod na obsluhu programu
------------------------------------------------------------
Kategorie:
[0] - weby o psech
[1] - weby o kokch
[2] - o gastronomii
[3] - o fotbale
[4] - ostatn, ani jedna z uvedench

Software se ovld pkazovou dkou.

Soust sloky jsou natrnovan modely, pro jednoduch pouit na 
klasifikaci lze volat
    python main.py https://www.jcu.cz
- pkaz strnku klasifikuje pomoc vech model (SVM, kNN, mNB)

----------------------------------------------------------
SW rozliuje tzv -prime_option a -option
-prime_option jsou pokyny k vykonn njak akce
-option ovld nastaven parametr.

-prime_option se zapisuj s rovntkem nebo bez

1, prime_option bez rovntka:
    # -help
    # vype npovdu
        python main.py -help    
    
    # -dl
    # Sthne webov strnky do loklnho souboru progressedData.txt
    # Je poteba uvst jako argumenty vyexportovan kategorie
    # Moc nedoporuuji tento proces zkouet, jeliko stahovn trv cca 30 minut
        python main.py -dl nazev_kategorie.html nazev_kategorie2.html ...

    # -mc
    # Vytvo korpus z lokln staench webovch strnek
    # -mc je poteba volat po staen strnek
    # po tonto procesu mus rovn nastat trnovn vech model
        python main.py -mc
    
    # -add
    # Sthne jednu kategorii a pid j do souboru progressedData.txt
    # Po tomto procesu mus probhnout vytvoen korpusu a trnovn model
        python main.py -add nova_kategorie.html
    
2, prime_option s rovntkem:
    clf zastupuje svm, mNB, kNN, all (vechny)
    
    # -train=clf
    # Natrnuje clov model podle souasnho korpusu
        python main.py -train=all 
    #lze pidat parametry
        python main.py -train=kNN -k=11
        
    # -test=clf
    # provede testovn celkov pesnosti na testovacch datech (pomr 7:3)
        python main.py -test=all
        
    # -cross=clf
    # Provede kovou validaci (10x defaultn)
        python main.py -cross=svm
    # s parametrem cv (poet test)
        python main.py -cross=all -cv=3
        
    # -mc=cokoli -top=NSlov
    # Vytvo korpus v nm bude N nejfrekventovanjch slov
    # Nsledn mus pijt trnovn modelu!
    # pro vytvoen s 10 nejfrekventovanjch slov
        python main.py -mc=1 -top=10
        
    # -clf=clf
    # pkaz k predikci strnky specifickm modelem
        python main.py -clf=svm https://www.jcu.cz
    
3, option pro zadn parametr:
    Defaultn:
    -top=80
    -mf=10000
    -seed=None
    -kernel=linear
    -degree=3
    -c=3
    -gamma=auto
    -k=57
    -cv=10
    
    # -top=pocet
    #nastav N nejfrekventovanjch slov
        python main.py -mc=1 -top=10
        python main.py -train=all -top=10
        python main.py -cross=all -top=10
    
    # -mf=pocet
    # parametr Max Features pro TF-IDF
    # Kolik uniktnch token se m TF-IDF nauit
    # Velikost vektoru pznak
        python main.py -train=all -mf=5000
        python main.py -cross=all -mf=5000
    
    # -seed=cislo
    # pro ovlivnn nhodnho genertoru
    # odstran nhodnout pro rozdlen dat na trnovac a testovac mnoinu
        python main.py -train=all -seed=20
        python main.py -test=all -seed=20
    
    #SVM PARAMETRY - nastaven podle dokumentace scikit-learn!
    
    # -kernel=linear    #kernelov funkce
    # -degree=3         #Polynom pro poly kernel funkci
    # -c=3              #ka hraninho psma (men dovol misclassification)
    # -gamma=auto       #gamma parametr pro kernel
    
    #kNN PARAMETRY
    
    # -k=57             # poet soused pro kNN algoritmus
    
    CROSS-VALIDATION
    
    # -cv=10            #kolik test a st se m pout
        python main.py -cross=all -cv=3
        
    
----------------------------------------------------------
    TYPICK POUIT SOFTWARU
----------------------------------------------------------
    # klasifikace vstupu vemi
        python main.py https://www.jcu.cz
        
    # klasifikace vstupu konkrtn SVM    (nebo kNN, mNB)
        python main.py -clf=svm https://www.jcu.cz
        
    # kov validace
        python main.py -cross=all
        
    # test na testovacch datech (pomr 7:3, rozdleno pi trnovn)
        python main.py -test=all
    
    # zmna N slov (na hodnotu 40) a testovn pomoc kov validace
        python main.py -mc=1 -top=40
        python main.py -train=all -top=40
        python main.py -cross=all -top=40 
    
    
        