Подарок всем под Ёлочку

Или всё-таки под Елочку?

Нет, под Ёлочку! Теперь точно с Ё, потому что это статья про ёфикацию!

И не просто теория или скрипты из командной строки, а настоящая рабочая программа, которую можно использовать как на компе так и на телефоне.

image
ссылка на сайт — пользуйтесь!

Как работает программа?

Она загружает файл с ёфицированными словами, потом деёфицирует их все.
(база взята вот отсюда) — http://python.anabar.ru/yo.htm
потом ищет каждое из этих слов в исходном тексте и если они там есть, запоминает где это слово.

Это происходит довольно быстро.

Дальше то что происходит медленно…

Программа ищет, что бы заменить — заменяет все Е где нужно на Ё (большие на большие, маленькие на маленькие).

Всё это происходит через Parallel.For в столько потоков сколько у вас есть.

Дальше программа предлагает сохранить файл куда вы хотите (на компе), или в папку Documents/Yo на телефоне. Оттуда его можно переместить куда угодно и открывать в любой читалке.

Поддерживаемые форматы:
txt, fb2, fb2.zip

Сохраняет в таком же формате, в каком и открывает. Если надо запаковать в zip то запаковывает. fb2 разбирает на элементы и не пытается просматривать binary для ускорения работы

Самое интересное то, что программа работает одинаково на всех платформах, алгоритм полностью портируемый! За это слава Microsoft, петя Core 3.1 и вася .net standard 2.1
Теперь у меня будет единая кодовая база и для мобильников, и для сервера и для десктопа. Чему я несказанно рад! Надо ещё научиться шарить картинки и ресурсы между проектами, чтобы не копировать вручную логотип и словарь.

Почему я так рад? Потому что теперь не буду читать искалеченные книги, которые скачиваю из интернета. Никаких больше ежиков, ее, еще и е-мое. Только Ё, только хардкор!

Торопился сделать всем подарок на новый год, поэтому пока есть некоторые ограничения:

  • пока нет поддержки epub
  • иногда не показывает куда сохранила (на телефоне)
  • пока работает только с кодировкой UTF-8
  • если txt то не показывает progress bar, но работает
  • пока ёфицирует только однозначно определяемые слова (все от всё не отличает, но я буду работать над этим)

Планы:

кроме улучшения интерфейсов и декоративных вещей, планирую сделать
поддержку docx, epub
progressbar для текста
сервис по ёфикации на сайте
API для подключения сторонних сервисов
выложить в открытый доступ исходники
редактор ё-словаря (сейчас там не все ругательства, их надо обязательно добавить!)
редактор исходных и ёфицированных текстов
автоматическое обучение сложным случаям
анализ контекста
вылаживание apk в PlayMarket
консольный режим, поддержка Drag & Drop — спасибо за идею KorDen32

А теперь — Ёфицируй это!

Всех с новый годом!

P.S.… И в лесу родилась, наконец-то, Ёлочка!

(upd 31.12.2019 13:36 — всё настроил, apk качается)

Похожие публикации

AdBlock похитил этот баннер, но баннеры не зубы — отрастут

Подробнее
Реклама

