Делаем себя развидеть это, или Право на предварительную правку

Мы часто видим ошибки и опечатки в интернете. Как правило, принято или с достоинством пройти мимо, в глубине души презирая неграмотного (или невнимательного) писателя, или, наоборот, с увлечением развернуть просветительскую деятельность (не всегда, к сожалению, уважительную). В лучшем случае, если на сайте установлен Orphus — нажать Ctrl+Enter.

Так поступал и я, пока однажды с ужасом не заметил, что написал «вООбщем» или нечто подобное. Разрушительное влияние чтения форумов, да и, что уж там, самого Хабра, на читательскую грамотность — налицо. А между тем — сейчас есть многое, что могло бы облегчить участь наших бедных глаз!

Приношу извинения за конспективность дальнейшего изложения. Как всегда, цейтнот. Прошу задавать вопросы в комментариях.
Осталось сделать лишь несколько простых идеологических шагов.

Шаг 1. Существует класс ошибок, которые можно исправить автоматически. Например, заменить ВООБЩЕМ и ВОБЩЕМ на В ОБЩЕМ не составит труда, равно как и заметить, что в русском языке нет глаголов, оканчивающихся на -ЮТЬСЯ. Автоматически же искать разницу между ДЕРЖАТСЯ и ДЕРЖАТЬСЯ не рекомендую.
Такой подход применяется для борьбы с нецензурной бранью в чатах и на форумах — и довольно деструктивно. В остальных случаях, как правило, текстовый редактор лишь подчёркивает красным незнакомые слова при наборе их автором текста (писателем). Это рассуждение плавно подводит нас к следующему шагу.

Шаг 2. Читатель имеет право исправить текст перед прочтением. Да-да, не обязательно уповать на грамотность писателя или бдительность редактора/модератора. Можно самому делать свой интернет чище и светлее.

Так и родилась идея chas-correct — расширения для браузера, автоматически исправляющего многие ошибки. Репозиторий на github. Поддерживаются Firefox, Firefox Mobile и Chromium-подобные. (Для Google Chrome — очень близкий форк от ymatuhin в каталоге).
ОБНОВ 04.10.2015 Сделали юзерскрипт для хромоподобных. Инструкция по установке.

Далее привожу подробности в форме вопрос-ответ.

В: Зачем нужен chas-correct? Любой современный браузер умеет подчёркивать ошибки красненьким.
О: Умеет, конечно. Только «свои» ошибки, возникающие при наборе текста, и только робко подчёркивать. Chas-correct же самостоятельно скрывает от глаз читателя чужие ошибки, изначально содержащиеся в тексте на загруженной странице.

В: Неужели до этого раньше не додумались?!
О: Сам удивляюсь. Были схожие идеи: раз и два. Но объединять их почему-то не стали…

В: Все ли ошибки исправляет chas-correct?
О: Конечно, нет! Только то, что, во-первых, часто встречается, во-вторых, может быть легко формализовано и исправлено автоматически.

В: Есть ли chas-correct в официальном каталоге расширений Google Chrome/Opera/…?
О: Нет. Мне некогда возиться с их верификациями и как-то жаль выкладывать подорожавшие доллары за аккаунт, который в любой момент могут забанить или подвести под санкции. Кроме того, я считаю политику навязывания централизованной установки и проверки расширений сомнительной; впрочем, это тема для отдельного холивара, который можно развести в комментариях. Если кто-то запакует в crx и выложит в каталоге — возражать, разумеется, не буду.

В: Обновляется ли chas-correct?
О: К сожалению, пока нет. Значительное количество ошибок уже проанализировано и исправляется им, а дальнейшее увеличение словаря ошибок требует некоторой оптимизации алгоритма. Если же предусмотреть обновление не только словаря, но и самого движка, да ещё и в обход официальных хранилищ расширений — у устанавливающего возникнет вполне обоснованная паранойя (как, впрочем, и в случае установки из магазина Chrome; были случаи). В будущем планируется разработать обновление только словаря в обход всевозможных сторов.

В: Как убедиться, что расширение работает?
О: Если вы не видите здесь ошибок — скорее всего, оно работает. Или вот хороший хабрапример .

