рдкреНрд░рд╛рдХреГрддрд┐рдХ рднрд╛рд╖рд╛ рдкрд░ рдкреНрд░рдХрд╛рд╢ рдбрд╛рд▓рд╛

рджрд┐рд╕рдВрдмрд░ 2013 рдореЗрдВ рдЕрдореЗрд░рд┐рдХреА рдХрд╛рдВрдЧреНрд░реЗрд╕ рджреНрд╡рд╛рд░рд╛ рдорд╛рдиреЗ рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╡рд┐рджреЗрд╢реА 416D6572696363643616E20436F646520 рдХреЗ рд╕рд╛рде рдХрдВрдкреНрдпреВрдЯрд░ рднрд╛рд╖рд╛рдУрдВ рдХреЛ рд╕рдорд╛рди рдХрд░рдиреЗ рдХреЗ рдмрд┐рд▓ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХрд╛ рд╣рд╛рдЗрд▓рд╛рдЗрдЯрд┐рдВрдЧ рдХрд╛ рд╡рд┐рдЪрд╛рд░ рдореЗрд░реЗ рдкрд╛рд╕ рдЖрдпрд╛ред рдкреНрд░реЛрдЧреНрд░рд╛рдо рдмрдирд╛рддреЗ рд╕рдордп рд╡рд╛рдХреНрдп рд░рдЪрдирд╛ рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдкреНрд░рдЪрд▓рди рдореЗрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕ рд╕рд╛рдордЧреНрд░реА рдХреЗ рд▓реЗрдЦрди рдХреЗ рд╕рдордп рдкреНрд░рд╛рдХреГрддрд┐рдХ рднрд╛рд╖рд╛рдУрдВ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рдиреЗ рдХрд╛ рдореБрджреНрджрд╛ рдХреБрдЫ рд╣рдж рддрдХ рд╕реАрдорд┐рдд рдерд╛ред рдЕрдВрдЧреНрд░реЗрдЬреА рдмреЛрд▓рдиреЗ рд╡рд╛рд▓реЗ рдордВрдЪред рдлрд┐рд░ рднреА, рдпрджрд┐ рдЖрдк рдХреБрдЫ рд╢рдмреНрджреЛрдВ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЙрдЬрд╛рдЧрд░ рдХрд░рдХреЗ рдкрд╛рда рдХреА рджреГрд╢реНрдп рдзрд╛рд░рдгрд╛ рдХреЛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рддреЛ рдкреНрд░рдпрд╛рд╕ рдХреНрдпреЛрдВ рди рдХрд░реЗрдВред

рдХрдВрдкреНрдпреВрдЯрд░ рдХреА рднрд╛рд╖рд╛ рдмрд┐рдирд╛ рд╢рд░реНрдд рдХреЗ рд╕рдЦреНрдд рд╣реЛрддреА рд╣реИ, рдирд┐рд░реНрдорд╛рдг рдЖрдорддреМрд░ рдкрд░ рдХрд┐рдП рдЧрдП рдлрд╝рдВрдХреНрд╢рди (рдСрдкрд░реЗрдЯрд░, рд╕рдВрдЦреНрдпрд╛, рд╕реНрдЯреНрд░рд┐рдВрдЧ, рдЖрджрд┐) рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдкрд╣рд▓рд╛ рд╡рд┐рдЪрд╛рд░ рдЬреЛ рдорди рдореЗрдВ рдЖрддрд╛ рд╣реИ рд╡рд╣ рдкреНрд░рд╛рдХреГрддрд┐рдХ рдЧреНрд░рдВрдереЛрдВ (рд╡рд┐рд╖рдп, рд╡рд┐рдзреЗрдп рдЖрджрд┐) рдХреЗ рд╕рдорд╛рди рд╣рд╛рдЗрд▓рд╛рдЗрдЯрд┐рдВрдЧ рд╣реИред рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ, рдПрдлред рдПрдоред рджреЛрд╕реНрддреЛрд╡рд╕реНрдХреА рджреНрд╡рд╛рд░рд╛ "рдлреИрдВрдЯрд╛рд╕реНрдЯрд┐рдХ рд╕реНрдЯреЛрд░реА" рдХреА рд╢реБрд░реБрдЖрдд рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ, рд╣рд░реЗ рд░рдВрдЧ рдореЗрдВ рд╕рднреА рд╡рд┐рд╖рдпреЛрдВ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ, рдФрд░ рдиреАрд▓реЗ рд░рдВрдЧ рдореЗрдВ рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреА рдХрд░реЗрдВ:



