# letters-only translation to key-pressed characters (latin) # --- def kbLatinLetter( txt ) : maTable = txt.maketrans( "ςερτυθιοπασδφγηξκλζχψωβνμΕΡΤΥΘΙΟΠΑΣΔΦΓΗΞΚΛΖΧΨΩΒΝΜάέήίόύώϊϋΆΈΉΊΌΎΏΪΫ", "sertyuiopasdfghjklzxcvbnmertyuiopasdfghjklzxcvbnmaehioyviyaehioyviy" ) return txt.translate(maTable).lower() # mark a link to a text # conecting them with a dash/minus character # --- def markLink(lws, text) : text_kb = kbLatinLetter(text.replace(' ', '-')) lws_kb = kbLatinLetter(lws) try: index_l = text_kb.lower().index(lws_kb.lower()) except: return text else: return text[:index_l] + lws + text[index_l + len(lws):] # text after "all-links" marked # --- def linksMarked(text) : allinked = [ 'Χωρίς-Ζάχαρη', 'COCA-COLA', 'Χωρίς-Αλάτι' ] for lw in allinked : text = markLink( lw, text ) return text # example # --- products = [ "Μπάρες δημητριακών Nestle χωρίς ζάχαρη 2+1 δώρο", "Coca Cola Zero χωρίς ζάχαρη 300ml", "Καφές ΠΑΠΑΓΑΛΟΣ ΛΟΥΜΙΔΗΣ 100gr Κλασσικός", "Μουσακάς μερίδα 300gr χωρίς αλάτι", "Bic Metal ξυραφάκια 8+2 δώρο" ] synonyms = [] synonymOriginals = [ 'μπίρα μπύρα μπίρες μπύρες', 'αυγά αβγά αυγό αβγό', 'σίκαλης σικάλεως', 'ξηρά ξερά', 'ρολό ρολλό' 'coca-cola cocacola coke', 'χαρτί-υγείας ρολό-υγείας χαρτί-τουαλέτας', 'χαρτί-κουζίνας ρολό-κουζίνας', 'οινος κρασι', 'ΚΑΤΣΕΛΗΣ ΚΑΤΣΕΛΗ', 'DR-OETKER OETKER', 'DR.BECKMANN BECKMANN', 'NES-CAFE NESCAFE', 'Ολικής-Άλεσης Ολικής-Aλέσεως', 'τσίπουρο ρακή' ] for group in synonymOriginals : words = group.split() syns = [] for w in words : # for every word in group of synonyms w_kb = kbLatinLetter(w) exist = False for s in syns : # check if synonym exists if s[1] == w_kb : exist = True if not exist : # if not: append it #### syns.append({ #### 'w' : w, #### 'kb' : w_kb #### }) syns.append([ w, w_kb ]) synonyms.append(syns) for p in products : print( linksMarked(p) ) import json print(json.dumps(synonyms, ensure_ascii=False)) import datetime start = datetime.datetime.now() malist = [ "καλαμπόκι-διαβητικών", "cocacola-zero", "γιουβαρλάκια", "WELCOME", "σφενδόνα", "σκλαβενίτης", 'bonora', 'kris-κρις-παπαδοπούλου', "τηλεφώνημα", "χωρίς-αλάτι" ] for i in range(1, 1000000) : for w in malist : tmp = kbLatinLetter(malist[i%10]) end = datetime.datetime.now() print('execution time:', (end-start), 's')