Обновления поисковой системы и грамматического словаря

06-10-2010 Альфа-версия морфологического анализатора

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

При создании программы преследовалось две цели.

1. Проверить возможности использования компонентов грамматического словаря в прикладном коде с Qt.

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

Страница программы...


04-10-2010 Статистика для русского лексикона

Существительное с тремя мягкими знаками с прочее


01-10-2010 Обновление синонимизатора и перефразировщика

1. Добавлены правила перефразировки, работающие с формой прилагательных. Они меняют аналитический способ образования сравнительной и превосходной степени на синтетический в тех случаях, когда словарная статья модифицируемого прилагательного имеет соответствующие формы. Примеры:

Кошки более хитрые, чем собаки. --> Кошки хитрее, чем собаки.

Собака более умная, нежели кошка. --> Собака умнее, нежели кошка.

Кошки - самые хитрые среди домашних животных. --> Кошки - хитрейшие среди домашних животных.

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


25-09-2010 Обновление стеммера и лексикона

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

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

3. Обновлен дистрибутив Demo SDK Грамматического Словаря.

4. Обновлен дистрибутив Грамматического Словаря Русского Языка.


22-09-2010 Стеммер и поиск с морфологией

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

На сайте доступна php-версия стеммера, а в состав SDK Грамматического Словаря включен стеммер на C#. Помимо этого, утилита, которая генерирует текст стеммеров, порождает также C-код, хотя соответствующий вариант dll стеммера пока не оформлен.

Стеммер вместе с ранее созданным словарным лемматизатором работают в составе новой крошечной библиотеки StringLib - поиска текста с учетом морфологии. Библиотека написана на C# для .NET Framework v.3 и позволяет очень просто выполнять поиск ключевых слов в заданной строке, находя все грамматические формы. В качестве тестов и для демонстрации приемов работы созданы два простых приложения - одно консольное, другое веб-сайт на ASP.NET.

стеммер с онлайн-демонстрацией...

StringLib - поиск в тексте с учетом русской морфологии...


21-09-2010 Обновление лексикона

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

Обновление затрагивает все продукты, основанные на русском словаре.

В том числе обновлен до текущей версии 8.45 Грамматический Словарь Русского Языка - программа с простым графическим интерфейсом для просмотра словаря, включая слова и связи в тезаурусе.


21-09-2010 Перефразировка прилагательных

Подробное объяснение работы правила перефразировки прилагательных - здесь.

Правило меняет полную форму русского прилагательного на краткую:

Кошка такая хитрая, что спит с открытыми глазами.  -->  Кошка столь хитра, что спит с открытыми глазами.
     Коты такие ленивые, что спят целый день.  -->  Коты столь ленивы, что спят целый день.
     Кот был такой умный, что сам открывал дверцу.  -->  Кот был столь умен, что сам открывал дверцу.


17-09-2010 Лемматизатор на PHP

В состав SDK Грамматического Словаря включен модуль лемматизации на PHP с файлами данных. Исходный код и файлы данных генерируются автоматически по информации в грамматическом словаре.

online демонстрация PHP лемматизатора...


15-09-2010 Оптимизированный лемматизатор

Лемматизатор был основательно переработан:

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

2. оптимизировано внутренее устройство базы данных, благодаря чему она на диске занимает примерно на 20-30 % меньше.

3. добавлен режим многократно ускоренной лемматизации, возможный за счет загрузки базы данных в оперативную память (см. флаг LEME_FASTEST для sol_LoadLemmatizator).

4. пример использования лемматизатора на C++ расширен, теперь он проверяет также случаи неоднозначной лемматизации, когда исходное слова может быть нормализовано двумя альтернативными способами.

Скомпилированный для платформы Win32 лемматизатор в виде DLL можно взять в Demo SDK Грамматического Словаря, которая доступна для скачивания с сайта.

подробнее о лемматизаторе ...

подробнее об SDK Грамматического Словаря ...


12-09-2010 Расширение морфологического анализатора

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


12-09-2010 Расширения генератора текста и перефразировщика

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

Построение матрицы обеспечивается функцией API sol_BuildKnowledgeBase2.

Генерация предложений выполняется функцией sol_GeneratePhrase со специальным флагом FG_GENERATOR_USES_CHAINS.

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

Демо-программа Rewriter расширена для поддержки нового алгоритма. Сценарий chains заставлят утилиту сначала выполнить анализ указанного в командной строке текста, а затем генерирует выходной текст примерно такого же размера, как исходный. Вызов с новыми параметрами можно посмотреть в скрипте ...\scripts\rewriter\imitate-ru.cmd.

2. В перефразировщик добавлена пара правил, которые позволяют выполнять преобразования:

Мы посетили родной город. Мы побывали в родном городе.

Рядом с вокзалом. Недалеко от вокзала.

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

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


09-09-2010 Обновление демо-синонимизатора Joker

На сайт залита пересобранная демо-программа Joker (18 Mb). В движок синонимизации и перефразировки поправлена работа фильтра синонимов, теперь при выборе глаголов движок проверяет, что переходность и падежная валентность подставляемого слова соответствует переходности и валентности исходного.


09-09-2010 Исходные тексты алгоритма ThesaurusNotes

На странице с описанием утилиты ThesaurusNotes можно скачать исходный текст класса, который реализует все сценарии обработки фразовых статей.

