From b4fde2bbaf084ae7fa75eda242838cb97f309a37 Mon Sep 17 00:00:00 2001 From: Geo Halkiadakis Date: Mon, 10 Apr 2023 17:22:20 +0300 Subject: keygen update for supporting greek linked words (in progress) --- javascript/keygen.js | 102 +++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 90 insertions(+), 12 deletions(-) (limited to 'javascript/keygen.js') diff --git a/javascript/keygen.js b/javascript/keygen.js index e0af82b..fef20e7 100644 --- a/javascript/keygen.js +++ b/javascript/keygen.js @@ -124,7 +124,7 @@ var synonyms_Originals = [ 'Κράνμπερι Κράνμπερις', 'Κρήτης Κρητικό', 'Πέννες Πένες', - 'Μακαρόνια Σπαγγέτι Σπαγγετίνι Σπαγγετόνι', + 'Μακαρόνια Ζυμαρικά Σπαγγέτι Σπαγγετίνι Σπαγγετόνι', 'Καρτέλλα Καρτέλα Καρτέλλες' ] synonyms_Originals.forEach( grp => { @@ -134,23 +134,69 @@ synonyms_Originals.forEach( grp => { // significant terms // ----------------------------------------------------------------------------- -significantExceptios = '7UP 3ΑΛΦΑ 17 3Π 7DAYS K2R'.split(' ') +significantExceptios = '7-UP 3-ΑΛΦΑ 17 3Π 7-DAYS K2R'.split(' ') // replaces (correcting descriptions) +// = construct unequivocally liked words // ----------------------------------------------------------------------------- replaces = []; replaceSource = [ - '3 ΑΛΦΑ ;3ΑΛΦΑ ', + '3 ΑΛΦΑ ;3-ΑΛΦΑ ', 'HEAD & SHOULDERS ;HEAD&SHOULDERS ', + 'HEAD N SHOULDERS ;HEAD&SHOULDERS ', + 'W.K Kellogg ; W-K-Kellogg ', 'W.K Kellogg ; ', - 'ΦΙΛΕΤ ;Φιλέτο ', - 'ΕΝΕΛΛΑΔ ;Εν-Ελλάδι ', - 'ΓΑΛΟΠΟΥΛ ;Γαλοπούλα ', - '7 DAYS ;7DAYS ', + '7 DAYS ;7-DAYS ', + '7 UP ;7-UP ', 'ΜΠΑΡΜΠΑ ΣΤΑΘΗ ;ΜΠΑΡΜΠΑ-ΣΤΑΘΗΣ ', - 'Zero% ;Zero ', - + 'ΜΠΑΡΜΠΑ ΣΤΑΘΗΣ ;ΜΠΑΡΜΠΑ-ΣΤΑΘΗΣ ', + 'COCA COLA ;COCA-COLA', + 'COCACOLA ;COCA-COLA', + 'KELLOGS ;KELLOGG\'S', + 'NES CAFE ;NESCAFE', + 'NES-CAFE ;NESCAFE', + 'LE PETIT MARSEILLAIS ;LE-PETIT-MARSEILLAIS', + 'PETIT MARSEILLAIS ;PETIT-MARSEILLAIS', + 'Το Μάννα ;Το-Μάννα', + 'Χωρίς Γλουτένη ;Χωρίς-Γλουτένη', + 'Χωρίς Ζάχαρη ;Χωρίς-Ζάχαρη', + 'Χωρίς Αλάτι ;Χωρίς-Αλάτι', + 'Χωρίς Λακτόζη ;Χωρίς-Λακτόζη', + 'Χωρίς Συντηρητικά ;Χωρίς-Συντηρητικά', + 'Χωρίς Αλκοόλ ;Χωρίς-Αλκοόλ', + 'Χωρίς Kαφεϊνη ;Χωρίς-Kαφεϊνη', + 'Χωρίς Γλυκάνισο ;Χωρίς-Γλυκάνισο', + 'Χωρίς Ανθρακικό ;Χωρίς-Ανθρακικό', + 'Υψηλής Παστερίωσης ;Υψηλής-Παστερίωσης', + 'Ολικής Άλεσης ;Ολικής-Άλεσης', + 'Ολικής Aλέσεως ;Ολικής-Aλέσεως', + 'Χαρτί Υγείας ;Χαρτί-Υγείας', + 'ρολό υγείας ;ρολό-υγείας', + 'χαρτί τουαλέτας ;χαρτί-τουαλέτας', + 'Χαρτί Κουζίνας ;Χαρτί-Κουζίνας', + 'ρολό κουζίνας ;ρολό-κουζίνας', + 'Μπάρες Δημητριακών ;Μπάρες-Δημητριακών', + 'Aς Μαγειρέψουμε ;Aς-Μαγειρέψουμε', + 'ΚΡΙΣ ΚΡΙΣ ;ΚΡΙΣ-ΚΡΙΣ', + 'ΚΡΙΣΚΡΙΣ ;ΚΡΙΣ-ΚΡΙΣ', + 'ΚΡΙ ΚΡΙ ;ΚΡΙ-ΚΡΙ', + 'ΚΡΙΚΡΙ ;ΚΡΙ-ΚΡΙ', + 'ΕΛ ΓΚΡΕΚΟ ;ΕΛ-ΓΚΡΕΚΟ', + 'ΕΛΓΚΡΕΚΟ ;ΕΛ-ΓΚΡΕΚΟ', + 'FREE STEP ;FREE-STEP', + 'EL SABOR ;EL-SABOR', + 'ELSABOR ;EL-SABOR', + 'DOUWE EGBERTS ;DOUWE-EGBERTS', + 'ΕΝ ΕΛΛΑΔΙ ;ΕΝ-ΕΛΛΑΔΙ', + 'ΕΝΕΛΛΑΔΙ ;ΕΝ-ΕΛΛΑΔΙ', + 'SPIN SPAN ;SPIN-SPAN', + 'SPINSPAN ;SPIN-SPAN', + 'CRETA-FARMS ;CRETA-FARM', + 'CRETA-FARM ;CRETA-FARM', + 'CRETAFARM ;CRETA-FARM', + 'Ολες-τις-Χρήσεις ;Ολες-τις-Χρήσεις', + 'Χωρίς προσθήκη ζάχαρης ;Χωρίς-ζάχαρη' ]; replaceSource.forEach( it => { st = it.split(';'); @@ -283,7 +329,7 @@ linkedWords = [ // ----------------------------------------------------------------------------- // NOTE: APPLIED in PER-WORD base -> after spliting description to words removeList = [] -removeOriginals = 'κατά παρά υπό από μετά προς μας με σε για του της των από στο στον & r s ft l τ e g h k m n o p s x'.split(' ') +removeOriginals = 'κατά παρά υπό από μετά προς μας με σε για του της των από στο το στον & r s ft l τ e g h k m n o p s x'.split(' ') removeOriginals.forEach( w => { removeList.push( kb_trans(w)); }); @@ -511,20 +557,34 @@ function do_replaces(str) { function preproccess_text(str) { str = clean_text(str); str = do_replaces(str); - str = mark_linked_words(str); + replaces.forEach( lw => { + reg = new RegExp( lw.src, "gi"); // prepare regex for case insensitive (i) replace all (g) + str = str.toLowerCase().replace(reg, lw.trg); + }) + // depricated: str = mark_linked_words(str); return str; } +// DEPRICATED: // mark linked words (connect them with a dash) // return new text after "all-links" are marked // --- function mark_linked_words(txt) { - linkedWords.forEach( lw => { txt = mark_link( lw, txt ); }); + linkedWords.forEach( lw => { + + txt = mark_link( lw, txt ); + }); return txt } +// TODO: +// update function +// new algorithm steps: +// +// str.toLowerCase().replace(/αλφα βητα/gi, 'α-β'); console.log(replacedOnce); +// // mark a link (lws) to a text (source) // conecting them with a dash/minus character // --- @@ -539,6 +599,24 @@ function mark_link(lws, source) { } +accented_vowels = []; +[ + 'ά α', 'έ ε', 'ή η', 'ί ι', 'ϊ ι', 'ό ο', 'ύ υ', 'ϋ υ', 'ώ ω', + 'Ά Α', 'Έ Ε', 'Ή Η', 'Ί Ι', 'Ϊ Ι', 'Ό Ο', 'Ύ Υ', 'Ϋ Υ', 'Ώ Ω' +].forEach( pair => { + ab = pair.split(' '); + accented_vowels.push({ + a: ab[0], // accented + p: ab[1] // pure + }); +}) + +// accendless +// replaces accended vowels by non accended ones +function accendless(str) { + +} + // #4 // OUTPUT FUNCTIONS -- cgit v1.2.3