В: Возможны ли ложные срабатывания, когда chas-correct исправляет правильное на неправильное?
О: Практически исключены. Теоретически такое возможно при столкновении с неологизмами, именами персонажей, географическими названиями и прочими несловарными словами. Однако иногда расширение исправляет неправильное на неправильное: так, «ЧТО-БЫ» всегда превратится во «ЧТОБЫ», даже если должно быть «ЧТО БЫ».

В: А как оно вообще работает?
О: На регулярках. Вот не надо на этом моменте гневно топорщить бороду и воздевать руки к небу, не надо! Полноценный анализ текста в реальном времени в браузере всё равно едва ли возможен. По крайней мере, при текущей вычислительной мощности ЭВМ. Даже в случае с регулярными выражениями потребовались значительные усилия на оптимизацию.
UPD: Регулярные выражения я считаю более качественной моделью, описывающей ошибки, чем словарь, из-за обилия жаргона, терминологии, имён собственных и т. д.

В: А почему бы не отправлять текст на проверку тому же Яндекс-Спеллеру в режиме реального времени?
О: Во-первых, это приведёт к значительному количеству ложных срабатываний, такие эксперименты до меня проводились, повторюсь. Во-вторых, это бы означало, что вся переписка пользователя отправляется на сторонний сервис… что, мягко говоря, не очень хорошо в наши тревожные времена.

В: Работает ли chas-correct с динамически подгружаемым содержимым, например, с мгновенными сообщениями ВКонтакте?
О: Работает, но не всегда мгновенно, чтобы не насиловать таймер.

В: А откуда взяты базы ошибок и показатели эффективности?
О: У Хабра такая удобная структура страниц… Прямая нумерация. Цикл, wget, на парсер, порезано на слова, посчитано, потом самое частотное — через Яндекс-Спеллер.

В: Исправляет ли chas-correct набираемый мною текст?
О: Работа расширения блокируется примерно на 3 секунды после любого нажатия клавиши на клавиатуре, после чего оно корректирует набранный текст, переводя, кстати, курсор в его начало. Так что если Вы хотите, чтобы chas-correct исправлял не только то, что Вы читаете, но и то, что Вы пишете — возьмите за правило ждать 3 секунды между окончанием набора сообщения и отправкой. Это вообще очень полезно…

В: А зачем автор всё это делает?
О: Честно… Есть одна чудесная кареглазая девушка, которая меня на это вдохновила. Да и самому нужно. Буду очень рад, если кому-нибудь пригодится. Кроме того, это — строчка в портфолио (какая-никакая), инвайт на Хабр, шанс на поощрение от ВГУ (пользуясь случаем, передаю компании «Информсвязь» большое спасибо за именные стипендии). А ещё chas-correct — это неплохой способ сделать приятное интеллигентной девушке (читателю на заметку, кстати: chas-correct + AdBlock — и можно тащить в филармонию).

В: Это никак не решает проблему безграмотности, это просто помогает закрыть глаза на неё!
О: А вот и не угадали. Человек, которые не видит орфографических ошибок, накапливает так называемую «читательскую грамотность» и делает ошибки при письме/наборе с меньшей вероятностью. А вообще прививать любовь к родному языку нужно, кто ж с этим поспорит.

В: Код ужасен! Его надо причесать и оптимизировать!
О: Код под GPL, патчи принимаются, форки тоже никто не отменял. Кстати, закомменченные куски кода — не от моей небрежности, а чтобы десять раз не переизобретать несработавшую оптимизацию.

В: Есть ли какие-то настройки, графический интерфейс,…?
О: Нет. Многого ещё нет… Просто совесть не позволяет мне более держать эту идею неопубликованной. (Здесь должна быть хрестоматийная история про Васю и Петю, писавших стартапы.) Но можно нажать Ctrl+Shift+A — и произойдёт автоматическая расстановка пробелов вокруг знаков препинания. И больших букв. По крайней мере, попытается произойти.

В: Какие перспективы у проекта, что автор планирует делать дальше?
О: Оптимизировать алгоритмы по времени. Пополнять словарь. Приделать графический интерфейс, галочки-флажочки: коррекция е/ё, антимат и т.д.

В: Я программист, знаю регулярные выражения и хочу помочь.
О: В dictionary.js, например, есть пометки TODO. Там реально есть, что делать.