В описании добавлены детали относительно алгоритма определения ведущего слова (сценарий pivot).


06-09-2010 Исходники процедурного API

В процедурный API Грамматического Словаря добавлена пара функций для получения текста с описанием последней возникшей ошибки. Самая полезная из них - sol_GetError.

Исходный текст процедурной обертки API Грамматического Словаря файл grammar_engine_api.cpp

Исходный текст аналогичного назначения для поисковой системы файл search_engine_api.cpp


05-09-2010 Редактор Переводов v.0.7

Новая версия программы Редактор Переводов прошла интенсивное тестирование и выпущена как релиз 0.7.

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

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


03-09-2010 Большое обновление процедурного API Грамматического Словаря

1. Изменены правила работы токенизатора текста, символы « и » , “ и ”, а также „ теперь рассматриваются как отдельные токены, аналогично кавычкам ". Таким образом, фрагмент текста „кошки и собаки” токенизируется в 5 элементов. Необходимые дополнения внесены в объвления русского, английского, французского, японского и китайского языков. В двух последних случаях добавлены свои аналоги кавычек, впрочем используемый в рамках японско-русского переводчика сегментатор и раньше справлялся с выделением символов 「」 и 『』. В тестовом примере, входящем в состав SDK Грамматического Словаря, также есть проверки токенизации текста с разными "кавычками".

2. Добавлена функция sol_AddWord, позволяющая создавать в загруженном в память словаре новые словарные статьи.

3. Расширена функция sol_SaveDictionary, теперь она позволяет также сохранять лексикон, например после добавления новых слов функцией sol_AddWord.

4. Исправлены некоторые ошибки в сегментаторе текста, найденные в ходе тестирования.


28-08-2010 Изменения в схеме SQL словаря

1. Введена таблица SG_TLINK_FLAG для хранения флагов - специальных предписаний алгоритму подстановки фраз.

2. Удален столбец SG_ENTRY.I, долгое время бывший просто наследием первых версий словаря и никак не используемый.

3. Внесены соответствующие исправления в код, работающий с SQL-словарем: ORM Persistent Dictionary, sql2sol, SQLex

4. Для столбцов первичных ключей в версии MySQL добавлено свойство AUTO_INCREMENT, и соответствующим образом изменен код вставки новых записей внутри библиотеки ORM Persistent Dictionary. В операторах INSERT значение первичного ключа теперь явно не задается, вместо этого код позволяет серверу определить новое значение ключа, а затем узнает его вызовом SELECT LAS_INSERT_ID().

Демо-версии скриптов для некоторых СУБД можно скачать со страницы загрузок.


27-08-2010 Описание алгоритма фразового перевода

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

SQL-версия словаря соответствующим образом расширена - флаги для связей записываются в таблицу SG_TLINK_FLAG.

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

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


21-08-2010 Исходные тексты API

Файл grammar_engine_api.cpp - исходник C++, на основе которого собирается Win32 библиотека процедурного API solarix_grammar_engine.dll. Этот файл компилируется в составе проектов под Visual Studio 2003, 2005 для 32/64 битных Windows, а также gcc для 32/64 битных Linux и Mac OS X.

Файл Grammar_Engine_fx.cs - исходник C#, содержит переходный код для вызова процедурного API кодом на .NET платформе. Этот файл является основой для компиляции сборки gren_fx.dll.

Файл search_engine_api.cpp - процедурный API поискового движка.

Файл sql2sol.dpr - исходник на Delphi, из которого собирается утилита экспорта SQL словаря в исходный текстовый формат.

Файл Samples.cpp - исходник на C++ для программы, которая готовит для Грамматического Словаря примеры употребления слов.


15-08-2010 Обновление Грамматического Словаря

Доступна версия 8.30 Грамматического Словаря:

русский лексикон


14-08-2010 Грамматическое число

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


14-08-2010 TranslatorFX версия 0.2

Сделана 2я рабочая версия программы Редактор Переводов.

Платформа: C#, процедурный API для работы с локальным словарем на C++ в виде Win32 dll, ORM библиотека для работы со словарем в MySQL.

В виде диаграммы используемые средства выглядят так:

работа со словарем

В программе реализован механизм репликации между локальным словарем и серверным хранилищем. При любых изменениях в локальном словаре (см. например функции sol_AddPhrase, sol_DeleteLink) в журнал репликации вносятся соответствующие команды для выполнения на удаленном сервере. Сами эти команды сериализуются в текстовый файл для восстановления в случае аварийного закрытия программы, так что журнал репликации автоматически восстанавливается после перезапуска программы. Набор команд репликации выполняется по команде пользователя, для этого как раз используется ORM библиотека.

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

Локальный словарь можно пересобрать из серверной версии с помощью набора корсольных утилит - sql2sol для экспорта данных с сервера в текстовый формат, compiler и ThesaurusNotes для сборки локального словаря.


08-08-2010 Расширение API Грамматического Словаря

1. Процедурный API

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

sol_AddPhrase - добавление фразовой статьи

sol_DeletePhrase - удаление фразовой статьи

sol_AddLink - добавление связи в тезаурус

sol_DeleteLink - удаление связи из тезауруса

sol_ProcessPhraseEntry - дополнительная обработка фразовой статьи

