artbobylev.ru
Построчная обработка статистики Яндекс.Вордстат языковой моделью
Допустим, мне хочется узнать, с какими принтами люди ищут футболки.
Запустил магазин футболок в 20 тысяч принтов от AI predstav.store, а из поиска почти никто не приходит.
Существует сервис Яндекс.Вордстат со статистикой пользовательских запросов в Яндекс поиске.
Собрав данные по запросам типа «футболка», «футболка с принтом», «футболка принт», у меня получился csv-файл в 9000 строк:
title;number;
футболка;2428959;
футболка мужская;175769;
купить футболку;172707;
футболка женская;113648;
футболка бела;99822;
белая футболка;99813;
...
купить футболку с принтом лесничество;5;
купить футболку с принтом часы;5;
купить черную футболку с принтом математика;5;
...
Из них я хочу выделить только те запросы, которые включают в себя описание принта, чтобы на его основе затем сгенерировать изображение.
Для этого буду использовать Langchain. В предыдущей статье я показал, как с легкостью устанавливать себе на компьютер языковые модели.
Для моей задачи сгодилась модель gemma2:2b. Промпт выглядит так:
Извлеки из запроса: «{t_desc}» все, что может описывать принт
на футболке. Если описание есть, выведи описание принта
и больше ничего. Если нет – ответь 'нет' и больше ничего не пиши
Здесь требуется подстройка, все равно могут возникать ошибки, неправильные ответы.
pip install langchain-ollama
И очень простой код для построчной обработки запросов:
from langchain_community.llms import Ollama
import pandas as pd
llm = Ollama(model="gemma2:2b")
df = pd.read_csv('futbolki_data.csv', sep=";")
for i in range(len(df) - 1, -1, -1):
row = df.iloc[i]
t_desc = row['title']
my_msg = f"Извлеки из запроса: «{t_desc}» все, что может описывать принт на футболке. Если описание есть, выведи описание принта и больше ничего. Если нет – ответь 'нет' и больше ничего не пиши"
if msg.lower().replace('\n','').replace(' ', '') not in "не, нет, нет.":
ru_desc = msg.replace('\n','')
print(row['title'] + ";" + str(row['number']) + ";" + ru_desc)
футболка с наклейкой;1368;наклейка
футболка с молнией;1481;молния
футболка с сердечком;1500;сердечки
футболка с собакой;1624;Собака
футболка с сердцем;1635;сердце
футболка с мишкой;1687;мишка
футболка с полосками;1777;полоски
...
В конце все равно пришлось вручную очищать результаты, но довести дело до конца с такой помощью легче.