Лабораторная работа №8 ИБД
.docxМинистерство цифрового развития, связи и массовых коммуникаций Российской Федерации
Ордена Трудового Красного Знамени
федеральное государственное бюджетное образовательное учреждение высшего образования
«Московский технический университет связи и информатики»
(МТУСИ)
Кафедра Сетевых Информационных Технологий и Сервисов
Лабораторная работа № 8
по дисциплине: «Интеллектуальные базы данных»
по теме:
«Организация запросов для обращения к Базе данных на естественном языке»
Вариант №5
Выполнил: студент группы МБТС0000
Иванов Иван Иванович
Проверил:
Кандидат технических наук, доцент Фатхулин Тимур Джалиевич
Москва, 2024
1 Цель работы
Целью данной работы является создание модели, посредством которой реализуется обращение к базе данных на естественном языке.
2 Задание
Импортировать таблицу из базы данных, использующуюся в лабораторных работах №1-5.
Подключить базу данных к среде Google Collab.
Создать модель и функцию, обучение которых приводит к нужным результатам.
Задать несколько запросов к базе данных.
3 Краткая теория
С помощью NLP необходимо создать такую модель, которая позволит обработать естественный язык, который в свою очередь является обращением к базе данных. После чего, данный запрос должен вывести необходимую информацию о таблице на экран.
Используемые понятия:
NLP – общее направление искусственного интеллекта и математической лингвистики. Оно изучает проблемы компьютерного анализа и синтеза текстов на естественных языках. Применительно к искусственному интеллекту анализ означает понимание языка, а синтез — генерацию грамотного текста.
TensorFlow - одна из наиболее часто используемых библиотек машинного обучения в Python, специализирующаяся на создании глубоких нейронных сетей. Глубокие нейронные сети отлично справляются с такими задачами, как распознавание изображений и распознавание образов речи.
Токенизация — процесс разбиения текстового документа на отдельные слова, которые называются токенами.
TAPAS — это нейросетевая модель для поиска ответов на вопросы в табличных данных. Нейросеть является расширением двунаправленной Transformer-модели BERT со специальными эмбеддингами для поиска ответов. Модель разрабатывали в Google AI.
4. Выполнение лабораторной работы
В первую очередь необходимо выгрузить данные из базы в файл в формате csv.
Рисунок 1 - Таблица Клиенты в формате csv
На google-диске необходимо создать папку и загрузить данный файл в этой папке.
Рисунок 2 - Создание папки
Рисунок 3 – Загрузка файла
Рисунок 4 – Файл находится в папке «drive» на Google диске
Установка библиотек. Обратите внимание, это может занять некоторое время. Для загрузки всех библиотек необходимо выполнить следующие команды:
Листинг 1. Установка библиотек
!pip install transformers
!pip install torch-scatter -f https://data.pyg.org/whl/torch-1.9.0+${CUDA}.html
Импорт библиотек. Необходимо импортировать библиотеки AutoModelForTableQuestionAnswering, AutoTokenizer, pipeline, pandas
Листинг 2. Импорт библиотек
from transformers import AutoModelForTableQuestionAnswering, AutoTokenizer, pipeline
import pandas as pd
Подключение google-диска. Для считывания .csv файла, необходимо предоставить доступ к google-диску.
Листинг 3. Подключение google-диска
from google.colab import drive
drive.mount('/content/drive')
import pandas as pd
Копирование названия файла. Для нахождения названия файла необходимо перейти в файлы проекта, раскрыть выпадающий список Data->MyDrive-> Найти файл, подгруженный на google-диск. После чего необходимо нажать на три точки рядом с файлом, работа с которым будет производиться и скопировать путь к нему.
Рисунок 5 – Файлы проекта и копирование пути
Загрузка данных. Теперь необходимо считать данные, которые были загружены в .csv файле.
Листинг 4. Считывание данных
data = pd.read_csv('/content/drive/MyDrive/drive/clients.csv')
Вывод таблицы. Для того, чтобы убедиться, что данные считались корректно, таблицу можно вывести с помощью команды:
Листинг 5. Вывод таблицы
data
Рисунок 6 – Вывод таблицы
Следующий шаг – конвертация датафрейма в строку для ее передачи в языковую модель.
Листинг 6. Преобразование датафрейма в строку
data = data.astype(str)
Прогнозирование. Первым этапом будет загрузка модели и ее токенизация.
Листинг 7. Загрузка модели и токенизация.
model = 'google/tapas-base-finetuned-wtq'
tapas_model = AutoModelForTableQuestionAnswering.from_pretrained(model)
tapas_tokenizer = AutoTokenizer.from_pretrained(model)
Рисунок 7 – Загрузка модели и токенизация
Инициализация pipeline-ов. Для этого необходимо обработать pipeline, а также реализовать функцию обработки.
Листинг 8. Инициализация pipeline-ов
nlp = pipeline('table-question-answering', model=tapas_model, tokenizer=tapas_tokenizer)
def qa(query,data):
print('>>>>>')
print(query)
result = nlp({'table': data,'query':query})
answer = result['cells']
print(answer)
Идентификация запросов к базе данных. Для того, чтобы задать вопрос, необходимо вызвать функцию, инициализация которой была выше, а также во входных параметрах передать фразу и модель.
Листинг 9. Запросы к базе данных
prediction = qa('What is the biggest client id?',data)
Рисунок 8 – Вывод наибольшего идентификатора клиента
Листинг 10. Запросы к базе данных
prediction = qa('What is the smallest client id?',data)
Рисунок 9 – Вывод наименьшего идентификатора клиента
Листинг 11. Запросы к базе данных
prediction = qa('What is the address of the client Katerina?',data)
Рисунок 10 – Вывод адреса клиента Катерины
Листинг 12. Запросы к базе данных
prediction = qa('What is the phone number of Dushev?',data)
Рисунок 11 – Вывод телефона клиента Душева
5. Выводы
В ходе лабораторной работы создание запросов для обращения к Базе данных на естественном языке.