मुख्य सामग्री पर जाएँ

OpenAI API के साथ टेक्स्ट एम्बेडिंग का परिचय

OpenAI API का उपयोग करके टेक्स्ट एम्बेडिंग बनाने पर हमारी गाइड देखें। टेक्स्ट वर्गीकरण, जानकारी प्राप्ति, और सैमान्टिक समानता पहचान में उनके अनुप्रयोग जानें.
· 7 मि॰ पढ़ें

AI के साथ खोजें

टेक्स्ट एम्बेडिंग प्राकृतिक भाषा संसाधन (NLP) के क्षेत्र का एक आवश्यक उपकरण हैं। ये टेक्स्ट के संख्यात्मक निरूपण होते हैं, जहाँ प्रत्येक शब्द या वाक्यांश को वास्तविक संख्याओं के घने वेक्टर के रूप में दर्शाया जाता है।

इन एम्बेडिंग का प्रमुख लाभ यह है कि वे शब्दों या वाक्यांशों के सैमान्टिक अर्थ और उनके बीच के संबंधों को पकड़ने में सक्षम होते हैं, जिससे मशीनें मानव भाषा को प्रभावी ढंग से समझ और संसाधित कर पाती हैं।

टेक्स्ट एम्बेडिंग ऐसे परिदृश्यों में बेहद महत्वपूर्ण हैं जैसे टेक्स्ट वर्गीकरण, जानकारी प्राप्ति, और सैमान्टिक समानता पहचान।

कृत्रिम बुद्धिमत्ता के क्षेत्र में अपने उल्लेखनीय योगदान के लिए प्रसिद्ध OpenAI फिलहाल टेक्स्ट एम्बेडिंग बनाने के लिए Ada V2 मॉडल का उपयोग करने की सिफारिश करता है। यह मॉडल GPT श्रृंखला से व्युत्पन्न है और टेक्स्ट में मौजूद संदर्भित अर्थों और संबद्धताओं को और बेहतर ढंग से पकड़ने के लिए प्रशिक्षित है।

यदि आप OpenAI के API या openai Python पैकेज से परिचित नहीं हैं, तो आगे बढ़ने से पहले Python में OpenAI API के माध्यम से GPT-3.5 और GPT-4 का उपयोग पढ़ने की सिफारिश की जाती है। यह गाइड आपको खाते सेट अप करने और API उपयोग के फायदों को समझने में मदद करेगी।

इस ट्यूटोरियल में क्लस्टरिंग का भी उपयोग होता है—यह एक मशीन लर्निंग तकनीक है जो मिलते-जुलते उदाहरणों को एक साथ समूहित करती है। यदि आप क्लस्टरिंग, विशेष रूप से k-Means क्लस्टरिंग से परिचित नहीं हैं, तो आपको scikit-learn के साथ Python में k-Means क्लस्टरिंग का परिचय पढ़ना चाहिए।

टेक्स्ट एम्बेडिंग का उपयोग आप किन कार्यों में कर सकते हैं?

टेक्स्ट-एम्बेडिंग कई उपयोग मामलों में लागू होती हैं, जिनमें शामिल हैं, पर सीमित नहीं हैं:

  • टेक्स्ट वर्गीकरण। टेक्स्ट एम्बेडिंग भाव विश्लेषण या विषय पहचान जैसे कार्यों के लिए सटीक मॉडल बनाने में सहायक होती हैं।
  • जानकारी प्राप्ति। इन्हें किसी विशिष्ट क्वेरी से संबंधित जानकारी खोजने के लिए इस्तेमाल किया जा सकता है, जैसा कि सर्च इंजन में होता है।
  • सैमान्टिक समानता पहचान। एम्बेडिंग टेक्स्ट खंडों के बीच सैमान्टिक समानता की पहचान और परिमाण निर्धारित कर सकती हैं।
  • अनुशंसा प्रणालियाँ। टेक्स्ट डेटा के साथ उपयोगकर्ता की अंतःक्रिया के आधार पर उनकी प्राथमिकताओं को समझकर सिफारिशों की गुणवत्ता में सुधार कर सकती हैं।
  • टेक्स्ट जनरेशन। एम्बेडिंग अधिक सुसंगत और संदर्भित रूप से प्रासंगिक टेक्स्ट उत्पन्न करने में उपयोग होती हैं।
  • मशीन अनुवाद। टेक्स्ट एम्बेडिंग भाषाओं के पार सैमान्टिक अर्थों को पकड़ सकती हैं, जिससे मशीन अनुवाद की गुणवत्ता बेहतर हो सकती है।

