अपना स्वयं का मनोभाव विश्लेषण मॉडल बनाना कठिन लग सकता है। यह मार्गदर्शिका आपको आरंभ करने के चरणों के बारे में बताती है।

भाव विश्लेषण एक प्राकृतिक भाषा प्रसंस्करण (एनएलपी) तकनीक है जो पाठ के पीछे के दृष्टिकोण की पहचान करती है। इसे राय खनन के रूप में भी जाना जाता है। भावना विश्लेषण का लक्ष्य यह पहचानना है कि किसी पाठ में सकारात्मक, नकारात्मक या तटस्थ भावना है या नहीं। यह व्यापक रूप से व्यवसायों द्वारा ग्राहक समीक्षाओं में भावना को स्वचालित रूप से वर्गीकृत करने के लिए उपयोग किया जाता है। बड़ी मात्रा में समीक्षाओं का विश्लेषण करने से ग्राहकों की प्राथमिकताओं में मूल्यवान अंतर्दृष्टि प्राप्त करने में मदद मिलती है।

अपने पर्यावरण की स्थापना

आपको परिचित होना चाहिए पायथन मूल बातें के माध्यम से पालन करने के लिए। पर जाए गूगल कोलाब या ज्यूपिटर नोटबुक खोलें। फिर एक नई नोटबुक बनाएं। अपने परिवेश में आवश्यक लाइब्रेरी स्थापित करने के लिए निम्न आदेश निष्पादित करें।

इस प्रोजेक्ट का पूरा सोर्स कोड इसमें उपलब्ध है गिटहब रिपॉजिटरी.

! पिप इंस्टाल टेंसरफ्लो स्किकिट-लर्न पांडास नम्पी अचार5

आप NumPy और का उपयोग करेंगे

instagram viewer
डेटासेट में हेरफेर करने के लिए पांडा लाइब्रेरी. मशीन लर्निंग मॉडल बनाने और प्रशिक्षित करने के लिए TensorFlow। डेटासेट को प्रशिक्षण और परीक्षण सेटों में विभाजित करने के लिए स्किकिट-लर्न। अंत में, आप टोकननाइज़र ऑब्जेक्ट को क्रमबद्ध करने और सहेजने के लिए अचार 5 का उपयोग करेंगे।

आवश्यक पुस्तकालयों का आयात करना

उन आवश्यक पुस्तकालयों को आयात करें जिनका उपयोग आप डेटा को प्रीप्रोसेस करने और मॉडल बनाने के लिए करेंगे।

आयात Numpy जैसा एनपी
आयात पांडा जैसा पी.डी.
आयात tensorflow जैसा tf
से sklearn.model_selection आयात ट्रेन_टेस्ट_स्प्लिट
से sklearn.metrics आयात Accuracy_score
से टेंसरफ़्लो.केरस.प्रीप्रोसेसिंग.टेक्स्ट आयात टोकननाइज़र
से Tensorflow.keras.preprocessing.sequence आयात Pad_sequences
से टेंसरफ़्लो.केरस.मॉडल आयात क्रमबद्ध
से टेंसरफ़्लो.केरस.परतें आयात एंबेडिंग, कनव1डी, ग्लोबलमैक्सपूलिंग1डी, डेंस, ड्रॉपआउट
आयात अचार5 जैसा अचार

आप बाद में कोड में मॉड्यूल से आयात की जाने वाली कक्षाओं का उपयोग करेंगे।

डेटासेट लोड हो रहा है

यहां, आप ट्रिप एडवाइजर होटल समीक्षाएं डेटासेट का उपयोग करेंगे कागल भावना विश्लेषण मॉडल बनाने के लिए।

डीएफ = पीडी.read_csv ('/ सामग्री/tripadvisor_hotel_reviews.csv')
प्रिंट (df.head ())

डेटासेट लोड करें और इसकी पहली पांच पंक्तियों को प्रिंट करें। पहली पांच पंक्तियों को प्रिंट करने से आपको अपने डेटासेट के कॉलम नामों की जांच करने में मदद मिलेगी। डेटासेट को प्रीप्रोसेस करते समय यह महत्वपूर्ण होगा।

ट्रिप एडवाइजर होटल रिव्यू डेटासेट में एक इंडेक्स कॉलम, एक रिव्यू कॉलम और एक रेटिंग कॉलम होता है।

डेटा प्रीप्रोसेसिंग

का चयन करें समीक्षा और रेटिंग डेटासेट से कॉलम। रेटिंग कॉलम के आधार पर एक नया कॉलम बनाएं और उसे नाम दें भाव. यदि रेटिंग 3 से अधिक है, तो मनोभाव को इस रूप में लेबल करें सकारात्मक. यदि रेटिंग 3 से कम है, तो इसे इस रूप में लेबल करें नकारात्मक. यदि रेटिंग ठीक 3 है, तो इसे इस रूप में लेबल करें तटस्थ.

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

