Внешняя компонента «DICTDZ» (NativeAPI) + Пример работы с энциклопедией современной культуры, фольклора и субкультур, а также всего остального.




Компонента позволяет использовать большое количество (более пятисот) словарей по различным тематикам перевода на более чем 40 языках, а также  толковые словари,  словари синонимов, антонимов, устойчивых словосочетаний, жаргонизмов, различные энциклопедии.  
В качестве примера прилагается внешняя обработка для платформы 1С 8.3 (управляемая форма). В обработке показан пример подключения внешней компоненты и работы с энциклопедией Луркоморье, оно же Lurkmore — русскоязычная энциклопедия фольклора и субкультур.

Формат словаря открыт, и, в частности в рамках проекта XDXF, разработаны конвертеры из многих распространённых форматов. При его разработке много внимания уделялось уменьшению времени загрузки и увеличению быстродействия словаря, хотя сегодня возможности не только настольных, но и мобильных устройств уже не требуют подобных усилий. Всё вышеперечисленное сказалось на сложности поддержки формата. Однако, за счёт того, что данный формат являлся первым появившимся свободным форматом, он приобрёл большую популярность. Высокое быстродействие, малое время загрузки, поиск в сжатых файлах позволяет оперировать внушительными объемами данных. Так, например, вся русская Википедия без картинок занимет на диске  всего  2,5 Гб.

К внешней компоненте прилагается также внешняя обработка для платформы 1С 8.3 (управляемая форма). В обработке показан пример подключения внешней компоненты и работы с энциклопедией Луркоморье, оно же Lurkmore — русскоязычная энциклопедия фольклора и субкультур. Служит справочником по понятиям и терминологии русской культурной жизни во всех ее проявлениях.

Несколько ключевых фрагментов кода :

 

Подключение и создание объекта компоненты на клиенте:

&НаКлиенте
Процедура ЗагрузитьВК()
    ПутьВК = ТекКат + "bin";
    ИмяФайлаВК = "DictDZ.dll";
    ПолнИмяКомпоненты = "AddIn.Компонента.AddInNativeDictDZ";
    Если ПодключитьВнешнююКомпоненту( ПутьВК + ИмяФайлаВК ,
        "Компонента", ТипВнешнейКомпоненты.Native ) Тогда
        Попытка
            Компонента = Новый ( ПолнИмяКомпоненты );
        Исключение
            Сообщить ( "Не могу создать объект """ + ПолнИмяКомпоненты +
            """ из компоненты" );
            Сообщить ( ОписаниеОшибки() );
            Возврат;
        КонецПопытки;    
    Иначе
        Сообщить ( "Не могу подключить ВК. " + ПутьВК + ИмяФайлаВК );
    КонецЕсли;        
КонецПроцедуры    

Загрузка словаря или энциклопедии:

&НаКлиенте
Процедура ЗагрузитьСловарь()
    ПутьКСловарю = ТекКат + "data";
    ПолнИмяФайла_ifo = ПутьКСловарю + ИмяФайла_ifo;
    ПолнИмяФайла_idx = ПутьКСловарю + ИмяФайла_idx;
    ПолнИмяФайла_dict =  ПутьКСловарю + ИмяФайла_dict;
    Если НЕ Компонента = Неопределено Тогда
        Попытка
         // DictDZ.LoadDict ( fn1, fn2, fn3 )
            Компонента.ЗагрузитьСловарь( ПолнИмяФайла_ifo,
                            ПолнИмяФайла_idx, ПолнИмяФайла_dict );
        Исключение
            Сообщить(ОписаниеОшибки());
            Компонента = Неопределено;
            Возврат;
        КонецПопытки;
        НазваниеСловаря = Компонента.Название;
        КолСлов = Компонента.ОбъемСловаря;
        ЭтаФорма.Заголовок = НазваниеСловаря + ". Доступно " + КолСлов + " слов.";
    Иначе
        Сообщить ( "Компонента не подключена" );
    КонецЕсли;    
КонецПроцедуры   

Поиск в словаре:

    Попытка
      // DictDZ.FindValue ( word )
        Нашли = Компонента.НайтиЗначение(СловоДляПоиска);
    Исключение
        Сообщить(ОписаниеОшибки());
        Компонента = Неопределено;
        Возврат;
    КонецПопытки;
   // DictDZ.DictData
    текст_ = Компонента.СловарноеЗначение;

Дополнительные свойства:

Bookname / Название — Наименование словаря, как оно задано в информационном файле

WordCount / ОбъемСловаря — Количество доступных слов в файле индекса

 

План развития компоненты:

 
  • Возможность работы одновременно с несколькими словарями
  • Поиск по звучанию слова ( метафон  – английский,  русский,  транслитный )
  • Стеммер Портера  для английского и русских языков
  • Русская морфология на базе технологий АОТ
 

 

Лицензии:

Ссылки по теме:

Что находится в архиве  ( DictDZ.zip ) :

  • DictDZ.dll – файл нативной внешней компоненты
  • ExampleLurkmore.epf – файл внешней обработки (управляемая форма) для платформы 1С 8.3
  • Каталог data с энциклопедией Луркоморье.

3 Comments

  1. devel0per

    План развития компоненты:

    • Возможность работы одновременно с несколькими словарями ( до 512 количеством )

    • Поиск по звучанию слова ( метафон – английский, русский, транслитный )

    Стеммер Портера для английского и русских языков

    • Русская морфология на базе технологий АОТ

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

    Reply
  2. AlX0id

    Насчет паралимпиады — тонко подмечено 😉

    Reply
  3. zekrus

    Доброе утро!

    А почему бы вам не добавить в обработку морфологический анализатор (в коде 1с)?

    С уважением

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *