Перевод SQL запросов на естественный язык
Содержание
Стр.
Введение
В настоящее время компьютерные технологии проникают практически во все области деятельности человека. Со временем накопленную информацию не только не рационально – долго, а даже практически невозможно обрабатывать вручную. В разной деятельности существуют – разные виды и разная структура информации, поэтому необходимо специализированное программное обеспечение для обработки информации.
СУБД являются одним из мощнейших программных средств, которые способны, структурировано хранить данные. В них используется мощный язык управления данными – SQL.
Целю
данного курсового проекта
1. Разработка и анализ технического задания
- Описание предметной области
Данная
программа разрабатывается с целью перевода
стандартных SQL запросов на естественный
язык (в данном случае на русский язык),
для лучшего освоения материала пользователями,
которые только начинают изучать базы
данных.
Программа
будет переводить такие стандартные
операции как:
- SELECT INTO
- SELECT
- FROM
- WHERE
- GROUP
- HAVING
- ORDER
- LIMIT
- AND
- OR
- NOT
- ASC
- DESC
- BY
1.2 Разработка технического задания
- Назначение разработки
Программа предназначена для перевода SQL языка на естественный язык (русский)
- Область применения
Областью применения данной программы может быть любое учебное заведение, в котором изучается SQL. Так же данной программой можно пользоваться и в домашних условиях в личных интересах.
- Функциональные требования к системе
Разработанная программа должна отвечать следующим функциональным требованиям:
- загрузка стандартных запросов из файла;
- возможность ввода информации пользователем;
- максимально приближенный перевод запроса на естественный язык;
- случайность перевода стандартных слов;
- Количественные требования к системе
Программа работает только на одном компьютере и может одновременно переводить только один запрос.
- Требования к техническим средствам
Для корректной работы программного продукта необходим следующий комплекс технических средств:
- процессор - Pentium 600MHz и выше;
- ОЗУ - 128 Мбайт или выше;
- HDD – от 5 Гбайт;
- ОС система семейства Windows
- монитор
- клавиатура, мышь.
Указанные
характеристики ПК соответствуют минимальным
требованиям ОС Windows 98.
- Требования к информационной и программной совместимости
Программа работает под управлением операционной системы семейства Windows. Программа распространяется как готовый продукт и не требует от пользователя каких либо настроек.
- Требования к интерфейсу
Программа
имеет графический интерфейс, который
понятен пользователю.
- Анализ технического задания
В настоящее время поставленную задачу можно решить, используя следующие программные компоненты:
Пролог (Prolog) — язык логического программирования, основанный на логике дизъюнктов Хорна, представляющей собой подмножество логики предикатов первого порядка.
Программа на языке Prolog состоит из набора фактов, определенных отношений между объектами данных (фактами) и набором правил (образцами отношений между объектами базы данных). Эти факты и правила вводятся в базу данных через операцию consult. Для работы программы пользователь должен ввести запрос - набор термов, которые все должны быть истинны. Факты и правила из базы данных используются для определения того, какие подстановки для переменных в запросе (называемые унификацией) согласуются с информацией в базе данных.
Язык Prolog, как интерпретатор,
приглашает пользователя вводить информацию.
Пользователь набирает запрос или имя
функции. Выводится значение (истина -
yes, или ложь - nо) этого запроса, а также
возможные значения переменных запроса,
присвоение которых делает запрос истинным
(то есть унифицирует запрос). Если ввести
символ ";", тогда отображается следующий
набор значений переменных, унифицирующий
запрос, и так до тех пор, пока не исчерпается
весь набор возможных подстановок, после
чего Prolog печатает no и ждет следующего
запроса. Возврат каретки воспринимается
как прекращение поиска дополнительных
решений.
Хотя выполнение программы на языке Prolog основывается на спецификации предикатов, оно напоминает выполнение программ на аппликативных языках LISP или ML Разработка правил языка Prolog требует того же рекурсивного мышления, что и разработка программ на этих аппликативных языках.
Язык Prolog имеет простой
синтаксис и семантику. Поскольку он ищет
отношения между некоторыми рядами объектов,
основными структурами данных являются
переменная и список. Правило ведет себя
подобно процедуре, за исключением того,
что концепция унификации более сложна,
чем относительно простой процесс подстановки
параметров в выражения.
Семантическая
сеть — информационная модель предметной
области, имеющая вид ориентированного
графа, вершины которого соответствуют
объектам предметной области, а дуги задают
отношения между ними. Объектами могут
быть понятия, события, свойства, процессы.
Таким образом, семантическая сеть является
одним из способов представления знаний.
В названии соединены термины из двух
наук: семантика в языкознании изучает
смысл предложений, а сеть в математике
представляет собой разновидность графа
— набора вершин, соединённых дугами.
В семантической сети роль вершин выполняют
понятия базы знаний, а дуги (причем направленные)
задают отношения между ними. Таким образом,
семантическая сеть отражает семантику
предметной области в виде понятий и отношений.
Структура
Математика позволяет описать большинство явлений в окружающем мире в виде логических высказываний. Семантические сети возникли как попытка визуализации математических формул. Основным представлением для семантической сети является граф. Однако не стоит забывать, что за графическим изображением непременно стоит строгая математическая запись, и что обе эти формы являются не конкурирующими, а взаимодополняющими.
Графическое представление
Основной формой представления семантической сети является граф. Понятия семантической сети записываются в овалах или прямоугольниках и соединяются стрелками с подписями — дугами (см. рис.). Это наиболее удобно воспринимаемая человеком форма. Её недостатки проявляются, когда мы начинаем строить более сложные сети или пытаемся учесть особенности естественного языка.
Математическая запись
В математике граф представляется множеством вершин V и множеством отношений между ними E. Используя аппарат математической логики, приходим к выводу, что каждая вершина соответствует элементу предметного множества, а дуга — предикату.
Использование семантических сетей
Концепция
организации гипертекста
- Связь, осуществляемая гиперссылкой, не имеет семантики, т. е. не описывает смысла этой связи. Назначение семантической сети состоит в том, чтобы описать взаимосвязи объектов, а не дополнительную информацию по предметной области. Человек может разобраться, зачем нужна та или иная гиперссылка, но компьютеру эта связь не понятна.
- Страницы, связываемые гиперссылками, являются документами, описывающими, как правило, проблемную ситуацию в целом. В семантической сети вершины (то, что связывают отношения) представляют собой понятия или объекты реального мира.
Я попробую написать программу, которая будет анализировать, и переводить SQL запросы на естественный язык.
- Выбор методов и средств решения технического задания
Данная программа написана в среде разработки Microsoft Visual C++.
Microsoft Visual C++ представляет собой мощное профессиональное средство для создания приложений, которое можно использовать как отдельно, так и в составе Visual Studio 2005. Оно обеспечивает разработчиков улучшенной функциональностью среды, оптимизирующим компилятором, множеством расширений и дополнений, поддержкой новейших платформ, технологий и стандартов. Visual C++ базируется на стандартной реализации языка C++ — стандарте ANSI/ISO.
Оснащенный
набором разнообразных мастеров
(Wizard), формирующих программный код, этот
продукт позволяет в считанные секунды
создавать вполне работоспособное приложение
Windows. Включенная в состав среды библиотека
Microsoft Foundation Classes (MFC) позволяет с легкостью
реализовать нужный графический интерфейс.
2 Разработка приложения
- Разработка классов
.
В программе используется пользовательский class Translator, в котором описаны поля и прототипы функций:
QueryToWords - перевод запроса на естественный язык (идет работа со строками и помешение их в список отдельных слов).
LoadSynonyms – загрузка синонимов (открытие файла с синонимами).
Translate - переводит запрос на русский язык (идёт обращение к элементу массива через указатель, затем происходит загрузка синонимов с помощью функции LoadSynonyms и указатель становиться на начало списка и затем переводиться в цикле вся строка) .
TranslateWord
– функция
переводит одно слово на русский язык
(в зависимости какое слово обрабатывается
в данный момент ему подбирается синоним
на русском языке)
2.2
Программная реализация
- Алгоритм работы программы
Рис1. Блок схема программы
На блок схемы показано как работает программа. Описание как работают функции, было описано в предыдущем пункте.
2.3.1 Структура программы
Рис2. Структура программы
Программа работает следующим образом:
При нажатии на кнопку Перевести запускается метод Translate(...). В этом методе мы сначала разбиваем запрос на отдельные части, состоящие из 1-2 слов (select into). Это делает метод QueryToWords(...). Затем подгружаем базу с синонимами - LoadSynonyms(...). После этого в цикле переводим каждую часть запроса на русский язык TranslateWord()
- Организация входных и выходных данных
Исходными данными для программы являются SQL запросы, которые пользователь вводит самостоятельно, либо программа – берёт их из файла.
Выходные данные – переведённые SQL запросы на естественный язык.
- Расчеты и оценки
1. Процент покрытия SQL языка составляет 14 основных операторов. В программе не переводится транзакт SQL.
2.
Гибкость системы составляет
для оператора select 4 синонима, для
group 3 синонима. Для других операторов синонимов
в данной версии программы нет.
3. Естественность перевода – по возможности приближена к реальной, но для более точного перевода необходимы некоторые доработки.
4 Руководство пользователя
- Инсталляция программы
Программный продукт распространяется в виде исполняемого файла.
- Работа с программой
При запуске
программы появляется диалоговое меню
Рис3. Запуск
программы
После
этого пользователь может выбрать,
откуда будет браться запрос из файла
или он сам его введет.
Рис4. Пример
работы программы
Заключение
В конце работы над программой был создан, готовый проект который можно использовать в образовательных целях.
Характерной
чертой данной программы является случайность
перевода некоторых операторов языка
SQL. При дальнейшем улучшении программы
можно добавить случайность перевода
для других операторов, а также приблизить
сам перевод к литературному переводу.
Список литературы
- World C++ Архив примеров С++.
- Б.В. Керниган, Д.М. Ричи Язык С
- Бьярн Страуструп Язык программирования С++
- Б.В. Керниган, Д.М. Ричи Язык С
- Информация с сайта Википидия.