Вы специалист по данным, который использует моделирование тем для извлечения тем из неконтролируемых текстовых данных? Если это так, этот пост может очень помочь вам с этого момента.
Мы все слышали о том, что ChatGPT работает повсеместно, но как специалист по данным, задумывались ли вы об его эффективном использовании? Знаете ли вы, что ChatGPT может помочь вам извлечь информацию и темы без необходимости проходить процесс токенизации данных, удаления стоп-слов, поиска корней и т. д.?
Итак, как это работает?
Как бы то ни было, подключение Python к GPT-3 OpenAI с помощью ключа API — это простой процесс. Все, что вам нужно сделать, это выполнить несколько основных шагов:
- Зарегистрируйте учетную запись OpenAI и получите ключ API для доступа к API GPT-3.
- Установите библиотеку OpenAI Python, которая обеспечивает удобный способ взаимодействия с API GPT-3.
- Импортируйте библиотеку OpenAI в свой скрипт Python и установите ключ API.
- Отправьте запрос к API GPT-3, передав подсказку или вопрос, на который вы хотите получить ответ от модели.
- Получите ответ от GPT-3 в виде сгенерированного текста и используйте его в своем Python.
давайте возьмем пример набора данных «Набор данных категории новостей», который доступен по следующему URL-адресу:
Набор данных содержит следующие функции:
link - Link to the news article Headline - The headline of the article Category: Category of the news article Short Description: Summarized news content Authors: The person who wrote the news article Date: Date of the news articles published
Но для наглядности я взял только три функции: Категория, Заголовок и Краткое описание. Пример набора данных из фрейма данных будет выглядеть следующим образом:
import json Data =pd.read_json(open("C:\\Users\\steph\\Downloads\\News_Category_Dataset_v3\\News_Category_Dataset_v3.json","r",encoding="utf-8"),lines=True) Data = Data[['category','headline','short_description']] Data.head(2)
Примечание. Мы не будем включать эту категорию в наш процесс моделирования темы, но для целей оценки мы все равно сохраним ее в нашем фрейме данных. Мы берем 6 лучших тем и выборку из 25 записей в каждой теме.
#List of topics for illustration topics = list(pd.DataFrame(Data.groupby(['category']).agg(Count = ('category','count'))['Count']\ .nlargest(6)).reset_index()['category']) # SLicing the dataframe for intented topics Data = Data[Data['category'].isin(topics)] # Filtering the dataframe for intended topics Data = Data.groupby(['category']).sample(25)
Теперь мы подключим Python к ChatGPT с помощью API.
import openai as ai # Get the key from an environment variable on the machine it is running on ai.api_key = "Your API Key" #function to return the queried response def generate_gpt3_response(user_text, print_output=False): """ Query OpenAI GPT-3 for the specific key and get back a response :type user_text: str the user's text to query for :type print_output: boolean whether or not to print the raw output JSON """ time.sleep(5) completions = ai.Completion.create( engine='text-davinci-003', # Determines the quality, speed, and cost. temperature=0.5, # Level of creativity in the response prompt=user_text, # What the user typed in max_tokens=500, # Maximum tokens in the prompt AND response n=1, # The number of completions to generate stop=None, # An optional setting to control response generation ) # Displaying the output can be helpful if things go wrong if print_output: print(completions) # Return the first choice's text return completions.choices[0].text
Теперь мы можем запросить описание в ChatGPT и получить ответ со следующим запросом:
Я даю вам название и краткое описание новостной статьи в формате [Название:Описание], дайте мне более широкую категорию, такую как Новости, спорт, развлечения, велнес или связанные темы высокого уровня, одним словом в формате [Тема: ваша основная тема] для текста '{}'
# Adding the title and description into single column to get more meaningful topics Data['Head_Description'] = Data['headline']+" :"+ Data['short_description'] Data['GPT'] = Data['Head_Description'].apply(lambda x: \ generate_gpt3_response\ ("I am giving you the title and short description \ of the news article in the format [Title:Description], \ give me the Broader category like News, sports, entertainment,\ wellness or the related high level topics in one word in the \ format[Topic: your primary topic] for the text '{}' ".format(x))) #Cleaning the output as it is from ChatGPT Data['GPT'] = Data['GPT'].apply(lambda x: (x.split(':')[1]).replace(']',''))
Вот и все, мы успешно построили тематическую модель для набора данных. Чтобы оценить его производительность, мы можем сравнить фактические категории с категориями, созданными ChatGPT, построив круговую диаграмму для обоих наборов категорий.
- РАЗВЛЕЧЕНИЯ: Фактическая категория правильно прогнозируется как «Развлечения» 18 раз из 25. Есть также некоторые прогнозы для других категорий, таких как «Музыка», «Семья», «Воспитание детей» и т. д., но в меньшем количестве.
- ВОСПИТАНИЕ. Реальная категория — Воспитание, которое верно предсказывается 7 раз из 25. Существуют также различные другие предсказания, такие как образование, здоровье, отцовство и т. д.
- ПОЛИТИКА. Настоящая категория — «Политика», которая правильно предсказывается 17 раз из 25. Есть также прогнозы для таких категорий, как «Экономика», «Окружающая среда», «Право» и т. д.
- СТИЛЬ И КРАСОТА: Фактическая категория — Стиль и красота, и она содержит смесь различных категорий, таких как Мода, Красота, Развлечение, Политика и т. д., причем Мода имеет наибольшее количество баллов — 9.
- ПУТЕШЕСТВИЯ: Фактическая категория — Путешествия, которая правильно предсказана 5 раз. Есть также прогнозы для таких категорий, как приключения, технологии, туризм и т. д.
- ЗДОРОВЬЕ: Настоящая категория — «Здоровье», которое верно предсказано 8 раз. Есть также прогнозы для таких категорий, как здоровье, психическое благополучие, питание и т. д.
Наконец, ChatGPT может дать нам результаты быстро и без особых усилий, но важно отметить, что полагаться исключительно на ИИ может быть вредно и привести к потере контроля над моделью. Это подчеркивает важность того, чтобы специалисты по данным активно работали с неконтролируемыми данными, чтобы поддерживать уровень контроля и избегать возможных неблагоприятных последствий.
Подпишитесь на меня, чтобы узнать больше о НЛП и науке о данных…