import pandas as pd
import stanza
import numpy as np
from stanza.models.common.doc import Word
nlp=stanza.Pipeline("hu",processors='tokenize,pos,lemma,ner,depparse')
text= "Kazahsztánban a mai kazak nyelv cirill betűs írást használ."# Közeli rokonai a kirgiz, a tatár, a baskír, valamint a kihalt besenyő és kun nyelvek."
text="Mi nem vagyunk magyarok."
text="− Én sem értem, hogy miért keresek ma mindent."
text="A nagyon szép nőhöz megyem. kitörésröl kitörésekre Amerikából"
text="""**−  Halló? Jó napot kívánok. Itt Szabó János. Ott ki beszél? 
−  Halló\! Itt Péter beszél. 
−  Szervusz Péter. 
−  Szervusz János. 
−  Hogy vagy? 
−  Köszönöm, jól vagyok. És te? 
−  Köszönöm, jól vagyok. Én is jól vagyok. 
−  Mi újság? 
−  Semmi. Szép idő van. És ott mi újság?  
−  Semmi különös. Itt is szép idő van. 
A nő magyar és a férfi angol.
Женщина — венгерка и мужчина — англичанин
A város nagyon szép.
Город очень красивый.
Amerikai vagyok.
Я американец.
A magyar nyelv könnyű.
Венгерский язык — легкий.
A város — город
Az autó — автомобиль
Te angol vagy?
Amerikai vagyok.
Angol vagy? 
Itt vagyunk. (Мы здесь)
1. Magyar vagyok.
2. Itt vagytok.
3. A város nagyon szép.
4. Az angol nyelv könnyű.
5. Itt a férfi
Mi az?
Что это?
Ez egy autó és az egy asztal.
Это — автомобиль, а то — стол.
Köszönöm, jól vagyok.
Спасибо, я в порядке
Hol a pincér? Ott.
Где официант? Там..
"""
doc = nlp(text) 
wordlist=pd.concat([pd.Series(word.to_dict()).to_frame().T for sentence in doc.sentences for word in sentence.words])
wordlist
#pd.set_option("display.max_rows", None, "display.max_columns", None)
#print(wordlist)
# import networkx as nx
# import graphviz
# w = graphviz.Digraph()
# for i,row in wordlist.iterrows():
#     w.node(str(row["id"]), "\n".join(row[:-2].apply(str)))
# for i,row in wordlist.iterrows():
#     w.edge(str(row["id"]), str(row["head"]))
# w.render('test-output/round-table.gv', view=True)
#folder="~/Desktop/Regina Phalange/Conlang/"
folder="./"
dic=pd.read_csv(folder+"dict.csv",sep=";")
lemmadict=dict(zip(dic["lemma"],dic["translation"]))
capitalize_get = lambda x : x["text"][0].isupper()
wordlist["capitalize"] = wordlist[["text"]].apply(capitalize_get, axis=1)
capitalize_apply = lambda x,y : x[0].upper()+x[1:] if y else x
def lemmadictget (x):
    if x["upos"]!="PUNCT":
        if x["lemma"] in lemmadict.keys():
            return capitalize_apply(lemmadict[x["lemma"]], x["capitalize"])
        else:
            return "*"+capitalize_apply(x["lemma"], x["capitalize"])
    else:
        return x["text"]

wordlist["translemma"] = wordlist[["lemma","upos","text","capitalize"]].apply(lemmadictget, axis=1)


wordlist['end_char_prev'] = np.roll(wordlist['end_char'],1)
wordlist.iloc[0]['end_char_prev']=0
wordlist["separator_prev"]=wordlist[["end_char_prev","start_char"]].apply(lambda x: text[x["end_char_prev"]:x["start_char"]], axis=1)

sep_end=text[wordlist.iloc[-1]["end_char"]]
print("".join(list(wordlist["separator_prev"]+wordlist["translemma"])+[sep_end]))
