<< Hebrew

Dict

>> Internet


ЧТО ТАКОЕ DICT

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

Данный протокол был создан Группой разработки DICT (DICT Development Group). В результате чего появились словари в специальном формате DICT. Для работы с данными словарями требуются две вещи — DICT-сервер и DICT-клиент. Пользователи ОС GNU/Linux могут без труда установить DICT-сервер у себя на локальной машине. Таким образом они могут использовать DICT-словари на своём компьютере без необходимости подключения к сети.

Но при наличии доступа к сети Интернет словарями в формате DICT могут пользоваться не только пользователи ОС GNU/Linux, так как есть программы-клиенты и для Windows:

  1. GoldenDict
  2. dict 1.12.1
  3. DICTC – The DICT Client v0.42
  4. Magical Jellybean Dictionary 1.1

См.также.

В качестве DICT-клиента может служить и веб-браузер, если определённый DICT-сервер предоставляет такую возможность. В качестве примера посетите сайт:

  1. Slavic dictionaries on-line
  2. Словари в сети ДВО
  3. GNU Dico Web
  4. GNU Dico Web на Библия Онлайн

Стоит упомянуть также и об расширениях.

  1. Dict — для веб-браузера Mozilla Firefox
  2. dictlookup — для веб-браузера Internet Explorer
  3. Anaphraseus — для текстового процессора OpenOffice Writer
  4. vOOcabulum — для текстового процессора OpenOffice Writer

GoldenDict logo.png

Рекомендую использовать программу GoldenDict, которая позволяет искать слова и словосочетания по словарям различных форматов, включая в частности и файлы словарей в формате DICT. Это как DICT-клиент так и такого рода программа, которая для своей работы со словарями в формате DICT не нуждается в DICT-сервере. Программа кросс-платформенная — существуют версии как для Linux/X11 так и для Windows.

Начиная с версии 1.5.0-RC-343-gceb04db (май 2014 г.), GoldenDict может работать в качестве DICT-клиента. Для загрузки самой последней версии программы посетите Early Access Builds for Windows. Инструкцию по настройке GoldenDict'а на DICT-сервер см. здесь.

Для Android.

Больше всего из всех известных мне Dict-клиентов мне понравилась программа GoldenDict. Существует также версия GoldenDict для ОС Android, однако версия для Android не поддерживает на сегодняшний момент DICT-серверы. Мне удалось найти только одну программу для Android-устройств, которая является DICT-клиентом: AnDICT.

Вернуться к оглавлению


Установка и настройка DICT-сервера и консольного DICT-клиента для Ubuntu

Если вы используете дистрибутив Ubuntu, вы можете установить на своём компьютере DICT-сервер и консольный DICT-клиент через репозитории. Для этого в командной строке терминала введите:

        sudo apt-get install dictd <Enter>

После этой команды программная оболочка будет установлена.

Если вы желаете произвести установку из исходников, тогда сперва проверьте файл /etc/apt/sources.list содержит ли он строки, начинающиеся на deb-src. Если нет, тогда добавьте такие строки. У вас должны получиться записи, которые следуют формату:

deb http://URL/debian distribution parameter1 parameter2 parameter3
deb-src http://URL/debian distribution parameter1 parameter2 parameter3

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

После изменения файла /etc/apt/sources.list запустите команду:

        sudo apt-get update

Установите пакет dpkg-dev:

        sudo apt-get install dpkg-dev

Создайте каталог source:

        mkdir source

Перейдите в этот каталог:

        cd source

Выполните команду:

        apt-get source dictd

Архивы исходников будут загружены из Интернета и распакованы в каталог dictd-1.12.1+dfsg.

Если вы желаете добавить какие-либо свои патчи, то просто скопируйте в один каталог ~/source/dictd-1.12.1+dfsg/debian/patches/ все ваши патчи. Добавьте имена всех ваших файлов с патчами в список series, который находится там же. Перейдите в каталог ~/source/dictd-1.12.1+dfsg и выполните команду:

        dpkg-buildpackage

В каталоге ~/source создадутся deb-пакеты программ: dict, dictd, dictfmt, dictzip, которые вы сможете установить по отдельности по команде:

        sudo dpkg --install <ProgramName>.deb

Теперь можно установить словари. Можно выбрать что-то из репозиториев. Посмотреть список доступных словарей можно так:

        aptitude search ~ndict-freedict

Чтобы установить из этого списка какой-нибудь словарь, например dict-freedict-eng-rus, необходимо в терминале ввести команду:

        sudo apt-get install dict-freedict-eng-rus

Если у вас есть материалы, загруженные из Интернета или сделанные вами или кем-либо еще на своем компьютере с помощью специальных утилит, например dictfmt, тогда для установки скопируйте файлы материалов в один из каталогов, перечисленных в конфигурационном файле /etc/dictd/dictd.order.
Образец файла:
****
# This file defines the order in which dictdconfig lists dictionaries
# in /var/lib/dictd/db.list. The entry "/usr/share/dictd/" brings in
# any dictionaries in that directory that aren't specifically listed
# in this file. You should enter the names of the dictionaries you
# have installed, in the order you would prefer to have them searched.

web1913 gcide wn foldoc jargon vera devil elements easton hitchcock gazetteer
/usr/share/dictd/
/usr/local/share/dict/
****

Внимание! Редактируя данный файл, проследите, чтобы путь к каталогу заканчивался символом "/" (слэш).
Например, вы загрузили весь нужный материал из Интернета с этого сайта во временный каталог (не в каталог, куда вы будете устанавливать словари) ~/Документы/Словари. Распакуйте архивы в каталог /usr/local/share/dict по команде:

        sudo tar --directory=/usr/local/share/dict -xvzf ~/Документы/Словари/<database>.tar.gz

