Fermer

janvier 8, 2024

Comment effectuer une analyse de données en Python à l’aide de l’API OpenAI —

Comment effectuer une analyse de données en Python à l’aide de l’API OpenAI —


Dans ce didacticiel, vous apprendrez à utiliser Python et l’API OpenAI pour effectuer une exploration et une analyse de données sur vos données.

Analyser manuellement des ensembles de données pour extraire des données utiles, ou même utiliser des programmes simples pour faire de même, peut souvent s’avérer compliqué et prendre du temps. Heureusement, avec l’API OpenAI et Python, il est possible d’analyser systématiquement vos ensembles de données à la recherche d’informations intéressantes sans sur-ingénierie de votre code et sans perdre de temps. Cela peut être utilisé comme une solution universelle pour l’analyse des données, éliminant le besoin d’utiliser différentes méthodes, bibliothèques et API pour analyser différents types de données et points de données au sein d’un ensemble de données.

Passons en revue les étapes d’utilisation de l’API OpenAI et de Python pour analyser vos données, en commençant par la configuration.

Table des matières

Installation

Pour extraire et analyser des données via Python à l’aide de l’API OpenAI, installez le openai et pandas bibliothèques :

pip3 install openai pandas

Après avoir fait cela, créez un nouveau dossier et créez un fichier Python vide dans votre nouveau dossier.

Analyser des fichiers texte

Pour ce tutoriel, j’ai pensé qu’il serait intéressant de faire analyser par Python le dernier appel de résultats de Nvidia.

Téléchargez le dernière transcription de l’appel aux résultats de Nvidia que j’ai reçu de Le fou hétéroclite et déplacez-le dans votre dossier de projet.

Ensuite, ouvrez votre fichier Python vide et ajoutez ce code.

Le code lit le relevé de notes des revenus Nvidia que vous avez téléchargé et le transmet au extract_info fonctionner comme le transcript variable.

Le extract_info La fonction transmet l’invite et la transcription en tant qu’entrée utilisateur, ainsi que temperature=0.3 et model="gpt-3.5-turbo-16k". La raison pour laquelle il utilise le modèle « gpt-3.5-turbo-16k » est qu’il peut traiter des textes volumineux tels que cette transcription. Le code obtient la réponse en utilisant le openai.ChatCompletion.create point de terminaison et transmet les variables d’invite et de transcription en tant qu’entrée utilisateur :

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

L’entrée complète ressemblera à ceci :

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

Nvidia earnings transcript goes here

Maintenant, si nous transmettons l’entrée au openai.ChatCompletion.create point final, le résultat complet ressemblera à ceci :

{
  "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
  }
}

Comme vous pouvez le voir, il renvoie la réponse textuelle ainsi que l’utilisation du jeton de la demande, ce qui peut être utile si vous suivez vos dépenses et optimisez vos coûts. Mais comme seul le texte de la réponse nous intéresse, nous l’obtenons en spécifiant le completions.choices[0].message.content chemin de réponse.

Si vous exécutez votre code, vous devriez obtenir un résultat similaire à celui cité ci-dessous :

Du texte, nous pouvons extraire les informations suivantes :

  1. Chiffre d’affaires de Nvidia : Au deuxième trimestre de l’exercice 2024, Nvidia a déclaré un chiffre d’affaires record de 13,51 milliards au deuxième trimestre, en hausse de 88 % en séquentiel et de 101 % sur un an.
  2. Ce que Nvidia a fait ce trimestre : Nvidia a connu une croissance exceptionnelle dans divers domaines. Ils ont enregistré un chiffre d’affaires record dans leur segment des centres de données, en hausse de 141 % en séquentiel et de 171 % sur un an. Ils ont également constaté une croissance dans leur segment de jeux, avec des revenus en hausse de 11 % en séquentiel et de 22 % sur un an. De plus, leur segment de visualisation professionnelle a enregistré une croissance séquentielle de 28 % de ses revenus. Ils ont également annoncé des partenariats et des collaborations avec des sociétés telles que Snowflake, ServiceNow, Accenture, Hugging Face, VMware et SoftBank.
  3. Remarques sur l’IA : Nvidia a souligné la forte demande pour ses plates-formes d’IA et ses solutions informatiques accélérées. Ils ont mentionné le déploiement de leurs systèmes HGX par les principaux fournisseurs de services cloud et sociétés Internet grand public. Ils ont également discuté des applications de l’IA générative dans divers secteurs, tels que le marketing, les médias et le divertissement. Nvidia a souligné le potentiel de l’IA générative pour créer de nouvelles opportunités de marché et augmenter la productivité dans différents secteurs.

Comme vous pouvez le voir, le code extrait les informations spécifiées dans l’invite (les revenus de Nvidia, ce que Nvidia a fait ce trimestre et les remarques sur l’IA) et les imprime.

Analyse des fichiers CSV

Analyser les transcriptions des appels et les fichiers texte est une bonne chose, mais pour analyser systématiquement de gros volumes de données, vous devrez travailler avec des fichiers CSV.