सेटअप करना

टेक्स्ट एम्बेडिंग के साथ काम करने के लिए कई Python पैकेज आवश्यक हैं, जैसा कि नीचे बताया गया है:

  • os: ऑपरेटिंग सिस्टम के साथ इंटरैक्ट करने के लिए एक बिल्ट-इन Python लाइब्रेरी।
  • openai: OpenAI API के साथ इंटरेक्ट करने के लिए Python क्लाइंट।
  • scipy.spatial.distance: विभिन्न डेटा बिंदुओं के बीच दूरी की गणना के लिए फंक्शन प्रदान करता है।
  • sklean.cluster.KMeans: KMeans क्लस्टरिंग की गणना करने के लिए उपयोग होता है।
  • umap.UMAP: उच्च-आयामी डेटा के आयाम घटाने की एक तकनीक।

इनका उपयोग करने से पहले, निम्न कमांड से openai, scipy, plotly sklearn, और umap इंस्टॉल करना सुनिश्चित करें। पूरा कोड इस DataLab वर्कबुक में उपलब्ध है।

pip install -U openai, scipy, plotly-express, scikit-learn, umap-learn

पिछले कमांड के सफल निष्पादन के बाद, सभी लाइब्रेरी को इस प्रकार इम्पोर्ट किया जा सकता है:

import os
import openai
from scipy.spatial import distance
import plotly.express as px
from sklearn.cluster import KMeans
from umap import UMAP

अब हम OpenAI API कुंजी को इस प्रकार सेट कर सकते हैं:

openai.api_key = "<YOUR_API_KEY_HERE>"

नोट: आपको अपनी स्वयं की API कुंजी सेट करनी होगी। स्रोत कोड में दी गई कुंजी उपलब्ध नहीं है और केवल व्यक्तिगत उपयोग के लिए थी।

API के माध्यम से GPT कॉल करने का कोड पैटर्न

निम्न हेल्पर फ़ंक्शन OpenAI API का उपयोग करके किसी टेक्स्ट लाइन को एम्बेड करने के लिए उपयोग किया जा सकता है। कोड में, हम एम्बेडिंग जनरेट करने के लिए मौजूदा ada संस्करण 2 का उपयोग कर रहे हैं।

def get_embedding(text_to_embed):
	# Embed a line of text
	response = openai.Embedding.create(
    	model= "text-embedding-ada-002",
    	input=[text_to_embed]
	)
	# Extract the AI output embedding as a list of floats
	embedding = response["data"][0]["embedding"]
    
	return embedding

डेटासेट के बारे में

इस खंड में, हम Kaggle पर मुक्त रूप से उपलब्ध Amazon संगीतमय वाद्ययंत्र समीक्षा डेटा पर विचार करेंगे। डेटा को मेरे Github खाते से भी निम्न प्रकार डाउनलोड किया जा सकता है:

import pandas as pd

data_URL =  "https://raw.githubusercontent.com/keitazoumana/Experimentation-Data/main/Musical_instruments_reviews.csv"

review_df = pd.read_csv(data_URL)
review_df.head()

image4.gif

सभी कॉलमों में से, हमें केवल reviewText कॉलम में रुचि है।

review_df = review_df[['reviewText']]
print("Data shape: {}".format(review_df.shape))
display(review_df.head())
Data shape: (10261, 1)

