ThesaurusNotes - обработчик фразовых статей в тезаурусе

Назначение

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

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

Реализация и программный доступ

В составе процедурного API есть функция sol_ProcessPhraseEntry, которая выполняет аналогичную работу. В действительности и утилита ThesaurusNotes, и функция sol_ProcessPhraseEntry, используют один и тот же код, реализованный как C++ класс ThesaurusNotesProcessor в файле ...\ai\some\ThesaurusNotesProcessor.cpp.

Скачать исходные тексты этого класса - ThesaurusNotesProcess.cpp и ThesaurusNotesProcessor.h.

Платформы

Программа написана на C++ и компилируется на следующих платформах:

Она работает в командной строке и обычно запускается из скриптов сборки словаря в нужными опциями - см. к примеру файл ...\scripts\dictionary\ru-en.cmd.

Опции

-left

обрабатывать только левые части связей

-right

обрабатывать только правые части связей

Если не указана ни опция -left, ни -right, то обрабатываться будут все фразовые статьи.

-language XXX

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

-scenario X,Y

Тип обработки. В зависимости от аргументов сценария X,Y выполняется следующая модификация:

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

синтаксический граф

segmentation - выполняется токенизация текста фразы, результаты запоминаются. Особое значение данная процедура имеет для фразовых статей на японском и китайском языках - так как пользователь вносит соответствующие статьи сплошным текстом, а многие алгоритмы (например переводчик) требуют данных о количестве слов для сопоставления образцов. К примеру, японская фразовая статья ニャーニャーと鳴く будет разбита на 3 слова [ニャー ニャー] [] [鳴く].

segmentation,lemmatization - выполняется токенизация (см. предыдущий абзац) и дополнительно - лемматизация выделенных слов, то есть приведение их к базовым формам. Это позволяет получить для переводчика паттерн, которым сопоставим с различными грамматическими формами входящих в статью слов, например dirt road и dirt roads.

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

cleanup - удаляется вся созданная сценариями информация, кроме грамматического класса (см. сценарий class).

cleanup,syntax - удалять только результаты синтаксического анализа (результат сценария syntax)

cleanup,segmentation - удалять только результаты сегментации (результаты сценариев segmentation и segmentation,lemmatization)

class - для фразовых статей, у которых не объявлен грамматический класс, попытаться отпределить его автоматически на основе набора эвристик и по результатам синтаксического анализа. Для работы переводчика важно определить, какой части речи синтаксически подобна правая фраза. Для японско-русского и англо-русского переводчиков соответствующие скрипты в подкаталоге ...\scripts\translation\jap_rus_notes.cmd и ...\eng_rus_notes.cmd выполняют определение части речи для русских фраз. В большинстве случаев часть речи для фразы совпадает с частью речи ведущего слова - см. сценарий pivot. Но есть случаи, когда ведущее слово неопределено - это всевозможные обстоятельства времени, места и так далее, то есть фразы, ведущие себя в предложении подобно наречию.

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

от дома к дому  -  НАРЕЧИЕ
     красное вино  -  СУЩЕСТВИТЕЛЬНОЕ
     свободное время  -  СУЩЕСТВИТЕЛЬНОЕ
     звонить по телефону  -  ИНФИНИТИВ
     смотреть фильм  -  ИНФИНИТИВ
     играть в футбол  -  ИНФИНИТИВ
     объектив с постоянным фокусным расстоянием  -  СУЩЕСТВИТЕЛЬНОЕ
     изящное и вульгарное  -  ПРИЛАГАТЕЛЬНОЕ
     зайти и засидеться  -  ИНФИНИТИВ

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

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

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

Имеем фразовый перевод:

dirt road = грунтовая дорога

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

alternating current = переменный ток

direct current = постоянный ток

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

синтаксическое дерево

В нем корень однозначно указывает на ведущее слово - road.

Как используется эта информация при переводе? Пусть, к примеру,  мы переводим словосочетание

The dirt roads.

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

англо-русский перевод

Дополнительные материалы

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

Тезаурус

Фразовые статьи

  © Elijah Koziev 2010
прикладные проекты на основе грамматического словаря API грамматической машины компоненты для доступа к грамматическому словарю условия получения SDK токенизатор и сегментатор морфологический анализ и синтез лемматизатор база N-грамм синтаксический анализатор словоформы морфология и синтаксис русского языка падеж число род совершенный и несовершенный вид экспорт в SQL формат экспорт в XML формат скрипт SQL словаря структура SQL словаря структура XML словаря компоненты для доступа к грамматическому словарю ORM Persistent Dictionary Library лемматизация стемминг примеры использования грамматического словаря склонение существительных в русском языке склонение русских прилагательных спряжение глаголов в русском языке поиск текста с учетом морфологии OCR подсистема расширенные регулярные выражения генератор текста генератор случайного текста и имитатор рандомизатор синонимизатор перефразировщик Статистика буквенных паттернов

Грамматический словарь русского языка



Грамматический словарь
склонение и спряжение глаголов, существительных, прилагательных

В состав входит русский и английский словарь.

платформа:  Windows 2000 ... Windows 7
требования: 512 Mb свободной памяти, 300 Мб на диске
размер:         34 Мб

  скачать грамматический словарь купить грамматический словарь SDK грамматического словаря
грамматический словарь русского языка



SDK Грамматического словаря



SDK Грамматического Словаря
склонение и спряжение глаголов, существительных, прилагательных

В состав входит русский и английский словарь.

платформа:  Windows 2000 ... Windows 7
размер:         13 Мб

SQL словарь (демо):
sqlite mysql oracle firebird mssql

скачать демо-версию SDK купить SDK API грамматического словаря



Поисковая система



Integra
настольная и сетевая поисковая система 

платформа:  Windows XP ... Windows 7
требования: 512 Mb свободной памяти
размер:         21 Мб

Дополнительные компоненты:
MySQL поисковый сервер 13.5 Мб
Integra.Premium MySQL 3.9 Мб

скачать поисковую систему SDK поисковой системыописание поисковой системы



SDK Поисковой системы



SDK Поискового движка
API для настольной и сетевой поисковая система 

платформа:  Windows XP ... Windows 7
размер:         17 Мб

Дополнительные компоненты:

MySQL поисковый сервер 13.5 Мб
Integra.Premium MySQL 3.9 Мб

скачать SDK SDK поисковой системы



Экранный переводчик



Translator
экранный переводчик

платформа:  Windows XP ... Windows 7
требования: 256 Mb свободной памяти
размер:         4.4 Мб

Дополнительные компоненты:
расширенный англо-русский словарь 6.4 Мб


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



18-Sep-10 изменено