В этом руководстве вы узнаете, как использовать 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путь ответа.
Если вы запустите свой код, вы должны получить вывод, аналогичный приведенному ниже:
Из текста мы можем извлечь следующую информацию:
- Выручка Nvidia: во втором квартале 2024 финансового года Nvidia сообщила о рекордной выручке за второй квартал в размере 13,51 млрд долларов, что увеличилось на 88% последовательно и на 101% в годовом исчислении.
- Что сделала Nvidia в этом квартале: Nvidia продемонстрировала исключительный рост в различных областях. Они добились рекордного дохода в сегменте центров обработки данных, который вырос на 141% последовательно и на 171% в годовом исчислении. Они также увидели рост в своем игровом сегменте: выручка выросла на 11% последовательно и на 22% в годовом исчислении. Кроме того, в сегменте профессиональной визуализации выручка последовательно выросла на 28%. Они также объявили о партнерстве и сотрудничестве с такими компаниями, как Snowflake, ServiceNow, Accenture, Hugging Face, VMware и SoftBank.
- Замечания об искусственном интеллекте: 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, вы увидите новые столбцы, как показано на рисунке ниже.
Если вы запустите свой код несколько раз, вы заметите, что сгенерированные ответы немного отличаются. Это связано с тем, что код 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 и время.