मैंने ब्रिटिश और अमेरिकी साहित्य के बीच अंतर का पता लगाने के लिए मशीन लर्निंग का उपयोग कैसे किया

जैसा कि मैंने अंग्रेजी साहित्य में अपनी भाषा के लाभ को आगे बढ़ाने के लिए मेरी रुचि को बढ़ाया, मेरी अमेरिकी और ब्रिटिश अंग्रेजी में अंतर कैसे हुआ?

इस सवाल के साथ मेरे दिमाग में फंसाया गया, अगले कदम प्राकृतिक उदाहरणों को खोजने के लिए प्राकृतिक भाषा प्रसंस्करण और मशीन सीखने की तकनीकों को लागू करना था। मैं यह जानने के लिए उत्सुक था कि क्या एक क्लासिफायर ट्रेन करना संभव होगा, जो साहित्यिक ग्रंथों को अलग करेगा।

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

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

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

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

इस परियोजना के लिए मैंने स्केलेर पैकेज का उपयोग किया। डेटा संग्रह और विश्लेषण चरण के बाद पहला चरण पूर्व-प्रसंस्करण है, जिसमें मैंने एक काउंटेवेक्टराइज़र का उपयोग किया है। एक CountVecrorizer इनपुट के रूप में एक पाठ डेटा लेता है और आउटपुट के रूप में सुविधाओं का एक वेक्टर देता है। अगला, मुझे tf-idf (टर्म फ़्रीक्वेंसी - इनवर्टेड डॉक्युमेंट फ़्रीक्वेंसी) की गणना करने की आवश्यकता थी। एक संक्षिप्त विवरण कि मुझे इसका उपयोग करने की आवश्यकता क्यों और कैसे:

उदाहरण के लिए, "शब्द" को लें और किसी दिए गए पाठ में शब्द की संख्या की गणना करें। ए। मान लें कि हमारे पास 100 घटनाएँ हैं, और किसी दस्तावेज़ में कुल शब्दों की संख्या 1000 है।

इस प्रकार,

tf (“the”) = 100/1000 = 0.1

अगला, शब्द "सेपाल" लें, जो 50 बार हुआ है:

tf ("sepal") = 50/1000 = 0.05

इन शब्दों के लिए उल्टे दस्तावेज़ आवृत्ति की गणना करने के लिए, हमें उन ग्रंथों की संख्या के अनुपात का लघुगणक लेने की आवश्यकता है, जहां से शब्द की कम से कम एक घटना हो, कुल ग्रंथों की संख्या। यदि सभी 10,000 ग्रंथ हैं, और प्रत्येक में, "शब्द" है:

आईडीएफ ("द") = लॉग (10000/10000) = 0 और

tf-idf ("the") = idf ("the") * tf ("the") = 0 * 0.1 = 0

शब्द "सेपाल" अधिक दुर्लभ है, और केवल 5 ग्रंथों में पाया गया था। इसलिए:

idf ("sepal") = log (10000/5) और tf-idf ("sepal") = 7.6 * 0.05 = 0.38

इस प्रकार, सबसे अधिक बार होने वाले शब्द कम वजन ले जाते हैं, और विशिष्ट दुर्लभ शब्द अधिक वजन उठाते हैं। यदि शब्द "सेपाल" की कई घटनाएं हैं, तो हम मान सकते हैं कि यह एक वनस्पति पाठ है। हम शब्दों के साथ एक वर्गीकरण नहीं कर सकते हैं, हम इसके बजाय tf-idf माप का उपयोग करेंगे।

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

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

क्लासिफायर वेट की एक सूची प्राप्त करने के बाद, मैंने समस्या का एक हिस्सा देखा: क्लासिफायर को "और" जैसे शब्दों से खिलाया गया था, जिसे हमें एक शोर के रूप में माना जाना चाहिए। मैं इन समस्याओं को आसानी से इन शब्दों को स्टॉप_ पासवर्ड पैरामीटर से CountVectorizer: stop_words = problem english '(या स्टॉप शब्दों की अपनी स्वयं की कस्टम सूची) पर सेट करके आसानी से हल कर सकता हूं।

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