где <database>.tar.gz — имя архива с нужным словарём. Чтобы распаковать сразу все архивы, находящиеся во временном каталоге, выполните команду:

        for db in ~/Документы/Словари/*.tar.gz; do sudo tar --directory=/usr/local/share/dict -xvzf $db; done

Дайте права на чтение всем распакованным словарям:

        sudo chmod +r /usr/local/share/dict/*.{dict.dz,index}

Для подключения всех словарей, скопированных в каталог /usr/local/share/dict, выполните команду:

        sudo dictdconfig -w

чтобы переконфигурировать систему. На этом этапе проверьте, что конфигурационный файл /var/lib/dictd/db.list действительно настроился должным образом. Для этого выполните команду:

        sudo dictdconfig -l

Эта команда выводит содержимое файла /var/lib/dictd/db.list, в котором должны быть ссылки на все ваши словари в каталоге /usr/local/share/dict – они выглядят примерно так:
****
database ru-he_fi
 {
  data  /usr/local/share/dict/ru-he_fi.dict.dz
  index /usr/local/share/dict/ru-he_fi.index
}
****

После чего перегрузите DICT-сервер:

        sudo /etc/init.d/dictd restart

После перегруза сервера проверяем:

$ dict Информация
12 definitions found

From Russian-English full dictionary [sdict_ru-en]:

  информация
  жен. information достоверная информация –
  firsthand information, reliable information, true account теория
  информации – information theory
  ж. information
  (сообщение) report

From Русско-ивритский юридический словарь [rushebld]:

  информация
  ידיעה
  מידע

From Russian-Hebrew Luna Dictionary [russian-hebrew-2006-11-08_luna]:

  информация
  ידע
  מידע
  ~ мэйда
  פרטים
  ~ пратим
  אינפורמציה
  ביון
  הסברה
  מודיעין
  משכל
  שכל

From slovnyk_ru-en [slovnyk_ru-en]:

  "ИНФОРМАЦИЯ"
    DATA

From slovnyk_ru-en [slovnyk_ru-en]:

  "ИНФОРМАЦИЯ"
    COMMUNICATION

From slovnyk_ru-en [slovnyk_ru-en]:

  "ИНФОРМАЦИЯ"
    INTELLIGENCE

From slovnyk_ru-en [slovnyk_ru-en]:

  "ИНФОРМАЦИЯ"
    INFORMATION

From slovnyk_ru-en [slovnyk_ru-en]:

  "ИНФОРМАЦИЯ"
    LIGHT

From Russian-Hebrew Dictionary [Russian-Hebrew]:

  информация
  אינפורמציה
  ביון
  הסברה
  מודיעין
  מידע
  משכל
  שכל

From Русско-ивритский юридический словарь [rushebld]:

  информация
  ידיעה
  מידע

From Russian-Hebrew Dictionary [Russian-Hebrew]:

  информация
  אינפורמציה
  ביון
  הסברה
  מודיעין
  מידע
  משכל
  שכל

From Russian-Hebrew Luna Dictionary [russian-hebrew-2006-11-08_luna]:

  информация
  ידע
  מידע
  ~ мэйда
  פרטים
  ~ пратим
  אינפורמציה
  ביון
  הסברה
  מודיעין
  משכל
  שכל

то есть вы получили результат на ваш запрос по слову "Информация", в котором находятся 12 найденных статей, поиск проводился во всех словарях, при этом результат получен не только из русско-ивритских словарей, но также и из таких словарей как sdict_ru-en и slovnyk_ru-en.

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

Создание группы словарей

При поиске в словарных базах данных можно ввести кодовое имя конкретного словаря для ограничения поиска только этим словарём.

ПРИМЕР:

$ dict -d Russian-Hebrew_Phrase_book -f -s word для
localhost       2628    Russian-Hebrew_Phrase_book      Русско-Иврит разговорник
  агент по съему квартир сказал, что у него есть однокомнатная квартира как раз для меня
  ~ метавэх - дирот амар, шееш ло дират - хедер бэдиюк бишвили
localhost       2628    Russian-Hebrew_Phrase_book      Русско-Иврит разговорник
  вагон для курящих
  ~ крон hаишун
localhost       2628    Russian-Hebrew_Phrase_book      Русско-Иврит разговорник
  вино для благословения
  ~ яин ле кидуш
localhost       2628    Russian-Hebrew_Phrase_book      Русско-Иврит разговорник
  для кого?
  ~ бишвиль ми?
localhost       2628    Russian-Hebrew_Phrase_book      Русско-Иврит разговорник
  для меня - кофе по-турецки
  ~ бишвили - кафэ турки
localhost       2628    Russian-Hebrew_Phrase_book      Русско-Иврит разговорник
  для чего?
  ~ бишвиль ма?
localhost       2628    Russian-Hebrew_Phrase_book      Русско-Иврит разговорник
  есть ли письма для меня?
  ~ еш леха / лах михтавим бишвили?
localhost       2628    Russian-Hebrew_Phrase_book      Русско-Иврит разговорник
  заколка для волос
  ~ сикат - рош
localhost       2628    Russian-Hebrew_Phrase_book      Русско-Иврит разговорник
  лак для волос
  ~ лак - сэарот
localhost       2628    Russian-Hebrew_Phrase_book      Русско-Иврит разговорник
  лак для ногтей
  ~ лак - ципорнаим
localhost       2628    Russian-Hebrew_Phrase_book      Русско-Иврит разговорник
  мне нужны лезвия для безопасной бритвы
  ~ ани царих сакинэй - гилуах
localhost       2628    Russian-Hebrew_Phrase_book      Русско-Иврит разговорник
  ремешок для часов
  ~ рэцуа
localhost       2628    Russian-Hebrew_Phrase_book      Русско-Иврит разговорник
  сколько стоит марка для письма в ссср?
  ~ кама оле буль бишвиль михтав ле брит - hамоацот?
localhost       2628    Russian-Hebrew_Phrase_book      Русско-Иврит разговорник
  только для меня
  ~ рак бишвили
localhost       2628    Russian-Hebrew_Phrase_book      Русско-Иврит разговорник
  щетка для волос
  ~ миврэшет ле рош
localhost       2628    Russian-Hebrew_Phrase_book      Русско-Иврит разговорник
  это очень дорого для меня
  ~ зэ якар меод бишвили
localhost       2628    Russian-Hebrew_Phrase_book      Русско-Иврит разговорник
  это очень дорого для меня (2)
  ~ зэ якар мэод бишвили

Узнать список всех кодовых имён словарей можно по команде

        dict -D

Можно также ввести название какой-либо группы словарей для ограничения поиска определённым набором словарей. Для этого создайте собственные группы словарей. Добавьте в секцию [# User section here:] файла dictd.conf (расположен в каталоге /etc/dictd) следующие строки:

include /var/lib/dictd/db.list
database_exit

# User section here:

database_virtual ru-he {
  name "A collection of Russian-Hebrew dictionaries"
  info "--- Russian-Hebrew dictionaries ---"

  database_list "rushebar,rushebat,rushebbd,rushebch,rushebcl,rushebcr,rushebdi,rushebdr,rushebec,rushebel,rushebfi,rushebha,rushebhb,rushebhc,rushebhd,rushebhe,rushebhf,rushebhg,rushebhl,rushebhp,rushebhs,rushebht,rushebhu,rushebhw,rushebhy,rushebld,rushebmt,rushebob,rushebod,rushebph,rushebpl,rushebrm,rushebsh,rushebta,rushebwe,Russian-Hebrew,Russian-Hebrew_Phrase_book"
}

database_virtual he-ru {
  name "A collection of Hebrew-Russian dictionaries"
  info "--- Hebrew-Russian dictionaries ---"

  database_list "hebrusar,hebrusat,hebrusbd,hebrusch,hebruscl,hebruscr,hebrusdi,hebrusdr,hebrusec,hebrusel,hebrusfi,hebrusha,hebrushb,hebrushc,hebrushd,hebrushe,hebrushf,hebrushg,hebrushl,hebrushp,hebrushs,hebrusht,hebrushu,hebrushw,hebrushy,hebrusld,hebrusmt,hebrusob,hebrusod,hebrusph,hebruspl,hebrusrm,hebrussh,hebrusta,hebruswe,Hebrew-Russian"
}

Обратите внимание, что после
       include /var/lib/dictd/db.list
Нужно вставить
       database_exit
См. файл с примером /usr/share/doc/dictd/examples/dictd_virtual.conf

В противном случае в ответ на запросы будут выдаваться дублированные словарные статьи. Это будет из-за того, что один раз поиск будет идти по виртуальному словарю, второй — по обычному словарю из /var/lib/dictd/db.list.

В предыдущем примере демонстрируется создание двух групп ru-he и he-ru. Кодовое имя группы следует после слова database_virtual. Чтобы оно умещалось на экране, не делайте его длиннее 35 символов. Параметры группы заключаются в фигурные скобки "{……….}". Затем, достаточно указать всего три основных параметра:

  1. name — заголовок
  2. info — описание вашей группы, как оно будет появляться в ответ на команду
            dict -i <database>
  3. database_list — кодовые имена словарей, входящих в данную группу. Введите их список через запятую.

После завершения редактирования конфигурационного файла dictd.conf необходимо перезапустить DICT-сервер:

        sudo /etc/init.d/dictd restart

Поддержка MIME контента

У DICT-сервера есть возможность отдавать MIME content, т.е. отдавать произвольный контент без ограничений с указанием его типа. Если клиент умеет такое принимать, он должен передать серверу команду OPTION MIME (см. dict -M). В этом случае на клиента ложится задача обработки этого контента. dictd в свою очередь умеет отдавать plain text или MIME контент в зависимости от того, передал ли ему клиент команду OPTION MIME. См. A Dictionary Server Protocol. Итак, DICT-словарь может состоять из двух модулей: один с PlainText контентом, другой с MIME контентом. В файле /usr/share/doc/dictd/examples/dictd_mime.conf можно найти пример того, как надо настроить свой конфигурационный файл /etc/dictd/dictd.conf, чтобы DICT-сервер мог надлежащим образом обработать команду OPTION MIME.

Рекомендация Для размещения всех словарей с MIME-контентом используйте такой каталог, который не указан в /etc/dictd/dictd.order. Дело в том, что в режиме переконфигурирования программа dictdconfig в поисках словарей просматривает те каталоги, которые перечислены в конфигурационном файле /etc/dictd/dictd.order. А это значит, что, если словари с MIME-контентом будут размещены в одном из этих каталогов, то каждый раз после переконфигурирования вам прийдётся удалять из файла /var/lib/dictd/db.list все ссылки на эти словари.

Доступ к DICT-серверу извне

Для обеспечения доступа к DICT-серверу из сети Интернет необходимо отредактировать конфигурационный файл /etc/dictd/dictd.conf следующим образом:
1. В секции [# Site section here:] найдите строки:

global {
listen_to 127.0.0.1
# bind to local interfacea only
}

Для ключевого слова global закомментируйте параметр listen_to 127.0.0.1
2. В секции [# Access section here:] найдите строки:

access {
allow localhost
allow 127.0.0.1
# this allows access only from local host
allow inetd
# this allows access from inetd server
}

Для ключевого слова access добавьте параметр allow *

После завершения редактирования файла /etc/dictd/dictd.conf перезапустите DICT-сервер:

        sudo /etc/init.d/dictd restart

Вернуться к оглавлению


Проблемы при установке

1) Локальный DICT-сервер не отвечает:

Напечатайте в терминале
    pidof dictd

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

    /usr/sbin/dictd -dnodetach -dinit

Примечание
Если после выполнения этой команды приглашение командной строки терминала не появилось, то это значит, что DICT-сервер запущен в отладочном режиме и ждет, что на порт "кто-то постучится". Например, если вы в другом терминале выполните:

    dict -h localhost -p 2628 apple

то в этот момент в первом терминале появится отладочная информация наподобие этой:

:C: "dict 1.12.1/rf on Linux 2.6.32-042stab108.5"
:N: * exact "apple"
:N: * . "apple"
:I: quit: d/m/c = 0/0/68523; 0.000r 0.000u 0.000s

Нажав одновременно клавиши Ctrl и C, вы выйдете из отладочного режима DICT-сервера.

Вернуться к оглавлению


WEB-интерфейс DICT-сервера

Установка из репозиториев

Самый простой способ установить WEB-интерфейс для вашего DICT-сервера — установить пакет dicoweb:

        sudo apt-get install dicoweb

Если у вас не установлен Apache, то установите:

        sudo apt-get install apache2

Также установите libapache2-mod-wsgi:

        sudo apt-get install libapache2-mod-wsgi

В каталоге /usr/share/doc/dicoweb есть файл README.Debian, который содержит информацию установки:

dicoweb for Debian
------------------

* Make sure that the settings in /etc/dicoweb/settings.py and
  /etc/dicoweb/apache2.conf suit you, tweak them as necessary.
* Include /etc/dicoweb/apache2.conf in your apache2 vhost config

Чтобы выполнить вторую инструкцию, создайте в каталоге /etc/apache2/sites-enabled файл dico.conf со следующими строками:

<VirtualHost *:80>
        ServerName dict.bibleonline.ru
        ServerAdmin dict@bibleonline.ru
        DocumentRoot /etc/dicoweb/
        Include /etc/dicoweb/apache2.conf

        WSGIScriptAlias / /usr/share/dicoweb/dicoweb.wsgi
</VirtualHost>

Параметры dict.bibleonline.ru и dict@bibleonline.ru замените на свои.

Примечание
Если файл /usr/share/dicoweb/dicoweb.wsgi отсутствует, то проверьте нет ли файла /usr/share/dicoweb/wsgi.py. В некоторых версиях вместо dicoweb.wsgi используется wsgi.py. Если это так, то замените в предпоследней строке dicoweb.wsgi на wsgi.py.

Затем:
1. Удалите файл /etc/apache2/sites-enabled/000-default.conf
2. Скопируйте все файлы из каталога /etc/dicoweb/templates в каталог /usr/share/dicoweb/templates.
3. Отредактируйте файлы base.html и index.html (расположены в каталоге /templates), чтобы веб-интерфейс отвечал всем вашим нуждам, например, вы можете перевести все сообщения на русский язык, изменить логотип и т.д.
4. Запустите Apache2:

        sudo /etc/init.d/apache2 start

5. Убедитесь что установлен и запущен memcached. Если не установлен, то установите:

        sudo apt-get install memcached

Если необходимо запустить, то:

        sudo /etc/init.d/memcached start

В каталоге /etc/dicoweb есть файл settings.py, который содержит всю конфигурационную информацию DICOWEB. Если при установке у вас возникли проблемы, установите DEBUG = True в этом файле — это облегчит поиск источника неполадок. В случае какой-либо неполадки вся диагностика будет отображаться непосредственно на странице веб-браузера. Не забудьте перестартовать apache после внесения изменений:

    sudo /etc/init.d/apache2 restart

Установка из исходников

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

        https://alpha.gnu.org/gnu/dico/

Загрузите этот пакет примерно так:

        wget 'https://alpha.gnu.org/gnu/dico/dico-2.6*.tar.gz' -O "/wherever/you/have/download/dico-2.6*.tar.gz"

На момент написания этих строк, последняя версия — это 2.6.93. Значит в этом случае вам надо заменить dico-2.6* на dico-2.6.93. Распакуйте архив в каталог с исходниками.

        tar --directory=/wherever/you/have/source -xf /wherever/you/have/download/dico-2.6.93.tar.gz

Далее продолжайте по пунктам из файла INSTALL, который находится в подкаталоге dicoweb того каталога, куда вы скопировали исходники программы.

Вернуться к оглавлению


Словари в формате DICT

Powered by dict.org Сетевой протокол DICT для доступа к словарям создан DICT Development Group.
Отличительная особенность:
- протокол позволяет клиентам одновременный поиск в нескольких словарях;
- различные алгоритмы поиска;
- использование мультимедиа
Иврит-Русские словари
Hebrew-Russian Dictionary (937Kb)
Иврит-русский словарь: оружие (1.9Kb)
Иврит-русский словарь: автотермины (8.2Kb)
Иврит-русский словарь: авиация (2.7Kb)
Иврит-русский словарь: велословарь (3.5Kb)
Иврит-русский словарь: христианство (2.8Kb)
Иврит-русский словарь: ткани (2.6Kb)
Иврит-русский словарь: Устав акционерного общества (3.5Kb)
Иврит-русский словарь по страхованию ( 18Kb)
Иврит-русский словарь: Земснаряд, гидронамыв (2.6Kb)
Иврит-русский словарь: экономика (6.9Kb)
Иврит-русский словарь: электроника (1.7Kb)
Иврит-русский словарь: Рыба и морепродукты ( 15Kb)
Иврит-русский словарь: Дом - Устройство, строение, элементы ( 13Kb)
Иврит-русский словарь: трисы, шторы, ковры, постель (8.5Kb)
Иврит-русский словарь: личные вещи, косметика, украшения ( 17Kb)
Иврит-русский словарь: головные уборы ( 10Kb)
Иврит-русский словарь: Оборудование, приспособления ( 20Kb)
Иврит-русский словарь: Мебель ( 14Kb)
Иврит-русский словарь: Стили, типы, виды ( 12Kb)
Иврит-русский словарь: Электрооборудование, освещение (8.3Kb)
Иврит-русский словарь: Материалы по уходу, уборке и ремонту ( 40Kb)
Иврит-русский словарь: Водопровод, сантехника (8.6Kb)
Иврит-русский словарь: канцелярские принадлежности, книги, бумаги ( 15Kb)
Иврит-русский словарь: телефон, телевизор, компьютер (9.6Kb)
Иврит-русский словарь: посуда для приёма и приготовления пищи ( 17Kb)
Иврит-русский словарь: Одежда, обувь, белье ( 15Kb)
Иврит-русский словарь: гидравлические системы (2.5Kb)
Иврит-русский словарь: Инструмент ( 30Kb)
Иврит-русский юридический словарь ( 71Kb)
Иврит-русский словарь: Эпикризы выписной и переводной - мед. (5.0Kb)
Иврит-русский словарь: Нефтебаза (8.6Kb)
Иврит-русский словарь: Нефтегазопереработка и нефтехимия (1.7Kb)
Иврит-русский словарь: физиология (4.4Kb)
Иврит-русский словарь: фотодело (2.3Kb)
Иврит-русский словарь: растения (2.2Kb)
Иврит-русский словарь: Ресторанное меню (4.0Kb)
Иврит-русский словарь: корабли (1.7Kb)
Иврит-русский словарь: военные термины ( 13Kb)
Иврит-русский словарь: поезда (3.0Kb)
Иврит-русский словарь: сварка (2.1Kb)
Русско-Ивритские словари
Russian-Hebrew Dictionary (1.0Mb)
Русско-ивритский словарь: оружие (2.1Kb)
Русско-ивритский словарь: автотермины (8.7Kb)
Русско-ивритский словарь: авиация (2.9Kb)
Русско-ивритский словарь: велословарь (3.9Kb)
Русско-ивритский словарь: христианство (2.9Kb)
Русско-ивритский словарь: ткани (2.4Kb)
Русско-ивритский словарь: Устав акционерного общества (4.1Kb)
Русско-Ивритский словарь по страхованию ( 21Kb)
Русско-ивритский словарь: Земснаряд, гидронамыв (2.8Kb)
Русско-ивритский словарь: экономика (7.6Kb)
Русско-ивритский словарь: электроника (1.9Kb)
Русско-ивритский словарь: Рыба и морепродукты ( 13Kb)
Русско-ивритский словарь: Дом - Устройство, строение, элементы ( 12Kb)
Русско-ивритский словарь: трисы, шторы, ковры, постель (7.9Kb)
Русско-ивритский словарь: личные вещи, косметика, украшения ( 16Kb)
Русско-ивритский словарь: головные уборы (8.8Kb)
Русско-ивритский словарь: Оборудование, приспособления ( 17Kb)
Русско-ивритский словарь: Мебель ( 12Kb)
Русско-ивритский словарь: Стили, типы, виды ( 10Kb)
Русско-ивритский словарь: Электрооборудование, освещение (7.3Kb)
Русско-ивритский словарь: Материалы по уходу, уборке и ремонту ( 33Kb)
Русско-ивритский словарь: Водопровод, сантехника (8.0Kb)
Русско-ивритский словарь: канцелярские принадлежности, книги, бумаги ( 14Kb)
Русско-ивритский словарь: телефон, телевизор, компьютер (8.3Kb)
Русско-ивритский словарь: посуда для приёма и приготовления пищи ( 15Kb)
Русско-ивритский словарь: Одежда, обувь, белье ( 13Kb)
Русско-ивритский словарь: гидравлические системы (2.7Kb)
Русско-ивритский словарь: Инструмент ( 24Kb)
Русско-ивритский юридический словарь ( 72Kb)
Русско-ивритский словарь: Эпикризы выписной и переводной - мед. (5.6Kb)
Русско-ивритский словарь: Нефтебаза (9.1Kb)
Русско-ивритский словарь: Нефтегазопереработка и нефтехимия (1.9Kb)
Русско-ивритский словарь: физиология (4.9Kb)
Русско-ивритский словарь: фотодело (2.5Kb)
Русско-ивритский словарь: растения (2.4Kb)
Русско-ивритский словарь: Ресторанное меню (4.6Kb)
Русско-ивритский словарь: корабли (1.8Kb)
Русско-ивритский словарь: военные термины ( 15Kb)
Русско-ивритский словарь: поезда (3.2Kb)
Русско-ивритский словарь: сварка (2.1Kb)
Русско-Иврит разговорник ( 53Kb)

Вернуться к оглавлению


HTML-словарь с функцией лемматизации

Вступление

…Основное и единственное назначение лемматизатора — вернуть для исходного слова его базовую словарную форму. Например, для русских существительных это форма именительного падежа единственного числа, для глаголов — форма инфинитива. (Компьютерная грамматика)

Эта статья специально написана для того, чтобы вы могли освоить процесс создания своего собственного HTML-словаря с функцией лемматизации[1], т.е. другими словами словаря с встроенным лемматизатором. На данный момент мне не удалось найти такого словаря для платформы GNU/Linux, не беря в учёт словари Он-Лайн.

PHP лемматизатор для иврита, русского, английского и немецкого

Сперва напишем лемматизатор на языке php, в котором будет реализована лемматизация для четырёх языков — английский, немецкий, русский и иврит:

<?php
//каталог, где установлена программа RML
$RML="/home/michael/seman";
switch ($_GET[langua]) {
  case("Hebrew") :
    $command = 'echo '.$_GET[SearchText].' | hspell -l';
    exec($command, $arr);
    for ($q=0; $q<count($arr); $q++) {
      if (ereg('щвйаеъ лъйб щроцае:', $arr[$q]) == true) {
        print "<div>НЕТ ТАКОГО СЛОВА В ИВРИТЕ</div>";
      } else if ($q == 0) {
        print "<div>".ereg_replace("^.+:( | .+\+)(.+)\+*$", "\\2",$arr[$q])."</div>";
      } else if (ereg("^\t(.+)\((.+)\)$",$arr[$q],$regs) == true) {
        if ($regs[1] == "щереъ") {
          if ($regs[2] == "x") {
            for ($i=$q; $i>0; --$i) {
              if (ereg("^.+:( | .+\+)(.+)",$arr[$i],$regs) == true) {
                print "<div>".$regs[2]."</div>";
                break;
              }
            }
          }
        } else {
          print "<div>".$regs[1]."</div>";
        }
      }
    }
    break;
  case("HebMorph") :
    $file_str = file_get_contents("http://localhost:8080/solr/admin/analysis.jsp?name=contents_he&qval=".$_GET[SearchText]);
    print mb_convert_encoding(htmlspecialchars($file_str), 'HTML-ENTITIES', 'UTF-8');
    break;
  case("Russian") :case("English") :case("German") :
    if (! file_exists ($_GET[TemplateFile])) :
      $query = split("-", $_GET[SearchText]);
      for ($i=0; $i<count($query); $i++) {
        $handle = fopen($_GET[TemplateFile], 'w');
        fwrite($handle, $query[$i]);
        fclose($handle);
        $command = 'export RML="'.$RML.'"; $RML/Bin/TestLem '.$_GET[langua].' '.$_GET[TemplateFile];
//Утилита TestLem требует наличие переменной $RML - каталог, где находится RML
//Usage: TestLem (RUSSIAN|ENGLISH|GERMAN) [file]
        $file=$_GET[TemplateFile].'.lem';
        exec($command, $res); //массив $res заполняется строками вывода команды $command
        if (count($res) > 5) {
          if ( is_readable($file) ) {
            $fh = fopen($file, 'r');
            $file = fread($fh, filesize($file));
            fclose($fh);
            unlink($_GET[TemplateFile]);
            $arr[$i] = split("#", ereg_replace("^.*-> ", "",$file));
          } else {
            print $file." is not readable!";
          }
        } else {
// При тестировании Лемматизатора, для анализирования непредвиденного случая
          echo '$res[0]="'.$res[0].'", $res[1]="'.$res[1].'", $res[2]="'.$res[2].'", $res[3]="'.$res[3].'", $res[4]="'.$res[4].'"';
        }
      }
      for ($i=0; $i<count($arr[0])-1; $i++) {
        if (count($query)==1) {
          print "<div>".ereg_replace(" .*$", "",$arr[0][$i])."</div>";
        } else {
          for ($j=0; $j<count($arr[1])-1; $j++) {
            print "<div>".ereg_replace(" .*$", "",$arr[0][$i])."-".ereg_replace(" .*$", "",$arr[1][$j])."</div>";
          }
        }
      }
    else :
      print "Уважаемый пользователь! Сервис временно недоступен";
    endif;
    break;
}
?>

Slide Panel

Внимание! Все исходные коды, приводимые в этой статье, необходимо сохранять в формате Windows ANSI с таблицей кодировки cp1251.

Установка PHP-лемматизатора

Поместите на локальном сервере файл lemmatizer.php с этим php-кодом.

Примечание
Если у вас не установлен локальный веб-сервер, установите два пакета — php5 и apache2:

        sudo apt-get install php5 apache2

Реализация лемматизатора для иврита в вышеприведённом коде построена на использовании программы hspell, для трёх других языков, – русского, английского и немецкого, – на использовании программы RML — известный лемматизатор Алексея Сокирко (проект aot.ru).

Установка программы hspell.
Для установки программы hspell введите в Терминале команду:

        sudo apt-get install hspell

Загрузка и сборка из исходников RML.
Для установки этой программы сделайте следующее:

  1. Запустите Терминал. После запуска Терминала введите команду для загрузки исходников из репозитория RML:
            svn co https://seman.svn.sourceforge.net/svnroot/seman/trunk/ RML
  2. Перейдите в каталог, куда вы загрузили исходники программы:
            cd RML
  3. Установите пакет realpath:
            sudo apt-get install realpath
    или пропишите путь к RML (в данный момент это текущий каталог) в переменной окружения RML:
            export RML=$PWD
  4. Проверьте, установлены ли у вас пакеты flex и bison, если нет — установите.
  5. Для сборки программы запустите скрипт build.sh:
            sh build.sh

В каталоге, куда вы скопировали исходники программы, есть файл readme, который содержит всю необходимую для сборки информацию на английском языке. Если у вас возникли проблемы в процессе сборки, прочитайте его — это облегчит поиск источника неполадок. Одним из таких источников может быть отсутствие файлов libpcre.a и libpcrecpp.a в подкаталоге /contrib/pcre-6.4/.libs того каталога, куда вы скопировали исходники программы, или отсутствие файла pcrecpp.h в подкаталоге /contrib/pcre-6.4 того же каталога. Эти файлы вы можете взять из пакета libpcre3-dev. Удачная сборка происходит, если взять вышеуказанные файлы из deb-пакета libpcre3-dev_7.8-3build1_i386.deb, который можно найти здесь.

Внимание! В вышеприведённом php-скрипте необходимо указать переменную $RML. Вместо /home/michael/seman укажите настоящее название каталога, куда вы установили программу RML (в соответствии с вышеприведённой инструкцией — это каталог, куда вы загрузили исходники программы).

Передача данных PHP лемматизатору

Для начала нужно поместить у себя на локальном сервере, обычно это каталог /var/www, файл PHP лемматизатора с php-кодом, приведённым выше. После этого, самый простой способ посмотреть как выполняется лемматизация с помощью данного кода — создать небольшой HTML-файл следующего содержания:

<html>
<head>
<title>Тест лемматизатора</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
</head>
<body marginbottom="0" margintop="0" style="margin-top: 0px;" marginheight="0" marginwidth="0">
<center>
<form method="GET" action="http://localhost/lemmatizer.php" name="lemmatizer_form" id="lemmatizer_form" target="Lemmas">
<table style="border: 1px solid black;" width="270">
<tbody><tr>
<td nowrap="nowrap"><b> Язык:</b></td> 
<td align="right">
<select name="langua" style="font-size: 13px;">
        <option value="Russian">Русский</option>
        <option value="English">Английский</option>
        <option value="German">Немецкий</option>
</select>
</td>
</tr>
<tr>
<td><b> Слово:</b></td>
<td align="right"> 
        <input type="text" name="SearchText" size="30" maxlength="64">
</td>
</tr>
<tr>
<td><input type="hidden" name="TemplateFile" value="morph"></input></td>
<td align="right"><input type="submit" value="Найти Лемму"></td>
</tr>
</tbody></table>
</form>
   <IFRAME name="Lemmas"></IFRAME>
</center>
</body></html>

Slide Panel

Данный HTML-код предполагает, что исходный код PHP лемматизатора находится в файле lemmatizer.php. Из-за того, что символы, передаваемые PHP лемматизатору, должны быть в кодировке cp1251, запрос в виде
http://localhost/lemmatizer.php?TemplateFile=morph&langua=Russian&SearchText=WordToLemmatization
(где WordToLemmatization — слово-аргумент передаваемое лемматизатору), вводимый в адресной строке веб-браузера, не принесёт ожидаемого результата, поскольку в данном случае символы будут в кодировке utf-8. По этой причине для тестирования и потребовалось создавать такого рода HTML-файл.

При работе данного теста PHP лемматизатор возвращает лемму для слова-аргумента в объект IFRAME с именем Lemmas. При желании обработать полученный результат JavaScript'ом мы наткнёмся на препятствие, вызванное политикой безопасности, – доступ к информации из другого домена для веб-браузера невозможен. Чтобы преодолеть данное препятствие необходимо создать ещё один php-скрипт:

<?php 
foreach ($_GET as $key => $value) {
  if($key != url) {$url .= "&" . $key . "=" . $value;}
}
$content = str_replace(array("\r", "\n", "\""), array("", "", "\\\""), file_get_contents($_GET['url'] . $url)); 
echo "Translate_DivElement.innerHTML=\"\";Translate_DivElement.innerHTML+=\"$content\";";
?>

Поместите этот код в файл provider.php у себя на локальном сервере. Теперь запрос в лемматизатор будет выглядеть в следующем виде:
http://localhost/provider.php?url=http://localhost/lemmatizer.php?TemplateFile=morph&langua=Russian&SearchText=WordToLemmatization
Т.е. теперь слово-аргумент передаётся PHP лемматизатору не напрямую, а через этот промежуточный модуль, который возвращает результат в объект SCRIPT как выполняемый код на языке JavaScript.

Чтобы вы могли освоить работу этого механизма, создайте другой HTML-файл, который наглядно демонстрирует эту методику:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>Тест обработки данных, полученных от лемматизатора</title>
<SCRIPT language="javascript">
<!--

function Continue() {
  v = document.all.lang.value;
  switch (v) {
    case 'Russian':
      src="http://localhost/provider.php?url=http://localhost/lemmatizer.php?TemplateFile=morph"+v+"&langua=Russian&SearchText=" + document.all.SearchText.value;
      break;
    case 'English':
      src="http://localhost/provider.php?url=http://localhost/lemmatizer.php?TemplateFile=morph"+v+"&langua=English&SearchText=" + document.all.SearchText.value;
      break;
    case 'German':
      src="http://localhost/provider.php?url=http://localhost/lemmatizer.php?TemplateFile=morph"+v+"&langua=German&SearchText=" + document.all.SearchText.value;
      break;
    case 'Hebrew':
      src="http://localhost/provider.php?url=http://localhost/lemmatizer.php?langua=Hebrew&SearchText=" + Convert(document.all.SearchText.value,1).replace(/'/g,"\\'").replace(/"/g,'\\"');
      break;
  }
  FormSearch();
}

function FormSearch() {
  var Translate_DynScript = document.createElement ("SCRIPT");
  document.body.appendChild(Translate_DynScript);
  Translate_DivElement.innerHTML="";
  Translate_DynScript.src = src;
  Count=0;
  interval_id = window.setInterval("OnTimer()", 10);
}

function OnTimer() {
  if(Translate_DivElement.innerHTML != ""){
    clearInterval(interval_id);
    Lemmas = new Array();
    var j=0;
    for (var i = 0; i < Translate_DivElement.getElementsByTagName("DIV").length-0; i+=1) {
      if (Translate_DivElement.innerHTML.match("НЕТ ТАКОГО СЛОВА В ИВРИТЕ") != null) {
        alert('Слов не найдено. Слово содержит ошибку. Попытайтесь найти и исправить ошибку для данного слова самостоятельно.');
        return;
      }
      if(!LemmasCheck(Translate_DivElement.getElementsByTagName("DIV")[i].innerHTML.toLowerCase())) { 
        Lemmas[j++] = Translate_DivElement.getElementsByTagName("DIV")[i].innerHTML.toLowerCase(); 
      }
    }
    alert(Lemmas);
    return;
  }
  if(Count == 4000){
    clearInterval(interval_id);
    FormSearch();
    return;
  }
  else {
    Count++;
  }
}

function Convert(utftext,Direction) {// конвертирование символов: 1 - из cp1255 в cp1251; 2 - из cp1251 в cp1252
  var string = "";
  var i = 0;
  var c = 0;
  while ( i < utftext.length ) {
    c = utftext.charCodeAt(i);
    if (c < 128) {
      string += String.fromCharCode(c);
    }
    else {
      string += String.fromCharCode(((Direction == 1) ? c-416 : c+416));
    }
    i++;
  }
  return string;
}

function LemmasCheck(newlemma) {
  for (var i = 0; i < Lemmas.length; i++) {
    if(newlemma == Lemmas[i]) return true;
  }
  return false;
}

//-->
</SCRIPT>
</head>
<body marginbottom="0" margintop="0" style="margin-top: 0px;" marginheight="0" marginwidth="0">
<center>
<table style="border: 1px solid black;" width="270"><tbody>
<tr>
<td nowrap="nowrap"><b> Язык:</b></td> 
<td align="right">
<select name="lang" id="lang" style="font-size: 13px;">
        <option value="Russian">Русский</option>
        <option value="English">Английский</option>
        <option value="German">Немецкий</option>
        <option value="Hebrew">Иврит</option>
</select>
</td>
</tr>
<tr>
<td><b> Слово:</b></td>
<td align="right"><input type="text" name="SearchText" size="30" maxlength="64"></td>
</tr>
<tr>
<td> </td>
<td align="right"><input type="button" value="Найти Лемму" onclick="Continue();"></td>
</tr>
</tbody></table>
<div id="Translate_DivElement"></div>
</center>
</body>
</html>

Slide Panel

Здесь мы имеем два новых объекта:

Теперь данные, поступающие в объект Translate_DivElement, не являются данными, принадлежащими другому домену, и поэтому подлежат дальнейшей обработке. Запрос в лемматизатор происходит в тот момент, когда свойству src объекта Translate_DynScript присваивается значение переменной src, т.е. в строке: Translate_DynScript.src = src; Функция OnTimer() ожидает, когда же в объекте Translate_DivElement появятся данные от PHP лемматизатора. Как только данные появились, начинается их обработка. При обработке с помощью функции LemmasCheck() происходит проверка — является ли каждая лемма уникальной, т.е. происходит фильтрация с отсевом повторяющихся лемм. Затем через окно alert выводится полученный результат — массив Lemmas, содержащий список лемм без наличия повторов. Таким образом демонстрируется тот факт, что данные, полученные от PHP лемматизатора действительно можно обрабатывать.

В целях упрощения от использования объекта FORM пришлось отказаться. Форма перезагружает страницу, и это не позволяет обработать полученные данные. Чтобы использовать форму, её необходимо поместить в другое окно/фрейм.

Как создать собственный словарь

А не создать ли нам теперь свой собственный HTML-словарь, содержащий функцию лемматизации? Попробуйте! Вот вам в помощь php-код, который позволит выполнять запрос в словарь DICT:

<?php
$command = 'dict -d '.$_GET[dbname].' -f -s word $(echo '.$_GET[word].' | iconv -f '.$_GET[cp].' -t utf8)';
exec($command, $translations);
$arr = array();
for ($q=0; $q<count($translations); $q++) {
  if (strpos($translations[$q], 'localhost') === false) {
    if (trim($translations[$q]) != '' && $word != null) {
      $arr[$word][] = trim(mb_convert_encoding($translations[$q], 'HTML-ENTITIES', 'UTF-8'));
    }
  } 
  else if ($translations[$q+1] != null && strpos($translations[$q+1], 'localhost') === false) {
    $word = trim(mb_convert_encoding($translations[++$q], 'HTML-ENTITIES', 'UTF-8'));
    $arr[$word][] = trim(mb_convert_encoding($translations[++$q], 'HTML-ENTITIES', 'UTF-8'));
  }
}
if ($arr) {
  for (reset($arr); $key = key ($arr); next ($arr)):
    print("<div>$key</div><div>".implode('; ', array_unique($arr[$key]))."</div>"); 
  endfor; 
} 
else {
  echo "Слов не найдено";
}
?>

Slide Panel

Поместите у себя на локальном сервере файл dict.php с этим php-кодом.

Ссылку для запроса при этом следует указать примерно в таком виде:
src="http://localhost/provider.php?url=http://localhost/dict.php?dbname=databasename&cp=cpxxxx&word=" + lemma;
где <databasename> — кодовое имя словаря, "cpxxxx" — кодировка и lemma — слово в словарной форме (лемма).
Пример:
src="http://localhost/provider.php?url=http://localhost/dict.php?dbname=russian-hebrew_luna&cp=cp1251&word=" + lemma;

Итак, вот, что после недолгих раздумий получилось у меня:

<html>
<head>
<title>HTML-словарь с функцией лемматизации</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<style type="text/css">
<!--
body,td,th {
        font-family: Verdana, Arial, Helvetica, sans-serif;
        font-size: 12px;
        color: #253b4a;
}
body {
        margin-left: 0px;
        margin-top: 0px;
        margin-right: 0px;
        margin-bottom: 0px;
}
.style4 {
        color: #253b4a;
        font-size: 12px;
        font-weight: bold;
}
-->
</style>
<SCRIPT language="javascript">
<!--

function Continue() {
  Tr_DivE.innerHTML="";
  v = document.all.lang.value;
  switch (v) {
    case '0':
      src="http://localhost/provider.php?url=http://localhost/lemmatizer.php?TemplateFile=morph"+v+"&langua=English&SearchText=" + document.all.SearchText.value;
      break;
    case '1':case '2':case '3':
      src="http://localhost/provider.php?url=http://localhost/lemmatizer.php?TemplateFile=morph"+v+"&langua=Russian&SearchText=" + document.all.SearchText.value;
      break;
    case '4':
      src="http://localhost/provider.php?url=http://localhost/lemmatizer.php?langua=Hebrew&SearchText=" + Convert(document.all.SearchText.value,1).replace(/'/g,"\\'").replace(/"/g,'\\"');
      break;
  }
  FormSearch(1);
}

function FormSearch(c) {
  var Translate_DynScript = document.createElement ("SCRIPT");
  document.body.appendChild(Translate_DynScript);
  Translate_DivElement.innerHTML="";
  Translate_DynScript.src = src;
  Count=0;
  interval_id = window.setInterval("OnTimer("+c+")", 10);
}

function OnTimer(c) {
  if(Translate_DivElement.innerHTML != ""){
    clearInterval(interval_id);
    switch (c) {
      case 0:
        if (Translate_DivElement.innerHTML.match("Слов не найдено") != null) {
          lemmatizer();
          return;
        }
        Tr_DivE.innerHTML+=Translate_DivElement.innerHTML;
        lemmatizer();
        return;
      case 1:
        Lemmas = new Array();
        var j=0;
        for (var i = 0; i < Translate_DivElement.getElementsByTagName("DIV").length-0; i+=1) {
          if (Translate_DivElement.innerHTML.match("НЕТ ТАКОГО СЛОВА В ИВРИТЕ") != null) {
            alert('Слов не найдено. Слово содержит ошибку. Попытайтесь найти и исправить ошибку для данного слова самостоятельно.');
            return;
          }
          if(!LemmasCheck(Translate_DivElement.getElementsByTagName("DIV")[i].innerHTML.toLowerCase())) { 
            Lemmas[j++] = Translate_DivElement.getElementsByTagName("DIV")[i].innerHTML.toLowerCase(); 
          }
        }
        break;
    }
    LemmaCount=-1;
    lemmatizer();
    return;
  }
  if(Count == 4000){
    clearInterval(interval_id);
    FormSearch(c);
    return;
  }
  else {
    Count++;
  }
}

function Convert(utftext,Direction) {// конвертирование символов: 1 - из cp1255 в cp1251; 2 - из cp1251 в cp1252
  var string = "";
  var i = 0;
  var c = 0;
  while ( i < utftext.length ) {
    c = utftext.charCodeAt(i);
    if (c < 128) {
      string += String.fromCharCode(c);
    }
    else {
      string += String.fromCharCode(((Direction == 1) ? c-416 : c+416));
    }
    i++;
  }
  return string;
}

function lemmatizer() {
  if(++LemmaCount < Lemmas.length) {
    lemma=Lemmas[LemmaCount];
    switch (v) {
      case '0':
        src="http://localhost/provider.php?url=http://localhost/dict.php?dbname=fd-eng-rus&cp=cp1250&word=" + lemma;
        break;
      case '1':
        src="http://localhost/provider.php?url=http://localhost/dict.php?dbname=russian-hebrew-2006-11-08_luna&cp=cp1251&word=" + lemma;
        break;
      case '2':
        src="http://localhost/provider.php?url=http://localhost/dict.php?dbname=Russian-Hebrew_Phrase_book&cp=cp1251&word=" + lemma;
        break;
      case '3':
        src="http://localhost/provider.php?url=http://localhost/dict.php?dbname=Russian-Hebrew&cp=cp1251&word=" + lemma;
        break;
      case '4':
        src="http://localhost/provider.php?url=http://localhost/dict.php?dbname=Hebrew-Russian&cp=cp1255&word=" + lemma;
        break;
    }
    FormSearch(0);
  }
  else {
    if (Tr_DivE.innerHTML == "") {Tr_DivE.innerHTML="Слов не найдено";}
    return;
  }
}

function LemmasCheck(newlemma) {
  for (var i = 0; i < Lemmas.length; i++) {
    if(newlemma == Lemmas[i]) return true;
  }
  return false;
}

//-->
</SCRIPT>
</head>
<body marginbottom="0" margintop="0" style="margin-top: 0px;" marginheight="0" marginwidth="0">
<center>
<table class="style4" style="border: 1px solid black;" width="270"><tbody>
<tr>
<td nowrap="nowrap"><b> Тип перевода:</b></td> 
<td align="right">
<select name="lang" id="lang" style="font-size: 13px;">
        <option value="0" selected="selected">English-Russian Freedict dictionary</option>
        <option value="1">Pусско-Ивритский 2006-11-08_luna</option>
        <option value="2">Pусско-Ивритский Phrase_book</option>
        <option value="3">Pусско-Ивритский</option>
        <option value="4">Иврит-Русский</option>
</select>
</td>
</tr>
<tr>
<td><b> Слово:</b></td>
<td align="right"> 
        <input type="text" name="SearchText" size="30" maxlength="64">
</td>
</tr>
<tr>
<td> </td>
<td align="right"><input value="Перевести >>" style="font-size: 13px;" type="submit" onclick="Continue();"></td>
</tr>
</tbody></table>
<br>
<div id="Tr_DivE" style="visibility: visible; overflow-y: scroll; width:
 270px; height: 140px; border: 1px solid black;">
</div>
<div id="Translate_DivElement" style="visibility: hidden;"></div>
</center>
</body></html>

Slide Panel

Можно посмотреть видеоролик, который демонстрирует работу этого HTML-кода, или опробовать Он-Лайн версию этого словаря.

Эта статья была построена, как вводный курс, и демонстрирует основные возможности HTML-словаря, умеющего производить лемматизацию. Практический смысл во всех приведённых здесь исходных кодах — это на примерах расскрыть все используемые приёмы. Если вы хотите просто закачать в ваш компьютер готовый HTML-словарь, то могу предложить всё в одном ZIP-архиве. В этом архиве отсутствует файл provider.php, потому что его функциональность заложена в файлы lemmatizer.php и dict.php.

Итак, щелкните *ЗДЕСЬ, чтобы получить ZIP-архив с пакетом HTML-словаря. Всё содержимое архива скопируйте на свой локальный сервер (обычно это каталог /var/www). Запускайте словарь по ссылке http://localhost/translate.html.

Вернуться к оглавлению

>> Internet


Последний раз обновлено: 27.09.2018