Как выполнить анализ данных в Python с использованием API OpenAI

7 лучших библиотек Python для науки о данных и машинного обучения Программирование и разработка

В этом руководстве вы узнаете, как использовать Python и API OpenAI для интеллектуального анализа данных.

Анализ наборов данных вручную для извлечения полезных данных или даже использование простых программ для тех же целей часто может оказаться сложным и трудоемким. К счастью, с помощью OpenAI API и Python можно систематически анализировать ваши наборы данных на наличие интересной информации, не усложняя код и не теряя времени. Это можно использовать как универсальное решение для анализа данных, устраняющее необходимость использования различных методов, библиотек и API для анализа различных типов данных и точек данных внутри набора данных.

Давайте рассмотрим этапы использования API OpenAI и Python для анализа ваших данных, начиная с настройки.

Setup

Чтобы собирать и анализировать данные с помощью Python с использованием API OpenAI, установите библиотеки openaiи pandas:

pip3 install openai pandas

После этого создайте новую папку и создайте пустой файл Python внутри новой папки.

Анализ текстовых файлов

В этом уроке я подумал, что было бы интересно заставить Python проанализировать последний отчет о доходах Nvidia.

Загрузите последнюю версию стенограммы звонка о доходах Nvidia, которую я получил от The Motley Fool, и переместите ее в папку вашего проекта.

Затем откройте пустой файл Python и добавьте этот код.

Код считывает загруженную вами расшифровку доходов Nvidia и передает ее в функцию extract_infoв качестве transcriptпеременной.

Функция extract_infoпередает приглашение и расшифровку в качестве входных данных пользователя, а также temperature=0.3и model=»gpt-3.5-turbo-16k«. Причина, по которой он использует модель «gpt-3.5-turbo-16k», заключается в том, что она может обрабатывать большие тексты, такие как эта расшифровка. Код получает ответ, используя openai.ChatCompletion.createконечную точку, и передает переменные приглашения и транскрипта в качестве пользовательского ввода:

completions = openai.ChatCompletion.create(
    model="gpt-3.5-turbo-16k",
    messages=[
        {"role": "user", "content": prompt+"\n\n"+text}
    ],
    temperature=0.3,
)

Полный ввод будет выглядеть так:

Extract the following information from the text: 
    Nvidia's revenue
    What Nvidia did this quarter
    Remarks about AI

Nvidia earnings transcript goes here

Теперь, если мы передадим входные данные в openai.ChatCompletion.createконечную точку, полный вывод будет выглядеть так:

{
  "choices": [
    {
      "finish_reason": "stop",
      "index": 0,
      "message": {
        "content": "Actual response",
        "role": "assistant"
      }
    }
  ],
  "created": 1693336390,
  "id": "request-id",
  "model": "gpt-3.5-turbo-16k-0613",
  "object": "chat.completion",
  "usage": {
    "completion_tokens": 579,
    "prompt_tokens": 3615,
    "total_tokens": 4194
  }
}

Как видите, он возвращает текстовый ответ, а также использование токена запроса, что может быть полезно, если вы отслеживаете свои расходы и оптимизируете свои расходы. Но поскольку нас интересует только текст ответа, мы получаем его, указав completions.choices[0].message.contentпуть ответа.

Если вы запустите свой код, вы должны получить вывод, аналогичный приведенному ниже:

Из текста мы можем извлечь следующую информацию:

  1. Выручка Nvidia: во втором квартале 2024 финансового года Nvidia сообщила о рекордной выручке за второй квартал в размере 13,51 млрд долларов, что увеличилось на 88% последовательно и на 101% в годовом исчислении.
  2. Что сделала Nvidia в этом квартале: Nvidia продемонстрировала исключительный рост в различных областях. Они добились рекордного дохода в сегменте центров обработки данных, который вырос на 141% последовательно и на 171% в годовом исчислении. Они также увидели рост в своем игровом сегменте: выручка выросла на 11% последовательно и на 22% в годовом исчислении. Кроме того, в сегменте профессиональной визуализации выручка последовательно выросла на 28%. Они также объявили о партнерстве и сотрудничестве с такими компаниями, как Snowflake, ServiceNow, Accenture, Hugging Face, VMware и SoftBank.
  3. Замечания об искусственном интеллекте: Nvidia подчеркнула высокий спрос на свои платформы искусственного интеллекта и решения для ускоренных вычислений. Они упомянули о развертывании своих систем HGX крупными поставщиками облачных услуг и потребительскими интернет-компаниями. Они также обсудили применение генеративного искусственного интеллекта в различных отраслях, таких как маркетинг, средства массовой информации и развлечения. Nvidia подчеркнула потенциал генеративного искусственного интеллекта в создании новых рыночных возможностей и повышении производительности в различных секторах.

Как вы можете видеть, код извлекает информацию, указанную в приглашении (доходы Nvidia, действия Nvidia в этом квартале и замечания об искусственном интеллекте), и печатает ее.

Анализ файлов CSV

Анализировать стенограммы звонков и текстовые файлы — это здорово, но для систематического анализа больших объемов данных вам придется работать с файлами CSV.

В качестве рабочего примера загрузите этот набор данных CSV статей Medium и вставьте его в файл проекта.