À titre d’exemple concret, téléchargez cet ensemble de données CSV d’articles Medium et collez-le dans votre fichier de projet.

Si vous jetez un œil au fichier CSV, vous verrez qu’il contient les colonnes « auteur », « applaudissements », « lecture_heure », « lien », « titre » et « texte ». Pour analyser les articles du support avec OpenAI, vous n’avez besoin que des colonnes « titre » et « texte ».

Créez un nouveau fichier Python dans votre dossier de projet et collez-le ce code.

Ce code est un peu différent du code que nous avons utilisé pour analyser un fichier texte. Il lit les lignes CSV une par une, extrait les informations spécifiées et les ajoute dans de nouvelles colonnes.

Pour ce tutoriel, j’ai choisi un ensemble de données CSV d’articles Medium, que j’ai obtenu de HSANKESARA sur Kaggle. Ce code d’analyse CSV trouvera le ton général et la leçon/point principal de chaque article, en utilisant les colonnes « titre » et « article » du fichier CSV. Comme je tombe toujours sur des articles clickbaity sur Medium, j’ai aussi pensé qu’il serait intéressant de lui dire pour savoir à quel point chaque article est « clickbaity » en attribuant à chacun un « score clickbait » de 0 à 3, où 0 signifie aucun clickbait et 3. est un appât à clics extrême.

Avant d’expliquer le code, analyser l’intégralité du fichier CSV prendrait trop de temps et coûterait trop de crédits API. Pour ce didacticiel, j’ai donc fait en sorte que le code analyse uniquement les cinq premiers articles en utilisant df = df[:5].

Vous pourriez être confus au sujet de la partie suivante du code, alors laissez-moi vous expliquer :

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 = {} 

Ce code parcourt tous les articles (lignes) du fichier CSV et, à chaque itération, obtient le titre et le corps de chaque article et les transmet au extract_info fonction, que nous avons vu plus tôt. Il transforme alors la réponse du extract_info fonctionner dans une liste pour séparer les différentes informations à l’aide de ce code :

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

Ensuite, il ajoute chaque information dans une liste, et s’il y a une erreur (s’il n’y a pas de valeur), il ajoute « Aucun résultat » dans la liste :

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')

Enfin, après le for la boucle est terminée, les listes qui contiennent les informations extraites sont insérées dans de nouvelles colonnes du fichier CSV :

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

Comme vous pouvez le voir, il ajoute les listes dans de nouvelles colonnes CSV nommées « Tone », « Main_lesson_or_point » et « Clickbait_score ».

Il les ajoute ensuite au fichier CSV avec index=False:

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

La raison pour laquelle vous devez préciser index=False est d’éviter de créer de nouvelles colonnes d’index à chaque fois que vous ajoutez de nouvelles colonnes au fichier CSV.

Maintenant, si vous exécutez votre fichier Python, attendez qu’il se termine et vérifiez notre fichier CSV dans une visionneuse de fichiers CSV, vous verrez les nouvelles colonnes, comme illustré ci-dessous.

Démo de colonne

Si vous exécutez votre code plusieurs fois, vous remarquerez que les réponses générées diffèrent légèrement. C’est parce que le code utilise temperature=0.3 pour ajouter un peu de créativité dans ses réponses, ce qui est utile pour des sujets subjectifs comme le clickbait.

Travailler avec plusieurs fichiers

Si vous souhaitez analyser automatiquement plusieurs fichiers, vous devez d’abord les placer dans un dossier et vous assurer que le dossier ne contient que les fichiers qui vous intéressent, pour empêcher votre code Python de lire des fichiers non pertinents. Ensuite, installez le glob bibliothèque utilisant pip3 install glob et importez-le dans votre fichier Python en utilisant import glob.

Dans votre fichier Python, utilisez ce code pour obtenir une liste de tous les fichiers de votre dossier de données :

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

Mettez ensuite le code qui fait l’analyse dans un for boucle:

for i in range(len(data_files)):

À l’intérieur de for boucle, lisez le contenu de chaque fichier comme ceci pour les fichiers texte :

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

Aimez également ceci pour les fichiers CSV :

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

De plus, assurez-vous de sauvegarder le résultat de chaque analyse de fichier dans un fichier distinct en utilisant quelque chose comme ceci :

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

Conclusion

N’oubliez pas d’expérimenter votre paramètre de température et de l’ajuster à votre cas d’utilisation. Si vous voulez que l’IA donne des réponses plus créatives, augmentez votre température, et si vous voulez qu’elle donne des réponses plus factuelles, assurez-vous de la baisser.

La combinaison de l’analyse des données OpenAI et Python a de nombreuses applications en dehors de l’analyse des transcriptions d’articles et d’appels de résultats. Les exemples incluent l’analyse de l’actualité, l’analyse de livres, l’analyse des avis clients et bien plus encore ! Cela dit, lorsque vous testez votre code Python sur de grands ensembles de données, assurez-vous de ne le tester que sur une petite partie de l’ensemble de données complet pour économiser du temps et des crédits API.




Source link