Wie ich OpenAI- und ML-Algorithmen verwendet habe, um ähnliche Ideen zu gruppieren und ihnen einen Namen zu geben | von Harsh Suvarna | Juni 2023

0
22


KI hat weltweit schnell an Dynamik gewonnen, weshalb es für Entwickler von entscheidender Bedeutung ist, ihr Potenzial proaktiv zu verstehen und zu nutzen.

Bevor wir beginnen, laden wir die Ideen in einen Datenrahmen. Ich habe meine Ideen in einer CSV-Datei aufgelistet und werde den Datenrahmen entsprechend vorbereiten.

import pandas as pd
df = pd.read_csv('yourFile.csv')

Der erste Schritt besteht darin, einen API-Schlüssel für die Nutzung der APIs zu generieren. Um dies zu erreichen, müssen Sie sich bei OpenAI registrieren und die kostenlose Testversion nutzen, die ein Guthaben von 18 $ für die Nutzung bietet.

Sobald wir unseren API-Schlüssel haben, können wir mit dem Codieren beginnen. Installieren und importieren Sie die erforderliche Bibliothek

pip set up pandas numpy openai scikit-learn scipy yellowbrick
import openai
import numpy as np
import pandas as pd
from sklearn.manifold import TSNE
from sklearn.cluster import KMeans
from yellowbrick.cluster import KElbowVisualizer

Übergeben Sie Ihren geheimen API-SCHLÜSSEL als solche an die openAI-Instanz

openai.api_key = "YOUR_OPENAI_API_KEY"

Da Modelle des maschinellen Lernens Texte nicht von Natur aus verstehen, ist es notwendig, die von den Teilnehmern eingereichten Ideen in numerische Darstellungen umzuwandeln.

openai.Embedding.create(enter=textual content, mannequin="text-embedding-ada-002")

Die oben genannte Codezeile stellt eine OpenAI-API dar, die die Konvertierung eines Textes oder Satzes in ein Array von Gleitkommazahlen, sogenannte Einbettungen, ermöglicht. Diese Einbettungen dienen als numerische Darstellung, die es unserem Clustering-Modell ermöglicht, die Texteingabe effektiv zu verstehen und zu verarbeiten.

Die Einbettungen und die dazugehörigen Texte können in jeder Vektordatenbank wie Redis oder Typesense (Open Supply) gespeichert werden.

Im nächsten Schritt gruppieren wir die Ideen anhand ihrer Einbettungen. Um dies zu erreichen, verwenden wir den Dimensionsreduktionsalgorithmus t-SNE (t-Distributed Stochastic Neighbor Embedding), der die Einbettungsmatrizen in zwei Dimensionen verdichtet. Diese Reduzierung ermöglicht eine effektive Visualisierung und Analyse der durch die Ideen gebildeten Cluster.

matrix = np.vstack(df.embedding.values)
tsne = TSNE(
n_components=2,
perplexity=len(matrix) - 1,
random_state=42,
init="random",
learning_rate=200,
)
vis_dims2 = tsne.fit_transform(matrix)

Wir werden Ok-Means-Clustering verwenden, um die Ideen zu gruppieren. Dazu müssen wir die optimale Anzahl an Clustern finden. Hier haben wir Yellowbricks KelbowVisualizer verwendet, der das verwendet Ellenbogenmethode Und Silhouette-Methode um die optimale Anzahl zu finden, in der die bereitgestellten Daten geclustert werden können.

# Instantiate the clustering mannequin and visualizer
mannequin = KMeans()
visualizer = KElbowVisualizer(mannequin, ok=(len(df)), timings=True)

# Match the information to the visualizer
visualizer.match(vis_dims2)

n_clusters = visualizer.elbow_value_

# Ok-means clustering alogrithm
means = KMeans(
n_clusters=n_clusters, init="k-means++", random_state=42, n_init=3
)
kmeans.match(matrix)
labels = kmeans.labels_

# assigning every thought with a label given by the above algoritms
df["cluster"] = labels

Der obige Code berechnet automatisch die optimale Anzahl von Clustern für die Daten und fügt sie in den Ok-Means-Algorithmus ein. Anschließend werden jeder Idee in unserem Datenrahmen nummerierte Beschriftungen zugewiesen (basierend auf dem Cluster, zu dem sie gehören).

Unsere nächste und letzte Aufgabe besteht darin, diesen Clustern menschenlesbare Namen (Themen) zu geben, die auf den in den Clustern vorhandenen Ideen basieren. Hierzu verwenden wir die openAI-Vervollständigungs-API, die die Engine „text-davinci-003“ verwendet.

for i in vary(n_clusters):
# filtering concepts of explicit cluster from the dataframe
ideasArr = df[df["cluster"] == i]["name"].values

# openAI completion API
themeRes = openai.Completion.create(
engine="text-davinci-003",
immediate=f'Summarize following concepts in 5 or much less wordsnnIdeas:n"""n{ideasArr}n"""nnTheme:',
temperature=0,
max_tokens=64,
top_p=1,
frequency_penalty=0,
presence_penalty=0,
)

Im obigen Code durchlaufen wir jeden Cluster und geben die Ideen in jedem Cluster in Kind eines Arrays an die openAI-API weiter.

Wie aus dem Codeausschnitt hervorgeht, gibt es einen „Immediate“-Parameter, der dazu dient, die API anzuweisen, wie die bereitgestellten Daten verarbeitet werden sollen, ähnlich wie Eingabeaufforderungen in Chat GPT verwendet werden.

Folglich gibt der Prozess ein repräsentatives Thema oder Thema für jeden Cluster zurück, indem er die Texte innerhalb des Clusters untersucht, wie in der Beispielausgabe für einen der Cluster unten gezeigt.

{'theme': " Mom's Recommendation.",
'cluster': 1,
'concepts': [
"Sleeping early was a habbit my mom always stressed upon",
"My mom always asked me to wash my socks even if I wear it for hour",
"Our mother taught me to finish everything on my plate"
]
}

So sind Sie bereit, die Leistungsfähigkeit von Open AI zu nutzen und neue Möglichkeiten in Ihren Projekten zu erschließen.

Viel Spaß beim Codieren 🙂



Source link

HINTERLASSEN SIE EINE ANTWORT

Please enter your comment!
Please enter your name here