Вирішуємо проблему грамотності в інтернеті за допомогою Яндекс.Спеллер

    
 
«Якщо людина померла, він про це не знає, тільки іншим важко. Те ж саме, коли він тупий… »
І те ж саме, коли він безграмотний.
 
На жаль, неможливо змусити всіх людей вивчити правила і почати писати без помилок. Це факт, з яким треба змиритися — помилки в інтернеті є і будуть.
 
А що, якщо підійти до цієї проблеми з іншого боку? Як було б здорово мати такий браузер, який при відкритті сторінки перевіряв би текст і виправляв всі помилки. Або хоча б частину. Адже, по правді кажучи, помилки сприймаються по-різному: забута кома швидше за все залишиться непоміченою, тоді як які-небудь «извени» або «правельно» викликають короткочасне сказ.
 
Що буде, якщо перед читанням сторінки пропустити її через фільтр і виправити орфографію, на зразок того як adblock ріже рекламу?
 
Напевно такі ідеї приходили не тільки мені, але пошуки мене ні до чого не привели. Тому я вирішив сам провести такий експеримент і хочу розповісти про результати.
Забігаючи вперед, скажу, що результати вийшли цікаві, але проблему грамотності я таким чином вирішити не зміг.
 
 

Тоді навіщо ця стаття, якщо нічого не вийшло?

Негативний результат — теж результат. Цю статтю я пишу з двох причин:
По-перше, щоб наступний людина, якій прийде ця ідея в голову, не винаходив все з нуля, а міг спертися на мої результати.
А по-друге, раптом знайдеться людина, яка зможе розвинути цю ідею далі.
 
 

Реалізація

Реалізація проста — я написав букмарклет (wiki ). Завантажуємо сторінку, натискаємо на букмарклет — запускається js-скрипт, який перевіряє орфографію і виправляє помилки.
 
Для перевірки орфографії я використовував прекрасний сервіс — Яндекс.Спеллер — api.yandex.ru / speller / (Умови використання сервісу «API Яндекс.Спеллер» — legal.yandex.ru / speller_api / ).
 
Заміна виконується на перше запропоноване сервісом слово.
 
Є обмеження — запит не повинен перевищувати 10000 символів. Враховуючи те, що 1 російська буква — це 6 символів в URL-encoded вигляді (буква «а» — це% D0% B0), то виходить істотне обмеження. Весь текст доводиться розбивати на кілька фрагментів. Для середньої сторінки якогось форуму доводиться виконувати десяток-другий запитів.
 
Для тих, хто хоче випробувати скрипт на собі, вихідний код посилання на bitbucket .
 
Те ж саме, але в одну строчку:
 
 
javascript:(function(){function main(){var text=document.body.innerHTML;text=text.replace(/<.*?>/g," "),text=text.replace(/[^а-яА-ЯёЁ]/g," "),text=text.replace(/\s+/g," ");var fragments=splitByLimit(text,1e4);for(var i=0,len=fragments.length;i<len;i++)checkAndReplace(fragments[i])}function splitByLimit(text,limit){var fragments=[],words=text.split(" "),fragment=[],fragmentLen=0;for(var i=0;i<words.length;i++){var word=words[i];fragmentLen+word.length*6>limit&&(fragments.push(fragment.join(" ")),fragment=[],fragmentLen=0),fragment.push(word),fragmentLen+=word.length*6+3,i==words.length-1&&fragments.push(fragment.join(" "))}return fragments}function checkAndReplace(text){var xhr=new XMLHttpRequest;xhr.onreadystatechange=function(){this.readyState==4&&(xhr.status==200?(data=JSON.parse(xhr.responseText),replaceWords(data)):console.log(xhr.status))},xhr.open("GET","http://speller.yandex.net/services/spellservice.json/checkText?options=7&text="+text,!0),xhr.send()}function replaceWords(data){if(!data)return;var body=document.body.innerHTML;for(var i=0,len=data.length;i<len;i++){var subst=data[i];if(subst.s.length!==0&&subst.word.length>4){var replacement='<span style="background-color: #cfc">'+subst.s[0]+" </span>";replacement+='<span style="background-color:#fcc"><span>'+subst.word.split("").join("</span><span>")+"</span></span>";var regexp=new RegExp(subst.word);body=body.replace(regexp,replacement)}}document.body.innerHTML=body}main()})();

 
Щоб спробувати, потрібно створити закладку в браузері і в поле URL вписати цей код.
 
 

Результати

Перші враження — дивовижно! Виправляє всі помилки. На диво — виправляє навіть географічні назви, імена, назви компаній.
 
Ось кілька прикладів.
 
Червоним виділені вихідні слова, зеленим — на що замінилося.
 
 Приклад 1:
 
 
 
 Приклад 2:
 
 
 
 Приклад 3:
 
 
 
Але, на жаль, не все так райдужно. Є й зворотний бік — помилкові спрацьовування . Здається, їх навіть побільше, ніж виправлених помилок. Особливо це помітно на тематичних сайтах з надлишком всяких термінів і сленгу (як Хабр, наприклад).
 
 Приклад 4:
 
 
 
 Приклад 5:
 
 
 
Цей факт засмучує і зводить нанівець всі плюси від використання скрипта.
Але все ж сподіваюся, що комусь мої експерименти виявилися корисними.
    
Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.