डेटासेट में बहुत सारी समीक्षाएँ हैं। लागत अनुकूलन के उद्देश्य से हम केवल 100 यादृच्छिक रूप से चयनित पंक्तियों का उपयोग करेंगे।

image3.png

अब, हम प्रत्येक पंक्ति के लिए एम्बेडिंग जनरेट कर सकते हैं, इसके लिए पिछले फ़ंक्शन को lambda अभिव्यक्ति के साथ लागू करेंगे:

review_df = review_df.sample(100)
review_df["embedding"] = review_df["reviewText"].astype(str).apply(get_embedding)

# Make the index start from 0
review_df.reset_index(drop=True)

review_df.head(10)

image2.png

समीक्षाओं और एम्बेडिंग की पहली 10 पंक्तियाँ

टेक्स्ट समानता को समझें

सैमान्टिक समानता की अवधारणा को प्रदर्शित करने के लिए, आइए दो समीक्षाओं पर विचार करें जिनके भाव समान हो सकते हैं:

“यह उत्पाद शानदार है!”

“इसने वास्तव में मेरी उम्मीदों से बढ़कर प्रदर्शन किया!”

scipy.spatial.distance के pdist() का उपयोग करके, हम उनकी एम्बेडिंग के बीच यूक्लिडियन दूरी की गणना कर सकते हैं।

यूक्लिडियन दूरी दो एम्बेडिंग के बीच वर्गांतरों के योग के वर्गमूल के अनुरूप होती है, और नीचे एक आरेखण दिया गया है:

Illustration of the euclidean distance (source)

यूक्लिडियन दूरी का आरेख (स्रोत)

यदि ये समीक्षाएँ सचमुच समान हैं, तो दूरी अपेक्षाकृत छोटी होनी चाहिए।

अब दो भिन्न समीक्षाओं पर विचार करें:

“यह उत्पाद शानदार है!"

"मैं इस वस्तु से संतुष्ट नहीं हूँ।"

इन समीक्षाओं की एम्बेडिंग के बीच की दूरी समान समीक्षाओं के बीच की दूरी की तुलना में उल्लेखनीय रूप से अधिक होगी।

केस स्टडी: क्लस्टर विश्लेषण के लिए टेक्स्ट एम्बेडिंग का उपयोग

हमने जो टेक्स्ट एम्बेडिंग जनरेट की हैं, उनका उपयोग क्लस्टर विश्लेषण करने में किया जा सकता है ताकि एक-दूसरे से अधिक मिलते-जुलते संगीतमय वाद्ययंत्रों को समूहित किया जा सके।

कई क्लस्टरिंग एल्गोरिद्म उपलब्ध हैं, जैसे K-Means, DBSCAN, पदानुक्रमित क्लस्टरिंग, और Gaussian Mixture Models। इस विशिष्ट उपयोग मामले में, हम KMeans क्लस्टरिंग का उपयोग करेंगे। हालांकि, हमारा Python में पदानुक्रमित क्लस्टरिंग का परिचय पदानुक्रमित क्लस्टरिंग और इसके Python में क्रियान्वयन को समझने के लिए एक अच्छा ढांचा प्रदान करता है।

टेक्स्ट डेटा का क्लस्टर बनाना

K-means क्लस्टरिंग का उपयोग करने के लिए क्लस्टर की संख्या पहले से निर्धारित करनी होती है, और हम n_clusters पैरामीटर के साथ उस संख्या को 3 पर सेट करेंगे, इस प्रकार:

kmeans = KMeans(n_clusters=3)
kmeans.fit(review_df["embedding"].tolist())

एम्बेड किए गए टेक्स्ट डेटा के आयाम घटाएँ

मनुष्य सामान्यतः अधिकतम तीन आयाम तक ही दृश्य रूप में देख पाते हैं। यह खंड UMAP का उपयोग करेगा, जो आयाम घटाने के लिए अपेक्षाकृत तेज़ और स्केलेबल टूल है।

