![]() |
![]() |
kosyak |
![]()
Сообщение
#1
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 100 Пол: Мужской Репутация: ![]() ![]() ![]() |
Здравствуйте всем! Необходимо создать интерпретатор SQL запросов на естественном языке, т.е. если пользователь введет "Сколько учеников имеют средний бал больше 5", то программа должна интерпретировать этот запрос на SQL. Посоветуйте как вообще можно это сделать, может быть есть алгоритмы, или книги по данному вопросу.
Заранее благодарен. Сообщение отредактировано: kosyak - 12.10.2008 15:24 |
![]() ![]() |
Archon |
![]()
Сообщение
#2
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 618 Пол: Мужской Репутация: ![]() ![]() ![]() |
1. К каждой таблице нужно хранить дополнительную информацию, описывающую, что она содержит. Как минимум, список слов, обозначающих объекты в таблице и их свойства.
Для твоего примера: Запись в целом - ученик, учащийся, школьник, студент 1-е поле - фамилия 2-е поле - имя 3-е поле - балл, средний балл, оценка, отметка 2. При разборе предложения можно сперва искать упоминания существующих таблиц. Например в твоём примере встретив слово "учеников" нужно отметить, что обращение будет именно к этой таблице. 3. Рядом с этим словом (или словами) должно быть вопросительное слово. Например: Какие - просто вывести записи Сколько - посчитать записи Какое среднее значение - по тексту и т.д. 3. Далее ищи слова, идентифицирующие поля, относящиеся к этой таблице (в данном случае мы найдем поле "балл"). 4. Теперь ищем известные ограничения к этим полям. Под ограничениями я имею ввиду "больше", "меньше", и так далее. 5. Можно строить запрос по собранной информации. Это если по минимуму. PS Все имхо =) -------------------- Close the World...txeN eht nepO
|
![]() ![]() |
![]() |
Текстовая версия | 26.07.2025 13:12 |