diff options
| author | Geo Halkiadakis <gchalkiadakis@sklavenitis.co.gr> | 2023-04-13 17:34:02 +0300 |
|---|---|---|
| committer | Geo Halkiadakis <gchalkiadakis@sklavenitis.co.gr> | 2023-04-13 17:34:02 +0300 |
| commit | 883edd61fe0f375ef3e6d86cbac5ea99cdf7d752 (patch) | |
| tree | 2e43d11792447f632c8e8413f23a2fd68d089820 /javascript/keygen.js | |
| parent | f9075f302929fd81f63ba48adcc3c596bf8376b4 (diff) | |
| download | linkeysearch-883edd61fe0f375ef3e6d86cbac5ea99cdf7d752.tar.gz linkeysearch-883edd61fe0f375ef3e6d86cbac5ea99cdf7d752.tar.bz2 linkeysearch-883edd61fe0f375ef3e6d86cbac5ea99cdf7d752.zip | |
patches for keygan; patches shall be absorbed into the main proccedure (work in progress)
Diffstat (limited to 'javascript/keygen.js')
| -rw-r--r-- | javascript/keygen.js | 187 |
1 files changed, 99 insertions, 88 deletions
diff --git a/javascript/keygen.js b/javascript/keygen.js index 2349901..5d1b1cf 100644 --- a/javascript/keygen.js +++ b/javascript/keygen.js @@ -114,7 +114,7 @@ function keyboardize(str) { -/** sanitize_EL +/** sanitize_GR * ----------------------------------------------------------------------------- * replaces greek accended vowels with non accended ones * takes care of sigma on the end of words @@ -154,7 +154,7 @@ function sanitize_GR(str) { str = str.replaceAll('σ-', 'ς-'); str = str.replaceAll('σ ', 'ς '); - return str.trim(); + return str; } @@ -199,30 +199,35 @@ var synonyms_Originals = [ 'ΚΑΪΔΑΝΤΖΗΣ ΚΑΪΔΑΝΤΖΗ', 'ΥΦΑΝΤΗΣ ΥΦΑΝΤΗ', 'ΣΥΝΑΓΡΙΔΑ ΣΥΝΑΓΡΙΔΕΣ', - 'Ντομάτα Ντομάτας', + 'Ντομάτα Ντομάτας Τομάτα', 'Ελαφρύ Ελαφρά Light', 'Εγχώρια Εγχώριες Ελληνικό Ελληνική Ελληνικά', - 'τριμμένη τριμμένο', + 'τριμμένη τριμμένο τριμμένα', 'Τόνος Τόνου', 'Κριθαρένια κρίθινα', 'Χωρίς-Kαφεϊνη Decaffeine', 'Το-Μάννα Μάννα', 'Κράνμπερι Κράνμπερις', - 'Κρήτης Κρητικό', + 'Κρήτης Κρητικό Κρητική', 'Πέννες Πένες', + 'σοκολατένιος σοκολατένια σοκολατένιο', 'Μακαρόνια Ζυμαρικά Σπαγγέτι Σπαγγετίνι Σπαγγετόνι', 'Καρτέλλα Καρτέλα Καρτέλλες' ] synonyms_Originals.forEach( grp => { // remove accends so any replaces can be done flawlessly - grp = sanitize_GR(grp); + grp = sanitize_GR(grp).trim(); + + // push it to array of synonyms (in lowerCase); + synonyms.push( grp.toLowerCase().split(' ') ); - // create array of synonyms; - // push it to sanitized and keyboardized arrays - synonyms.push( grp.split(' ') ); - synonym_kbs.push( keyboardize(grp).split(' ') ); + // push it the keyboardized array of synonyms + synonym_kbs.push( keyboardize(grp).toLowerCase().split(' ') ); }) +// console.log(synonyms); process.exit(); +// console.log(synonym_kbs); process.exit(); + // significant terms /////////////////////////////////////////////////////////// // ----------------------------------------------------------------------------- @@ -240,69 +245,74 @@ significantExceptios = sanitize_GR('7-UP 3-ΑΛΦΑ 17 3Π 7-DAYS K2R').split(' // --- -- -- - - - replaces = []; replaceSource = [ - '3 ΑΛΦΑ ;3-ΑΛΦΑ ', - 'HEAD & SHOULDERS ;HEAD&SHOULDERS ', - 'HEAD N SHOULDERS ;HEAD&SHOULDERS ', - 'W.K Kellogg ; W-K-Kellogg ', - 'W.K Kellogg ; ', - '7 DAYS ;7-DAYS ', - '7 UP ;7-UP ', - 'ΜΠΑΡΜΠΑ ΣΤΑΘΗ ;ΜΠΑΡΜΠΑ-ΣΤΑΘΗΣ ', - 'ΜΠΑΡΜΠΑ ΣΤΑΘΗΣ ;ΜΠΑΡΜΠΑ-ΣΤΑΘΗΣ ', - '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', - 'Ολες-τις-Χρήσεις ;Ολες-τις-Χρήσεις', - 'Χωρίς προσθήκη ζάχαρης ;Χωρίς-ζάχαρη' + '3 ΑΛΦΑ;3-ΑΛΦΑ', + 'HEAD & SHOULDERS;HEAD&SHOULDERS', + 'HEAD N SHOULDERS;HEAD&SHOULDERS', + 'W.K Kellogg; W-K-Kellogg', + 'W.K Kellogg;', + '7 DAYS;7-DAYS', + '7 UP;7-UP', + 'ΜΠΑΡΜΠΑ ΣΤΑΘΗ;ΜΠΑΡΜΠΑ-ΣΤΑΘΗΣ', + 'ΜΠΑΡΜΠΑ ΣΤΑΘΗΣ;ΜΠΑΡΜΠΑ-ΣΤΑΘΗΣ', + '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λέσεως', + 'Χαρτί Υγείας;Χαρτί-Υγείας', + 'ρολό υγείας;ρολό-υγείας', + 'χαρτί τουαλέτας;χαρτί-τουαλέτας', + 'Χαρτί Κουζίνας;Χαρτί-Κουζίνας', + 'ρολό κουζίνας;ρολό-κουζίνας', + 'Μπάρες Δημητριακών;Μπάρες-Δημητριακών', + 'Ας Μαγειρέψουμε;Ας-Μαγειρέψουμε', + 'ΚΡΙΣ ΚΡΙΣ;ΚΡΙΣ-ΚΡΙΣ', + 'ΚΡΙΣΚΡΙΣ;ΚΡΙΣ-ΚΡΙΣ', + 'ΚΡΙ ΚΡΙ;ΚΡΙ-ΚΡΙ', + 'ΚΡΙΚΡΙ;ΚΡΙ-ΚΡΙ', + 'ΕΛ ΓΚΡΕΚΟ;ΕΛ-ΓΚΡΕΚΟ', + 'ΕΛΓΚΡΕΚΟ;ΕΛ-ΓΚΡΕΚΟ', + '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 = sanitize_GR( - it + it.toLowerCase() ).split(';'); - replaces.push({ src: st[0], trg: st[1] }); + replaces.push({ + src: ' '+ st[0] +' ', // encolse between spaces + trg: ' '+ st[1] +' ' // to separate from before/after words + }); }); +// console.log(replaces); process.exit(); + // words that shall not be searched first ////////////////////////////////////// // ----------------------------------------------------------------------------- @@ -474,17 +484,20 @@ function extract_linked_keywords(obj) { if (rec.img != 0) { - var description = preproccess_text(rec.txt); + //var description = preproccess_text(rec.txt); + + var description = clean_text(rec.txt); + var pid = rec.eys; var fq = freq_of(pid)+1; prods_.push({ id: pid, - w: description + w: description.trim() }) var keys = []; - var words = description.split(' '); + var words = preproccess_text(description).split(' '); // filter words; keep only significant words.forEach( w => { @@ -607,7 +620,7 @@ function connect_keys( a, b, id, f ) { w : b, kb : kbB, f : f, - p : [ i ] + p : [ id ] }); } return true; @@ -624,13 +637,13 @@ function connect_keys( a, b, id, f ) { /** clean text * --- -- -- - - - - * removes non keyword characters [\+, \., \'] and internal multiple-spaces + * removes non keyword characters [+ . , !] and internal multiple-spaces * @param txt (string): product description */ function clean_text(txt) { - return sanitize_GR(txt).replace('+',' ').replace('.',' ') - .replace(' ',' ') - .replace(' ',' '); + return txt.replace('+',' ').replace('.',' ').replace(',',' ') // change to space + .replace('!','').replace('\"', '') // remove character + .replace(' ',' ').replace(' ',' '); // remove multiple spaces } @@ -662,7 +675,7 @@ function is_significant(str) { function synonym_keys(w) { w_kb = keyboardize(w); for (i=0 ; i < synonym_kbs.length ; i++) { - if (synonym_kbs.indexOf(w_kb) !== -1) + if (synonym_kbs[i].indexOf(w_kb) !== -1) return synonyms[i]; } return [ w ]; @@ -682,24 +695,24 @@ function synonym_keys(w) { // edit common mistakes // with suggested replaces function mark_explicit_links(str) { - - replaces.forEach( it => { str = str.replace(it.src, it.trg); }); - return str; + str = ' '+ str +' '; + replaces.forEach( it => { str = str.replaceAll(it.src, it.trg); }); + return str.replaceAll(' ', ' ').trim(); } // preproccess description // --- -function preproccess_text(str) { +function preproccess_text(description) { - str = clean_text(str); // remove non-keyword characters + str = clean_text(description); // remove non-keyword characters - str = mark_explicit_links(sanitize_GR(str)); // mark explicit links + str = mark_explicit_links(sanitize_GR( str.toLowerCase() )); // mark explicit links - 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); - }) + // 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; } @@ -792,8 +805,6 @@ async function upload_file( bucketName, srcFilePath, trgFilePath ) { - - /** #5 * --- * MAIN function (exposed function to run the whole proccess) |