अब मुझे किन चीजों में रुचि है: कौन से शब्द पाठ की उत्पत्ति की ओर इशारा करते हैं? यहाँ शब्दों की एक सूची है, जो वर्गीकरण में वजन के घटते क्रम में क्रमबद्ध है:

अमेरिकन: डॉलर, न्यू, यार्क, लड़की, ग्रे, अमेरिकन, कार्वेल, कलर, सिटी, ऐन, लॉन्ग, जस्ट, पार्लर, बॉस्टन, ऑनर, वॉशिंगटन, होम, लेबर, मिला, आखिरकार, होडर, फॉरएवर, डोरोथी, डॉ

ब्रिटिश: गोल, श्रीमान, महिला, लंदन, काफी, श्रीमान, प्रभु, ग्रे, प्रिय, सम्मान, होने, दलीप, गरीब, पाउंड, स्क्रूज, मिट्टी, चीजें, समुद्र, आदमी, अंत, आओ, रंग, चित्रण आदि अंग्रेजी, सीखी

क्लासिफायर के साथ मज़े करते हुए, मैं सबसे अधिक "अमेरिकी" ब्रिटिश लेखकों और सबसे "ब्रिटिश" अमेरिकी लेखकों को बाहर करने में सक्षम था (यह देखने के लिए एक पेचीदा तरीका कि मेरा क्लासिफायर कितना बुरा काम कर सकता है)।

सबसे "ब्रिटिश" अमेरिकी:

  • फ्रांसिस हॉजसन बर्नेट (इंग्लैंड में पैदा हुए, 17 साल की उम्र में यूएसए चले गए, इसलिए मैं उन्हें एक अमेरिकी लेखक के रूप में मानता हूं)
  • हेनरी जेम्स (यूएसए में पैदा हुए, 33 साल की उम्र में इंग्लैंड चले गए)
  • ओवेन विस्टर (हाँ, पश्चिमी उपन्यास के पिता)
  • मैरी रॉबर्ट्स रिइनहार्ट (इसे एक कारण के लिए अमेरिकी अगाथा क्रिस्टी कहा जाता था)
  • विलियम मैकफी (एक अन्य लेखक कम उम्र में अमेरिका चले गए)

सबसे "अमेरिकन" ब्रिटिश:

  • रुडयार्ड किपलिंग (वे कई वर्षों तक अमेरिका में रहे, उन्होंने "अमेरिकन नोट्स" भी लिखा)
  • एंथोनी ट्रोलोप ("उत्तरी अमेरिका" के लेखक)
  • फ्रेडरिक मैरिअट (1812 के एंग्लो-अमेरिकन युद्ध के एक अनुभवी, कैलिफोर्निया, सोनारा और पश्चिमी टेक्सास में महाशय वायलेट ऑफ ट्रेवल्स एंड एडवेंचर्स के अपने धन्यवाद के कारण), जिसने उन्हें अमेरिकी श्रेणी में रखा।
  • अर्नोल्ड बेनेट ("आपका संयुक्त राज्य अमेरिका: पहली यात्रा के प्रभाव" के लेखक) एक और सज्जन ने यात्रा नोट लिखे
  • ई। फिलिप्स ओपेनहेम

और सबसे "ब्रिटिश" ब्रिटिश और "अमेरिकी" अमेरिकी लेखक (क्योंकि क्लासिफायर अभी भी अच्छी तरह से काम करता है):

अमेरिकियों:

  • फ्रांसिस हॉपकिंसन स्मिथ
  • हमलिन गारलैंड
  • जॉर्ज एडे
  • चार्ल्स डडली वार्नर
  • मार्क ट्वेन

अंग्रेजों:

  • जॉर्ज मेरेडिथ
  • सैमुअल रिचर्डसन
  • जॉन गल्सवर्थी
  • गिल्बर्ट कीथ चेस्टर्टन
  • एंथोनी ट्रोलोपे (ओह, हाय)

मुझे यह काम @TragicAllyHere ट्वीट द्वारा करने के लिए प्रेरित किया गया था:

जैसा कि मैंने महसूस किया है, वास्तव में, शोक बहुत मायने रखता है।