किसी Telegram समुदाय का moderation एक सुलझी हुई समस्या लगता है, जब तक आप सचमुच एक न चलाएँ। दस हज़ार लोगों का एक ग्रुप संदेशों की एक बाढ़ पैदा करता है, और उसमें दबे होते हैं वे spammers जिन्होंने बरसों लगाकर सीखा है कि आपके लिखे हर भोले फ़िल्टर को कैसे चकमा दिया जाए। वे scripts मिलाते हैं, zero-width अक्षर डालते हैं, अपनी बात तीस भाषाओं में अनुवादित करते हैं, और blocklist के पकड़ने से भी तेज़ी से शब्द बदलते रहते हैं।

Telm उसी का हमारा जवाब है। इसके पीछे का डिज़ाइन-सिद्धांत यह है कि spam पहचानना एक साथ दो समस्याएँ हैं: इसे इतना तेज़ होना है कि संदेश देखे जाने से पहले कार्रवाई कर दे, और इतना सटीक कि असली सदस्यों को सज़ा न दे। ये लक्ष्य उलटी दिशाओं में खींचते हैं — सबसे सटीक जाँच सबसे धीमी भी होती है — इसलिए किसी एक को चुनने की बजाय, हमने तीन परतों की एक pipeline बनाई, जिसमें हर परत वह पकड़ती है जो पिछली नहीं पकड़ सकी और सिर्फ़ कठिन मामले आगे सौंपती है।

पहली परत: rule engine

पहली परत एक हाथ से ट्यून किया गया rule engine है, और अधिकांश काम यही करती है। यह 200 से ज़्यादा patterns संभालती है जो उस spam को ढँकते हैं जो कभी सचमुच नहीं बदलता: crypto-pump के निमंत्रण, नक़ली नौकरी के प्रस्ताव, "आसान पैसे के लिए मुझे DM करो," phishing links, और उन्हें फ़िल्टरों से पार तस्करी करने के लिए इस्तेमाल होने वाली obfuscation की चालें।

इसे कारगर बनाने वाली दो चीज़ें हैं विस्तार और गति।

  • यह मिलान से पहले टेक्स्ट को normalize करती है — मिलते-जुलते दिखने वाले Unicode अक्षरों को मोड़ना, zero-width spaces हटाना, उन homoglyph चालों को ढहाना जो "invest" को एक ऐसी string में बदल देती हैं जो हूबहू वैसी दिखती है पर है नहीं। Spammers इस पर टिके रहते हैं कि आपका regex वह देखे जो इंसानी आँख देखती है उससे अलग हो; normalization उस खाई को पाट देती है।
  • यह 30+ भाषाएँ ढँकती है, क्योंकि जो नियम सिर्फ़ अंग्रेज़ी जानता है वह दुनिया के अधिकांश spam के प्रति अंधा है।
  • यह 10 मिलीसेकंड से कम में चलती है। यही वह संख्या है जो Telm को किसी संदेश को कमरे के सचमुच देखने से पहले हटा देने देती है, नुक़सान हो जाने के बाद नहीं।

Rule engine अकेले ही ज़बरदस्त बहुमत वाले spam को पकड़ लेती है। लेकिन नियमों की एक हद होती है: वे सिर्फ़ वही जानते हैं जो उन्हें बताया गया है, और कोई सचमुच नया घोटाला किसी pattern से मेल नहीं खाएगा। अगली परतें इसीलिए हैं।

दूसरी परत: AI classifier

जब कोई संदेश नियमों से बच निकलता है पर फिर भी संदिग्ध लगता है — एक असामान्य link, पोस्ट करने का कोई अजीब ढंग, पहली बार पोस्ट करने वाला कोई व्यक्ति जिसका संदेश किसी pitch जैसा दिखता है — तो वह एक machine-learning classifier के पास जाता है जो labeled spam और वैध संदेशों पर प्रशिक्षित है।

Classifier वह सब पकड़ता है जिसे नियम शब्दों में नहीं बाँध सकते: किसी घोटाले का लहजा, किसी हेरफेर की कोशिश की बनावट, ऐसे संदेश का आकार जो तकनीकी रूप से साफ़ है पर सांख्यिकीय रूप से spam जैसा। दिक़्क़त यह है कि model inference महँगा है, और इसे हर संदेश पर चलाना उस latency बजट को उड़ा देगा जिसे बचाने में rule engine इतनी मेहनत करती है।

इसलिए classifier एक cache के पीछे बैठता है। Spam लहरों में आता है — वही अभियान मिनटों के भीतर लगभग एक जैसे संदेशों के साथ कई ग्रुपों पर टकराता है। हम cache की key संदेश के एक normalized fingerprint पर रखते हैं, ताकि किसी अभियान का पहला उदाहरण पूरी inference लागत चुकाए और हर बाद की कॉपी एक cache hit हो। व्यवहार में, cache दोहराए गए traffic का बड़ा हिस्सा सोख लेता है, और model सचमुच केवल असल में नई सामग्री पर ही चलता है।

