# Univerzitet u Novom Sadu, Fakultet tehničkih nauka, Novi Sad, Srbija
# Studijski program OAS Informacioni inženjering
# Predmet Metode i tehnike nauke o podacima

# Pomoćni sadržaj


# %% Biblioteke i korpusi

import nltk
nltk.download("gutenberg")
from nltk.corpus import gutenberg
nltk.download("punkt")
from nltk.tokenize import word_tokenize
nltk.download("stopwords")
from nltk.corpus import stopwords
nltk.download("wordnet")
from nltk.stem import WordNetLemmatizer
from nltk.probability import FreqDist


# %% Priprema tokena

print("Datoteke u korpusu:")
print(gutenberg.fileids())

datoteke_Ostin = [d for d in gutenberg.fileids() 
                  if d.startswith("austen-")]
print("Datoteke u korpusu za Ostin:")
print(datoteke_Ostin)

datoteke_Šekspir = [d for d in gutenberg.fileids() 
                    if d.startswith("shakespeare-")]
print("Datoteke u korpusu za Šekspira:")
print(datoteke_Šekspir)

tekstovi_Ostin = gutenberg.raw(datoteke_Ostin)
tekstovi_Šekspir = gutenberg.raw(datoteke_Šekspir)

tokeni_Ostin = word_tokenize(tekstovi_Ostin)
tokeni_Šekspir = word_tokenize(tekstovi_Šekspir)

stop_reči = stopwords.words("english")

odabrani_tokeni_Ostin = [token for token in tokeni_Ostin 
                        if token.lower() not in stop_reči]
odabrani_tokeni_Šekspir = [token for token in tokeni_Šekspir
                          if token.lower() not in stop_reči]


# %% Analiza lema

lematizator = WordNetLemmatizer()
leme_Ostin = [lematizator.lemmatize(token) 
              for token in odabrani_tokeni_Ostin]
leme_Šekspir = [lematizator.lemmatize(token) 
                for token in odabrani_tokeni_Šekspir]

minimalna_dužina = 10
odabrane_leme_Ostin = [lema.upper() for lema in leme_Ostin 
                       if len(lema) >= minimalna_dužina]
odabrane_leme_Šekspir = [lema.upper() for lema in leme_Šekspir 
                         if len(lema) >= minimalna_dužina]

raspodela_Ostin = FreqDist(odabrane_leme_Ostin)
raspodela_Šekspir = FreqDist(odabrane_leme_Šekspir)

obim = 20
print("Najučestalije leme među odabranim lemama za Ostin:")
for i, s in enumerate(raspodela_Ostin.most_common(obim), 1):
    print("{}. {} (n = {})".format(i, s[0], s[1]))
print("Najučestalije leme među odabranim lemama za Šekspira:")
for i, s in enumerate(raspodela_Šekspir.most_common(obim), 1):
    print("{}. {} (n = {})".format(i, s[0], s[1]))