sol_SaveDictionary - сохранение модулей словаря на диск, в текущей версии реализовано только сохранение тезауруса.

2. ORM Persistent Dictionary Library

В .NET-библиотеку доступа к словарю в SQL RDBMS добавлены классы для удобного создания русских словарных статей, относящихся к основным частям речи:

RuNounEntry - существительное

RuVerbEntry - глагол и инфинитив

RuAdvParticiple - деепричастие

RuAdverbEntry - наречие

RuAdjEntry - прилагательное

RuParticiple - причастие

Новая версия скомпилированной библиотеки включена в состав демо-словаря для MySQL и MS SQL


28-07-2010 Использование тегов в синонимизаторе

В утилиту Synonymizer добавлена опция -tags. Она позволяет задать значение тега, которым промаркированы связи тезауруса. В ходе синонимизации движок будет отбирать только синонимы с таким тегом. В SDK Синонимизатора включен простой пример использования данного механизма - см. скрипт ...\scripts\rewriter\test-ru.cmd.

API синонимизатора расширен соответствующей функцией sol_SetTags.


25-07-2010 Расширение API Грамматического Словаря

1. Библиотека ORM Persistent Dictionary Library - написанный на C# набор классов для работы со словарем, загруженным в SQL базу данных. Библиотека очень компактная, с минимальными накладными расходами по сравнению с ручным выписыванием SQL-запросов. В отличие от ORM общего назначения (см. например статью об использовании Entity Framework), нам известна предметная область и семантика описываемых явлений, поэтому мы можем с одной стороны упростить некоторые аспекты типа поддержки транзакций, с другой - оптимально учитывать известный априори размер данных и частоту их использования, чтобы к примеру выполнять подгрузку словарных статей по одной за запрос, а координатных пар - целым списком сразу.

2. Несколько новых функций в процедурном API грамматического словаря. В том числе sol_ListLinksTxt - получение детальной информации о связях для словарной или фразовой статьи, и ряд вспомогательных функций для работы с возвращаемым списком. Также полезной может оказаться новая функция sol_ListEntries - получение списка словарных статей, удовлетворяющих некоторым условиям поиска, в том числе - маске имени.

18-07-2010 Расширение японско-русского переводчика

Завершен большой этап создания японско-русского переводчика для injapan.ru. За несколько месяцев работы реализовано несколько десятков паттернов письменной и (немного) устной японской речи в правилах трансформации.

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

Сам перевод в данном случае выполняется утилитой Syntax. В штатном режиме перевод будет выполняться веб-службой, которая реализована как программа Transformer под Linux и Windows.

Из дальнейших планов развития переводчика - расширение модуля реконструкции (обучаемый нейросетевой и статистический модуль восстановления падежей и предлогов) и нейротранслятора (обучаемый на примерах вспомогательный алгоритм перевода словосочетаний в контексте). Таким образом, попробуем уйти от текущего императивно-декларативного подхода для описания правил перевода, и добавить нечеткие механизмы, которые могут обеспечить учет контекста.


17-07-2010 Новости в Twitter

Мой аккаунт в Twitter

17-07-2010 Online версия грамматического словаря

На странице http://www.solarix.ru/online/dictionary.shtml можно посклонять и поспрягать русские существительные, прилагательные и глаголы. Используется демо-версия словаря, загруженная в MySQL базу данных. Вывод грамматических форм сделан на php, плюс немного используется jQuery для отображения результатов на странице без перезагрузки.


11-07-2010 Поиск по сайту

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

За основу взят php-движок Sphider. В него внесено несколько важных изменений.

1. Поддержка русской морфологии, то есть поиск всех грамматических форм для ключевых слов запроса. В отличие от подавляющего большинства подобных движков, у нас используется не стеммер, а связка из лемматизатора и стеммера. Лемматизатор является основным механизмом поддержки русской морфологии. При индексировании содержимого сайта каждое слово приводится к базовой словарной форме, то есть существительные - к именительному падежу единственного числа, глаголы - к неопределенной форме, и так далее. Подробнее о лемматизации - здесь. Кстати, именно такой подход к созданию индексной базы реализован в настольной поисковке Integra. В результате в индексной базе хранятся только нормализованные ключевые слова. Приятный бонус - это сокращает объем индекса, а также время поиска в сравнении с использованием стеммера. При поиске лемматизатор также используется как основной морфологический механизм, а стеммер - вспомогательный при подсветке ключевых слов.

2. Содержимое метатега description также индексируется и отображается в результатах поиска.

3. Изменен алгоритм выделения ключевых слов запроса в результатах поиска. В отличие от Sphider, вместо тега <b> используется <span> и css-стиль, что облегчает кастомизацию.

Если результаты обкатки будут положительны, то данный улучшенный движок поиска по сайту будет оформлен как доступный для свободного скачивания согласно лицензии GPL, в варианте с поддержкой русской морфологии "из коробки".


11-07-2010 Обновление синонимизатора под Linux

Собрана динамическая библиотека перефразировщика под Linux - synonymizer.so. Ее API описан здесь.

В API синонимизатора для удобства работы с текстами в Linux добавлена sol_Paraphrase8, она принимает и возвращает текст в utf-8.

В SDK Синонимизатора включен также пример работы с synonymizer.so из программы на C++.


