Добавил:
Developer Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лабораторная работа №8 ИБД

.docx
Скачиваний:
15
Добавлен:
04.06.2023
Размер:
200.69 Кб
Скачать

Министерство цифрового развития, связи и массовых коммуникаций Российской Федерации

Ордена Трудового Красного Знамени

федеральное государственное бюджетное образовательное учреждение высшего образования

«Московский технический университет связи и информатики»

(МТУСИ)

Кафедра Сетевых Информационных Технологий и Сервисов

Лабораторная работа № 8

по дисциплине: «Интеллектуальные базы данных»

по теме:

«Организация запросов для обращения к Базе данных на естественном языке»

Вариант №5

Выполнил: студент группы МБТС0000

Иванов Иван Иванович

Проверил:

Кандидат технических наук, доцент Фатхулин Тимур Джалиевич

Москва, 2024

1 Цель работы

Целью данной работы является создание модели, посредством которой реализуется обращение к базе данных на естественном языке.

2 Задание

  1. Импортировать таблицу из базы данных, использующуюся в лабораторных работах №1-5.

  2. Подключить базу данных к среде Google Collab.

  3. Создать модель и функцию, обучение которых приводит к нужным результатам.

  4. Задать несколько запросов к базе данных.

3 Краткая теория

С помощью NLP необходимо создать такую модель, которая позволит обработать естественный язык, который в свою очередь является обращением к базе данных. После чего, данный запрос должен вывести необходимую информацию о таблице на экран.

Используемые понятия:

  • NLP – общее направление искусственного интеллекта и математической лингвистики. Оно изучает проблемы компьютерного анализа и синтеза текстов на естественных языках. Применительно к искусственному интеллекту анализ означает понимание языка, а синтез — генерацию грамотного текста.

  • TensorFlow - одна из наиболее часто используемых библиотек машинного обучения в Python, специализирующаяся на создании глубоких нейронных сетей. Глубокие нейронные сети отлично справляются с такими задачами, как распознавание изображений и распознавание образов речи.

  • Токенизация — процесс разбиения текстового документа на отдельные слова, которые называются токенами.

  • TAPAS — это нейросетевая модель для поиска ответов на вопросы в табличных данных. Нейросеть является расширением двунаправленной Transformer-модели BERT со специальными эмбеддингами для поиска ответов. Модель разрабатывали в Google AI.

4. Выполнение лабораторной работы

  1. В первую очередь необходимо выгрузить данные из базы в файл в формате csv.

Рисунок 1 - Таблица Клиенты в формате csv

  1. На google-диске необходимо создать папку и загрузить данный файл в этой папке.

Рисунок 2 - Создание папки

Рисунок 3 – Загрузка файла

Рисунок 4 – Файл находится в папке «drive» на Google диске

  1. Установка библиотек. Обратите внимание, это может занять некоторое время. Для загрузки всех библиотек необходимо выполнить следующие команды:

Листинг 1. Установка библиотек

!pip install transformers

!pip install torch-scatter -f https://data.pyg.org/whl/torch-1.9.0+${CUDA}.html

  1. Импорт библиотек. Необходимо импортировать библиотеки AutoModelForTableQuestionAnswering, AutoTokenizer, pipeline, pandas

Листинг 2. Импорт библиотек

from transformers import AutoModelForTableQuestionAnswering, AutoTokenizer, pipeline

import pandas as pd

  1. Подключение google-диска. Для считывания .csv файла, необходимо предоставить доступ к google-диску.

Листинг 3. Подключение google-диска

from google.colab import drive

drive.mount('/content/drive')

import pandas as pd

  1. Копирование названия файла. Для нахождения названия файла необходимо перейти в файлы проекта, раскрыть выпадающий список Data->MyDrive-> Найти файл, подгруженный на google-диск. После чего необходимо нажать на три точки рядом с файлом, работа с которым будет производиться и скопировать путь к нему.

Рисунок 5 – Файлы проекта и копирование пути

  1. Загрузка данных. Теперь необходимо считать данные, которые были загружены в .csv файле.

Листинг 4. Считывание данных

data = pd.read_csv('/content/drive/MyDrive/drive/clients.csv')

  1. Вывод таблицы. Для того, чтобы убедиться, что данные считались корректно, таблицу можно вывести с помощью команды:

Листинг 5. Вывод таблицы

data

Рисунок 6 – Вывод таблицы

  1. Следующий шаг – конвертация датафрейма в строку для ее передачи в языковую модель.

Листинг 6. Преобразование датафрейма в строку

data = data.astype(str)

  1. Прогнозирование. Первым этапом будет загрузка модели и ее токенизация.

Листинг 7. Загрузка модели и токенизация.

model = 'google/tapas-base-finetuned-wtq'

tapas_model = AutoModelForTableQuestionAnswering.from_pretrained(model)

tapas_tokenizer = AutoTokenizer.from_pretrained(model)

Рисунок 7 – Загрузка модели и токенизация

  1. Инициализация 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)

  1. Идентификация запросов к базе данных. Для того, чтобы задать вопрос, необходимо вызвать функцию, инициализация которой была выше, а также во входных параметрах передать фразу и модель.

Листинг 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. Выводы

В ходе лабораторной работы создание запросов для обращения к Базе данных на естественном языке.