पहले, हम UMAP क्लास का एक इंस्टेंस परिभाषित करते हैं और fit_transform फ़ंक्शन को एम्बेडिंग पर लागू करते हैं, जो समीक्षाओं की एम्बेडिंग का द्वि-आयामी निरूपण उत्पन्न करता है जिसे प्लॉट किया जा सकता है।

reducer = UMAP()
embeddings_2d = reducer.fit_transform(review_df["embedding"].tolist())

क्लस्टर का दृश्यांकन

अंत में, 2-आयामी एम्बेडिंग का स्कैटर प्लॉट बनाएं। x और y निर्देशांक क्रमशः embeddings_2d[: , 0] और embeddings_2d[: , 1] से लिए जाते हैं

क्लस्टर दृश्य रूप से भिन्न दिखाई देंगे:

fig = px.scatter(x=embeddings_2d[:, 0], y=embeddings_2d[:, 1], color=kmeans.labels_)
fig.show()

Clusters visulaization

क्लस्टर का दृश्यांकन

कुल मिलाकर तीन मुख्य क्लस्टर हैं, अलग-अलग रंगों में। चित्र में प्रत्येक समीक्षा का रंग K-Means मॉडल द्वारा उसे दिए गए क्लस्टर लेबल/संख्या से निर्धारित होता है। साथ ही, प्रत्येक बिंदु की स्थिति यह दृश्य संकेत देती है कि कोई दी गई समीक्षा अन्य समीक्षाओं से कितनी मिलती-जुलती है।

अगले चरण

टेक्स्ट एम्बेडिंग और OpenAI API की अपनी समझ को गहराने के लिए, DataCamp की निम्न सामग्री पर विचार करें: OpenAI API और Python के साथ GPT-3 का फाइन-ट्यूनिंग और The OpenAI API in Python चीट शीट। यह आपको फाइन-ट्यूनिंग के माध्यम से GPT-3 की पूरी क्षमता खोलने में मदद करती है और यह भी दिखाती है कि अपने विशिष्ट उपयोग मामले के लिए OpenAI API और Python का उपयोग करके इस उन्नत न्यूरल नेटवर्क मॉडल में कैसे सुधार करें।

Zoumana Keita

लेखक

Zoumana Keita

बहु-प्रतिभाशाली डेटा साइंटिस्ट जो अपना ज्ञान साझा करने और समुदाय को वापस देने में आनंद लेते हैं, ज़ूमाना YouTube पर कंटेंट क्रिएटर हैं और Medium पर शीर्ष तकनीकी लेखक हैं। उन्हें बोलने, कोडिंग करने और पढ़ाने में खुशी मिलती है। ज़ूमाना के पास दो मास्टर डिग्री हैं—पहली पेरिस, फ्रांस से कंप्यूटर साइंस में, मशीन लर्निंग पर केंद्रित, और दूसरी अमेरिका के टेक्सास टेक यूनिवर्सिटी से डेटा साइंस में। उनका करियर फ्रांस में Groupe OPEN में सॉफ्टवेयर डेवलपर के रूप में शुरू हुआ, जिसके बाद वे IBM में मशीन लर्निंग कंसल्टेंट बने, जहाँ उन्होंने बीमा कंपनियों के लिए एंड-टू-एंड एआई समाधान विकसित किए। ज़ूमाना ने Axionable, पेरिस और मॉन्ट्रियल स्थित पहली Sustainable AI स्टार्टअप, से जुड़कर डेटा साइंटिस्ट के रूप में काम किया और फ्रांस, मॉन्ट्रियल, सिंगापुर और स्विट्ज़रलैंड के क्लाइंट्स के लिए मुख्यतः NLP उपयोग मामलों पर आधारित एआई प्रोडक्ट्स लागू किए। इसके अतिरिक्त, अपने समय का 5% उन्होंने अनुसंधान और विकास को समर्पित किया। वर्तमान में, वे IFC - The World Bank Group में सीनियर डेटा साइंटिस्ट के रूप में कार्यरत हैं।

विषय