हम स्मार्टमेल 2 में कैसे जीते

पिछले सप्ताहांत (14-15 जुलाई) को मेल.रू ग्रुप कार्यालय में एक और स्मार्टमेल हैक हैकथॉन आयोजित किया गया था। हमें "एक विशेषता के साथ आने के लिए कहा गया जो आपको मेल से डेटा तक पहुंचने और उनके साथ अधिक प्रभावी ढंग से बातचीत करने की अनुमति देगा।"


डेटा विवरण, विचार और समाधान


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


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


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


मशीन सीखने


हमने तीन मॉडल बनाने का फैसला किया:


  • 30 से अधिक श्रेणियों से एक क्लासिफायरियर जिसे हमने सभी उपयोगकर्ताओं के लिए बुनियादी के रूप में नामित किया है;
  • उपयोगकर्ता प्राथमिकताओं के आधार पर नई श्रेणियों को क्लस्टर करना और हाइलाइट करना;
  • श्रेणी के भीतर रैंकिंग पत्र, सबसे अधिक प्रासंगिक से कम से कम।


सबूत


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


बाइनरी संकेतों का एक गुच्छा था जो एपीआई का उपयोग करके अनलोड किया जाता है। हालांकि, उनमें से अधिकांश ग्रंथों पर उत्पन्न हुए थे:


  • दस्तावेजों के संग्रह पर tf-idf;
  • Word2Vec के साथ प्राप्त एम्बेडिंग;
  • व्यवहार संबंधी लक्षण जैसे:
    - अंतिम विंडो में पढ़े गए संदेशों की संख्या (1, 2, 5 सप्ताह पहले);
    - इससे संदेशों की संख्या।

वर्गीकरण कार्य


हमने प्रशिक्षण के लिए हाथों को 1000 अक्षरों से चिह्नित किया। यह पता चला कि यह पहले की तरह धीमा और थकाऊ काम नहीं है। यदि आप पते और हेडर का उपयोग करते हैं, तो आप काम को गति प्रदान कर सकते हैं। उदाहरण के लिए, लमोडा लगभग हमेशा "वस्त्र" श्रेणी में पत्र भेजता है।


अगला, हम लाइटजीएनएम को संकेतों के पूरे सेट पर प्रशिक्षित करते हैं और 0.913 सटीकता और 0.892 एफ 1 उपायों की गुणवत्ता प्राप्त करते हैं, जिसे हमने बेस लाइन स्तर पर बहुत अच्छे परिणाम के रूप में निर्धारित किया है। इससे पता चलता है कि अक्षरों को बहुत अच्छी तरह से वर्गीकृत किया जा सकता है।


रैंकिंग कार्य


लक्ष्य चर के रूप में, हमने बाइनरी फ्लैग का उपयोग किया 0/1 - क्या संदेश उपयोगकर्ता द्वारा पढ़ा गया था। मॉडल द्वारा अनुमानित संभावना के अनुसार उन्हें आगे स्थान दिया गया था, क्योंकि यह ठीक वही है जो दर्शाता है कि मॉडल इस बात पर आश्वस्त है कि व्यक्ति संदेश पढ़ेगा या नहीं।


यहाँ हमने फीचर के पूरे सेट पर लाइट जीबीएम को प्रशिक्षित किया और लगभग 0.816 आउसी-आरओसी की गुणवत्ता प्राप्त की।


नई श्रेणियों को क्लस्टर करना और हाइलाइट करना


मुख्य श्रेणियों के अलावा, हमारे पास "अन्य" श्रेणी है। इससे आप नए विषयों को उजागर कर सकते हैं।


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


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





शेष विचार


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

Source: https://habr.com/ru/post/hi417531/


All Articles