डीएफ = डीएफ [['समीक्षा', 'रेटिंग']]
डीएफ ['भावना'] = डीएफ ['रेटिंग']।आवेदन करना(लैम्ब्डा एक्स: 'सकारात्मक'अगर एक्स > 3
अन्य'नकारात्मक'अगर एक्स < 3
अन्य'तटस्थ')
डीएफ = डीएफ [['समीक्षा', 'भावना']]
df = df.sample (frac=1.reset_index (ड्रॉप =सत्य)

परिवर्तित करें समीक्षा टोकननाइज़र का उपयोग करके पूर्णांकों के अनुक्रम में पाठ। यह समीक्षा पाठ में मौजूद अद्वितीय शब्दों का एक शब्दकोश बनाता है और प्रत्येक शब्द को एक अद्वितीय पूर्णांक मान में मैप करता है। उपयोग Pad_sequences यह सुनिश्चित करने के लिए केरस से कार्य करता है कि सभी समीक्षा अनुक्रमों की लंबाई समान है।

टोकननाइज़र = टोकननाइज़र (num_words =5000, oov_token='')
tokenizer.fit_on_texts (df['समीक्षा'])
word_index = tokenizer.word_index
क्रम = tokenizer.texts_to_sequences (डीएफ ['समीक्षा'])
पैडेड_अनुक्रम = पैड_अनुक्रम (अनुक्रम, मैक्सलेन =100, काटना ='डाक')

सेंटिमेंट लेबल को वन-हॉट एन्कोडिंग में बदलें।

सेंटिमेंट_लेबल = pd.get_dummies (df ['भावना']).मूल्य

एक-हॉट एन्कोडिंग एक प्रारूप में श्रेणीबद्ध डेटा का प्रतिनिधित्व करता है जो आपके मॉडल के साथ काम करना आसान होता है।

डेटासेट को प्रशिक्षण और परीक्षण सेट में विभाजित करना

डेटासेट को प्रशिक्षण और परीक्षण सेटों में बेतरतीब ढंग से विभाजित करने के लिए स्किकिट-लर्न का उपयोग करें। आप समीक्षाओं की भावनाओं को वर्गीकृत करने के लिए मॉडल को प्रशिक्षित करने के लिए प्रशिक्षण सेट का उपयोग करेंगे। और आप परीक्षण सेट का उपयोग यह एक्सेस करने के लिए करेंगे कि नई अनदेखी समीक्षाओं को वर्गीकृत करने में मॉडल कितना अच्छा है।

x_train, x_test, y_train, y_test = train_test_split (गद्देदार_अनुक्रम, सेंटिमेंट_लेबल, test_size =0.2)

डेटासेट विभाजन का आकार 0.2 है। इसका मतलब है कि 80% डेटा मॉडल को प्रशिक्षित करेगा। और बाकी 20% मॉडल के प्रदर्शन का परीक्षण करेंगे।

तंत्रिका नेटवर्क बनाना

एक बनाने के तंत्रिका नेटवर्क छह परतों के साथ।

मॉडल = अनुक्रमिक ()
model.add (एम्बेडिंग (5000, 100, इनपुट_लेंथ =100))
मॉडल.ऐड (रूपा1डी(64, 5, सक्रियण ='रेलु'))
model.add (GlobalMaxPooling1D())
मॉडल.एड (घना (32, सक्रियण ='रेलु'))
मॉडल.एड (ड्रॉपआउट (0.5))
मॉडल.एड (घना (3, सक्रियण ='सॉफ्टमैक्स'))
मॉडल.कंपाइल (ऑप्टिमाइज़र ='एडम', हानि ='श्रेणीबद्ध_क्रॉसेंट्रॉपी'मेट्रिक्स = ['शुद्धता'])
मॉडल.सारांश ()

तंत्रिका नेटवर्क की पहली परत एक एम्बेडिंग परत है। यह परत शब्दावली में शब्दों का सघन प्रतिनिधित्व सीखती है। दूसरी परत 64 फिल्टर और 5 के कर्नेल आकार वाली एक कनव 1 डी परत है। यह परत आकार 5 की एक छोटी स्लाइडिंग विंडो का उपयोग करके इनपुट अनुक्रमों पर कनवल्शन ऑपरेशन करती है।

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

तंत्रिका नेटवर्क का प्रशिक्षण

मॉडल के लिए प्रशिक्षण और परीक्षण सेट फ़िट करें। मॉडल को दस युगों के लिए प्रशिक्षित करें। आप अपनी पसंद के हिसाब से युगों की संख्या बदल सकते हैं।

मॉडल.फिट (x_train, y_train, epochs=10, बैच_साइज़ =32, सत्यापन_डेटा = (x_test, y_test))

प्रत्येक युग के बाद, परीक्षण सेट पर मॉडल के प्रदर्शन का मूल्यांकन किया जाता है।

प्रशिक्षित मॉडल के प्रदर्शन का मूल्यांकन

उपयोग मॉडल.भविष्यवाणी () परीक्षण सेट के लिए मनोभाव लेबल की भविष्यवाणी करने की विधि। का उपयोग करके सटीकता स्कोर की गणना करें सटीकता_स्कोर () scikit-learn से कार्य करें।

y_pred = np.argmax (model.predict (x_test), अक्ष =-1)
प्रिंट ("शुद्धता:", सटीकता_स्कोर (np.argmax (y_test, अक्ष =-1), y_pred))

इस मॉडल की सटीकता लगभग 84% है।

मॉडल सहेजा जा रहा है

मॉडल का उपयोग करके सहेजें मॉडल.सेव () तरीका। टोकननाइज़र ऑब्जेक्ट को क्रमबद्ध करने और सहेजने के लिए अचार का उपयोग करें।

मॉडल.सेव ('भावना_विश्लेषण_मॉडल.एच5')
साथ खुला('टोकनाइज़र.अचार', पश्चिम बंगाल) जैसा सँभालना:
अचार.डंप (टोकनाइज़र, हैंडल, प्रोटोकॉल = अचार। उच्चतम_प्रोटोकॉल)

टोकननाइज़र ऑब्जेक्ट आपके स्वयं के इनपुट टेक्स्ट को टोकनाइज़ करेगा और इसे प्रशिक्षित मॉडल को फीड करने के लिए तैयार करेगा।

अपने स्वयं के पाठ के मनोभावों को वर्गीकृत करने के लिए मॉडल का उपयोग करना

मॉडल बनाने और सहेजने के बाद, आप इसका उपयोग अपने स्वयं के पाठ की भावना को वर्गीकृत करने के लिए कर सकते हैं। सबसे पहले, सहेजे गए मॉडल और टोकननाइज़र को लोड करें।

# सहेजे गए मॉडल और टोकन को लोड करें
आयात keras

मॉडल = keras.models.load_model ('भावना_विश्लेषण_मॉडल.एच5')
साथ खुला('टोकनाइज़र.अचार', 'आरबी') जैसा सँभालना:
टोकननाइज़र = अचार.लोड (हैंडल)

इनपुट पाठ की भावना की भविष्यवाणी करने के लिए एक फ़ंक्शन को परिभाषित करें।

डीईएफ़भविष्यवाणी(मूलपाठ):
# इनपुट टेक्स्ट को टोकनाइज़ और पैड करें
text_sequence = tokenizer.texts_to_sequences ([पाठ])
text_sequence =pad_sequences (text_sequence, maxlen=100)

# प्रशिक्षित मॉडल का उपयोग करके भविष्यवाणी करें
भविष्यवाणी_रेटिंग = मॉडल. भविष्यवाणी (पाठ_अनुक्रम) [0]
अगर np.argmax (भविष्यवाणी_रेटिंग) == 0:
वापस करना'नकारात्मक'
elif np.argmax (भविष्यवाणी_रेटिंग) == 1:
वापस करना'तटस्थ'
अन्य:
वापस करना'सकारात्मक'

अंत में, अपने स्वयं के पाठ की भविष्यवाणी करें।

टेक्स्ट_इनपुट = "मुझे उस होटल में रहना बहुत अच्छा लगा। स्टाफ अद्भुत था और कमरा शानदार था!"
भविष्यवाणी_सेंटिमेंट = भविष्यवाणी_सेंटिमेंट (टेक्स्ट_इनपुट)
प्रिंट (अनुमानित_भाव)

उपरोक्त समीक्षा की अनुमानित भावना इस प्रकार है:

मॉडल तीनों समीक्षाओं की भावनाओं को सही ढंग से वर्गीकृत करने में सक्षम है।

पूर्व-प्रशिक्षित मॉडल का उपयोग करके मनोभावों की भविष्यवाणी करना

कभी-कभी मशीन लर्निंग में, आपके सामने सही डेटासेट खोजने की चुनौती हो सकती है। आपके पास अपना खुद का डेटासेट बनाने के लिए संसाधनों की कमी भी हो सकती है। यहीं पर पूर्व प्रशिक्षित मॉडल काम आते हैं। आपको यह जानना होगा कि उनके एपीआई का उपयोग कैसे करें और बाकी को संभालने के लिए उन्हें छोड़ दें।