Комментарии 80

    +1

    А вот "Рёнтген" там, наверное, нет… ;)

      0
      действительно нет, проверил. даже если добавлю то сейчас не будет его ёфицировать, потому что неоднозначно — есть же ещё рентген без ё…
        +3

        Мне кажется, что сам термин "рентген" именно здесь пал жертвой "обез-ёчивания" :))


        Ибо город, где сделано открытие, без проблем передаётся на русском "как есть": Würzburg = Вюрцбург — именно с учётом умлаута.


        Но при этом Röntgen устоялось не как "Рёнтген", а как сейчас имеем. :)


        Немцы говорят и имя, и фамилию именно с "ё".

          +1
          да, много разных слов так странно видоизменяются! я поэтому предпочитаю лучше на английском термины писать и фамилии на всякий случай…
          технически можно добавить, но эта программа для индивидуального же пользования — если вам удобнее читать рёнтген и вы хотите чтобы она автоматически это делала добавьте в словарь это слово, по идее должно сработать.
            0
            Немцы говорят и имя, и фамилию именно с «ё».

            Как так получается, что Рёнтген выговаривают, а ёлочка… ну и остальные русские слова с ё… — ни у одного пока не получилось? Может быть они все же говорят не ё, а что-то другое?..
            Это был сарказм. И да, немцы говорят другое. Никакого отношения к русскому «ё» не имеющее.
            Просто послушаейте произношение на викшионари. И во всех остальных источниках. Оно «роэнтген». Никакого ё там близко нет. «О» там может быть достаточно коротким. Но оно «о». Для звука «ё» важно, что предыдушая согласная — мягкая. У немцев этого нет. У них согласная твердая, потом «о», потом, иногда «э», иногда что-то похожее на «е». В некоторых ситуациях что-то похожее на безэмоциональное американское «oh-yeah!» Но… Никаких «ё»!
              +1
              Для звука «ё» важно, что предыдушая согласная — мягкая.

              Как в слове «ёлочка»?

                0

                А кто скажет, что "й" — твёрдая?

                  0

                  тот первый бросит в меня камень

                    +1

                    А кто скажет, что «й» в слове «ёлочка» — предыдущая согласная?

                      0
                      От же ж зануды собрались. Ну да, нет в слове «ёлочка» согласной. Написанной. Но, когда буква «ё» первая в слове, часто предполагается наличие «й» перед ней. И да, «й» — очень часто, и в этом случае тоже, может быть согласной. В качестве домашнего задания, найдите немецкое слово, где буква «oe» — первая в слове или без согласной перед ней. Или где что-то похожее на «й» — первая буква в слове…
                        0
                        Да без проблем. Торговая марка Dr. Ötker. Или слово Öl (масло, нефть).
                          0
                          Mea culpa. Я сделал недостаточно продуманное заявление.
                          Единственное моё оправдание, что владею немецким в объеме телепередач 5-го канала советского телевидения середины 80-х. (Из каш ем только гречневую, которую пару раз в год варю в мультиварке (две мерки крупы, четыре мерки воды, щепотку соли, ткнуть кнопку «каша»), а что Dr. Ötker еще и пиццу замороженную выпускают — узнал только что, в процессе исследования вопроса...)
                          С другой стороны, в немецком, Ö, когда она первая буква в слове, кажется, означает сильно другой звук, чем ö в середине слова. Звук, кстати, очень интересный и сильно отличается от всех русских звуков. Он гораздо ближе к Э, чем к о, ое или ё. Кстати, в слове Öl во многих вариантах произношения вообще нет следов звука «L»… (а еще забавная интонация, типа «во что это такое противное я вляпался?»)

                          В любом случае, «Röntgen» транслитерировать на русский как «Рёнтген» — примерно столь же сильно искажает произношение, как и вариант «Рентген». Гораздо ближе фонетически был бы вариант «Роэнтген», но он тоже не совсем хорош. Нет в стандартном русском языке похожего звука и, тем более, буквы для него. Зато, возвращаясь к «ё», единственный вариант звука, похожего на «ё», который я встречал вне русского языка — в афро-американском приветствии «Yo bratha!»
                          0

                          Й не то, чтобы очень часто согласный звук. Это в принципе исключительно согласный звук :D


                          Мне кажется вся эта путаница, которую вы обозначили, происходит от того, что буква ё после согласных обозначает смягчение предыдущего и вариант звука о, похожий на немецкое ö. А в остальных случаях Ё обозначает практически тот же звук, но дополнительно йотированный. Так вот у немцев, как я понимаю, не бывает йотированного ö. Отсюда у них, возможно, трудности с произнесением ёлка (хотя мои знакомые из Дрездена спокойно говорили йолька — да, с мягким ль).


                          P.S. К тому же у нас ё — это практически всегда ударный звук (за исключением, пожалуй, только сложных слов, но и там ё имеет хотя бы слабое, вторичное, но ударение). А вот у немцев, вроде как, ударение и ö такому правилу не подчиняются.

            +3
            «Там и передохнёте». Или «передо́хнете»?
            Как быть со словами, у которых есть обе формы?
              +6

              со временем сделаю контекстный анализ, а пока "там" никто не выживет...

                +5
                со временем сделаю контекстный анализ

                Х-х-хех… Да Вы, батенька, оптимист.
                Хотя, в принципе… "Со временем" — оно же растяжимое, правда?
                В том веке никому времени не хватило, так у нас же вечность спереди!

                  +1
                  ну как вам сказать… это же pet project, я его делаю в том числе и для себя… сам люблю читать с ё, но теперь если вы напишите что вам это тоже надо для меня это будет ответственность — и я буду этому проекту уделять больше времени
              +3
              Классно! А давайте ещё плагин для браузера, который во всех текстах будет на лету оформлять причастные и деепричастные обороты запятыми, принудительно.
                0
                это не ко мне, я сам пишу как хочу а не по правилам, так что… сам писать не буду.
                но если вы займётесь то с разработкой помогу!
                  +1
                  Причастные и деепричастные обороты запятыми — ну будут запятые… И что?
                  Вот «тся» и «ться», как в «он заботится» против «надо заботиться» — это да. Но когда «он заботиться» или «надо заботится»… Это выбешивает… И, кажется, не так сложно парсить…
                  +1
                  И, выпиливает лишние, запятые там где их не должно, быть и ставит там, где они должны всё-таки быть.
                    0

                    И умные грамотные комментарии за меня пишет, пока я сплю :)

                      +2
                      Комментатор спит, а статы качаются :))
                        +5

                        Качаются статы на реях, и море бушует вокруг.
                        И карма твоя в эмпиреи взлетает, сонливый мой друг.
                        Волнуется бот артифичный, в набат бьет словами-плетьми.
                        Вернуть бы нам форум античный — беседу с живыми людьми!

                          0

                          Это пять баллов, очень круто!

                            0

                            Ой, да ладно. Это в миллиард раз проще, чем четыре строчки хорошего кода написать.

                    0

                    ну, моё расширение уже работает, которое заменяет imho на моё мнение.


                    искать по слову imhoreplacer

                      +5
                      1: Пока Славик ходил курить, обучили его Аутлук старословянскому ))
                      2: Эт как? )
                      1: Врубили ему автозамену список=свиток, чтобы=дабы, ну и там воистину, ибо и т.д. Главное, чтобы в глаза не бросалось )
                      1: Так он очень удивился, когда на письмо с фразой "… посему высылаю всем свиток свободных айпишников, не забывайте!" ему стали приходить ответы типа «Челом бьем, боярин! Не прибежал еще со свитком гонец» ))

                      bash.im
                      0
                      а разве MSWord не советует запятые? сейчас пользуюсь google docs
                      0
                      кстати, вот скрипт который заглавные буквы расставляет. для себя написал, может кому-то пригодится. сам никогда не люблю ставить заглавные буквы поэтому легче скрипт написать))

                      var ui = DocumentApp.getUi(); // Or FormApp.getUi().
                      
                      function onOpen() 
                      {
                        ui.createMenu('Scripts')
                            .addItem('Capitalize', 'onCapitalize')
                            .addToUi();
                      }
                      
                      function onCapitalize()
                      {
                        var selection = DocumentApp.getActiveDocument().getSelection();
                        if(selection)
                        {
                          var elements = selection.getSelectedElements();
                           for (var i = 0; i < elements.length; i++)
                           {
                             var element = elements[i];
                             var text = element.getElement().editAsText();
                             text.setText(fcap(text.getText()));
                           }
                        }
                      }
                      
                      function fcap(str)
                      {
                        var pieces = str.split(". ");
                          for ( var i = 0; i < pieces.length; i++ )
                          {
                              var j = pieces[i].charAt(0).toUpperCase();
                              pieces[i] = j + pieces[i].substr(1);
                          }
                          return pieces.join(". ");
                      }
                    • НЛО прилетело и опубликовало эту надпись здесь
                        0
                        [...] лучше понять кто автор.

                        Вы точно этого хотите? :)

                          +1

                          это для книг. я увидел какую-то книгу интересную, скачал на телефон, сразу ёфицируешь и читаешь. для комментариев это не очень нужно, хотя тоже помогло бы… наверное разное восприятие у всех, меня например запинают слова без ё где она должна быть, мозг как будто останавливается на мгновение. в художественных произведениях где важно погружение это мешает, поэтому и хотел сделать сразу на мобильных

                          +1
                            0
                            Спасибо! Мне иногда приходится вычитывать тексты по 30 000 знаков, чтобы вставить все буквы ё. И это отдельный вид пытки. Но теперь жизнь заиграет новыми красками)
                              0

                              .del

                                +1
                                Я только по буквам ё! :)
                                0

                                для вас сделаю специально плагин для ваших систем и API

                                0
                                Почему букву ё перестали использовать? Я, внезапно, осознал, что тоже вообще не использую ее её в письме.
                                  +2

                                  не знаю, может кому-то показалось это экономией, но читать реально мешает. я всегда использую, даже в телефоне все слова удаляю без ё а с ё вставляю. кому-то наверно не мешает, или просто забили

                                    +2

                                    В дореформенной орфографии «ё» не было вообще. После реформы и до 1956 года она заменила дореформенный дифтонг «io», а в 1956 лично Никита Сергеич предложил перестать заморачиваться, и, хотя официально «ё» никто не отменял, в советских печатных изданиях после 1960 года «ё» почти не встречалась.


                                    Поэтому люди, которые выросли в то время, с недоумением смотрят на внезапно вернувшуюся любовь к этой букве. Я, к примеру, учился читать вообще по дореформенному изданию Брокгауза, и до сих пор бегло читаю дореформенное письмо с ятями, и каждый раз спотыкаюсь на «ё».


                                    Каждому своё, в общем :)

                                      0

                                      спасибо не знал эту историю. наверное кому как, я с твёрдыми знаками на конце старые тексты только с юмором могу воспринимать) недавно наткнулся на оригинальные издания 19 века где печатали Толстого Анну Каренину по главам, читал около часа, всё равно смешно было почему-то

                                        0

                                        Вообще история интересная. Меня больше всего поразил эпизод с приказом народного комиссариата просвещения РСФСР об обязательном использовании буквы ё в обучении. Этот приказ был спущен в 1942 году, 24 декабря, т. е. в разгар Сталинградской битвы. Даже в наши дни в середине учебного года школьную программу никто не меняет, а эти тыловые крысы занимались такой ерундой в самый тяжелый для страны период.

                                          +2

                                          Это был блистательный психологический трюк, а не «эти тыловые крысы занимались такой ерундой».


                                          Чтобы у людей не пропадало стремление выжить в такое время, необходимо всеми силами поддерживать иллюзию нормального течения жизни, а не забивать на все, что напоминает о мирном времени.

                                            0

                                            Интересная мысль. Типа, несмотря ни на что, правительство работает и успевает даже за орфографией следить.

                                            0

                                            мне кажется это связано как раз с вопросами безопасности. на всякий случай, вдруг будет например 2 села с разными вариантами, и армия может просто ошибиться. опять же возможности манипуляции через неправильное написание/произношение, если есть разные значения слов значит должно быть разное написание. особенно это связано с транслитерацией немецких названий мне так кажется. как-никак язык противника, и Кёльн может стать Кельном, а при разговоре по телефону с человеком который не знает географии это название может превратиться в Кель, а это немного в другую сторону. так что это как раз очень умное стратегическое решение. как и то что сейчас в Госдуме вроде запретили документы без ё, чтобы не было неоднозначности

                                              0

                                              Мне больше нравится гипотеза про психологический трюк.

                                                0

                                                для психологического трюка слишком маленький эффект, заметят только чиновники, и потом, сомневаюсь что у кого-то была возможность протестовать — при Сталине, тем более во время войны, людям достаточно было просто приказать и делать вид для руководства смысла не было

                                                  0

                                                  Заметят все дети и все, у кого есть дети.


                                                  была возможность протестовать

                                                  Протесты-то тут вообще при чем? Говорю же: поддержание морального духа.

                                                    0

                                                    это теперь сложно будет узнать, разве что какие-то секретные документы всплывут...

                                                0

                                                В авиации и в армии используют свой язык, в котором коллизии исключены. Там еще учитываются возможные искажения при передаче информации голосом, а не только при написании.

                                                  0

                                                  Еще шибболетами шпиёнов выявлять :)

                                            +6

                                            "Бойтесь человека, который пишет тексты с буквой "ё". Если он достаёт до неё в углу клавиатуры, то он и вас достанет" (с)

                                              0

                                              это точно! по себе знаю

                                              0

                                              Одна из причин — букву ё очень неудобно набирать на обычной русской раскладке слепым мультипальцевым методом, это снижает скорость.

                                                0

                                                меня больше бесят заглавные буквы (я не минусовал)

                                                0
                                                Почему букву ё перестали использовать?

                                                Лень тянуться до неё?
                                                  0

                                                  ну кагбэ не очень то лень, по ней не промахнёшься, в отличие от шифта с заглавными буквами, запятыми итд…
                                                  может одна из причин что гугл правописание подчёркивает слова с ё?

                                                0
                                                Невнимательно читал статью, вопрос удалён.
                                                  0

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

                                                    0

                                                    Ну, лично я уже давно пользуюсь плагином макросом Yoficator (он же Ёфикатор) для Far'а. Правда, есть неудобства – например, он не умеет заменять словосочетания (к примеру, различить просто «чем» и «чём» нельзя без контекста, но вот с предлогом уже всё становится однозначно: «с чем», «о чём»), приходится такие моменты автозаменой подкручивать или вручную натыкивать.

                                                      0

                                                      а fb2 и архивы тоже ёфицирует? и на мобильных телефонах работает?

                                                        0

                                                        Макрос работает в стандартном текстовом редакторе Far'а. Соответственно, всё, что можно там открыть, он и ёфицирует. Я, например, не читаю книги на телефоне, а на компе через расширение FB2-Reader Opera 12, а оно с fb2.zip-архивами не работает (да и в любом случае, не вижу смысла запаковывать fb2-файлы в архивы, проблемы нехватки места у меня не стоит). И да, это было пояснение к «никому это не нужно» и «проблема только для меня одного»: просто, возможно, некоторые уже нашли приемлемый для себя вариант. Что, конечно же, не означает, что ваша разработка никому не нужна :) Как я уже и сказал, этот макрос тоже не идеален.

                                                          0

                                                          а, понятно. я просто с телефона читаю всегда, и скачиваю обычно где-нибудь в метро или в дороге, поэтому хотелось бы сразу с телефона и ёфицировать. и когда скачиваешь то обычно не fb2 а fb2.zip. плюс там 10% текста а остальное может быть картинки которые очень долго парсить

                                                  +3

                                                  Плохо, что нет исходников.
                                                  Пригодилось бы для любого txt-подобного формата (например, субтитры — srt, ass, ssa и другие)


                                                  Желателен консольный режим (можно с выключаемым GUI выполнения). Навскидку:


                                                  • yoficator.exe -i input.txt -o output.txt — выводит прогресс и выходит. Переключать консоль/gui можно каким-нибудь -c (/c) включать
                                                  • yoficator.exe %* (перетаскивание на экзешник, "отправить" и т.п.)
                                                  • INPUT | yoficator.exe | OUTPUT
                                                    Ну и т.п.

                                                  Понимаю, что первоначальная цель — это GUI, но консольный режим нужен чтобы был единый код обработчика, то есть одинаковое поведение GUI и batch-обработки. Чтобы можно было потестировать и по мелочам прогонять GUI'шкой, а для массовых изменений использовать консоль, не разбираясь потом, что питоновый аналог ведет себя в некоторых местах по-другому например.

                                                    0

                                                    спасибо за идею! щас допишу в roadmap <3

                                                    0
                                                    А программа различает по окружающим словам «всЁ» от «всЕ»?
                                                    Тот же вопрос про «житиЕ моЕ» vs «житьЁ моЁ».

                                                    PS С Наступающим! :)
                                                      0

                                                      хорошая идея, я об этом думал и в следующих модификациях это как-нибудь обязательно сделаю. пока нет, но идея хорошая. думаю что по контексту можно как-то определить
                                                      вас тоже с новым годом! и вобще всех <3

                                                      0
                                                      Еще бы тире и дефисы научить отличать — был бы конкурент Типографу.
                                                        0

                                                        Читал я однажды книжку, в которой (видимо, после массовой замены еще -> ещё) встречалось чудесное слово "пещёра".

                                                          0

                                                          не, это не тупая замена. там именно отдельные слова ищет

                                                            0
                                                            «пещёра»

                                                            А может это была Мещёра, но в ней опечатались?
                                                              0

                                                              вот поэтому все ёфикаторы нормальные должны именно словари использовать а не алгоритмы мне кажется, потому что иначе будут все составные слова неправильно ёфицированы

                                                            0

                                                            Как на счет пар нёбо/небо, падеж/падёж, осел/осёл, совершенный/совершённый, окунем/окунём? Также будет ли скрипт буквоедом и ставить ё там, где его уже никто и не произносит, но где словари его до сих пор рекомендуют? А как на счет фамилий, где ё вообще не является регулярным (вне зависимости от правил в отношении нарицательных имён). А заимствованные фамилии: Ге/ёбельс, Депардье/ё, Че/ёрчилль, Лёнин...


                                                            Не уверен, что всё это можно как-то полноценно автоматизировать.

                                                              0

                                                              сейчас программа работает только по однозначным словам, но это всёравно 90% слов в книгах которые я читаю (художественная/научная литература)
                                                              в дальнейшем я планирую сделать контекстный анализ и возможно список сложных случаев, основанный на принципах как в Гугл капча — если несколько человек отметят какое-то словосочетание как необходимое для ёфикации то это попадёт во все словари всех пользователей

                                                                0
                                                                ставить ё там, где его уже никто и не произносит, но где словари его до сих пор рекомендуют?

                                                                Как Маяковский и Блок в слове «чорт»?


                                                                :)

                                                                  0

                                                                  там разве что на чöрт заменить

                                                                –1

                                                                Человек который парится за ёфикацию пишет: "вылаживать apk", fasespam. Поправьте пожалуйста это безобразие, в русском языке нет такого слова, тут скорее всего подходит "выложить".

                                                                  0
                                                                  это прикол конечно
                                                                  а fasespam не знаю что такое, если facepalm то через C (faCepalm)

                                                                Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                                                Самое читаемое