Если вы посмотрите на CSV-файл, вы увидите, что в нем есть столбцы «автор», «аплодисменты», «время чтения», «ссылка», «заголовок» и «текст». Для анализа средних статей с помощью OpenAI вам нужны только столбцы «заголовок» и «текст».

Создайте новый файл Python в папке вашего проекта и вставьте этот код.

Этот код немного отличается от кода, который мы использовали для анализа текстового файла. Он читает строки CSV одну за другой, извлекает указанные фрагменты информации и добавляет их в новые столбцы.

Для этого урока я выбрал набор данных CSV статей Medium, который я получил от HSANKESARA на Kaggle. Этот код анализа CSV определит общий тон и основной урок/пункт каждой статьи, используя столбцы «заголовок» и «статья» файла CSV. Поскольку я всегда сталкиваюсь со статьями о кликбейте на Medium, я также подумал, что было бы интересно рассказать ему, как определить, насколько «кликбейтна» каждая статья, присвоив каждой из них «оценку кликбейта» от 0 до 3, где 0 — отсутствие кликбейта, а 3. это крайний кликбейт.

Прежде чем я объясню код, анализ всего файла CSV займет слишком много времени и потребует слишком много кредитов API, поэтому в этом руководстве я заставил код анализировать только первые пять статей с использованием df = df[:5].

Вас может смутить следующая часть кода, поэтому позвольте мне объяснить:

for di in range(len(df)):
    title = titles[di]
    abstract = articles[di]
    additional_params = extract_info('Title: '+str(title) + '\n\n' + 'Text: ' + str(abstract))
    try:
        result = additional_params.split("\n\n")
    except:
        result = {}

Этот код перебирает все статьи (строки) в CSV-файле и на каждой итерации получает заголовок и текст каждой статьи и передает их функции, которую мы extract_infoвидели ранее. Затем он превращает ответ функции extract_infoв список для разделения различных фрагментов информации с помощью этого кода:

try:
    result = additional_params.split("\n\n")
except:
    result = {} 

Затем он добавляет каждую часть информации в список и в случае ошибки (если значения нет) добавляет в список «Нет результата»:

try:
    apa1.append(result[0])
except Exception as e:
    apa1.append('No result')
try:
    apa2.append(result[1])
except Exception as e:
    apa2.append('No result')
try:
    apa3.append(result[2])
except Exception as e:
    apa3.append('No result')

Наконец, после forзавершения цикла списки, содержащие извлеченную информацию, вставляются в новые столбцы CSV-файла:

df = df.assign(Tone=apa1)
df = df.assign(Main_lesson_or_point=apa2)
df = df.assign(Clickbait_score=apa3)

Как вы можете видеть, он добавляет списки в новые столбцы CSV с именами «Tone», «Main_lesson_or_point» и «Clickbait_score».

Затем он добавляет их в CSV-файл с помощью index=False:

df.to_csv("data.csv", index=False)

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

Теперь, если вы запустите файл Python, дождетесь его завершения и проверите наш CSV-файл в средстве просмотра файлов CSV, вы увидите новые столбцы, как показано на рисунке ниже.

Теперь, если вы запустите файл Python, дождетесь его заверше

Если вы запустите свой код несколько раз, вы заметите, что сгенерированные ответы немного отличаются. Это связано с тем, что код temperature=0.3добавляет в ответы немного креативности, что полезно для таких субъективных тем, как кликбейт.

Работа с несколькими файлами

Если вы хотите автоматически анализировать несколько файлов, вам необходимо сначала поместить их в папку и убедиться, что папка содержит только те файлы, которые вас интересуют, чтобы ваш код Python не мог читать ненужные файлы. Затем установите globбиблиотеку, используя pip3 install globи импортируйте ее в свой файл Python, используя import glob.

В вашем файле Python используйте этот код, чтобы получить список всех файлов в вашей папке данных:

data_files = glob.glob("data_folder/*")

Затем поместите код, выполняющий анализ, в forцикл:

for i in range(len(data_files)):

Внутри forцикла прочитайте содержимое каждого файла следующим образом для текстовых файлов:

f = open(f"data_folder/{data_files[i]}", "r")
txt_data = f.read()

Также вот так для файлов CSV:

df = pd.read_csv(f"data_folder/{data_files[i]}")

Кроме того, обязательно сохраните результаты анализа каждого файла в отдельный файл, используя что-то вроде этого:

df.to_csv(f"output_folder/data{i}.csv", index=False)

Заключение

Не забудьте поэкспериментировать с параметром температуры и настроить его в соответствии с вашим вариантом использования. Если вы хотите, чтобы ИИ давал более творческие ответы, повысьте температуру, а если вы хотите, чтобы он давал больше фактических ответов, обязательно снизьте ее.

Комбинация анализа данных OpenAI и Python имеет множество применений, помимо анализа статей и расшифровок отчетов о доходах. Примеры включают анализ новостей, анализ книг, анализ отзывов клиентов и многое другое! Тем не менее, тестируя свой код Python на больших наборах данных, обязательно тестируйте его только на небольшой части полного набора данных, чтобы сэкономить кредиты API и время.

Читайте также:  Системный вызов функции подключения в C
Оцените статью
bestprogrammer.ru
Добавить комментарий