message ──▶ normalize ──▶ rule engine  (<10ms, 200+ patterns)
                              │ uncertain
                              ▼
                        fingerprint cache ──hit──▶ verdict
                              │ miss
                              ▼
                        AI classifier ──▶ verdict + cache write

तीसरी परत: semantic memory

तीसरी परत ही वह है जो Telm को समय के साथ चकमा देना मुश्किल बना देती है। Spammers एक ही संदेश दो बार नहीं भेजते — वे शब्द बदल देते हैं। "हमारे exclusive signals group में शामिल हों" बन जाता है "हमारे private trading channel तक पहुँच पाएँ," जो बन जाता है वही प्रस्ताव पुर्तगाली में। एक fingerprint cache तीन अलग strings देखता है। एक इंसान एक ही घोटाला देखता है।

Semantic memory इस खाई को टेक्स्ट की बजाय अर्थ पर काम करके पाटती है। जब कोई संदेश spam के रूप में पुष्ट होता है, तो Telm एक embedding संग्रहित करता है — एक संख्यात्मक vector जो पकड़ता है कि संदेश का मतलब क्या है, न कि उसकी वर्तनी क्या है। नए संदेश भी embed किए जाते हैं, और समानता के आधार पर उस memory से तुलना किए जाते हैं। कोई शब्द-फेर, कोई अनुवाद, कोई नए शब्दों वाला pitch — ये सब vector space में मूल के पास आ गिरते हैं, भले ही उनमें लगभग कोई अक्षर साझा न हो।

यही Telm को किसी घोटाले का दूसरा, तीसरा और सौवाँ रूप पकड़ने देता है, जबकि वह उसे केवल एक बार दिखाया गया हो। Rule engine ज्ञात को संभालती है, classifier नए को संभालता है, और semantic memory उत्परिवर्तित को संभालती है — spam की वह लंबी पूँछ जो ठीक इसीलिए बची रहती है क्योंकि वह कभी हूबहू शब्दश: नहीं दोहराती।

CAS blocklist

हर बचाव को स्थानीय रूप से गणना करने की ज़रूरत नहीं। Telm, Combot Anti-Spam blocklist (CAS) को एकीकृत करता है — एक वैश्विक, समुदाय द्वारा संभाला गया रजिस्टर उन अकाउंटों का जो Telegram परितंत्र भर में पहले से spammers के रूप में पुष्ट हो चुके हैं।

CAS का मूल्य यह है कि यह किसी संदेश के अस्तित्व में आने से पहले कार्रवाई करता है। जब कोई ज्ञात-ख़राब अकाउंट शामिल होने या पोस्ट करने की कोशिश करता है, तो Telm उसे देखते ही ban कर सकता है — कोई सामग्री विश्लेषण करने को नहीं, कोई inference चलाने को नहीं, क्योंकि पहचान ख़ुद ही संकेत है। यह सबसे सस्ती संभव जाँच है और यह बुरे कर्ताओं का एक अच्छा-ख़ासा हिस्सा हटा देता है, इससे पहले कि detection pipeline को उनके बारे में सोचना भी पड़े।

Monitoring Mode: भरोसा होने के बाद ही कार्रवाई

एक moderation बॉट जो ग़लत फ़ैसला करता है, वह किसी बॉट के न होने से भी बुरा है। पहले ही दिन किसी असली सदस्य का संदेश हटा दीजिए और आपने समुदाय को यह टूल पर भरोसा न करना सिखा दिया। इसलिए हर नया ग्रुप Telm को Monitoring Mode में शुरू करता है।

इस मोड में, Telm देखता और रिपोर्ट करता है पर किसी चीज़ को छूता नहीं। हर संदेश के लिए, यह वह कार्रवाई दर्ज करता है जो यह *करता* — delete, mute, ban — और आपको दिखाता है, असल में उनमें से कुछ किए बिना। आपको ठीक-ठीक देखने को मिलता है कि आपके समुदाय के असल traffic, आपके असल सदस्यों के विरुद्ध pipeline कैसा बर्ताव करती है, इससे पहले कि उसे कार्रवाई की अनुमति मिले।

यह दो काम करता है। यह न्यायोचित भरोसा बनाता है: आप Telm को active तभी करते हैं जब आपने उसके फ़ैसलों को अपने निर्णय से मेल खाते देख लिया हो। और यह ट्यूनिंग के लिए एक सुरक्षा-जाल है — अगर कोई ख़ास नियम आपके ग्रुप की संस्कृति के लिए बहुत आक्रामक है, तो आपको यह एक रिपोर्ट में पता चलता है, न कि किसी ग़ुस्साए सदस्य के संदेश में जिसे "मेरा प्रोजेक्ट देखो" कहने पर ban कर दिया गया।

Monitoring Mode, एक मायने में, एक ही सुविधा में समाई पूरी फ़िलॉसफ़ी है। Detection आक्रामक हो सकता है क्योंकि activation रूढ़िवादी है। यह कार्रवाई करे उससे पहले आप देख लेते हैं, और जब तक यह कार्रवाई करता है, तब तक आप जान चुके होते हैं कि यह सही है।