Так поступал и я, пока однажды с ужасом не заметил, что написал «вООбщем» или нечто подобное. Разрушительное влияние чтения форумов, да и, что уж там, самого Хабра, на читательскую грамотность — налицо. А между тем — сейчас есть многое, что могло бы облегчить участь наших бедных глаз!
Приношу извинения за конспективность дальнейшего изложения. Как всегда, цейтнот. Прошу задавать вопросы в комментариях.
Осталось сделать лишь несколько простых идеологических шагов.
Шаг 1. Существует класс ошибок, которые можно исправить автоматически. Например, заменить ВООБЩЕМ и ВОБЩЕМ на В ОБЩЕМ не составит труда, равно как и заметить, что в русском языке нет глаголов, оканчивающихся на -ЮТЬСЯ. Автоматически же искать разницу между ДЕРЖАТСЯ и ДЕРЖАТЬСЯ не рекомендую.
Такой подход применяется для борьбы с нецензурной бранью в чатах и на форумах — и довольно деструктивно. В остальных случаях, как правило, текстовый редактор лишь подчёркивает красным незнакомые слова при наборе их автором текста (писателем). Это рассуждение плавно подводит нас к следующему шагу.
Шаг 2. Читатель имеет право исправить текст перед прочтением. Да-да, не обязательно уповать на грамотность писателя или бдительность редактора/модератора. Можно самому делать свой интернет чище и светлее.
Так и родилась идея chas-correct — расширения для браузера, автоматически исправляющего многие ошибки. Репозиторий на github. Поддерживаются Firefox, Firefox Mobile и Chromium-подобные. (Для Google Chrome — очень близкий форк от ymatuhin в каталоге).
Далее привожу подробности в форме вопрос-ответ.
В: Зачем нужен chas-correct? Любой современный браузер умеет подчёркивать ошибки красненьким.
О: Умеет, конечно. Только «свои» ошибки, возникающие при наборе текста, и только робко подчёркивать. Chas-correct же самостоятельно скрывает от глаз читателя чужие ошибки, изначально содержащиеся в тексте на загруженной странице.
В: Неужели до этого раньше не додумались?!
О: Сам удивляюсь. Были схожие идеи: раз и два. Но объединять их почему-то не стали…
В: Все ли ошибки исправляет chas-correct?
О: Конечно, нет! Только то, что, во-первых, часто встречается, во-вторых, может быть легко формализовано и исправлено автоматически.
В: Есть ли chas-correct в официальном каталоге расширений Google Chrome/Opera/…?
О: Нет. Мне некогда возиться с их верификациями и как-то жаль выкладывать подорожавшие доллары за аккаунт, который в любой момент могут забанить или подвести под санкции. Кроме того, я считаю политику навязывания централизованной установки и проверки расширений сомнительной; впрочем, это тема для отдельного холивара, который можно развести в комментариях. Если кто-то запакует в crx и выложит в каталоге — возражать, разумеется, не буду.
В: Обновляется ли chas-correct?
О: К сожалению, пока нет. Значительное количество ошибок уже проанализировано и исправляется им, а дальнейшее увеличение словаря ошибок требует некоторой оптимизации алгоритма. Если же предусмотреть обновление не только словаря, но и самого движка, да ещё и в обход официальных хранилищ расширений — у устанавливающего возникнет вполне обоснованная паранойя (как, впрочем, и в случае установки из магазина Chrome; были случаи). В будущем планируется разработать обновление только словаря в обход всевозможных сторов.
В: Как убедиться, что расширение работает?
О: Если вы не видите здесь ошибок — скорее всего, оно работает. Или вот хороший хабрапример .
В: Возможны ли ложные срабатывания, когда chas-correct исправляет правильное на неправильное?
О: Практически исключены. Теоретически такое возможно при столкновении с неологизмами, именами персонажей, географическими названиями и прочими несловарными словами. Однако иногда расширение исправляет неправильное на неправильное: так, «ЧТО-БЫ» всегда превратится во «ЧТОБЫ», даже если должно быть «ЧТО БЫ».
В: А как оно вообще работает?
О: На регулярках. Вот не надо на этом моменте гневно топорщить бороду и воздевать руки к небу, не надо! Полноценный анализ текста в реальном времени в браузере всё равно едва ли возможен. По крайней мере, при текущей вычислительной мощности ЭВМ. Даже в случае с регулярными выражениями потребовались значительные усилия на оптимизацию.
В: А почему бы не отправлять текст на проверку тому же Яндекс-Спеллеру в режиме реального времени?
О: Во-первых, это приведёт к значительному количеству ложных срабатываний, такие эксперименты до меня проводились, повторюсь. Во-вторых, это бы означало, что вся переписка пользователя отправляется на сторонний сервис… что, мягко говоря, не очень хорошо в наши тревожные времена.
В: Работает ли 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 убрали возможность ставить расширения не из магазина. Прошу всех сведущих высказаться, насколько это давно произошло и можно ли как-то это обойти.
Комментарии (66)
barkalov
06.05.2015 08:28+6Простите, оффтопик: Мне очень нравится идея Orphus. Частенько пользуюсь и отсылаю ошибки, например, на lenta.ru, сидя за стационарным компьютером. Легко, удобно — выделил, ctrl-enter, enter, всё. Но что меня дичайше удивляет — отсутствие реализации Orphus в мобильных браузерах. В 2015 году! На официальном форуме висит тикет-вопрос аж с 2013 года. Никакой реакции.
NickKolok Автор
06.05.2015 17:01Не думаю, что протокол у них закрыт. Наверняка можно написать расширение для Firefox Mobile, который добавит такую возможность, и скрипт непосредственно для сайтов.
Главное, чтобы сами орфусовцы не возражали.
romeOz
06.05.2015 18:46Если не ошибаюсь, автором Orphus является небезызвестный DmitryKoterov (dklab). Возможно, он может разъяснить эту ситуацию.
jim1406
06.05.2015 10:03-10Не в тему… А чем плох «вообщем»? :) Меня так в школе учили, и в книгах так писали…
jim1406
06.05.2015 10:18+1Ммм, спасибо, теперь все понятно!
P.S. Видимо, имелось ввиду, что большими буквами, а не то, что два «о». Но вы мне объяснили, я понял. Тыкать в стрелочку же проще, правда?
serafims
06.05.2015 10:10+14Все-таки, до сих пор не понимаю, почему на Хабре нет «Орфуса» с отправкой замечаний автору статьи в реальном времени. Это снизило бы количество бесполезных комментариев об ошибках в разы…
serafims
06.05.2015 11:57главное, чтобы в интерфейсе автора статьи сразу можно было кликнуть и быстро перейти на место в тексте, требующее исправления…
NickKolok Автор
08.05.2015 00:32Ещё одна идея — скрестить Хабр с git. Этакий githabr.
Статьи кладём в репозиторий, пишем утилитку, которая по какому-нибудь githabr push заливает изменения на Хабр/Гиктаймс, дублируем в обычный репозиторий на гитхабе… Там, по идее, и комментарии к отдельным строчкам есть.
Потом главное — не забыть указать в статье ссылку на гитхабовский реп.bogolt
10.05.2015 23:10+1Офигенная идея! И не будет дурацкого удаления статей авторами, и будут форки у всех желающих… Сообщество модеров и бэкенд по сути существуют, нужно только морду написать.
macik_spb
06.05.2015 11:34Не хватает сюда функционала Orphus. Т.е. не просто «повышать культуру» читателей, но и повышать качество исходного материала.
Понятно, что работает на стороне клиента и мы не имеем связи с автором.
Но если приложение обретет хотя бы определенную популярность можно реализовать следующий механизм:
— автор сайта добавляет определенный метатег в код страницы (или data атрибут у блока с текстом), в котором указан обратный адрес для редакторских правок.
— программа, если находит такой адрес высылает на него свой отчет о ошибках.
…правда при такой схеме открытым остается вопрос, как избежать дублирования (читай спама) на редакторский адрес, когда страницу будут просматривать тысячи читателей. Хотя и тут есть идеи…
NickKolok Автор
06.05.2015 17:15+1Проще на сайт воткнуть скрипт, и пусть каждый раз на клиенте правит. Правильнее — периоически прогонять базу с новыми словарями и обрабатывать поступающие статьи и комментарии.
Идея интеграции с орфусом, спору нет, соблазнительна, но слишком уж разные принципы действия.
Другое дело, что может быть и иное расширение.
Читатели предлагают правки, правки слетаются на центральный сервер. Если один и тот же вариант правки предложен достаточным количеством человек, он начинает автоматически показываться. Как защититься от спама и прочего затапливания — не знаю, вариации на тему proof-of-work или авторизация.
А вообще, если сделать это децентрализованным и анонимным, получается оригинальный ответ цензуре и пропаганде… причём любой.degs
06.05.2015 18:03+1Если один и тот же вариант правки предложен достаточным количеством человек, он начинает автоматически показываться.
боюсь что в таком варианте язык начнет быстро эволюционировать в неожиданном направлении.
Вопросы правописания голосованием не решаются ©NickKolok Автор
06.05.2015 20:31Луркояз примерно так эволюционировал, разве нет?
Что до тематики «среднего» сайта, то Википедия вроде как особого влияния на русский язык не оказала.degs
06.05.2015 21:02Так Вы за правильный язык или за луркояз?
Но вообще-то это шутка была.NickKolok Автор
06.05.2015 21:47+2Луркояз — это вполне обоснованный и «правильный» язык — «правильный» в том смысле, что там существуют некоторые правила. Да, там есть написание «труъ», да, там есть слова «поцреот» и «поцанчик» — последняя пара иллюстрирует принцип «объявления слов однокоренными постфактум». Думаете, в русском такого не было? Свидетель когда-то был свЕдетелем, однокоренным слову «ведать», а не «видеть» (и вообще писался через ять). Мир и мiр когда-то были разными словами. В луркоязе есть своя фразеология («чуть более, чем полностью», «луркояз такой луркояз») и обобщение фразеологизма — мемы. Луркояз активно производит заимствования из других языков, в частности, английского и японского. Нет в этом ничего плохого.
Я за то, чтобы не уродовалось правильное написание слов русского языка.
Meklon
06.05.2015 17:45+1О. Наконец опубликовал) поздравляю ещё раз с прибытием на хабр)
NickKolok Автор
06.05.2015 20:26Спасибо. Статья была за это время серьёзно дополнена. Более того, если сообществу эта тема интересна — честно говоря, я боялся криков: «На Гиктаймс!», но, судя по всему, напрасно — будет ещё как минимум одна статья — про то, как это работает технически, какие алгоритмы применяются, какая там оптимизация и, что небезынтересно, какие методы оптимизации внезапно не сработали.
dollar
06.05.2015 20:16+1Словарь лучше сделать на основе форумов без модерации к популярным играм, где много школьников. Это steam-форумы, wikia-форумы и комментарии к статьям и т.д. На хабре грамотность всё же довольно высокая.
NickKolok Автор
06.05.2015 20:30+1Спасибо. Ждал комментария, в котором предложат направление развития. Прошу ссылки на подобные форумы в студию.
Про грамотность на Хабре можно было бы поспорить, но пока я этого делать не буду. Это повод для отдельной статьи с аккуратной аналитикой. Вкратце — в среднем примерно 3-4 ошибки на хабрастатью расширение ловит, это без учёта капитализации.NickKolok Автор
06.05.2015 20:34Прошу прощения, уточняю: на статью с комментариями, т. е. на страницу. Что, впрочем, не сильно меняет дело, ибо, как известно, «комментарии к статье на Хабре зачастую ценнее самой статьи».
Beltoev
06.05.2015 23:46+1По-моему, с комментариями всё-таки в корне меняет дело: когда читаешь статью, безграмотность автора «режет» глаза. Если же переходишь к комментариям, то морально настраиваешься, что грамотность некоторых комментаторов оставляет желать лучшего. Поэтому предлагаю не судить Хабр по комментариям =)
А в остальном, идея интересная, но, как говорили выше, не хватает подсветки, либо какого-нибудь оповещения при наведении на текст. Да и черный список сайтов не повредит (ведь есть же ресурсы, где используется «свой» жаргон, который лучше не исправлять).
P. s: но идея всё-таки впечатлила, спасибо за реализацию, будем пробоватьNickKolok Автор
07.05.2015 00:46Если под «своим жаргоном» подразумевается олбанске, то его сильно задеть не должно. Всё-таки регулярки — это не Дамерау-Левенштейн, ашыпке в славаг ищутся распространённые и предсказуемые. ШТО на ЧТО, конечно, заменит, а вот Бабруйзг не тронет.
Впрочем, чёрный список делается элементарно, пара строк в манифесте, предлагайте варианты или сразу патч.
По поводу подсветки и оповещения — в перспективе планируется оповещение а-ля адблок. Когда юзерскрипт станет полноценным расширением, когда у него появится иконка…Beltoev
08.05.2015 00:50+1Кстати, хром блокирует расширение, не давая никакой возможности его включить.
Ссылается на страницу: support.google.com/chrome/answer/2811969?p=ui_remove_non_cws_extensions&rd=1&hl=ruNickKolok Автор
08.05.2015 02:49Спасибо. Действительно, Хром под виндой теперь требует обязательной регистрации расширений в каталоге. Грустно, очень грустно. У меня аккаунта в каталоге нет, разместить там не могу. В качестве идеолога призывается Meklon, будем решать, прогинаться ли под это решение.
Meklon
08.05.2015 08:57Стоит зарегистрироваться. Я сам на Firefox именно из-за этого, но тенденция на усиление контроля за расширениями будет сохраняться. Ты срезы аудитории по браузерам оцени и дальше решай.
NickKolok Автор
09.05.2015 14:14Спасибо.
С Firefox, кстати, скоро будет нечто подобное, но, надеюсь, бесплатное.
NickKolok Автор
08.05.2015 03:03А также кто-нибудь, кто знает, давно ли это так. Раньше вроде обходилось через режим разработчика.
NickKolok Автор
15.05.2015 22:44Тем временем ymatuhin выложил в каталоге и добавил нормальную иконку и прочую красоту, за что ему большое спасибо.
Hanazono
07.05.2015 00:30+3По вашей просьбе. Вот мои выводы на сегодняшний день.
1. Построенные на аксиомах «старой парадигмы» (именно о таком походе вы говорите в данном сообщении) программы не способны выявить даже все орфографические ошибки. Это связано с тем, что для исправления определенного класса ошибок требуется более сложные алгоритмы, нежели используются в традиционных программах проверки орфографии. Классический пример — «ться» и «тся» в возвратных глаголах; так, здесь можно использовать наработки Ю. Шрейдера, но подобные алгоритмы медлительны и не подходят для «онлайн» проверки орфографии (см. ниже п.2).
2. Чтобы повысить точность лингвистических программ требуется решить несколько «неклассических» задач. Например, до сих пор нет простого и быстрого способа автоматически выявить терминальные знаки («проблема точки»), нет алгоритма работы с дефисами и т. д. Таким образом, даже в простейшем случае, любая «классическая программа» будет неизбежно «тонуть» в «проблеме точки» и т. п.
PS Алгоритм Шрейдера, позволяющий в 75 % выявлять возможные ошибки использования возвратных глаголов (ться-тся), предполагает работу с «ближайшем окружением». Поэтому так важно сначала определить «терминальные» знаки.
3. Наиболее «точные» на сегодняшний день программы будут использовать т. н. «паттерны» и специальные, описывающие, внутренние языки (скажем, в том числе нечто похожее на регулярные выражения, но ближе к классическим языкам программирования). То есть речь идет о «препроцессорной» обработке текста, когда специальный «встроенный» язык, содержащий инструкции («правила») используется для выполнения действий над текстом. «Транслятор» для такого языка, как вы понимаете, невозможно написать на скриптах или языках интерпретаторах, здесь необходимо использовать по крайней мере компилируемые языки.
4. Почти все современные «классические» программы не работают с синтаксическими ошибками в должном объеме. Подразумевается, что «пользователь» правильно ставит запятые или иные знаки препинания. Также в программах, как правило, не исправляются стилистические или другого рода ошибки. Даже простейшие — типа зияний. Очень редко в программах используют сложные алгоритмы (например, алгоритм исправления ошибок на основе предварительной работы с массивом текстов, кстати, Гугль идет по этому пути). Иными словами — мы медленно и верно подходим к методам статистическим и корпусным.
5. Наконец, некое обобщение. Чтобы «вырваться» за пределы, поставленные многочисленными программами «старой школы» (aspell, myspell и подобные), необходимо иметь сложную и медлительную программу, способную работать с паттернами, также «выявлять» предложения и «встроенные» фразы.
То есть мы говорим о том, что сначала программа должна «понять», где заканчивается предложение, а уж потом провести какую-то «правку» орфографических и синтаксических, стилистических ошибок. Впрочем, во многих случаях достаточно работать просто с массивом слов. Если мы будем работать в рамках парадигмы «старой школы», мы продолжим медленное застревание на прежнем уровне, когда всего лишь «обнаруживаются» неправильные написания слов. Конечно, даже в такой форме это хорошее и полезное начинание. Однако «Хром» уже проверяет некоторого рода ошибки (кажется, используется что-то типа aspell) в окошке чата. Так зачем встраивать еще какие-то программы, ведь «качественного» скачка не будет.
Дополнительно, замечания по тексту. Вы пишите.
«Автоматически же искать разницу между ДЕРЖАТСЯ и ДЕРЖАТЬСЯ не рекомендую»
Алгоритм Шрейдера весьма серьезно и быстро в 75 % исправляет такие ошибки (см. выше).
«Так и родилась идея chas-correct — расширения для браузера, автоматически исправляющего многие ошибки»
«… может быть легко формализовано и исправлено автоматически.»
К сожалению, подобного рода ошибки не так уж и часты.
Боюсь, в итоге вы получите еще одну программу, которая будет предлагать варианты трансформации слова «кыт» в «кот», «кВт», «крот» и т. д. ))
«Полноценный анализ текста в реальном времени в браузере всё равно едва ли возможен»
Возможен. Если будет использоваться «серверное» решение, как с распознаванием речи. Кроме всего прочего, если вы уж говорите об автоматической правке ошибочного слова, то никак не обойтись без работы с достаточно внушительными массивами, хотя бы для того, чтобы «исправлять» с высокой точностью)NickKolok Автор
08.05.2015 02:46Большое спасибо за подробный ответ! Консультация профессионального лингвиста мне, конечно, ценна и иногда лаже необходима. Постараюсь ответить столь же аргументированно.
0. Прошу всё же выслать куда-нибудь три с половиной килоглагола.
1. Записываю алгоритм Шрейдера «напогуглить». Если у Вас есть хорошая ссылка — буду рад.
2. Сейчас неким подобием «терминального знака» выступает любой html-тэг. То есть посередине предложение что-то выделено жирным, то расширение разобьёт его на три части. Любая попытка отступить от перебора нод нативным nodeTreeWalker() — замедление раза в полтора. До возможности распараллеливать JS на потоки — скорее всего, так и останется. Но вообще спасибо, я как-то совсем над этим не задумывался.
3. Примерно понимаю. Был вариант — устанавливать на клиенте прокси-сервер. И сообщения в безопасности, и язык компилируемый. Возможно, вернёмся к нему со временем.
4. Гугль тут догнать едва ли возможно, не в одиночку — точно. Передавать проверяемый текст на сервер — крайне нежелательно, поскольку не хотелось бы делать личные сообщения доступными третьей стороне. А вот хабрастатьи и форумы — это можно.
5. Как ни странно, Ваше упоминание встроенных фраз натолкнуло меня совсем на другие идеи. Если реализую и получится — напишу.
6. По поводу того, насколько часты такие ошибки… Когда у меня на руках будет свежая, вкусная, пушистая статистика, я снова возьму на себя смелость Вас беспокоить.Hanazono
08.05.2015 16:11+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
MaxxxZ
07.05.2015 14:46Очень хорошая идея, продолжайте в том же духе — вы сделаете мир лучше))
Пока нет времени поставить — разобраться, но вещь реально необходимая. Зрительная память творит ужасные вещи с моей грамматикой (((
neko_nya
10.05.2015 11:16+1Вот замечательно же! Два года жду такой плагин. А скажите, «Вы» с большой буквы он исправляет?
NickKolok Автор
10.05.2015 20:33К сожалению, нет: программа не может (и вряд ли скоро сможет) распознать, идёт ли обращение во множественном числе или в единственном.
neko_nya
10.05.2015 20:58+1А разницы никакой нету на самом деле: если не личная переписка, должно быть с маленькой. Всегда.
NickKolok Автор
10.05.2015 22:29Везде, кроме начала предложения, заменить «Вы» на «вы» можно.
Копать в chrome/prepareDictionary.js, переменная actionArray, дописать в районе строки 58 строчку вроде
[/([а-яёА-ЯЁ,:;—-%0-9])(\s)Вы/g,"$1$2вы",/\sВы/],
и пересобрать (./build.sh), требуется Linux.
Если не получится, пишите в личку, помогу.
bogolt
10.05.2015 23:14+1Знаете, если эта штука позволить больше никогда не видеть: андройды, выйгрыши и тд, то я уже буду очень рад.
betrachtung
10.05.2015 23:30+1Вы спасаете мир. Спасибо вам.
А вот и баг: в комментарии выше «андройды» так и не стали андроидами.
Зато комментарии про «в общем» после исправления могут поставить в тупик неподготовленного человека.
И да, присоединюсь к пожеланию опционального исправления «Вы» на «вы». Когда будут настройки и прочие плюшки.NickKolok Автор
11.05.2015 00:06Андроид — случай пока спорный, поэтому в словарь не внесён.
Однако, учитывая количество желающих развидеть «андройд», скорее всего, скоро внесён всё-таки будет. Если не терпится — файл chrome/dictionary.js, дополните массив orphoPrefixToCorrect и пересоберите: ./build.sh
Когнитивный диссонанс от обсуждения «невидимой» ошибки — вполне ожидаемая побочка, как исправить — нужно думать, вариант — юникодное выделение.
Aiki
А что делать, если орфография была намеренно искажена?
NickKolok Автор
Как правило, расширение в таком случае не сможет полностью откорректировать текст. Уцелеет, скорее всего, искажение окончаний падежей и сафсемм ачывидьные ашыппке, так что литературный эффект остается.
А вот отдельные крики «Развидеть!», действительно, могут стать непонятны.
AllexIn
Надо подсветку измененного текста отдельным цветом и показ оригинала при наведении мыши.
NickKolok Автор
Такой вариант рассматривался, но был отклонён по нескольким причинам.
Во-первых, сейчас DOM не меняется, идёт изменение лишь «листьев», то есть textNodes. Любое выделение цветом или шрифтов — это дополнительные тэги, можно случайно искорёжить вёрстку. Отчаянный вариант — юникодное выделение текста, например, символами подчёркивания.
Keyten
Можно поставить обработчик mousemove на body, объединить с getBoundingClientRect, и без всякого вмешательства в DOM ловить наведение мышкой (и добавлять, скажем, всплывающую подсказку, которая будет где-нибудь в конце body, станет ломать вёрстку с очень маленьким шансом, и, если и будет, то временно).
Правда, извращение, зато работает.
И лишние тормоза, да.
Можно сделать опциональным.
Над replace-ом, который отчитывается о заменах, я задумывался, могу скинуть свою реализацию, если интерено.
NickKolok Автор
Интересно, конечно!
Заодно посмотрим, что с производительностью.
NickKolok Автор
Прошу прощения за фрагментарность ответов.
Во-вторых, изменение дом приведёт к значительным тормозам. И так уже пришлось оптимизировать много. Если кто-то, кстати, может с этим помочь — будет здорово.
NickKolok Автор
В-третьих, замена — это простой .replace()
Он не отчитывается (насколько я знаю), где произведена замена и произведена ли вообще. А холостой вызов тоже может быть, например, replace(/сп[ао]сиб[ао]/g,«спасибо») — это очень упрощённо, на деле там, конечно, ещё границы слов и обработка заглавных букв.
Значит, придётся дополнительно выяснять, где там что-то изменилось и изменилось ли вообще. Ещё тормоза.
nickolaym
Или это вообще (sic! не «в общем») белорусский язык.
NickKolok Автор
Если Вы часто читаете сайты на белорусском, Вам, наверное, не стоит ставить агрессивный корректор русского языка. Возможно, существует возможность ослабить словарь так, чтобы подходил для двух языков. Код на гитхабе под GPL, патчи принимаются.
MaxxxZ
В сайтах славянской группы такое лучше не использовать. На одном ресурсе может быть текст на двух языках, причём неразличим автоматически. Что в русском ошибка — в белорусском и украинском может быть нормой. Трыкотаж например.
NickKolok Автор
И снова приходим к необходимости списков сайтов-исключений, причём, по-видимому, индивидуальных.
Покажем, что список сайтов-исключений нужно делать именно индивидуальным. Рассмотрим сайт, публикующий статьи на двух языках — русском и украинском. Тогда человеку, знающему украинский, но не знающему русский, ставить расширение вовсе смысла нет, человеку, знающему русский, но не знающему украинский — есть смысл ставить расширение и использовать его на рассматриваемом сайте, поскольку ложных исправлений в украинском он всё равно не заметит, а вот человеку, знающему оба языка, придётся выключать расширение на этом сайте, поскольку даже в пределах одной страницы будут русские куски текста, которые можно исправить, и украинские, которые не нужно.
Таким образом, двум разным людям потребуются разные списки сайтов-исключений.