08-07-2010 Лемматизатор в online

Написана небольшая C# утилита, которая берет из словаря список грамматических форм и их нормальных форм, анализирует и строит алгоритм лемматизации. Применяется комбинированный подход: набор правил-эвристик и словарь для тех случаев, которые дают некорректный результат при использовании правил. Получается достаточно компактная база, которая должна обеспечивать аккуратную лемматизацию - любая из 900 тысяч известных в лексиконе форм корректно преобразуется в нормальную форму. Исключение составляют случаи омонимии форм, когда разные словарные статьи имеют совпадающие формы, например рой - это либо существительное, либо глагол. В таких случаях лемматизатор приводит слово к одному из альтернативных вариантов.

Попробовать работу бета-версии лемматизатора можно прямо на сайте - здесь.


07-07-2010 Работа с пользовательскими словарями

Изменения в составе дистрибутивов SDK Грамматического Словаря и SDK Синонимизатора дают больше возможностей по модификации словаря под пользовательские задачи. В состав SDK включен новый базовый словарь без тезауруса в подкаталоге basedic и исходные тексты тезауруса в подкаталоге dictionary.src\userdic. Это позволяет как добавлять новые связи (синонимы, деривативы и т.д.), так и удалять из пользовательского словаря ненужные. Скрипт сборки пользовательского словаря ...\scripts\dictionary\russian-userdic.cmd (sh) доработан для включения в процесс компиляции файлов тезауруса.


04-07-2010 Demo SDK Грамматического Словаря

Немного урезанный дистрибутив SDK грамматического словаря с русским словарем доступен бесплатно.

Ограничения - отсутствуют демо-программы и сильно урезан тезаурус.

В целом API Грамматического Словаря доступен полностью.

Список всех доступных для скачивания и приобретения SDK здесь.


01-07-2010 Обновление русского лексикона

В русский раздел лексикона добавлено примерно 400 глаголов, внесено множество правок в существующие статьи.


30-05-2010 Обновления SQL Словаря

1. Переработан алгоритм экспорта словаря в SQL формат для MS SQL и MySQL. Для ускорения загрузки в случае MS SQL использован оператор BULK INSERT, для MySQL аналогичную работу выполняет LOAD DATA INFILE. Подробное описание данных операторов сделано на отдельной странице.

2. Для MS SQL сделан пример использования GROUP BY с модификатором WITH CUBE - здесь.

3. Примерно 100 русских существительных, соответствующих мужским именам, склоняющимся по модели Пётр, изменены - из парадигмы убраны формы множественного числа.


25-05-2010 Обновление Грамматического Словаря Русского Языка

Среди главных новинок - обновленный словарь, где учтены новые словарные статьи и поправлены некоторые найденные опечатки и ошибки:

склонение существительного

Подробное описание программы здесь.


23-05-2010 LINQ для работы с SQL словарем

В документацию по грамматическому словарю добавлена вводная статья, описывающая новый способ работы со словарем, загруженным в реляционную БД - LINQ плюс Entity Framework.

Чтобы генерация объектной схемы словаря выполнялась в ORM максимально гладко, и создаваемый код был удобочитаемым, алгоритм экспорта словаря для MS SQL был существенно переработан.

1. Имена создаваемых таблиц - в нижнем регистре. Хотя в SQL запросах регистр названий сущностей для MS SQL не играет роли (если не стремиться к этому целенаправленно), но генератор ORM берет оригинальные названия, сохраняя регистр, а потом при задании имен для свойств доступа к массивам записей добавляет английские окончания множественного числа в нижнем регистре. В итоге для таблицы SG_ENTRY получалось название свойства SG_ENTRies. Чтобы такие неадекватные названия не резали глаз, таблицы SQL словаря для MS SQL именуются сразу в нижнем регистре.

2. Создаваемый утилитой decompiler скрипт генерации SQL словаря для всех таблиц создает первичные ключи. В случае, если таблица не имеет суррогатного первичного ключа, как например sg_entry_coord, создается композитный первичный ключ из нескольких столбцов. Кроме того, в необходимых случаях создаются внешние ключи. Эти меры помогают Entity Framework сгенерировать объектное представление словаря со всеми необходимыми зависимостями.

На странице загрузок доступен новый архив со демо-скриптом загрузки русского словаря в MS SQL, с помощью которого можно проверить все описанные в статье операции.

Исходный код примера работы со словарем с помощью Linq 2 Sql добавлен в дистрибутив SDK Грамматического Словаря.


22-05-2010 Поисковый сервер - обновление дистрибутива и документации

Описание Полнотекстового Поискового Сервера обновлено подробностями реализации и некоторыми техническими деталями.

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

1. При индексировании в базе данных сохраняются имена всех встретившихся файлов, даже если их формат неизвестен серверу (см. команду -store_all_files=true).

2. Переработана дефолтная форма запросов. Во-первых, она позволяет явно указать тип поиска - файловый или полнотекстовый, а также включить отображение фрагментов найденных документов с подходящими ключевыми словами (см. команду -touchfiles=true).


21-05-2010 Многословные словарные статьи

На странице описания статей в лексиконе добавлены пояснения для многословных словарных статей.


17-05-2010 SQL запросы к тезаурусу

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


