
Большие данные в Excel — большая головная боль.
Представьте: перед вами тысячи строк в Excel с опечатками и разными форматами. VBA и Python помогают, но… что если есть способ быстрее? Я нашел решение, которое экономит часы ручной работы.
Необходимо проверить соответствие данных справочника номенклатурным позициям. Это может быть: вид номенклатуры, единица измерения, количество штук в упаковке и т.п.
Можно использовать фильтры и другие инструменты, но в любом случае останется достаточное количество материалов из справочника, которые необходимо проверять вручную, а это уже рутина.
При поиске данных я заметил, что Yandex GPT в поисковике очень быстро выдает правильные результаты, если они не требуют глубокого анализа. Прочитав документацию от Yandex, как оказалось можно делать запросы при помощи API в Yandex Cloud – они начали тестировать облачную платформу для бизнеса ещё в июне 2023 года.
В основном сервис используется для:
-
Чат боты и виртуальные ассистенты (поддержка клиентов)
-
Генерация контента (описания товаров, посты)
-
Оптимизация поиска по сайту
Хочу привести пару примеров применения Yandex GPT в анализе данных.
Примерытестирования Yandex GPT Lite на реальных данных
Пример 1: Проверка номенклатуры
Тестирование на «чистых» данных
Для чистоты эксперимента выгрузил заведомо «чистые» группы, где ошибки должны быть редкостью.
Результат: из 4092 позиций Yandex GPT посчитал, что 381 не соответствует действительности. Пробежавшись по ним, только 1 позиция была не в той группе
Тестирование на «грязных» данных
Для сравнения я взял другую выборку 1585 позиций, которые:
-
Уже проходили предварительную нормализацию
-
Заведомо содержали много некорректных данных
Результаты второй выборки: GPT определила 97.3%, как несоответствие, что достаточно хорошо.
В целом, для «грязных» справочников GPT– отличное решение для первичной очистки данных
Пример 2: Проверка количества штук в упаковке
Идея заключалась в том, чтобы проверить количество штук в упаковке по названию товара.
На тот момент я ещё не знал, что Yandex GPT использует «пустую» модель, в отличие от поисковой версии, которая уже дообучена.
Вот как это работает на практике:
prompt = (f"Ответь только числом без каких-либо пояснений. " f"Сколько штук в упаковке у товара: {item_name}")
-
Для названия «Батарейка 1.5В Camelion, LR 6 Plus Alkaline, 1652» модель выдала 4 шт. (вероятно, среагировала на цифру 1652)»
-
Но если в наименование добавить «BL-2» («Батарейка…BL-2, 1652») GPT четко определила 2 шт. в упаковке.
Это значит, что:
-
GPT точно распознаёт явные указатели по типу «BL-2»
-
Без четких маркеров, может давать неточные ответы
-
Отлично подходит для распознавания и извлечения атрибутов из нестандартизированных наименований
-
Требуется ручная проверка
Описание работы Yandex GPT
Тарификация за запросы в Yandex GPT
-
Все запросы платные: 1 запрос = 0,01 руб. (Версия Yandex GPT Lite)
-
Анализ 4 000 позиций обошелся мне в 40 руб., что делает GPT доступным для небольших проектов
-
Стоимость может меняться в зависимости от модели
Бесплатный грант для новых пользователей: Срок действия гранта – 60 дней (хватит на ~ 400 000 запросов).
Описание работы кода на Python:
Для начала необходимо получить folder_id и OAuth-token:
-
Заходим на страницу Yandex Cloud со своим Яндекс ID https://yandex.cloud/ru. Переходим в раздел «Консоль»
-
Создаем платежный аккаунт и привязываем карту любого российского банка
-
Для подключения к Yandex GPT нам необходим идентификатор папки folderID
-
Также нам необходим OAuth token, его можно получить по ссылке
Настройка и работа с API Yandex GPT
После получения folder_id и OAuth-token вам потребуется:
-
Установка сторонней библиотеки yandexgptlite
-
Настройки, которые влияют на результат: temperature – по стандарту установлен 0.6, но для более точных ответов советую 0.2-0.3 (чем выше значение, тем более непредсказуемым будет результат) и max_tokens – ограничивает длину ответа
import tkinter as tk from tkinter import filedialog import pandas as pd import time from yandexgptlite import YandexGPTLite # Конфигурация YandexGPT FOLDER_ID = "b1************" TOKEN_ID = "y0__********************************************************" # Инициализация YandexGPT gpt = YandexGPTLite(folder=FOLDER_ID, token=TOKEN_ID) def check_category_match(material, category): prompt = f"Соответствует ли наименование модели: {material} к виду номенклатуры: {category}. Ответь только ДА или НЕТ" try: response = gpt.create_completion(prompt=prompt, temperature=0.2, max_tokens=3) return "ДА" if "ДА" in response.upper() else "НЕТ" except Exception as e: print(f"Ошибка: {e}") return "Ошибка проверки" def process_excel_file(): root = tk.Tk() root.withdraw() # Выбор файла file_path = filedialog.askopenfilename( title="Выберите Excel файл", filetypes=[("Excel files", "*.xlsx *.xls"), ("All files", "*.*")] ) if not file_path: print("Файл не выбран.") return try: df = pd.read_excel(file_path) required_columns = ["Наименование модели", "Наименование категории МП"] for col in required_columns: if col not in df.columns: print(f'Столбец "{col}" не найден') return # Создание столбцов if "Соответствие категории" not in df.columns: df["Соответствие категории"] = "" # Обработка каждой строчки for index, row in df.iterrows(): material = str(row["Наименование модели"]).strip() category = str(row["Наименование категории МП"]).strip() if not material or material == "nan": continue # Проверяем соответствие категории if category and category != "nan": match_result = check_category_match(material, category) df.at[index, "Соответствие категории"] = match_result print(f"Материал: {material} | Соответствие: {match_result}") df.to_excel(file_path, index=False) time.sleep(1) print("Готово") except Exception as e: print(f"Ошибка: {e}") process_excel_file()
Вывод
Плюсы:
-
Довольно быстро (1 сек / 1 запрос)
-
Недорого (от 0.01 руб. / запрос)
-
Простая интеграция через Python
-
Использование Yandex GPT без VPN в отличие от ChatGPT
Минусы:
-
Требуется ручная проверка
-
Платная модель
-
Ограниченное использование
Yandex GPT – это недорогой и достаточно гибкий инструмент, особенно с учетом стартового гранта. Его можно использовать достаточно эффективно для анализа данных, только с ограничениями, которые описал выше.
ссылка на оригинал статьи https://habr.com/ru/articles/934004/
Добавить комментарий