рдЗрд╕ рддрд░рд╣ рдХреЗ рдорд╛рд░реНрдХрдЕрдк рдХреЛ рдкрд╛рда рдХреЗ рдмрдЬрд╛рдп рдЬрдЯрд┐рд▓ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдореЗрд░реА рд░рд╛рдп рдореЗрдВ рд╣рд╛рдЗрд▓рд╛рдЗрдЯрд┐рдВрдЧ рдЬрдЯрд┐рд▓ рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП (рд╣рд╛рдЗрд▓рд╛рдЗрдЯрд┐рдВрдЧ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреА рдЧрддрд┐ рд▓рдЧрднрдЧ рдкреГрд╖реНрда рд▓реЛрдбрд┐рдВрдЧ рдЧрддрд┐ рдХреЗ рд╕рдорд╛рди рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП) рддрд╛рдХрд┐ рдЗрд╕реЗ рдЖрд░рд╛рдо рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред рдореИрдВрдиреЗ рдПрдХ рд╕рд░рд▓ рд╕рдВрд╕реНрдХрд░рдг рдкрд░ рд░рд╣рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛, рдЕрд░реНрдерд╛рддреН, рдЖрд╡реГрддреНрддрд┐ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рдиреЗ рдкрд░, рдЗрд╕ рд╡рд┐рдЪрд╛рд░ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХрд┐ рдПрдХ рд╢рдмреНрдж рдХреЛ рдЬрд┐рддрдиреА рдмрд╛рд░ рджреЛрд╣рд░рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЙрддрдирд╛ рд╣реА рдХрдо рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИред рдХрдбрд╝рд╛рдИ рд╕реЗ рдмреЛрд▓рддреЗ рд╣реБрдП, рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╕рдЪ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА Dostoevsky рдХреЗ рд╕рдВрдХреЗрддрд┐рдд рдорд╛рд░реНрдЧ рдХреЛ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЙрди рд╢рдмреНрджреЛрдВ рдХреЛ рдмреЛрд▓реНрдб рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рдирд╛ рдЬреЛ рдХрд╣рд╛рдиреА рдореЗрдВ рдЖрдЧреЗ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдЖрдкрдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдорд┐рд▓рддреЗ рд╣реИрдВ:



рдЪреВрдБрдХрд┐ рд╢рдмреНрджреЛрдВ рдХрд╛ рдЪрдпрди рдкрд╛рда рдХреА рдзрд╛рд░рдгрд╛ рдХреЛ рдмрд╣реБрдд рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЗ рд╕реНрд╡рдпрдВ рдХреЗ рд╕рдорд╛рдзрд╛рди рдпрд╛ рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдЦреБрд▓рд╛ рд╣реИред рдЗрд╕ рдХрд╛рд░рдг рд╕реЗ, рд╢реЗрд╖ рд▓реЗрдЦ рдХреНрд░реЛрдо рдХреЗ рд▓рд┐рдП рдЗрд╕ рддрд░рд╣ рдХреЗ рд╡рд┐рд╕реНрддрд╛рд░ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдкрд┐рдд рд╣реИред

рдЗрд╕рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдПрдХ рдлрд╝рдВрдХреНрд╢рди рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рдЬреЛ рдПрдХ рджрд┐рдП рдЧрдП рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рд╢рдмреНрдж рдЖрд╡реГрддреНрддрд┐ рд╢рдмреНрдж рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рддрд╛ рд╣реИ:

