Вы специалист по данным, который использует моделирование тем для извлечения тем из неконтролируемых текстовых данных? Если это так, этот пост может очень помочь вам с этого момента.

Мы все слышали о том, что ChatGPT работает повсеместно, но как специалист по данным, задумывались ли вы об его эффективном использовании? Знаете ли вы, что ChatGPT может помочь вам извлечь информацию и темы без необходимости проходить процесс токенизации данных, удаления стоп-слов, поиска корней и т. д.?

Итак, как это работает?

Как бы то ни было, подключение Python к GPT-3 OpenAI с помощью ключа API — это простой процесс. Все, что вам нужно сделать, это выполнить несколько основных шагов:

  1. Зарегистрируйте учетную запись OpenAI и получите ключ API для доступа к API GPT-3.
  2. Установите библиотеку OpenAI Python, которая обеспечивает удобный способ взаимодействия с API GPT-3.
  3. Импортируйте библиотеку OpenAI в свой скрипт Python и установите ключ API.
  4. Отправьте запрос к API GPT-3, передав подсказку или вопрос, на который вы хотите получить ответ от модели.
  5. Получите ответ от 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 может дать нам результаты быстро и без особых усилий, но важно отметить, что полагаться исключительно на ИИ может быть вредно и привести к потере контроля над моделью. Это подчеркивает важность того, чтобы специалисты по данным активно работали с неконтролируемыми данными, чтобы поддерживать уровень контроля и избегать возможных неблагоприятных последствий.

Подпишитесь на меня, чтобы узнать больше о НЛП и науке о данных…