16-05-2010 Потокобезопасность морфологического и синтаксического анализаторов

Корректность работы морфологического и синтаксического анализаторов проверена на многопоточном тесте. Исходный код теста включен в демонстрационную программу в составе SDK Грамматического Словаря.

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

Проверялась работа движка с 2 ... 11 потоками.

В будущем планируется сделать похожий тест для веб-сервиса переводчика, то есть проверить потокобезопасность модуля трансформации текста.


16-05-2010 Кастомизация веб-интерфейса поискового сервера

В движок введена возможность загрузки шаблона для формирования веб-страниц запроса и результатов поиска для веб-интерфейса поискового сервера.

Подробное описание - здесь.

Пример шаблона включен в состав инсталлятора сервера, который можно скачать здесь.


06-05-2010 Переработки в веб-интерфейсе для поискового движка

Веб-страница запросов к поисковому серверу переработана - добавлено поле задания маски на имена файлов, и в список индексов добавлен пункт 'искать везде', представленный звездочкой:

поисковый запрос

Дистрибутив сервера и клиентскую часть можно скачать здесь.


04-05-2010 Грамматические омонимы

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

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

В разделе Грамматического Словаря дано подробное описание различных случаев омонимии для русских глаголов и существительных.

Программа Грамматический Словарь Русского Языка пересобрана с новой словарной базой и позволяет, к примеру, для существительного любовь увидеть два варианта с разной парадигмой и связями:

грамматические омонимы грамматические омонимы

20-04-2010 Поддержка новых семантических связей

1. В русский и английский тезаурус грамматического словаря добавлено несколько сотен смысловых связей

"обитатель" горожанин-город бразилец-Бразилия

"обладает свойством" смельчак - смелый, смелость

Поддержка работы с этими связями теперь введена во все программы - они отображаются в Грамматическом Словаре Русского Языка, поиск с учетом этих связей выполняется в поисковой сиетеме Интегра и faind.

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

Все дистрибутивы пересобраны и доступны для скачивания или приобретения.


18-04-2010 Бета-версия поискового сервера для локальной сети

Описание полнотекстового поискового сервера с хранилищем в MySQL здесь.

Изменения:

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

2. Имена таблиц - в нижнем регистре, чтобы была возможность использовать сервер MySQL под Linux.

3. Каждый поисковый индекс располагается в своей группе таблиц, создаваемых при первоначальном формировании индекса. Это облегчает работу СУБД за счет отказа от композитных индексов по некоторым таблицам, ускоряет поиск, удаление индекса, позволяет реализовать одновременное формирование нескольких поисковых индексов из нескольких процессов индексатора.

4. В поисковый сервер включен режим веб-интерфейса, позволяющий с помощью обычного браузера выполнять поиск по любому из созданных индексов. По умолчанию веб-сервер поднимается на 127.0.0.1 и порту 10973, данные настройки легко меняются в скрипте запуска веб-сервера StartWWWServer.cmd, который создается инсталлятором в папке c:\Program Files\Integra\scripts.

5. Выложены свежие сборки клиентской части поискового сервера - специальной сборки настольной поисковки Интегра с возможностью подключать индексы на MySQL, созданные сервером. Для установки клиента необходимо сначала скачать и установить обычную версию Интегры, а затем скачать и установить поверх premium-версию Интегры. В мастере создания индекса Интегры появится новый сценарий "поисковые серверы", который позволяет импортировать список доступных поисковых индексов и затем использовать их так же, как локальные.

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


18-04-2010 Аккуратный лемматизатор

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

Описание Лемматизатора здесь.

Алгоритм построен для достижения следующей цели: пусть медленно, но аккуратно и с минимальным потреблением памяти.

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

Лемматизатор включен в состав SDK Грамматического Словаря, но оформлен как отдельная dll (so) с минимальными зависимостями от других компонентов - для MS Windows требуется только C run time dll.


18-04-2010 Модуль обучаемого реконструктора в полнотекстовом переводчике

Для машинного переводчика написан обучаемый по эталонным текстам модуль коррекции результата переводов на русский язык.

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

Для японско-русского переводчика есть общее правило перевода сущ1のсущ2 через родительный падеж:

ロシアの旗  -->  Знамя России

Однако данное правило не всегда дает корректный русский текст на выходе, например в таких случаях

コンピューターの本  -->  Книга о компьютерах

飛行機の切符  -->  Билет на самолет

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

Модуль реконструкции предварительно обучается на русском тексте. Затем, получая от переводчика словосочетание результат применения общего правила перевода притяжательного падежа

Книга компьютера

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

Книга о компьютерах

Такой же пример есть в англо-русском переводчике - перевод

follow the white rabbit --> следуй за белым кроликом

получается как результат коррекции промежуточного результата 'следуй белый кролик' реконструктором.


14-04-2010 Текущие планы

Полный список можно видеть здесь.

Приоритетные задачи:

1. Полнотекстовый переводчик, с японского - основной, с английского - для отработки идей и алгоритмов.

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


14-04-2010 Обновление поисковой системы Интегра

Поправлен алгоритм индексирования и поиска на CD/DVD.

Во-первых, при индексировании файлов на сменном носителе в индексной базе теперь сохраняется информация, что файл находится на CD. Это влияет на обруботку действий пользователя со списком найденных документов.

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