В: Я не программист и регулярных выражений не знаю, но тоже хочу помочь.
О: Собирайте ошибки. Присылайте мне на nickkolok@mail.ru — обязательно с указаниями адреса страницы и ошибочного написания слова.

В: Я вебмастер, заведую сайтом, где школьники часто пишут с ошибками. Можно ли использовать наработки chas-correct напрямую на сайте?
О: Если очень хочется — то можно. Даже кэширование должно работать, можно просто подключить скрипты, как в манифесте. Конечно, гораздо правильнее прогонять отправляемое через такой фильтр, а уже имеющуюся базу обработать однократно. С Node.js оно вроде как совместимо. В общем, пишите на nickkolok@mail.ru, разберёмся.

Конечно, работу над расширением нужно продолжать. Есть и третий идеологический шаг — но его только предстоит сделать, и это уже совсем другая история.

UPD: В комментариях пишут, что в Google Chrome под Windows убрали возможность ставить расширения не из магазина. Прошу всех сведущих высказаться, насколько это давно произошло и можно ли как-то это обойти.
Share post

Comments 71

    +4
    А что делать, если орфография была намеренно искажена?
      +2
      Как правило, расширение в таком случае не сможет полностью откорректировать текст. Уцелеет, скорее всего, искажение окончаний падежей и сафсемм ачывидьные ашыппке, так что литературный эффект остается.
      А вот отдельные крики «Развидеть!», действительно, могут стать непонятны.
        +1
        Надо подсветку измененного текста отдельным цветом и показ оригинала при наведении мыши.
          +1
          Такой вариант рассматривался, но был отклонён по нескольким причинам.
          Во-первых, сейчас DOM не меняется, идёт изменение лишь «листьев», то есть textNodes. Любое выделение цветом или шрифтов — это дополнительные тэги, можно случайно искорёжить вёрстку. Отчаянный вариант — юникодное выделение текста, например, символами подчёркивания.
            0
            Можно поставить обработчик mousemove на body, объединить с getBoundingClientRect, и без всякого вмешательства в DOM ловить наведение мышкой (и добавлять, скажем, всплывающую подсказку, которая будет где-нибудь в конце body, станет ломать вёрстку с очень маленьким шансом, и, если и будет, то временно).
            Правда, извращение, зато работает.
            И лишние тормоза, да.

            Можно сделать опциональным.

            Над replace-ом, который отчитывается о заменах, я задумывался, могу скинуть свою реализацию, если интерено.
              0
              Интересно, конечно!
              Заодно посмотрим, что с производительностью.
            0
            Прошу прощения за фрагментарность ответов.
            Во-вторых, изменение дом приведёт к значительным тормозам. И так уже пришлось оптимизировать много. Если кто-то, кстати, может с этим помочь — будет здорово.
              0
              В-третьих, замена — это простой .replace()
              Он не отчитывается (насколько я знаю), где произведена замена и произведена ли вообще. А холостой вызов тоже может быть, например, replace(/сп[ао]сиб[ао]/g,«спасибо») — это очень упрощённо, на деле там, конечно, ещё границы слов и обработка заглавных букв.
              Значит, придётся дополнительно выяснять, где там что-то изменилось и изменилось ли вообще. Ещё тормоза.
            0
            Или это вообще (sic! не «в общем») белорусский язык.
              +1
              Если Вы часто читаете сайты на белорусском, Вам, наверное, не стоит ставить агрессивный корректор русского языка. Возможно, существует возможность ослабить словарь так, чтобы подходил для двух языков. Код на гитхабе под GPL, патчи принимаются.
                0
                В сайтах славянской группы такое лучше не использовать. На одном ресурсе может быть текст на двух языках, причём неразличим автоматически. Что в русском ошибка — в белорусском и украинском может быть нормой. Трыкотаж например.
                  0
                  И снова приходим к необходимости списков сайтов-исключений, причём, по-видимому, индивидуальных.

                  Покажем, что список сайтов-исключений нужно делать именно индивидуальным. Рассмотрим сайт, публикующий статьи на двух языках — русском и украинском. Тогда человеку, знающему украинский, но не знающему русский, ставить расширение вовсе смысла нет, человеку, знающему русский, но не знающему украинский — есть смысл ставить расширение и использовать его на рассматриваемом сайте, поскольку ложных исправлений в украинском он всё равно не заметит, а вот человеку, знающему оба языка, придётся выключать расширение на этом сайте, поскольку даже в пределах одной страницы будут русские куски текста, которые можно исправить, и украинские, которые не нужно.
                  Таким образом, двум разным людям потребуются разные списки сайтов-исключений.
            +6
            Простите, оффтопик: Мне очень нравится идея Orphus. Частенько пользуюсь и отсылаю ошибки, например, на lenta.ru, сидя за стационарным компьютером. Легко, удобно — выделил, ctrl-enter, enter, всё. Но что меня дичайше удивляет — отсутствие реализации Orphus в мобильных браузерах. В 2015 году! На официальном форуме висит тикет-вопрос аж с 2013 года. Никакой реакции.
              +2
              А что вы хотели от сайта с дизайном 98 года?
                +4
                А зачем им дизайн 2015-го года?
                  0
                  Это философский вопрос.
                    –1
                    Вот Вы так говорите, а где-то плачет ребёнок топ-менеджера Intel, которому не хватает на очередную поезду в Диснейленд…
                  0
                  Не думаю, что протокол у них закрыт. Наверняка можно написать расширение для Firefox Mobile, который добавит такую возможность, и скрипт непосредственно для сайтов.
                  Главное, чтобы сами орфусовцы не возражали.
                    0
                    Если не ошибаюсь, автором Orphus является небезызвестный DmitryKoterov (dklab). Возможно, он может разъяснить эту ситуацию.
                    –10
                    Не в тему… А чем плох «вообщем»? :) Меня так в школе учили, и в книгах так писали…
                      +1
                      Ммм, спасибо, теперь все понятно!

                      P.S. Видимо, имелось ввиду, что большими буквами, а не то, что два «о». Но вы мне объяснили, я понял. Тыкать в стрелочку же проще, правда?
                        +9
                        Слова «вообщем» не существует. Нет такого слова. Есть наречие «вообще» и фразеологизм «в общем».
                          +3
                          Спасибо!
                          +1
                        +14
                        Все-таки, до сих пор не понимаю, почему на Хабре нет «Орфуса» с отправкой замечаний автору статьи в реальном времени. Это снизило бы количество бесполезных комментариев об ошибках в разы…
                          0
                          Тогда чем займутся граммар-наци?
                            +6
                            пусть себе рейтинг накручивают специальный, мол, «Вася, предложил 1067 правок»
                              0
                              Сейчас они могут слать мне патчи, в основном, в словарь chrome/dictionary.js
                              0
                              главное, чтобы в интерфейсе автора статьи сразу можно было кликнуть и быстро перейти на место в тексте, требующее исправления…
                                0
                                Ещё одна идея — скрестить Хабр с git. Этакий githabr.
                                Статьи кладём в репозиторий, пишем утилитку, которая по какому-нибудь githabr push заливает изменения на Хабр/Гиктаймс, дублируем в обычный репозиторий на гитхабе… Там, по идее, и комментарии к отдельным строчкам есть.
                                Потом главное — не забыть указать в статье ссылку на гитхабовский реп.
                                  +1
                                  Офигенная идея! И не будет дурацкого удаления статей авторами, и будут форки у всех желающих… Сообщество модеров и бэкенд по сути существуют, нужно только морду написать.
                              +1
                              Классная штука! А можно убрать вывод в консоль под какой-нибудь девелоперский флаг? Мешает работать (:
                                0
                                Оно как бы бэта.
                                Можно закомментировать correct.logToConsole, в качестве временной меры.
                                0
                                Не хватает сюда функционала Orphus. Т.е. не просто «повышать культуру» читателей, но и повышать качество исходного материала.
                                Понятно, что работает на стороне клиента и мы не имеем связи с автором.

                                Но если приложение обретет хотя бы определенную популярность можно реализовать следующий механизм:
                                — автор сайта добавляет определенный метатег в код страницы (или data атрибут у блока с текстом), в котором указан обратный адрес для редакторских правок.
                                — программа, если находит такой адрес высылает на него свой отчет о ошибках.

                                …правда при такой схеме открытым остается вопрос, как избежать дублирования (читай спама) на редакторский адрес, когда страницу будут просматривать тысячи читателей. Хотя и тут есть идеи…

                                  +1
                                  Проще на сайт воткнуть скрипт, и пусть каждый раз на клиенте правит. Правильнее — периоически прогонять базу с новыми словарями и обрабатывать поступающие статьи и комментарии.
                                  Идея интеграции с орфусом, спору нет, соблазнительна, но слишком уж разные принципы действия.
                                  Другое дело, что может быть и иное расширение.
                                  Читатели предлагают правки, правки слетаются на центральный сервер. Если один и тот же вариант правки предложен достаточным количеством человек, он начинает автоматически показываться. Как защититься от спама и прочего затапливания — не знаю, вариации на тему proof-of-work или авторизация.
                                  А вообще, если сделать это децентрализованным и анонимным, получается оригинальный ответ цензуре и пропаганде… причём любой.
                                    +1
                                    Если один и тот же вариант правки предложен достаточным количеством человек, он начинает автоматически показываться.

                                    боюсь что в таком варианте язык начнет быстро эволюционировать в неожиданном направлении.
                                    Вопросы правописания голосованием не решаются ©
                                      0
                                      Луркояз примерно так эволюционировал, разве нет?
                                      Что до тематики «среднего» сайта, то Википедия вроде как особого влияния на русский язык не оказала.
                                        0
                                        Так Вы за правильный язык или за луркояз?
                                        Но вообще-то это шутка была.
                                          +2
                                          Луркояз — это вполне обоснованный и «правильный» язык — «правильный» в том смысле, что там существуют некоторые правила. Да, там есть написание «труъ», да, там есть слова «поцреот» и «поцанчик» — последняя пара иллюстрирует принцип «объявления слов однокоренными постфактум». Думаете, в русском такого не было? Свидетель когда-то был свЕдетелем, однокоренным слову «ведать», а не «видеть» (и вообще писался через ять). Мир и мiр когда-то были разными словами. В луркоязе есть своя фразеология («чуть более, чем полностью», «луркояз такой луркояз») и обобщение фразеологизма — мемы. Луркояз активно производит заимствования из других языков, в частности, английского и японского. Нет в этом ничего плохого.

                                          Я за то, чтобы не уродовалось правильное написание слов русского языка.
                                  +1
                                  О. Наконец опубликовал) поздравляю ещё раз с прибытием на хабр)
                                    0
                                    Спасибо. Статья была за это время серьёзно дополнена. Более того, если сообществу эта тема интересна — честно говоря, я боялся криков: «На Гиктаймс!», но, судя по всему, напрасно — будет ещё как минимум одна статья — про то, как это работает технически, какие алгоритмы применяются, какая там оптимизация и, что небезынтересно, какие методы оптимизации внезапно не сработали.
                                    +1
                                    Словарь лучше сделать на основе форумов без модерации к популярным играм, где много школьников. Это steam-форумы, wikia-форумы и комментарии к статьям и т.д. На хабре грамотность всё же довольно высокая.
                                      +1
                                      Спасибо. Ждал комментария, в котором предложат направление развития. Прошу ссылки на подобные форумы в студию.
                                      Про грамотность на Хабре можно было бы поспорить, но пока я этого делать не буду. Это повод для отдельной статьи с аккуратной аналитикой. Вкратце — в среднем примерно 3-4 ошибки на хабрастатью расширение ловит, это без учёта капитализации.
                                        0
                                        Прошу прощения, уточняю: на статью с комментариями, т. е. на страницу. Что, впрочем, не сильно меняет дело, ибо, как известно, «комментарии к статье на Хабре зачастую ценнее самой статьи».
                                          +1
                                          По-моему, с комментариями всё-таки в корне меняет дело: когда читаешь статью, безграмотность автора «режет» глаза. Если же переходишь к комментариям, то морально настраиваешься, что грамотность некоторых комментаторов оставляет желать лучшего. Поэтому предлагаю не судить Хабр по комментариям =)

                                          А в остальном, идея интересная, но, как говорили выше, не хватает подсветки, либо какого-нибудь оповещения при наведении на текст. Да и черный список сайтов не повредит (ведь есть же ресурсы, где используется «свой» жаргон, который лучше не исправлять).

                                          P. s: но идея всё-таки впечатлила, спасибо за реализацию, будем пробовать
                                            0
                                            Если под «своим жаргоном» подразумевается олбанске, то его сильно задеть не должно. Всё-таки регулярки — это не Дамерау-Левенштейн, ашыпке в славаг ищутся распространённые и предсказуемые. ШТО на ЧТО, конечно, заменит, а вот Бабруйзг не тронет.
                                            Впрочем, чёрный список делается элементарно, пара строк в манифесте, предлагайте варианты или сразу патч.

                                            По поводу подсветки и оповещения — в перспективе планируется оповещение а-ля адблок. Когда юзерскрипт станет полноценным расширением, когда у него появится иконка…
                                              +1
                                              Кстати, хром блокирует расширение, не давая никакой возможности его включить.
                                              Ссылается на страницу: support.google.com/chrome/answer/2811969?p=ui_remove_non_cws_extensions&rd=1&hl=ru
                                                0
                                                Спасибо. Действительно, Хром под виндой теперь требует обязательной регистрации расширений в каталоге. Грустно, очень грустно. У меня аккаунта в каталоге нет, разместить там не могу. В качестве идеолога призывается Meklon, будем решать, прогинаться ли под это решение.
                                                  0
                                                  «прогинаться» :D Вот вам и ещё словечко в базу
                                                    0
                                                    Пишу и говорю так исключительно ради благозвучия, иначе некоторые представители «золотой молодёжи» имеют тенденцию воспринимать это слово неадекватно.
                                                    Извините за прямоту.
                                                    0
                                                    Стоит зарегистрироваться. Я сам на Firefox именно из-за этого, но тенденция на усиление контроля за расширениями будет сохраняться. Ты срезы аудитории по браузерам оцени и дальше решай.
                                                      0
                                                      Спасибо.
                                                      С Firefox, кстати, скоро будет нечто подобное, но, надеюсь, бесплатное.
                                                    0
                                                    А также кто-нибудь, кто знает, давно ли это так. Раньше вроде обходилось через режим разработчика.
                                                      0
                                                      Тем временем ymatuhin выложил в каталоге и добавил нормальную иконку и прочую красоту, за что ему большое спасибо.
                                                        0
                                                        Прямо-таки обрадовали, спасибо =)
                                          +3
                                          По вашей просьбе. Вот мои выводы на сегодняшний день.
                                          1. Построенные на аксиомах «старой парадигмы» (именно о таком походе вы говорите в данном сообщении) программы не способны выявить даже все орфографические ошибки. Это связано с тем, что для исправления определенного класса ошибок требуется более сложные алгоритмы, нежели используются в традиционных программах проверки орфографии. Классический пример — «ться» и «тся» в возвратных глаголах; так, здесь можно использовать наработки Ю. Шрейдера, но подобные алгоритмы медлительны и не подходят для «онлайн» проверки орфографии (см. ниже п.2).
                                          2. Чтобы повысить точность лингвистических программ требуется решить несколько «неклассических» задач. Например, до сих пор нет простого и быстрого способа автоматически выявить терминальные знаки («проблема точки»), нет алгоритма работы с дефисами и т. д. Таким образом, даже в простейшем случае, любая «классическая программа» будет неизбежно «тонуть» в «проблеме точки» и т. п.
                                          PS Алгоритм Шрейдера, позволяющий в 75 % выявлять возможные ошибки использования возвратных глаголов (ться-тся), предполагает работу с «ближайшем окружением». Поэтому так важно сначала определить «терминальные» знаки.
                                          3. Наиболее «точные» на сегодняшний день программы будут использовать т. н. «паттерны» и специальные, описывающие, внутренние языки (скажем, в том числе нечто похожее на регулярные выражения, но ближе к классическим языкам программирования). То есть речь идет о «препроцессорной» обработке текста, когда специальный «встроенный» язык, содержащий инструкции («правила») используется для выполнения действий над текстом. «Транслятор» для такого языка, как вы понимаете, невозможно написать на скриптах или языках интерпретаторах, здесь необходимо использовать по крайней мере компилируемые языки.
                                          4. Почти все современные «классические» программы не работают с синтаксическими ошибками в должном объеме. Подразумевается, что «пользователь» правильно ставит запятые или иные знаки препинания. Также в программах, как правило, не исправляются стилистические или другого рода ошибки. Даже простейшие — типа зияний. Очень редко в программах используют сложные алгоритмы (например, алгоритм исправления ошибок на основе предварительной работы с массивом текстов, кстати, Гугль идет по этому пути). Иными словами — мы медленно и верно подходим к методам статистическим и корпусным.
                                          5. Наконец, некое обобщение. Чтобы «вырваться» за пределы, поставленные многочисленными программами «старой школы» (aspell, myspell и подобные), необходимо иметь сложную и медлительную программу, способную работать с паттернами, также «выявлять» предложения и «встроенные» фразы.
                                          То есть мы говорим о том, что сначала программа должна «понять», где заканчивается предложение, а уж потом провести какую-то «правку» орфографических и синтаксических, стилистических ошибок. Впрочем, во многих случаях достаточно работать просто с массивом слов. Если мы будем работать в рамках парадигмы «старой школы», мы продолжим медленное застревание на прежнем уровне, когда всего лишь «обнаруживаются» неправильные написания слов. Конечно, даже в такой форме это хорошее и полезное начинание. Однако «Хром» уже проверяет некоторого рода ошибки (кажется, используется что-то типа aspell) в окошке чата. Так зачем встраивать еще какие-то программы, ведь «качественного» скачка не будет.

                                          Дополнительно, замечания по тексту. Вы пишите.
                                          «Автоматически же искать разницу между ДЕРЖАТСЯ и ДЕРЖАТЬСЯ не рекомендую»
                                          Алгоритм Шрейдера весьма серьезно и быстро в 75 % исправляет такие ошибки (см. выше).
                                          «Так и родилась идея chas-correct — расширения для браузера, автоматически исправляющего многие ошибки»
                                          «… может быть легко формализовано и исправлено автоматически.»
                                          К сожалению, подобного рода ошибки не так уж и часты.
                                          Боюсь, в итоге вы получите еще одну программу, которая будет предлагать варианты трансформации слова «кыт» в «кот», «кВт», «крот» и т. д. ))
                                          «Полноценный анализ текста в реальном времени в браузере всё равно едва ли возможен»
                                          Возможен. Если будет использоваться «серверное» решение, как с распознаванием речи. Кроме всего прочего, если вы уж говорите об автоматической правке ошибочного слова, то никак не обойтись без работы с достаточно внушительными массивами, хотя бы для того, чтобы «исправлять» с высокой точностью)
                                            0
                                            Большое спасибо за подробный ответ! Консультация профессионального лингвиста мне, конечно, ценна и иногда лаже необходима. Постараюсь ответить столь же аргументированно.
                                            0. Прошу всё же выслать куда-нибудь три с половиной килоглагола.
                                            1. Записываю алгоритм Шрейдера «напогуглить». Если у Вас есть хорошая ссылка — буду рад.
                                            2. Сейчас неким подобием «терминального знака» выступает любой html-тэг. То есть посередине предложение что-то выделено жирным, то расширение разобьёт его на три части. Любая попытка отступить от перебора нод нативным nodeTreeWalker() — замедление раза в полтора. До возможности распараллеливать JS на потоки — скорее всего, так и останется. Но вообще спасибо, я как-то совсем над этим не задумывался.
                                            3. Примерно понимаю. Был вариант — устанавливать на клиенте прокси-сервер. И сообщения в безопасности, и язык компилируемый. Возможно, вернёмся к нему со временем.
                                            4. Гугль тут догнать едва ли возможно, не в одиночку — точно. Передавать проверяемый текст на сервер — крайне нежелательно, поскольку не хотелось бы делать личные сообщения доступными третьей стороне. А вот хабрастатьи и форумы — это можно.
                                            5. Как ни странно, Ваше упоминание встроенных фраз натолкнуло меня совсем на другие идеи. Если реализую и получится — напишу.
                                            6. По поводу того, насколько часты такие ошибки… Когда у меня на руках будет свежая, вкусная, пушистая статистика, я снова возьму на себя смелость Вас беспокоить.
                                              +1
                                              Вряд ли найдете много информации ru.wikipedia.org/wiki/%D0%A8%D1%80%D0%B5%D0%B9%D0%B4%D0%B5%D1%80,_%D0%AE%D0%BB%D0%B8%D0%B9_%D0%90%D0%BD%D0%B0%D1%82%D0%BE%D0%BB%D1%8C%D0%B5%D0%B2%D0%B8%D1%87
                                              Там известная проблема — ВИНИТИ до сих пор не очень ценит наработки времен СССР. А скорее их перепродают во всякие мало- и много- мудрые современные фирмы.
                                              Если любопытно, то здесь подробнее пишу www.facebook.com/permalink.php?story_fbid=606818949418449&id=100002710491649
                                              PS Статистика есть у меня, вывод следующий — на сегодняшний день ваше решение нельзя считать перспективным и даже «работающим», зато у вас будет отличный опыт знакомства с комп. лингвистикой, так что «наших больше, наши в городе!»)
                                              Рекомендую также зарегиться здесь forum.dialog-21.ru/actualforum.aspx
                                            0
                                            Очень хорошая идея, продолжайте в том же духе — вы сделаете мир лучше))
                                            Пока нет времени поставить — разобраться, но вещь реально необходимая. Зрительная память творит ужасные вещи с моей грамматикой (((
                                              +1
                                              Вот замечательно же! Два года жду такой плагин. А скажите, «Вы» с большой буквы он исправляет?
                                                0
                                                К сожалению, нет: программа не может (и вряд ли скоро сможет) распознать, идёт ли обращение во множественном числе или в единственном.
                                                  +1
                                                  А разницы никакой нету на самом деле: если не личная переписка, должно быть с маленькой. Всегда.
                                                    0
                                                    Везде, кроме начала предложения, заменить «Вы» на «вы» можно.
                                                    Копать в chrome/prepareDictionary.js, переменная actionArray, дописать в районе строки 58 строчку вроде
                                                    [/([а-яёА-ЯЁ,:;—-%0-9])(\s)Вы/g,"$1$2вы",/\sВы/],
                                                    

                                                    и пересобрать (./build.sh), требуется Linux.
                                                    Если не получится, пишите в личку, помогу.
                                                +1
                                                Знаете, если эта штука позволить больше никогда не видеть: андройды, выйгрыши и тд, то я уже буду очень рад.
                                                  +1
                                                  «выйгрыш» и «выйграть» вроде правит, а вот «видешь» было бы неплохо добавить.
                                                    0
                                                    Пулл-реквест жду сюда: github.com/nickkolok/chas-correct/blob/master/chrome/dictionary.js#L391
                                                    Будете? Может быть, нужна помощь?
                                                      +1
                                                      Вроде ушло. Потом дома еще посмотрю, может еще с чем-нибудь помогу.
                                                      Например, было бы здорово сделать кнопку для панелек, чтобы можно было отключить плагин в один клик (а еще лучше — список исключений)
                                                        0
                                                        Вроде пришло и вроде правильно. Спасибо! Если добавите ещё выражений, ориентируясь на собственные нужды — пожалуйста, присылайте. Кнопку отключения и правда было бы здорово иметь, это браузер-специфичная задача. Сейчас в репозитории висит пулл-реквест, который делает расширение в Firefox по умолчанию неактивным, на каждой странице нужно нажимать заново (если я правильно понял). Также есть соответствующее issue. Примеры реализации стоит, по моему скромному разумению, смотреть в AdBlock и его аналогах.
                                                  +1
                                                  Вы спасаете мир. Спасибо вам.
                                                  А вот и баг: в комментарии выше «андройды» так и не стали андроидами.
                                                  Зато комментарии про «в общем» после исправления могут поставить в тупик неподготовленного человека.
                                                  И да, присоединюсь к пожеланию опционального исправления «Вы» на «вы». Когда будут настройки и прочие плюшки.
                                                    0
                                                    Андроид — случай пока спорный, поэтому в словарь не внесён.
                                                    Однако, учитывая количество желающих развидеть «андройд», скорее всего, скоро внесён всё-таки будет. Если не терпится — файл chrome/dictionary.js, дополните массив orphoPrefixToCorrect и пересоберите: ./build.sh
                                                    Когнитивный диссонанс от обсуждения «невидимой» ошибки — вполне ожидаемая побочка, как исправить — нужно думать, вариант — юникодное выделение.
                                                    0
                                                    Для тех, кому интересно: теперь и юзерскрипт.

                                                    Only users with full accounts can post comments. Log in, please.