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

Методички для лабораторных / Лабораторная работа №8 методичка

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

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

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

на естественном языке

Цель работы

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

Задание

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

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

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

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

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

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

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

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

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

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

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

Выполнение

  1. В первую очередь необходимо выгрузить данные из базы в файл в формате csv. При использовании СУБД PostgreSQL, можно воспользоваться командой:

Листинг 1. Выгрузка таблицы из БД

COPY products_273 TO '/tmp/products_199.csv' WITH (FORMAT CSV, HEADER);

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

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

Рисунок 1 – Создание папки

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

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

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

!pip install transformers

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

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

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

from transformers import AutoModelForTableQuestionAnswering, AutoTokenizer, pipeline

import pandas as pd

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

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

from google.colab import drive

drive.mount('/content/drive')

import pandas as pd

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

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

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

Рисунок 4 – Копирование пути

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

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

data = pd.read_csv('скопированный путь')

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

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

data

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

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

data = data.astype(str)

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

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

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

tapas_model = AutoModelForTableQuestionAnswering.from_pretrained(model)

tapas_tokenizer = AutoTokenizer.from_pretrained(model)

  1. Инициализация pipeline-ов. Для этого необходимо обработать pipeline, а также реализовать функцию обработки.

Листинг 9. Инициализация 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. Идентификация запросов к базе данных. Для того, чтобы задать вопрос, необходимо вызвать функцию, инициализация которой была выше, а также во входных параметрах передать фразу и модель.

Листинг 10. Запросы к базе данных

prediction = qa('What is the biggest portal user id?',data)

Необходимо привести в отчете снимки экранов, поясняющие все указанные действия для Вашего варианта. Также необходимо привести снимки экранов с результатами вывода ответов на несколько различных естественно-языковых запросов к данным, определяемым вариантом.

Контрольные вопросы

  1. Что такое NLP и для чего оно нужно?

  2. Для чего нужно обучение модели?

  3. Что такое токенизация текста?

  4. Что такое Tapas?

Список литературы

  1. Реализация Датасета. [Электронный ресурс]: https://github.com/wenhuchen/OTT-QA

  2. Генерация API ключа. [Электронный ресурс]: https://app.pinecone.io/organizations/-NPc_CTrO3RfTiYJ6noa/projects/us-east1-gcp:1eb6d07/indexes

  3. Как токенизация упрощает работу с чувствительными данными. [Электронный ресурс]. URL: https//habr.com/ru/post/546640/

  4. NLP. [Электронный ресурс]. https://habr.com/ru/hub/natural_language_processing/

8