Спасибо Дмитрию Синицину за идею.

Скачать новую версию можно здесь.


14-04-2010 Поисковый движок для Delphi

В состав бесплатного SDK поисковой системы включен интерфейсный модуль и пример программы на Delphi.

Во избежание проблем с низкоуровневым представлением булевских переменных во всех вызовах API тип bool заменен на int. Главным образом изменения затрагивают API расширенных регулярных выражений.

Скачать SDK можно здесь.


14-04-2010 Диаграмма связей для русского существительного

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

Первоначально была идея использовать другое имя существительное для демонстрации грамматических связей - цыган. Я уже отмечал ранее уникальность данного существительного в группе названий национальностей/этносов - наличие дериватива цыганить и связанных с ним совершенных форм глагола, причастий и деепричастий. Для других этнонимов подобрать такой глагол пока не удалось. И вот обнаружилась еще одна уникальная черта - для цыган есть отдельное имя существительное для обозначения ребенка - цыганёнок. Таким образом получаем полный комплект цыган-цыганка-цыганёнок. Для других национальностей вспомнились татарчонок и китайчонок. Почему нет таких наименований для других этносов - рационально понять невозможно.


13-04-2010 Документирование процедур API

На странице с описанием процедурного API морфологического анализатора добавлены описания нескольких вызовов:

определение текстового наименования состояния координаты по числовому коду sol_GetCoordStateName

определение текстового наименования координаты по числовому коду sol_GetCoordName

определение числа состояний у координаты sol_CountCoordStates


10-04-2010 Спряжение глаголов

Сделано описание способов спряжения русских глаголов с помощью вызова API и работы с глаголами через SQL-запросами.

Нашлась и для русских глагол забавная вещь. При статистическом анализе библиотеки Мошкова всплыло слово баиньки. Возник вопрос - какая это часть речи. Решил, что инфинитив, так как он работает в предложении так же, как инфинитив:

хочу спать - хочу баиньки

пора спать - пора баиньки

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


09-04-2010 Превосходная степень русских наречий

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

Попутно нашелся еще один любопытный момент, связанный с русскими наречиями и деепричастиями.

В лексиконе словаря сейчас есть порядка двух сотен наречий типа завораживающе, кричаще. Интересно в них то, что они сохраняют очевидное отглагольное происхождение, и поэтому очень похожи на деепричастия: завораживая, крича. Отличаются они от деепричастий по выполняемым синтаксическим функциям, точнее по невыполняемым. А именно, они не могут управлять дополнением и инфинитивом, что совершенно естественно для переходных и модальных деепричастий:

крича дурным голосом

завораживая округлостью форм


09-04-2010 Склонение существительных через API и SQL запросами

На отдельной странице в документации описаны 3 способа получения грамматических форм существительных: с помощью вызова API, запросом к SQL словарю и с помощью встроенных функций в правилах трансформации.


08-04-2010 Лемматизация и субстантивация

В качестве примера использования грамматических связей в SQL тезаурусе на странице показан пример приведения слов к форме существительного. Фактически в одном запросе выполняется два действия: 1) лемматизация - приведение к базовой форме, 2) субстантивация - поиск однокоренного существительного.

07-04-2010 Особенности описания русских прилагательных и причастий

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


07-04-2010 Переходность английских глаголов и другие расширения словаря

1. В парадигму грамматического класса английских глаголов добавлен признак переходность. На текущий момент около 3900 глаголов в словаре являются переходными.

Программа Грамматический Словарь модифицирована в этой связи: в шапке словарной статьи для английского глагола печатается отметка о переходности.

На странице с описанием парадигмы английского глагола написано небольшое замечание по переходности.

В ходе внесения данных в словарь обнаружился забавный момент. В английском языке есть глагол to japan - покрывать темным лаком. Грамматический аналог в русском языке - не совсем политкорректный, но тем не менее присутствующий в языковой практике глагол цыганить со своими деривативами. Хотя по смыслу эти два глагола никак не связаны, но оба они переходные и оба образованы от названия страны/нации/народа - других таких глаголов вспомнить пока не получилось.

2. В русский тезаурус добавлено порядка полутора тысяч семантико-грамматических связей трех видов:

действие, выполняемое субъектом: фотограф-фотографировать, проявитель-проявка

свойство субъекта: хитрец-(хитрость,хитрый)

инструмент, который использует субъект: пулеметчик-пулемет

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

В Грамматическом Словаре Русского Языка эти связи отображаются как прочие.


01-04-2010 Лемматизация

На странице собрана информация о том, как можно выполнять лемматизацию с помощью средств грамматического словаря - через вызовы API или запросы к SQL словарю.


29-03-2010 Родовая триада

Детальное описание того, что такое родовые (гендерные) пары в русском языке, можно посмотреть здесь.

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

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

И вот среди этого массива обнаружился интересный феномен, причем в единичном пока количестве - родовая триада:

бог - богиня - божество

присутствие существительного среднего рода делает эту группу существительных по-видимому уникальным явлением в лексиконе.


29-03-2010 Примеры запросов для SQL словаря

На странице с описанием структуры SQL словаря добавлено несколько примеров получения информации из базы данных.

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


28-03-2010 Релиз SDK Грамматического Словаря для Windows x64 и Linux 32/64