function collect(text, frequences, pattern) { var words = text.split(/\s+/); //    for (var j = 0; j < words.length; j++) { //            var current = words[j].toLowerCase().replace(pattern,''); //      if (!current || current.length < MIN_LENGTH) continue; //       --  ,   --   if (!frequences[current]) frequences[current] = 1; else frequences[current] += 1; } } 


DOM рд╕реЗ рд╢рдмреНрджреЛрдВ рдХреЗ рдЙрдкрдпреЛрдЧ рдкрд░ рдЖрдБрдХрдбрд╝реЗ рдЗрдХрдЯреНрдард╛ рдХрд░реЗрдВ:

 var pattern = /[^-]/g var freq = {} function stat(element) { if (/(script|style)/i.test(element.tagName)) return; //       if (element.nodeType === Node.ELEMENT_NODE && element.childNodes.length > 0) for (var i = 0; i < element.childNodes.length; i++) stat(element.childNodes[i]); //      collect if (element.nodeType === Node.TEXT_NODE && (/\S/.test(element.nodeValue))) { collect(element.nodeValue, freq, pattern); } } stat(window.document.getElementsByTagName('html')[0]); 


рдлрд┐рд░, рд╣рдо рдЙрди рдЖрдВрдХрдбрд╝реЛрдВ рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд╛рд▓рддреЗ рд╣реИрдВ, рдЬреЛ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╕реЗ рдЕрдзрд┐рдХ рд╕рд╛рдорд╛рдиреНрдп рд╣реИрдВ:
 function remove(o, max) { var n = {}; for (var key in o) if (o[key] <= max) n[key] = o[key]; return n; } freq = remove(freq, maxFreq); 


рдФрд░ рдЕрдВрдд рдореЗрдВ, рд╣рдо рд╣рдорд╛рд░реЗ рд▓рд┐рдП рджрд┐рд▓рдЪрд╕реНрдк рд╢рдмреНрджреЛрдВ рдХреА рд╕рднреА рдШрдЯрдирд╛рдУрдВ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рддреЗ рд╣реИрдВ:

 function markup(element, pattern) { if (/(script|style)/i.test(element.tagName)) return; //         if (element.nodeType === Node.ELEMENT_NODE && element.childNodes.length > 0) { //   ,    -,     ,   var freq = {}; for (var i = 0; i < element.childNodes.length; i++) if (element.childNodes[i].nodeType === Node.TEXT_NODE && (/\S/.test(element.childNodes[i].nodeValue))) collect(element.childNodes[i].nodeValue, freq, pattern); if (freq && freq.length !== 0) { var efreq = []; var total = 0; //    ,      //      [, ]  ,        //    ,        for (var key in freq) if (freqRus[key]) efreq.push([key, freq[key]]); efreq.sort(function(a, b) {return a[0].length - b[0].length}); //       ,    -, //           var max = element.childNodes.length*efreq.length*2; for (var i = 0; i < element.childNodes.length; i++) { if (total++ > max) break; if (element.childNodes[i].nodeType === Node.TEXT_NODE) { var minPos = -1, minJ = -1; //              for (var j in efreq) { key = efreq[j][0]; var pos = element.childNodes[i].nodeValue.toLowerCase().indexOf(key); if (pos >= 0 && (minJ === -1 || minPos>pos)) { minPos = pos; minJ = j; } } //     --   if (minPos !== -1) { key = efreq[minJ][0]; val = efreq[minJ][1]; //     ,   ,      "strong" var spannode = window.document.createElement('strong'); var middle = element.childNodes[i].splitText(minPos); var endbit = middle.splitText(key.length); var middleclone = middle.cloneNode(true); spannode.appendChild(middleclone); element.replaceChild(spannode, middle); } } } } } } } markup(window.document.getElementsByTagName('html')[0], pattern); 


рдирд┐рд╖реНрдХрд░реНрд╖


рд╢рдмреНрдж рд░реВрдкреЛрдВ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдФрд░ рдЗрддрд┐рд╣рд╛рд╕ рдХреЛ рд╕рдВрдЪрд┐рдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ (рдпрд╛рдиреА, рдПрдХ рдкреГрд╖реНрда рдХреЗ рднреАрддрд░ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рд╕рдм рдХреБрдЫ рдПрдХ рд╕рд╛рде рдПрдХрддреНрд░рд┐рдд рдХрд░рдХреЗ рдПрдХ рдЖрд╡реГрддреНрддрд┐ рд╢рдмреНрджрдХреЛрд╢ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП)ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╢рдмреНрджрдХреЛрд╢ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ (рдХреБрдЫ рд╢рдмреНрджреЛрдВ рдХреЛ рдареАрдХ рдХрд░реЗрдВ, рдФрд░ рдХрднреА рднреА рд╢рд╛рдорд┐рд▓ рди рдХрд░реЗрдВ)ред

рдкреВрд░рд╛ рдЙрджрд╛рд╣рд░рдг рдЬреАрдердм рдХреЗ рд╕рд╛рде рд▓рд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
github.com/parsifal-47/nalacol

рдпрд╛ рддреБрд░рдВрдд рдХреНрд░реЛрдо рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрд╡реЗрджрди рдХреЗ рд░реВрдк рдореЗрдВ:
chrome.google.com/webstore/detail/natural-language-colorer/jjcldlhpnolppcclcgdbblbilmealfjd

рдореБрдЭреЗ рдЦреБрд╢реА рд╣реЛрдЧреА рдЕрдЧрд░ рдпрд╣ рд▓реЗрдЦ рдкрд╛рдардХреЛрдВ рдХреЛ рдкреНрд░рд╛рдХреГрддрд┐рдХ рднрд╛рд╖рд╛ рдореЗрдВ рдЧреНрд░рдВрдереЛрдВ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рджрд┐рд▓рдЪрд╕реНрдк рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЗрд░рд┐рдд рдХрд░рддрд╛ рд╣реИред

Source: https://habr.com/ru/post/In215611/


All Articles