क्या सीक्वेल मूल से बेहतर हैं?
द्वारा: जस्टिन चीघ और डाइसुके यामादा
सार: इस लेख में हम इस सवाल का जवाब देना चाहते हैं कि क्या सीक्वेल मूल से बेहतर हैं। ऐसा करने के लिए हम विशेष मूवी श्रृंखला की समीक्षाओं पर मनोभाव विश्लेषण करते हैं। हालाँकि हमने 50,000 मूवी समीक्षाओं वाले कागल डेटासेट पर प्रशिक्षण दिया है , हम पायथन की सेलेनियम लाइब्रेरी का उपयोग करके IMDb से मूवी समीक्षाओं को भी परिमार्जन करेंगे। हमारा गिटहब रेपो देखें और पढ़ने के लिए धन्यवाद!
प्रेरणा
क्या आपने कभी सोचा है कि क्या सीक्वेल वास्तव में मूल से बेहतर हैं? हाँ ... हम सब वहाँ रहे हैं। वास्तव में, सदियों पुराने इस प्रश्न का उत्तर मुझे जीवन भर परेशान करता रहा है। हमने जवाबों के लिए परिमार्जन किया और परिमार्जन किया। मानक फिल्म सिद्धांत ने ठोस उत्तर नहीं दिए। भाषाविज्ञान और साहित्यिक सिद्धांत काफी सही नहीं बैठे। दर्शन ने तो भ्रम ही बढ़ा दिया। इसलिए, हम अंतिम संभावित उपाय की ओर मुड़े: डेटा साइंस। एक त्वरित कुंग फू पांडा मैराथन के बाद, हम काम पर लग गए।
हमारी योजना लेबल किए गए डेटा का उपयोग करके एक भावना विश्लेषण मॉडल को प्रशिक्षित करने की थी। इस मॉडल से हम विभिन्न श्रृंखलाओं की फिल्मों की समीक्षाओं की भावना निर्धारित कर सकते हैं। यहां से हम प्रत्येक फिल्म की लोकप्रियता को मापने के लिए कुछ अनुमान विकसित कर सकते हैं, जिससे हमें सीक्वल और मूल की तुलना करने की अनुमति मिलती है।
डेटा स्क्रैपिंग और प्री-प्रोसेसिंग
शुरू करने के लिए, हमें डेटा की आवश्यकता थी। हमें kaggle पर एक IMDb डेटासेट मिला जिसमें 50,000 मूवी समीक्षाएँ थीं, जिनमें से प्रत्येक को सकारात्मक या नकारात्मक के रूप में लेबल किया गया था । यह डेटासेट बाइनरी सेंटिमेंट एनालिसिस मॉडल के प्रशिक्षण के लिए एकदम सही था, लेकिन हमें विभिन्न श्रृंखलाओं से मूवी समीक्षाओं के डेटा की भी आवश्यकता थी।
हमने 4 अलग-अलग श्रृंखलाओं के साथ काम करना चुना: हैरी पॉटर, स्टार वार्स, कुंग फू पांडा और कार्स। प्रत्येक श्रृंखला में प्रत्येक फिल्म के लिए IMDb पर मूवी समीक्षा/रैंकिंग खोजने के बाद , हमने सेलेनियम का उपयोग करके डेटा को स्क्रैप किया। हमने इस डेटा को CSV फ़ाइलों (/समीक्षा/मूल) के एक फ़ोल्डर के रूप में सहेजा है, प्रत्येक में (कम से कम) मूवी समीक्षाएं और संबंधित स्टार रेटिंग हैं। अब से हम इन स्टार रेटिंग्स को क्रिटिक रेटिंग्स या सिर्फ रेटिंग्स के रूप में संदर्भित करेंगे।
हमारे प्रशिक्षण डेटासेट के विपरीत, जिसमें भावना मूल्यों ( सकारात्मक या नकारात्मक भावना ) को लेबल किया गया था, इन समीक्षाओं में वास्तविक रेटिंग थी जो आलोचक ने निर्धारित की थी ( 1-10 , जिसमें 1 सबसे खराब और 10 सबसे अच्छा था)। हम बाद में अपने विश्लेषण के दौरान इस विसंगति को स्वीकार करेंगे।
भावना विश्लेषण मॉडल
इसके बाद हम अपने सेंटीमेंट एनालिसिस मॉडल को प्रशिक्षित करने के लिए निकल पड़े । पहला चरण समीक्षा को कुछ संख्यात्मक सदिश में कूटबद्ध करना है। भोली विधि केवल एक गर्म शब्दों को सांकेतिक शब्दों में बदलना है। हालाँकि, यह एक विशाल इनपुट वेक्टर की ओर जाता है जिसमें शब्दों की कोई अर्थपूर्ण समझ नहीं होती है (उदाहरण के लिए यूएसए और अमेरिका को पूरी तरह से अलग मानते हैं)।
इस प्रकार, हमने एक शब्द एम्बेडिंग परत का उपयोग करना चुना। शब्द एम्बेडिंग शब्दों को संख्यात्मक वैक्टर के रूप में इस तरह से प्रस्तुत करते हैं जो शब्दार्थ समानता को ध्यान में रखते हैं। उदाहरण के लिए, पर्यायवाची शब्द सदिश स्थान में एक दूसरे के "निकट" हो सकते हैं, और आप सिमेंटिक संबंध भी सीख सकते हैं जैसे निम्नलिखित में:
विशेष रूप से, हमने अपने मॉडल में एम्बेडिंग परत को परिभाषित करने के लिए पूर्व-प्रशिक्षित ग्लोवी शब्द एम्बेडिंग का उपयोग किया। एक बार जब हम इस एम्बेडिंग परत को परिभाषित कर लेते हैं, तो हम अपने मॉडल को परिभाषित करने के लिए चले जाते हैं। हमारे अंतर्निहित मॉडल के लिए हमने एक द्विदिश LSTM (लॉन्ग शॉर्ट-टर्म मेमोरी) का उपयोग करना चुना। LSTM एक प्रकार का आवर्तक तंत्रिका नेटवर्क (RNN) है जिसे लंबी अवधि की निर्भरता को संभालने के लिए डिज़ाइन किया गया है।
पारंपरिक आरएनएन में, हमें आमतौर पर गायब होने (या विस्फोट) की समस्या होती है, क्योंकि हमें समय के माध्यम से बैकप्रोपैजेशन की आवश्यकता होती है । LSTM एक मेमोरी सेल होने से इसे ठीक करते हैं जो सूचना प्रवाह को नियंत्रित कर सकता है। अर्थात्, 3 गेट हैं: इनपुट गेट (सेल में आने वाली नई जानकारी), भूल गेट (वर्तमान सेल जानकारी कितनी भूल गई है), और आउटपुट गेट (एलएसटीएम के आउटपुट का उत्पादन करने के लिए सेल राज्य का कितना उपयोग किया जाता है) ). सिग्मॉइड एक्टिविटीज द्वारा दर्शाए गए ये द्वार लंबी अवधि की निर्भरता की अनुमति देते हैं। नीचे आप LSTM की वास्तुकला देख सकते हैं:
एक द्विदिश LSTM 2 LSTM का उपयोग करके इस संरचना पर बनाता है , दोनों दिशाओं में सूचना प्रवाह की अनुमति देता है। दूसरे शब्दों में, LSTM केवल अतीत की जानकारी को संरक्षित करता है , लेकिन द्विदिश LSTM अतीत और भविष्य दोनों की जानकारी को संरक्षित करता है। यह नेटवर्क को आसपास के शब्दों के संदर्भ की अनुमति देता है, और इसकी वास्तुकला की एक तस्वीर नीचे दिखाई गई है:
हमने अपने द्विदिश LSTM को निम्नानुसार लागू किया:
# define pre-trained embedding layer
pre_emb = Embedding(
input_dim=len(word_index)+1,
output_dim=seqlen,
weights=[embedding_matrix], # from GloVe embedding
input_length=seqlen,
trainable=True
)
with tf.device(device):
# define bidirectional LSTM
model = Sequential([
pre_emb, # embedding layer
Bidirectional(LSTM(128, return_sequences=True)),
Dropout(0.2),
Bidirectional(LSTM(64)),
Dropout(0.2),
Dense(128, activation='relu'),
Dropout(0.2),
Dense(1, activation="sigmoid") # binary classification
])
# compile
model.compile(
loss=BinaryCrossentropy(from_logits=True),
optimizer='adam',
metrics=['accuracy']
)
एक बार प्रशिक्षित होने के बाद, इस मॉडल ने परीक्षण सेट पर 50% बेसलाइन की तुलना में 86.9% सटीकता प्राप्त की! अब जबकि हमारे पास यह प्रशिक्षित मॉडल है, हम इसे स्क्रैप की गई मूवी समीक्षाओं पर उपयोग कर सकते हैं। इसलिए हमने अपनी स्क्रैप की गई CSV फ़ाइलें लीं और एक “सेंटीमेंट” कॉलम जोड़ा , जिसमें हमारे मॉडल के समीक्षा के सेंटिमेंट पूर्वानुमान के आधार पर या तो 0 (नकारात्मक) या 1 (सकारात्मक) था। इन CSV फ़ाइलों को /reviews/annotated में सहेजा गया था।
परिणाम और विश्लेषण
महान! इसलिए प्रत्येक श्रृंखला में प्रत्येक फिल्म की प्रत्येक समीक्षा के लिए हमारे पास जानकारी के दो टुकड़े हैं: हमारे मॉडल की भावना भविष्यवाणी (0 या 1) और आलोचकों की वास्तविक रेटिंग (1-10)। आइए कुछ संकेतन को परिभाषित करें। एक समीक्षा ठीक करें आर । चलो एम (आर) हमारे मॉडल की समीक्षा की द्विआधारी भावना की भविष्यवाणी है, और सी (आर) समीक्षकों को उस फिल्म की वास्तविक रेटिंग दें जो समीक्षा से संबंधित है।
एम (आर) और सी (आर) के बीच क्या संबंध है ? ठीक है, अच्छी रेटिंग वाली समीक्षाओं में सहज रूप से सकारात्मक भावना होनी चाहिए, जिसका अर्थ है कि हम M(r) और C(r) के बीच एक सकारात्मक संबंध चाहते हैं। वास्तव में, पूर्ण आदर्श मामला निम्नलिखित संबंध है (यह मानते हुए कि सी (आर) पूर्ण, या उद्देश्य, संतुष्टि के स्तर को दर्शाता है):
तो, वास्तविक संबंध क्या है?
आइए इन भूखंडों को तोड़ दें। प्रत्येक स्तंभ किसी श्रृंखला में एक फिल्म का प्रतिनिधित्व करता है। हम उदाहरण के तौर पर पहली हैरी पॉटर फिल्म का प्रतिनिधित्व करते हुए सबसे बाएं कॉलम के साथ काम करेंगे। बता दें कि R इस फिल्म के लिए स्क्रैप की गई समीक्षाओं का सेट है। तब हम कथानक की व्याख्या इस प्रकार कर सकते हैं:
- शीर्ष संख्या (7.7) औसत आलोचक रेटिंग है; औपचारिक रूप से मतलब (सी (आर))।
- लाल रंग में संख्या हमारे मॉडल द्वारा सकारात्मक के रूप में भविष्यवाणी की गई समीक्षाओं के लिए औसत आलोचक रेटिंग है; औपचारिक रूप से मतलब ({सी (आर) | आर इन आर और एम (आर) = 1})।
- नीले रंग में संख्या हमारे मॉडल द्वारा नकारात्मक के रूप में भविष्यवाणी की गई समीक्षाओं के लिए औसत आलोचक रेटिंग है; औपचारिक रूप से मतलब ({सी (आर) | आर में आर और एम (आर) = 0})।
इसे देखने के बाद, हमने एम (आर) द्वारा समूहीकृत सी (आर) के वितरण का पता लगाने का फैसला किया। हमें निम्नलिखित प्लॉट मिलते हैं:
उदाहरण के लिए, हैरी पॉटर पॉजिटिव प्लॉट हैरी पॉटर फिल्मों की समीक्षाओं के लिए आलोचकों की रेटिंग के वितरण को दर्शाता है जिसे हमारे मॉडल ने सकारात्मक भावना के रूप में वर्गीकृत किया है। हम इन भूखंडों की तरह दिखने की क्या उम्मीद करेंगे या उम्मीद करेंगे? आइए M(r) और C(r) के बीच संबंध के लिए अपने आदर्श समीकरण पर वापस जाएं। हम आशा करते हैं कि सकारात्मक भूखंडों की केवल समीक्षाएँ हैं जिन्हें 5 से अधिक रेट किया गया है, जबकि नकारात्मक भूखंडों में केवल वही समीक्षाएँ हैं जिन्हें ≤ 5 रेट किया गया था।
कम से कम हम समीक्षाओं की संख्या में कुछ वृद्धि चाहते हैं क्योंकि सकारात्मक के लिए रेटिंग बढ़ती है और नकारात्मक के लिए इसके विपरीत। यह सकारात्मक भूखंडों के लिए सही लगता है, यह दर्शाता है कि हमारा मॉडल सकारात्मक रूप से रेटेड समीक्षाओं को अच्छी तरह से वर्गीकृत कर सकता है। हालाँकि, यह नकारात्मक के लिए सही नहीं है; हमारा मॉडल नकारात्मक रूप से रेट की गई समीक्षाओं को अच्छी तरह से वर्गीकृत नहीं कर सकता है।
यह जिज्ञासु है। एक संभावित व्याख्या यह है कि सकारात्मक समीक्षाएं अधिक स्पष्ट होती हैं; वे कहते हैं कि "यह फिल्म बहुत अच्छी थी!"। दूसरी ओर, नकारात्मक रेटिंग वाली समीक्षाओं को समझना थोड़ा कठिन हो सकता है। निम्नलिखित (नकली) समीक्षा पर विचार करें: "हालांकि कुछ इस फिल्म में सीजीआई और एनिमेशन से प्यार कर सकते हैं, मैं प्रशंसक नहीं था"। तंत्रिका नेटवर्क के लिए यह एक अत्यंत कठिन मामला है। "प्यार" या "प्रशंसक" जैसे शब्द हैं जो आमतौर पर सकारात्मक भावना से जुड़े होते हैं, फिर भी किसी को यह जानने के लिए संदर्भ को समझने की जरूरत है कि यह एक नकारात्मक समीक्षा है।
यह सिर्फ एक संभावित परिकल्पना है। सकारात्मक/नकारात्मक भावना के आधार पर समूहीकरण करते समय हमने प्रत्येक फिल्म के लिए बेहतर अनुभव प्राप्त करने के लिए वर्डक्लाउड बनाए:
हमने यहां कुछ महत्वपूर्ण बातों पर गौर किया। पहला यह है कि "हैरी पॉटर", "किताब", "मूवी", "दृश्य", "फिल्म" और बहुत कुछ जैसे पूर्वानुमानित शब्द बहुत प्रचलित हैं। एक विशेष कारण यह है कि हमारे ग्लोवी एम्बेडिंग ने एक निश्चित कॉर्पस का उपयोग किया। शब्द एम्बेडिंग परत का उपयोग करना फायदेमंद हो सकता है जो हमारे विशिष्ट कॉर्पस के लिए विशिष्ट था। हालाँकि हमने एम्बेडिंग परत को प्रशिक्षित करने योग्य बनाकर इसका हिसाब लगाने की कोशिश की, शायद हम GloVe के अलावा किसी अन्य तरीके को भी आज़मा सकते थे।
हम सकारात्मक और नकारात्मक शब्दों में "अच्छा" जैसे शब्द भी देखते हैं, जो नकारात्मक समीक्षाओं को वर्गीकृत करने में हमारी परेशानी की पुष्टि करता है। महान! अब जब हमने कुछ डेटा विज़ुअलाइज़ेशन किया है और हमारे डेटासेट की बेहतर समझ है, तो हम कुछ ह्यूरिस्टिक एच (एम) को परिभाषित करना चाहते हैं जो एक इनपुट मूवी एम लेता है और मूवी को कितने लोग पसंद करते हैं, इसके अनुपात में एक वैल्यू आउटपुट करता है।
अनुमानी और आगे का विश्लेषण
हम चाहते थे कि एच (एम) हमारे मॉडल की भविष्यवाणी और वास्तविक आलोचक रेटिंग दोनों के लिए जिम्मेदार हो। हम एच (एम) को निम्नानुसार परिभाषित करते हैं:
हम पहले सकारात्मक रेटिंग की औसत समीक्षक रेटिंग द्वारा सकारात्मक रेटिंग की संख्या को महत्व देते हैं। इसके बाद हम इसे लेते हैं और नकारात्मक समीक्षाओं की औसत समीक्षक रेटिंग द्वारा भारित नकारात्मक रेटिंग की संख्या घटाते हैं। यह एक अच्छा अनुमान है, लेकिन हमें याद रखना चाहिए कि नकारात्मक समीक्षाओं को वर्गीकृत करने में हमारा मॉडल सबसे अच्छा नहीं है। इस प्रकार, हम वास्तव में नकारात्मक समीक्षाओं की औसत रेटिंग के बारे में परवाह नहीं करते हैं, जो निम्नलिखित के लिए हमारे अनुमानी को कम कर देता है:
तो, इस अनुमानी का उपयोग करके, हमारे परिणाम क्या हैं? चार श्रृंखलाओं में से प्रत्येक के लिए हमने दो प्लॉट बनाने का फैसला किया। पहली औसत समीक्षक रेटिंग बनाम मूवी है , और दूसरी हमारी अनुमानी बनाम मूवी है:
ध्यान दें कि श्रृंखला द्वारा समूहीकृत करते समय औसत रेटिंग प्लॉट बहुत अधिक नहीं बदलता है , यह दर्शाता है कि प्रत्येक श्रृंखला की सभी फिल्में समीक्षकों द्वारा लगभग समान स्तर पर देखी जाती हैं। यह केवल उन व्यक्तियों का संकेत हो सकता है जो वास्तव में इस साइट पर समीक्षा पोस्ट करते हैं और अलग-अलग अंक देने की उनकी इच्छा है।
प्रत्येक श्रृंखला के लिए सही कथानक बहुत यादृच्छिक लगता है। ध्यान दें कि y-अक्ष पर वास्तविक संख्या बहुत अप्रासंगिक है, क्योंकि सापेक्ष रैंकिंग वास्तव में मायने रखती है। जैसे-जैसे श्रृंखला आगे बढ़ती है H(m) के बढ़ने या घटने की कोई स्पष्ट प्रवृत्ति नहीं होती है । ऐसा लगता है कि मूल अगली कड़ी की तुलना में थोड़ा अधिक लोकप्रिय हैं , हालांकि इसके (स्टार वार्स) निश्चित रूप से अपवाद हैं।
एक और दिलचस्प बात यह है कि, हैरी पॉटर के अलावा, अंतिम फिल्म हमारे अनुमान के अनुसार या तो सबसे कम या सबसे लोकप्रिय है। यह सहज रूप से समझ में आता है, क्योंकि श्रृंखला या तो लोकप्रियता की कमी के कारण उत्पादन बंद कर देती है या उच्च नोट पर समाप्त हो जाती है। इसके अलावा, यह हैरी पॉटर पर लागू नहीं होता, क्योंकि किताबों के समाप्त होते ही वे समाप्त हो गए।
निष्कर्ष एवं भविष्य का काम
महान! हमें सीक्वेल के ओरिजिनल से बदतर या बेहतर होने के निश्चित रुझान नहीं मिले, लेकिन हमारे पास इस विषय में गोता लगाने का मौका था। हम GloVe शब्द एम्बेडिंग का ठीक से उपयोग करने और द्विदिश LSTM को लागू करने में सक्षम थे। इसके अलावा हम डेटा को सफलतापूर्वक परिमार्जन करने और कुछ विश्लेषण करने में सक्षम थे।
भविष्य में हम ट्रांसफॉर्मर जैसे अधिक जटिल एनएलपी मॉडल का पता लगाने की संभावना रखते हैं। हालाँकि, हमारा सबसे बड़ा मुद्दा एक अच्छे अनुमानी H(m) को परिभाषित करने में था। यह निश्चित रूप से निर्धारित करना कठिन है कि हमारा अनुमान अच्छा था या नहीं, लेकिन यह सुझाव देने के कारण हैं कि इसमें कमी हो सकती है।
उदाहरण के लिए, मान लें कि कुछ श्रृंखलाओं के लिए फिल्मों में a_p स्थिर है। हमने अपने भूखंडों से देखा कि यह कोई बड़ी धारणा नहीं है। फिर हमारा अनुमान H(m) = C * r_p -r_n तक कम हो जाता है , जहाँ C = a_p स्थिर है। इसका मतलब यह है कि समीक्षकों की समीक्षाओं को हमारे अनुमान में बमुश्किल शामिल किया गया है, जो समस्याग्रस्त है क्योंकि हम पहले से ही जानते हैं कि हमारा मॉडल नकारात्मक समीक्षाओं को वर्गीकृत करने में सबसे अच्छा नहीं है।
इन असफलताओं के बावजूद, यह वास्तव में एक मजेदार परियोजना थी! पढ़ने के लिए धन्यवाद!