В дистрибутив включены собранные для 64-битной платформы Windows утилиты, dll грамматического движка и русско-английский словарь.

Опционально доступна также сборка SDK для 32х и 64х битных версий Linux.

Полный состав и условия приобретения SDK здесь.


27-03-2010 Рандомизация русского текста

В генераторе и перефразировщике текста реализован новый алгоритм - рандомизация текста.

Он меняет в исходном текста слова случайным образом, сохраняя их грамматическую форму:

Вход: Бульдозер за окном кухни казался громадным.

Выход: Захват за отуманиванием россыпи казался психотронным.

Вход: Проходя мимо ванной, он остановился и выпил стакан воды, потом еще один.

Выход: Раскапывая мимо ванной, он булькнулся и выпил манифест скороговорки, потом еще один.

Увидеть вживую работу нового алгоритма можно в демо-программе Joker, доступной для скачивания.

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

На уровне API синонимизатора можно подавать на вход алгоритма, то есть в процедуру sol_Paraphrase, отдельные предложения. Таким образом, можно брать шаблоны предложений из своего файла, расширяя набор синтаксических конструкций, порождаемых генератором текста.

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

Также API позволяет решить более сложную задачу - подставлять с сохранением грамматической формы слова из заданного "белого" списка. По умолчанию слова подставляются из всего лексикона.


23-03-2010 Экспорт словаря в формат XML

Алгоритм выгрузки содержимого словаря в формат XML доработан.

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

Протестирована выгрузка японско-русского словаря (более 280 тысяч словарных статей) в XML файл и последующая его заливка в MS Access 2003.

Подробности здесь.


21-03-2010 Автоматическая генерация грамматических форм

1. Переработана поддержка таблиц формообразования (парадигм) - теперь для любой таблицы можно задать маску-регулярное выражение, которое позволяет подбирать парадигму для слова по его базовой форме.

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

3. В программе Редактор Словаря вышеописанные новшества позволили ввести функцию автозаполнения - для новой словарной статьи алгоритм подбирает парадигму и выдает пользователю список возможных образцов склонения/спряжения. Если вариант один, то программа сразу генерирует формы и заполняет соответствующие поля. Пользователю остается визуально проверить результаты генерации и сохранить их в базе данных:

автоматическая генерация грамматических форм


17-03-2010 Обновления SDK синонимизатора и перефразировщика

В сборку 8.02 включены исходные тексты и сборочные скрипты для модуля русского синтаксического анализа и перефразировки.

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

Формат текстового описания правил синтаксического анализа более-менее документирован.

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

В будущих версиях по данному направлению планируется:

1. Полная документация на сайте

2. Расширение сложных вариантов перефразировки

3. Интерактивный пошаговых отладчик сценериев трансформации в виде оконного приложения (сейчас есть только консольная версия отладчика)


16-03-2010 Новый тип генераторов связей в тезаурусе

Генераторы связей - это определяемые пользователем правила создания обратных или дополнительных связей между словами в тезаурусе.

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

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


15-03-2010 Документация по SQL словарю

На сайте переработано и расширено описание схемы словаря в SQL базе данных.

Добавлено детальное описание назначения каждой таблицы.


13-03-2010 Пользовательские словари

Новая версия SDK грамматического словаря и синонимизатора включает средства для расширения предоставляемого словаря.

Расширения, введенные в компилятор словаря, теперь позволяют объединять базовый словарный модуль (это входящий в состав SDK русский словарь) со своим набором словарных статей и связей тезауруса.

Весь процесс создания объединенного словаря изложен в пошаговой инструкции.

Отмечу также две цели в плане развития проекта, которые далее улучшат возможности создания пользовательских словарей:

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

2. редактирование базового словаря в бинарном виде, без необходимости пересборки его из исходных текстов и, таким образом, без покупки исходных текстов словаря; план предусматривает альтернативу - создание с нуля новой программы на Qt либо расширение имеющегося модуля wDebugger.

Обращаю внимание, что новая версия 8.02 несовместима со старым бинарным форматом словаря.

Обновление для пользователей старых версий не предусматривается.

Подробнее о составе SDK и условиях приобретения здесь.


12-03-2010 Обновление документации для сервера переводов Transformer и редактора SQL словаря SQLex

Transformer - серверный вариант переводчика (или более общий вариант - трансформация текста по задаваемому набору правил). К сожалению, сам синтаксис правил пока не описан, но в ближайшее время такая работа начнется.

SQLex - редактор словаря, хранящегося в СУБД общего назначения, с возможностью редактирования лексикона и тезауруса.


11-03-2010 Обновление документации на сайте

Поправлена и дополнена информация, изложенная на страничках:

Компилятор словаря

Утилита decompiler - экспорт словаря в различные форматы

Утилита lexicon - морфологический анализатор в консоли


11-03-2010 Настольный переводчик на Mac OS X

Настольный переводчик заработал и под Mac OS X:

настольный переводчик

Так как доступный на сайте Нокии дистрибутив Qt SDK для Mac OS собирает только 32-битные оконные приложения (если, конечно, не пересобрать его из исходников), то пришлось переделать скрипты сборки всех консольных утилит для ОС Darwin - вместо 64 битного кода принудительно собираются 32-битные бинарники вне зависимости от битности ОС. Для управления битностью в эппловской версии gcc использована опция -arch i386.

