IPB
ЛогинПароль:

 
 Ответить  Открыть новую тему 
> интерпретатор SQL, Запросы на естественном языке
сообщение
Сообщение #1


Пионер
**

Группа: Пользователи
Сообщений: 100
Пол: Мужской

Репутация: -  0  +


Здравствуйте всем! Необходимо создать интерпретатор SQL запросов на естественном языке, т.е. если пользователь введет "Сколько учеников имеют средний бал больше 5", то программа должна интерпретировать этот запрос на SQL. Посоветуйте как вообще можно это сделать, может быть есть алгоритмы, или книги по данному вопросу.


Заранее благодарен.

Сообщение отредактировано: kosyak -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Perl. Just code it!
******

Группа: Пользователи
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


Если набор запоросов фиксирован и меняться могут тоько числа, оперирующие в запросах то достаточно просто, если же нет)) Ну тогда удачи, не хилый такой анализатор писать нужно, почти AI smile.gif


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Пионер
**

Группа: Пользователи
Сообщений: 100
Пол: Мужской

Репутация: -  0  +


Цитата(klem4 @ 13.10.2008 7:31) *

Если набор запоросов фиксирован и меняться могут тоько числа, оперирующие в запросах то достаточно просто, если же нет)) Ну тогда удачи, не хилый такой анализатор писать нужно, почти AI smile.gif



Анализатор и нужен... Просто идея в следующем: емеется словарь известных команд, и имеется словарь русского языка (с синонимами). Просматриваем запрос и меняем слова на известные анализатору, ну и отбрасываем предлоги и все лишнее. Хотябы сделать простые запросы...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Профи
****

Группа: Пользователи
Сообщений: 618
Пол: Мужской

Репутация: -  24  +


1. К каждой таблице нужно хранить дополнительную информацию, описывающую, что она содержит. Как минимум, список слов, обозначающих объекты в таблице и их свойства.
Для твоего примера:
Запись в целом - ученик, учащийся, школьник, студент
1-е поле - фамилия
2-е поле - имя
3-е поле - балл, средний балл, оценка, отметка

2. При разборе предложения можно сперва искать упоминания существующих таблиц. Например в твоём примере встретив слово "учеников" нужно отметить, что обращение будет именно к этой таблице.

3. Рядом с этим словом (или словами) должно быть вопросительное слово.
Например:
Какие - просто вывести записи
Сколько - посчитать записи
Какое среднее значение - по тексту
и т.д.

3. Далее ищи слова, идентифицирующие поля, относящиеся к этой таблице (в данном случае мы найдем поле "балл").

4. Теперь ищем известные ограничения к этим полям. Под ограничениями я имею ввиду "больше", "меньше", и так далее.

5. Можно строить запрос по собранной информации.

Это если по минимуму.

PS Все имхо =)


--------------------
Close the World...txeN eht nepO
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Пионер
**

Группа: Пользователи
Сообщений: 100
Пол: Мужской

Репутация: -  0  +


Да, и именно так и думал. Теперь главное найти словари:

1) словарь окончаний существительных
2) словарь основ
3) флексивные классы существительных
4) словарь готовых словоформ

ну и т.д...
Планирую сначала на простом уровне сделать, без форм слов (все в инфинитивах). А дальше буду думать.

Где бы почитать про это все?? или пример программ???
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Друзья - ну каким боком это относится к теории Паскаля??..

М
Переношу в Общие Вопросы Программирования.



--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 29.03.2024 9:39
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name