Цифровой словарь от А до Я

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


    StarDict


    Давайте своими силами создадим электронный словарь для программ StarDict / GoldenDict. Для этого может понадобится много, или мало человеко-часов, в зависимости от качества исходного материала.


    Шаг первый: OCR


    В отличие от альпинизма при оцифровке словаря самый тяжелый шаг, не последний а первый. Если вам придется проводить OCR бумажного словаря с выцветшими страницами, напечатанного слишком мелко, с различными артефактами небрежного использования, или на экзотическом языке, то даже FineReader не сильно поможет. На некоторых страницах разница в длительности времени между ручным набором текста и OCR с корректировкой ошибок ничтожна.


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


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


    Самое время немного поговорить о форматах. Существует много форматов электронных словарей, вот их список.


    Все форматы мы здесь разбирать не будем, так как большинство из них проприетарные. Нас интересуют открытые стандарты и открытое ПО.


    Dictd


    Возникший в эпоху, когда сетевые TCP/IP протоколы беспрепятственно плодились и размножались dictd сейчас представляет лишь археологический интерес. Это клиент серверный протокол, использующий TCP порт 2628, определен в RFC 2229.


    Исходный файл для словаря форматируется следующим образом.


    :статья: объяснение

    Например, такой словарик


    :catalysis: "increase in the rate of a chemical reaction due to the participation of an additional substance called a catalyst, which is not consumed in the catalyzed reaction and can continue to act repeatedly.
    " <a href="is.gd/v6a22Q">ref</a>.
    :deconstruction:
    :rendered: eg. "rendered irrelevant."
    :reading: cf. 'reading of'
    :minor: a minor reading.

    Готовый файл для словаря создается командой dictfmt.


    dictfmt --utf8 -s "Длинное имя словаря" -j dict-name < mydict.txt

    В результате образуются 2 файла: dict-name.index и dict-name.dict. Из них первый очевидно индексный файл, с ним ничего делать не нужно, а второй можно сжать командой dictzip. Данная команда сжимает *.dict файл с помощью утилиты gzip. Сразу же возникает вопрос: а зачем оно тогда нужно, если есть обычный gzip?


    Дело в том, что dictzip использует добавочные байты в заголовке архивного файлы для обеспечения псевдо-произвольного доступа к файлу.


    Наконец файлы помещаются в профильные каталоги, т. к. /usr/lib/dict, перезагружаем службу dictd и вуаля. Синтаксис поиска прост, достаточно набрать


    dict СЛОВО.


    Пробежка по dictd ссылкам напоминает сафари по интернет сети 90-х, жив и еще лягается!


    Sdict


    Дерзкая попытка Алексея Семенова изменить мир к лучшему с помощью магии Perl в ту пору, когда Microsoft еще не крутил шашни с Linux и сообществом открытого ПО, а основной источник словарей были пиратки ABBYY Lingvo.


    Заголовок исходного файла словаря.


    <header>
    title = Sample 1 test dictionary -  dictionary name;
    copyright = GNU Public License - copyright information;
    version = 0.1 - version;
    w_lang = en - language for words;
    a_lang = fi - language for articles. For further information
    about language codes refer 'C:\Sdict\share\doc\iso639.htm' file;
    # charset = ... - use if your source file is not in UTF-8 encoding.
    </header>

    Тело форматировано следующим образом:


    word___article

    Можно качнуть версию для ОС Symbian, если что. Проект более не жив, и даже сами словари можно почерпнуть лишь с Машины Времени.


    XDXF


    Ну все, завязываем с археологией и переходим к словарным форматам и программам годным для использования IRL.


    XDXF имеет все преимущества и недостатки XML формата, каковым и является. Весь синтаксис формата и примеры можно обозреть тут.


    Скелет словарного файла выгладит следующим образом, состоит из 2-х частей: meta_info и lexicon.


    <xdxf ...>
        <meta_info>
            Вся информация про словарь: название, автор и пр.
        </meta_info>
        <lexicon>
            <ar>статья 1</ar>
            <ar>статья 2</ar>
            <ar>статья 3</ar>
            <ar>статья 4</ar>
            ...
        </lexicon>
    </xdxf>

    Есть огромное количество словарей в этом формате. Большим достоинством формата является то, что далее нет надобности ничего конвертировать. Программа GoldenDict распознает XDXF файлы наряду с большим количеством других поддерживаемых форматов.


    TSV / StarDict


    StarDict и клоны его это не столько про формат электронного словаря, сколько про качественное ПО просмотра, конвертации и создания таковых.


    Для создания электронного словаря с помощью StarDict достаточно TSV файла, что я и выбрал для цифровой копии армяно-русского словаря.


    Тем не менее возможно и кое-какое форматирования и разметка файла словаря, однако не идет ни в какое сравнение с XDXF.


    a   1\n2\n3
    b   4\\5\n6
    c   789

    Формат определяет символ переноса строки \n, в том случае, когда статья разбита на параграфы.


    Шаг второй: корректировка


    После первого шага скорее всего будут десятки, а то и сотни орфографических, грамматических и всяких прочих ошибок, странных символов и прочих артефактов OCR.


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


    Не холивара для, рекомендую обработку теска производить с Vim. Если ваш любимый текстовый редактор справляется с этим не хуже, то и славно. С Vim достаточно команды.


    :setlocal spell spelllang=en,ru

    для проверки орфографии по двум словарям, в данном случае русском и английском. Далее список граблей.


    • Сортировка текста работает абы как для не латинских локалей, особенно плохо там, где написание буквы требует более одного символа, как армянская ու = ո + ւ. Необходимо в таких случаях самостоятельно сортировать список слов с помощью простенького Perl, или иного скрипта.
    • Поиск по шаблону также может работать неожиданно для некоторых локалей, даже если сам текст и консоль в UTF-8.
    • При оцифровке печатного словаря нужно быть готовым не только к ошибкам оцифровки, но и ошибкам в самом печатном словаре. Их там может содержаться немало!
    • Если название статьи пишется заглавными, то возможно следует перевести при оцифровке в нижний регистр. Не все буквы имеют символы в верхнем регистре, собственно не для всех локалей даже есть верхний регистр.

    Шаг третий: компиляция словаря


    Для формата XDXF, как уже было сказано, этот шаг не требуется. Просто запихнуть файл в папку /usr/share/goldendict, где программа подхватит его.


    Для TSV файла, используется утилита stardict-editor, поставляемого с набором инструментов StarDict.


    stardict-editor


    На выходе программа создает следующие файлы, наподобие древнего Dict.


    1. somedict.ifo
    2. somedict.idx либо somedict.idx.gz
    3. somedict.dict либо somedict.dict.dz
    4. somedict.syn (optional)

    Файлы копируются в каталог /ysr/share/stardict/dic и на этом все.


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

    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More
    Ads

    Comments 6

      0
      Dict.cc для перевода с немецкого на английский и обратно (и не только) весьма хорош.
      Приложение для iOS позволяет скачивать словари на устройство. Есть и версия для Android.
        0
        ИМХО GoldenDict весьма неплох, и к нему на 4pda есть сконвертированные dsl от лингво и, что существенно важнее, базы от мультитрана, хоть и старенькие. Также и модифицированная версия под андроид симпатиченее оригинала.

        Если используется ПК, словарь уже не так актуален, хотя в редких случая и может пригодится — чаще полезны google (проверка употребления фразы в контексте), linguee (перевод + проверка), и википедия (как словарь — открываете нужное слово на исходном, переключаетесь на целевой язык; проверка оттенков значения слова — открываете слово на целевом языке, смотрите, о том ли статья, о чем действительно нужно).
          0

          Для распространенных языков это может быть верно, но для малых языков хороший академический словарь незаменим. Ну а у меня так и есть, GoldenDict только на смартфоне установлен.

            0
            Кроме словаря в том же формате можно засунуть, к примеру, список аббревиатур или ещё что-нибудь подобное. Лично я засунул радиолюбительские Q-коды
          0

          Вообще xdxf можно прямо в формата stardict конвертировать.
          Например с помощью https://github.com/soshial/xdxf_makedict .

            0

            А как искать такие словари? Недавно искал словарь для транскрипции русского и английского, но обнаружил что даже обычный анло-русский словарик мне не получается найти.

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