Таким образом, на предварительном уровне вся цепочка - сборка словаря, доступ через консольные утилиты, использование словарных модулей оконной программой - заработала под Mac OS X для платформы Intel. Вспомогательные вещи - типа создания иконки приложения и сборка application bundle - выполняются с помощью входящих в XCode инструментов (Icon Composer и PackageMaker).

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

Заодно в ходе портирования подчищены скрипты сборки утилит проекта под Linux и FreeBSD. Теперь в соответствии со сложившимся стандартом команда

make clean

очищает результаты предыдущей компиляции, а

make

делает сборку с автонастройкой под текущую платформу - для Linux выбирается нужная битность, для Mac OS X принудительно задается 32 бита.


10-03-2010 Портирование проекта на Mac OS X (Darwin)

Часть утилит, включая компилятор и декомпилятор словаря, утилиту Lexicon и ряд других, собран и протестирован на Mac OS X (Darwin). На скриншоте - результат поиска слова кошкою в русском словаре утилитой Lexicon:

Lexicon в Mac OS X


07-03-2010 Настольный Переводчик в Linux с Qt

Порт собранного макета переводчика под Linux Mandriva x64 с ядром 2.6.27 заработал:

настольный переводчик под Linux


06-03-2010 Портирование Настольного Переводчика под Qt

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

32 и 64 битные версии MS Windows NT...Seven; компиляторы MS VC 6...2008, Borland CBuilder 6.0, CodeGear CBuilder 2009, Intel C++ Compiler

32 и 64 битные версии Linux; компилятор GCC

В связи с переходом Qt и сопутствующего инструментария полностью на доступные лицензии, было решено попробовать перенести реализацию пользовательского интерфейса Настольного Переводчика на Qt. Цель - добиться работы под Linux, и если получится - под Mac OS.

Под Windows предварительные результаты вполне удовлетворительны - черновой проект переводчика, созданный в Qt Creator, собрался и нормально заработал:

Qt переводчик


05-03-2010 Экспорт словаря в MS SQL

Отлажен экспорт словаря в SQL формат для СУБД MS SQL Server.

Результаты проверены на SQL Server 2005, загрузка выполняется через консольную утилиту sqlcmd в составе этой СУБД.

Демо-версию скрипта создания русс??ого словаря можно взять на странице загрузок.


04-03-2010 Имена таблиц для SQL словаря в MySQL

Так как под Linux запросы к СУБД MySQL чувствительны к регистру имен таблиц, то для удобства работы со словарем, загруженным в БД MySQL, имена создаваемых таблиц приведены к нижнему регистру.

Кроме того, в схему БД внесены некоторые изменения, в частности добавлены таблицы поддержки фразовых статей CPLX_LEFT и TNOTES и расширена таблица SG_TENTRY - в ней добавлены поля для задания языка фразы и грамматического класса ведущего слова.

Обновленные демо-версии SQL скриптов для создания в БД нескольких типов усеченного русского словаря доступны на странице загрузок.


28-02-2010 Версия 8

1. Фразовые статьи и переводы

Теперь можно явно определять фразовые статьи в исходных текстах тезауруса, в отличие от ранее реализованного (и по-прежнему актуального) механизма неявного объявления фразовых статей через объявление сложных связей тезауруса. С помощью явного определения можно задавать дополнительные атрибуты фразовых статей.

Расширен редактор словаря SQLEditor - теперь он позволяет создавать, редактировать и удалять фразовые статьи и управлять их связями для описания переводов типа "direct current" - "постоянный ток".

Утилита sql2sol выгружает из SQL БД также фразовые статьи и связи

Расширена внутренняя структура тезауруса для того, чтобы хранить дополнительную информацию о фразовых статьях, генерируемую автоматически (см.далее) и вводимую вручную. Теперь каждая фразовая статья может сопровождаться данными по сегментации (актуально для японского и китайского текста), синтаксической структуре (хранится сериализованный результат синтаксического анализа), грамматической роли фразовой статьи и так далее.

Создана утилита ThesaurusNotes для 32- и 64-битных платформ Windows и Linux, которая выполняет автоматическую обработку фразовых статей. Ее задача - подготовить фразовые статьи для использования алгоритмом переводчика.

Алгоритм переводчика теперь поддерживает перевод с учетом фразовых статей и связей.

2. Переводчик

Экранный переводчик и HTTP-сервер перевода теперь основаны на одном коде. Экранный переводчик предоставляет доступ к алгоритму через оконный интерфейс, а сервер - через http-протокол. В результате обе программы могут использовать одни и те же словарные модули.

HTTP-сервер перевода расширен для поддержки более широкого набора клиентов. В качестве примера создан гаджет для боковой панели Google, в котором на языке JavaScript очень просто реализовано взаимодействие с переводчиком:

3. Грамматический движок

DLL грамматического движка портирована на Linux, на 32 и 64 битные флатформы. Созданная shared object библиотека предоставляет тот же API, что и под Windows.


28-02-2010 Грамматический Словарь - версия 8

Главное новшество - построение диаграммы для ближайшего окружения слова в тезаурусе:

тезаурус

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

Узлы диаграммы кликабельны - они открывают карточку соответствующего слова.


free counters
      предыдущие новости »