बेहतर बेयसियन फ़िल्टरिंग
जनवरी 2003
(यह लेख 2003 स्पैम सम्मेलन में एक वार्ता के रूप में दिया गया था। इसमें उस काम का वर्णन किया गया है जो मैंने स्पैम के लिए एक योजना में वर्णित एल्गोरिथम के प्रदर्शन को बेहतर बनाने के लिए किया है, और भविष्य में मैं क्या करने की योजना बना रहा हूँ।)
सबसे पहली खोज जो मैं यहाँ प्रस्तुत करना चाहूँगा वह है शोध पत्रों के आलसी मूल्यांकन के लिए एक एल्गोरिथम। बस जो चाहें लिखें और किसी पिछले काम का हवाला न दें, और क्रुद्ध पाठक आपको उन सभी पत्रों के संदर्भ भेजेंगे जिनका आपको हवाला देना चाहिए था। मैंने यह एल्गोरिथम ``स्पैम के लिए एक योजना'' [1] के स्लैशडॉट पर आने के बाद खोजा।
स्पैम फ़िल्टरिंग टेक्स्ट वर्गीकरण का एक उपसमुच्चय है, जो एक सुस्थापित क्षेत्र है, लेकिन बेयसियन स्पैम फ़िल्टरिंग के बारे में पहले पेपर 1998 में एक ही सम्मेलन में दिए गए दो थे, एक पैंटेल और लिन [2] द्वारा, और दूसरा माइक्रोसॉफ्ट रिसर्च [3] के एक समूह द्वारा।
जब मैंने इस काम के बारे में सुना तो मैं थोड़ा हैरान था। यदि लोग चार साल पहले बेयसियन फ़िल्टरिंग पर थे, तो हर कोई इसका उपयोग क्यों नहीं कर रहा था? जब मैंने पेपर पढ़े तो मुझे पता चला क्यों। पैंटेल और लिन का फ़िल्टर दोनों में अधिक प्रभावी था, लेकिन इसने केवल 92% स्पैम को पकड़ा, जिसमें 1.16% झूठे सकारात्मक थे।
जब मैंने एक बेयसियन स्पैम फ़िल्टर लिखने की कोशिश की, तो इसने 99.5% स्पैम को पकड़ा जिसमें .03% से कम झूठे सकारात्मक थे [4]। जब दो लोग एक ही प्रयोग कर रहे हों और उनके परिणाम बहुत भिन्न हों तो यह हमेशा चौंकाने वाला होता है। यह यहाँ विशेष रूप से चौंकाने वाला है क्योंकि उन दो संख्याओं के सेट विपरीत निष्कर्ष निकाल सकते हैं। विभिन्न उपयोगकर्ताओं की विभिन्न आवश्यकताएं होती हैं, लेकिन मुझे लगता है कि कई लोगों के लिए 92% फ़िल्टरिंग दर 1.16% झूठे सकारात्मक के साथ इसका मतलब है कि फ़िल्टरिंग एक स्वीकार्य समाधान नहीं है, जबकि 99.5% .03% से कम झूठे सकारात्मक के साथ इसका मतलब है कि यह है।
तो हमें इतने अलग नंबर क्यों मिले? मैंने पैंटेल और लिन के परिणामों को पुन: पेश करने की कोशिश नहीं की है, लेकिन पेपर को पढ़ने से मुझे पांच चीजें दिखाई देती हैं जो शायद अंतर का कारण हैं।
एक तो यह है कि उन्होंने अपने फ़िल्टर को बहुत कम डेटा पर प्रशिक्षित किया: 160 स्पैम और 466 गैर-स्पैम मेल। इतने छोटे डेटा सेट के साथ फ़िल्टर प्रदर्शन अभी भी बढ़ रहा होना चाहिए। तो उनके नंबर शायद उनके एल्गोरिथम के प्रदर्शन का सटीक माप भी नहीं हैं, न कि सामान्य रूप से बेयसियन स्पैम फ़िल्टरिंग का।
लेकिन मुझे लगता है कि सबसे महत्वपूर्ण अंतर शायद यह है कि उन्होंने संदेश हेडर को अनदेखा कर दिया। स्पैम फ़िल्टर पर काम करने वाले किसी भी व्यक्ति के लिए, यह एक विकृत निर्णय लगेगा। और फिर भी मेरे द्वारा लिखे गए पहले फ़िल्टर में, मैंने हेडर को भी अनदेखा कर दिया था। क्यों? क्योंकि मैं समस्या को साफ रखना चाहता था। मुझे तब मेल हेडर के बारे में ज्यादा पता नहीं था, और वे मुझे यादृच्छिक सामान से भरे लगते थे। फ़िल्टर लेखकों के लिए यहाँ एक सबक है: डेटा को अनदेखा न करें। आपको लगता होगा कि यह सबक इतना स्पष्ट है कि इसका उल्लेख करने की आवश्यकता नहीं है, लेकिन मुझे इसे कई बार सीखना पड़ा है।
तीसरा, पैंटेल और लिन ने टोकन को स्टेम किया, जिसका अर्थ है कि उन्होंने उदाहरण के लिए, मेलिंग'' और
मेलड'' दोनों को रूट ``मेल'' में कम कर दिया। वे ऐसा महसूस कर सकते थे कि वे अपने कॉर्पस के छोटे आकार के कारण ऐसा करने के लिए मजबूर थे, लेकिन अगर ऐसा है तो यह समय से पहले अनुकूलन का एक प्रकार है।
चौथा, उन्होंने संभावनाओं की गणना अलग तरह से की। उन्होंने सभी टोकन का उपयोग किया, जबकि मैंने केवल 15 सबसे महत्वपूर्ण का उपयोग किया। यदि आप सभी टोकन का उपयोग करते हैं तो आप लंबे स्पैम को याद कर सकते हैं, वह प्रकार जहाँ कोई आपको अपनी जीवन कहानी उस बिंदु तक बताता है जहाँ वे किसी बहु-स्तरीय विपणन योजना से अमीर हो गए थे। और ऐसा एल्गोरिथम स्पैमर्स के लिए नकली बनाना आसान होगा: स्पैम शब्दों का मुकाबला करने के लिए बस एक बड़ा यादृच्छिक पाठ जोड़ें।
अंत में, उन्होंने झूठे सकारात्मक के खिलाफ पक्षपात नहीं किया। मुझे लगता है कि किसी भी स्पैम फ़िल्टरिंग एल्गोरिथम में एक सुविधाजनक नॉब होना चाहिए जिसे आप फ़िल्टरिंग दर की कीमत पर झूठे सकारात्मक दर को कम करने के लिए घुमा सकते हैं। मैं गैर-स्पैम कॉर्पस में टोकन की घटनाओं को दोगुना गिनकर ऐसा करता हूं।
मुझे नहीं लगता कि स्पैम फ़िल्टरिंग को एक सीधी टेक्स्ट वर्गीकरण समस्या के रूप में मानना एक अच्छा विचार है। आप टेक्स्ट वर्गीकरण तकनीकों का उपयोग कर सकते हैं, लेकिन समाधान इस तथ्य को प्रतिबिंबित कर सकते हैं और चाहिए कि टेक्स्ट ईमेल है, और विशेष रूप से स्पैम। ईमेल सिर्फ टेक्स्ट नहीं है; इसकी एक संरचना है। स्पैम फ़िल्टरिंग सिर्फ वर्गीकरण नहीं है, क्योंकि झूठे सकारात्मक झूठे नकारात्मक से कहीं अधिक खराब होते हैं कि आपको उन्हें एक अलग प्रकार की त्रुटि के रूप में मानना चाहिए। और त्रुटि का स्रोत केवल यादृच्छिक भिन्नता नहीं है, बल्कि एक जीवित मानव स्पैमर है जो सक्रिय रूप से आपके फ़िल्टर को धोखा देने के लिए काम कर रहा है।
टोकन
स्लैशडॉट लेख के बाद मैंने जिस एक और परियोजना के बारे में सुना वह बिल येराज़ुनिस का CRM114 [5] था। यह सीधी टेक्स्ट क्लासिफायर का प्रति-उदाहरण है, लेकिन इतना आश्चर्यजनक रूप से प्रभावी है कि यह लगभग पूरी तरह से स्पैम को फ़िल्टर करने का प्रबंधन करता है, भले ही उसे पता न हो कि वह क्या कर रहा है।
एक बार जब मैंने समझ लिया कि CRM114 कैसे काम करता है, तो ऐसा लगा कि मुझे अंततः एकल शब्दों पर आधारित फ़िल्टरिंग से इस तरह के दृष्टिकोण पर जाना होगा। लेकिन पहले, मैंने सोचा, मैं देखूंगा कि मैं एकल शब्दों के साथ कितनी दूर जा सकता हूँ। और जवाब है, आश्चर्यजनक रूप से दूर।
ज्यादातर मैं स्मार्ट टोकनाइजेशन पर काम कर रहा हूँ। वर्तमान स्पैम पर, मैं CRM114 की दर के करीब फ़िल्टरिंग दर प्राप्त करने में सक्षम रहा हूँ। ये तकनीकें ज्यादातर बिल की तकनीकों से अलग हैं; एक इष्टतम समाधान दोनों को शामिल कर सकता है।
``स्पैम के लिए एक योजना'' एक टोकन की बहुत ही सरल परिभाषा का उपयोग करती है। अक्षर, अंक, डैश, एपोस्ट्रॉफी और डॉलर चिह्न घटक वर्ण हैं, और बाकी सब कुछ एक टोकन विभाजक है। मैंने केस को भी अनदेखा कर दिया।
अब मेरे पास एक अधिक जटिल टोकन परिभाषा है:
-
केस संरक्षित है।
-
विस्मयादिबोधक बिंदु घटक वर्ण हैं।
-
अवधि और अल्पविराम घटक होते हैं यदि वे दो अंकों के बीच आते हैं। यह मुझे आईपी पते और कीमतों को बरकरार रखने देता है।
-
$20-25 जैसी मूल्य सीमा दो टोकन, $20 और $25 उत्पन्न करती है।
-
To, From, Subject, और Return-Path लाइनों के भीतर, या यूआरएल के भीतर आने वाले टोकन को तदनुसार चिह्नित किया जाता है। उदा. विषय पंक्ति में
foo''
Subject*foo'' बन जाता है। (तारांकन कोई भी वर्ण हो सकता है जिसे आप घटक के रूप में अनुमति नहीं देते हैं।)
ऐसे उपाय फ़िल्टर की शब्दावली को बढ़ाते हैं, जिससे यह अधिक विभेदक बनता है। उदाहरण के लिए, वर्तमान फ़िल्टर में, विषय पंक्ति में ``free'' की स्पैम संभावना 98% है, जबकि बॉडी में वही टोकन केवल 65% संभावना रखता है।
यहाँ कुछ वर्तमान संभावनाएँ दी गई हैं [6]:
SubjectFREE 0.9999 free!! 0.9999 Tofree 0.9998 Subjectfree 0.9782 free! 0.9199 Free 0.9198 Urlfree 0.9091 FREE 0.8747 From*free 0.7636 free 0.6546
स्पैम फ़िल्टर के लिए योजना में, इन सभी टोकन की समान संभावना होती, .7602। उस फ़िल्टर ने लगभग 23,000 टोकन पहचाने। वर्तमान वाला लगभग 187,000 पहचानता है।
टोकन के बड़े ब्रह्मांड का नुकसान यह है कि चूक की अधिक संभावना है। अपने कॉर्पस को अधिक टोकन पर फैलाना वही प्रभाव डालता है जैसे उसे छोटा करना। यदि आप विस्मयादिबोधक बिंदुओं को घटक मानते हैं, उदाहरण के लिए, तो आप सात विस्मयादिबोधक बिंदुओं के साथ फ्री के लिए स्पैम संभावना नहीं पा सकते हैं, भले ही आप जानते हों कि केवल दो विस्मयादिबोधक बिंदुओं के साथ फ्री की संभावना 99.99% है।
इसका एक समाधान वह है जिसे मैं क्षरण कहता हूं। यदि आपको किसी टोकन के लिए सटीक मिलान नहीं मिल पाता है, तो उसे कम विशिष्ट संस्करण के रूप में मानें। मैं टर्मिनल विस्मयादिबोधक बिंदुओं, अपरकेस अक्षरों और पांच चिह्नित संदर्भों में से एक में आने को टोकन को अधिक विशिष्ट बनाने के रूप में मानता हूं। उदाहरण के लिए, यदि मुझे Subject*free!'' के लिए संभावना नहीं मिलती है, तो मैं
Subject*free'', free!'', और
free'' के लिए संभावनाओं की तलाश करता हूं, और जो भी .5 से सबसे दूर है उसे लेता हूं।
यहाँ वे विकल्प दिए गए हैं [7] जिन पर विचार किया जाता है यदि फ़िल्टर विषय पंक्ति में ``FREE!!!'' देखता है और उसके लिए संभावना नहीं है।
SubjectFree!!! Subjectfree!!! SubjectFREE! SubjectFree! Subjectfree! SubjectFREE SubjectFree Subjectfree FREE!!! Free!!! free!!! FREE! Free! free! FREE Free free
यदि आप ऐसा करते हैं, तो सभी अपरकेस और सभी लोअरकेस के साथ-साथ प्रारंभिक कैप वाले संस्करणों पर भी विचार करना सुनिश्चित करें। स्पैम में अधिक आज्ञार्थक मूड वाले वाक्य होते हैं, और उनमें पहला शब्द एक क्रिया होती है। इसलिए प्रारंभिक कैप वाली क्रियाओं में लोअरकेस की तुलना में अधिक स्पैम संभावनाएं होती हैं। मेरे फ़िल्टर में, Act'' की स्पैम संभावना 98% है और
act'' के लिए केवल 62%।
यदि आप अपनी फ़िल्टर की शब्दावली बढ़ाते हैं, तो आप एक ही शब्द को कई बार गिन सकते हैं, आपके ``समान'' की पुरानी परिभाषा के अनुसार। तार्किक रूप से, वे अब समान टोकन नहीं हैं। लेकिन अगर यह अभी भी आपको परेशान करता है, तो मैं अनुभव से जोड़ सकता हूं कि जिन शब्दों को आप कई बार गिनते हैं वे ठीक वही होते हैं जिन्हें आप चाहते हैं।
बड़े शब्दावली का एक और प्रभाव यह है कि जब आप आने वाले मेल को देखते हैं तो आपको अधिक दिलचस्प टोकन मिलते हैं, जिसका अर्थ है वे जिनकी संभावनाएं .5 से बहुत दूर हैं। मैं स्पैम के रूप में तय करने के लिए 15 सबसे दिलचस्प का उपयोग करता हूं। लेकिन आप एक निश्चित संख्या का उपयोग करते समय समस्या में पड़ सकते हैं। यदि आपको बहुत सारे अधिकतम दिलचस्प टोकन मिलते हैं, तो परिणाम समान रूप से दिलचस्प टोकन के क्रम को निर्धारित करने वाले किसी भी यादृच्छिक कारक द्वारा तय किया जा सकता है। इससे निपटने का एक तरीका कुछ को दूसरों की तुलना में अधिक दिलचस्प मानना है।
उदाहरण के लिए, टोकन dalco'' मेरे स्पैम कॉर्पस में 3 बार और मेरे वैध कॉर्पस में कभी नहीं आता है। टोकन
Url*optmails'' (यूआरएल के भीतर ``optmails'' का अर्थ) 1223 बार आता है। और फिर भी, जैसा कि मैं टोकन के लिए संभावनाओं की गणना करता था, दोनों की स्पैम संभावना समान होती, .99 की सीमा।
यह सही नहीं लगता। इन दो टोकन को काफी अलग संभावनाएं देने के लिए सैद्धांतिक तर्क हैं (पैंटेल और लिन करते हैं), लेकिन मैंने अभी तक ऐसा नहीं किया है। कम से कम ऐसा लगता है कि यदि हमें 15 से अधिक टोकन मिलते हैं जो केवल एक कॉर्पस या दूसरे में आते हैं, तो हमें उन लोगों को प्राथमिकता देनी चाहिए जो बहुत अधिक आते हैं। इसलिए अब दो सीमा मान हैं। केवल स्पैम कॉर्पस में पाए जाने वाले टोकन के लिए, यदि वे 10 बार से अधिक आते हैं तो संभावना .9999 है और अन्यथा .9998 है। इसी तरह पैमाने के दूसरे छोर पर उन टोकन के लिए जो केवल वैध कॉर्पस में पाए जाते हैं।
मैं बाद में टोकन संभावनाओं को काफी हद तक स्केल कर सकता हूं, लेकिन यह छोटी सी स्केलिंग कम से कम यह सुनिश्चित करती है कि टोकन सही तरीके से क्रमबद्ध हों।
एक और संभावना 15 टोकन पर विचार करना होगा, बल्कि दिलचस्पता की एक निश्चित सीमा से ऊपर के सभी टोकन पर। स्टीवन हॉसर अपने सांख्यिकीय स्पैम फ़िल्टर [8] में ऐसा करते हैं। यदि आप एक सीमा का उपयोग करते हैं, तो इसे बहुत अधिक रखें, या स्पैमर्स आपको अधिक निर्दोष शब्दों से भरे संदेशों को पैक करके नकली बना सकते हैं।
अंत में, एचटीएमएल के बारे में क्या करना चाहिए? मैंने विकल्पों के पूरे स्पेक्ट्रम को आज़माया है, इसे अनदेखा करने से लेकर इसे पूरी तरह से पार्स करने तक। एचटीएमएल को अनदेखा करना एक बुरा विचार है, क्योंकि यह उपयोगी स्पैम संकेतों से भरा है। लेकिन यदि आप इसे पूरी तरह से पार्स करते हैं, तो आपका फ़िल्टर एक साधारण एचटीएमएल पहचानकर्ता में पतित हो सकता है। सबसे प्रभावी दृष्टिकोण मध्य मार्ग लगता है, कुछ टोकन को नोटिस करना लेकिन दूसरों को नहीं। मैं a, img, और font टैग को देखता हूं, और बाकी को अनदेखा करता हूं। लिंक और चित्र आपको निश्चित रूप से देखने चाहिए, क्योंकि उनमें यूआरएल होते हैं।
मैं शायद एचटीएमएल से निपटने में अधिक स्मार्ट हो सकता हूं, लेकिन मुझे नहीं लगता कि इसमें बहुत समय लगाना इसके लायक है। एचटीएमएल से भरे स्पैम को फ़िल्टर करना आसान है। अधिक स्मार्ट स्पैमर पहले से ही इससे बचते हैं। इसलिए भविष्य में प्रदर्शन एचटीएमएल से निपटने के तरीके पर बहुत अधिक निर्भर नहीं करेगा।
प्रदर्शन
10 दिसंबर 2002 और 10 जनवरी 2003 के बीच मुझे लगभग 1750 स्पैम मिले। इनमें से, 4 निकल गए। यह लगभग 99.75% की फ़िल्टरिंग दर है।
मुझे छूटे हुए चार स्पैम में से दो इसलिए निकल गए क्योंकि उन्होंने संयोग से ऐसे शब्दों का इस्तेमाल किया जो मेरे वैध ईमेल में अक्सर आते हैं।
तीसरा उन लोगों में से एक था जो तीसरे पक्ष को मेल भेजने के लिए एक असुरक्षित CGI स्क्रिप्ट का फायदा उठाते हैं। उन्हें केवल सामग्री के आधार पर फ़िल्टर करना मुश्किल होता है क्योंकि हेडर निर्दोष होते हैं और वे जिन शब्दों का उपयोग करते हैं उनके बारे में सावधान रहते हैं। फिर भी मैं उन्हें आमतौर पर पकड़ सकता हूं। यह एक .88 की संभावना के साथ निकल गया, जो .9 की सीमा से ठीक नीचे था।
बेशक, एकाधिक टोकन अनुक्रमों को देखने से यह आसानी से पकड़ा जा सकता है। ``नीचे आपके फीडबैक फॉर्म का परिणाम है'' एक तत्काल संकेत है।
चौथा स्पैम वह था जिसे मैं भविष्य का स्पैम कहता हूं, क्योंकि मुझे उम्मीद है कि स्पैम इसमें विकसित होगा: कुछ पूरी तरह से तटस्थ पाठ के बाद एक यूआरएल। इस मामले में यह किसी ऐसे व्यक्ति से था जिसने कहा कि उन्होंने आखिरकार अपना होमपेज पूरा कर लिया है और क्या मैं इसे देखूंगा। (पृष्ठ निश्चित रूप से एक पोर्न साइट के लिए एक विज्ञापन था।)
यदि स्पैमर हेडर के बारे में सावधान रहते हैं और एक नया यूआरएल उपयोग करते हैं, तो भविष्य के स्पैम में फ़िल्टर के लिए कुछ भी ध्यान देने योग्य नहीं है। हम निश्चित रूप से एक क्रॉलर भेजकर पृष्ठ को देख सकते हैं। लेकिन यह आवश्यक नहीं हो सकता है। भविष्य के स्पैम के लिए प्रतिक्रिया दर कम होनी चाहिए, या हर कोई इसे कर रहा होगा। यदि यह पर्याप्त रूप से कम है, तो यह स्पैमर्स के लिए इसे भेजने के लिए भुगतान नहीं करेगा, और हमें इसे फ़िल्टर करने के लिए बहुत अधिक काम नहीं करना पड़ेगा।
अब वास्तव में चौंकाने वाली खबर के लिए: उसी एक महीने की अवधि के दौरान मुझे तीन झूठे सकारात्मक मिले।
एक तरह से कुछ झूठे सकारात्मक मिलना राहत की बात है। जब मैंने ``स्पैम के लिए एक योजना'' लिखी थी तो मेरे पास कोई नहीं था, और मुझे नहीं पता था कि वे कैसे होंगे। अब जब मुझे कुछ मिल गए हैं, तो मुझे यह जानकर राहत मिली है कि वे उतने बुरे नहीं हैं जितना मुझे डर था। सांख्यिकीय फ़िल्टर द्वारा उत्पन्न झूठे सकारात्मक ऐसे मेल होते हैं जो स्पैम की तरह लगते हैं, और ये वे होते हैं जिन्हें आप सबसे कम याद करना चाहेंगे [9]।
दो झूठे सकारात्मक उन कंपनियों से न्यूज़लेटर थे जिनसे मैंने चीजें खरीदी थीं। मैंने उन्हें कभी प्राप्त करने के लिए नहीं कहा, इसलिए बहस के अनुसार वे स्पैम थे, लेकिन मैं उन्हें झूठे सकारात्मक के रूप में गिनता हूं क्योंकि मैंने उन्हें पहले स्पैम के रूप में हटाना शुरू नहीं किया था। फ़िल्टर द्वारा उन्हें पकड़ने का कारण यह था कि दोनों कंपनियों ने जनवरी में अपने सर्वर से मेल भेजने के बजाय वाणिज्यिक ईमेल प्रेषकों का उपयोग करना शुरू कर दिया था, और हेडर और बॉडी दोनों अधिक स्पैमी हो गए थे।
तीसरा झूठा सकारात्मक एक बुरा था, हालांकि। यह मिस्र के किसी व्यक्ति से था और सभी अपरकेस में लिखा गया था। यह केस को संवेदनशील बनाने का सीधा परिणाम था; स्पैम फ़िल्टर के लिए योजना ने इसे नहीं पकड़ा होता।
समग्र झूठे सकारात्मक दर क्या है, यह कहना मुश्किल है, क्योंकि हम सांख्यिकीय रूप से शोर में हैं। जिसने भी फ़िल्टर पर काम किया है (कम से कम, प्रभावी फ़िल्टर) वह इस समस्या से अवगत होगा। कुछ ईमेल के साथ यह कहना मुश्किल है कि वे स्पैम हैं या नहीं, और ये वे हैं जिन्हें आप वास्तव में तंग फ़िल्टर प्राप्त करने पर देखते हैं। उदाहरण के लिए, अब तक फ़िल्टर ने दो ईमेल पकड़े हैं जो एक टाइपो के कारण मेरे पते पर भेजे गए थे, और एक मुझे किसी और के विश्वास में भेजा गया था। बहस के अनुसार, ये न तो मेरे स्पैम हैं और न ही मेरे गैर-स्पैम मेल।
एक और झूठा सकारात्मक Virtumundo के एक उपाध्यक्ष से था। मैंने उन्हें एक ग्राहक होने का नाटक करते हुए लिखा था, और चूंकि जवाब Virtumundo के मेल सर्वर के माध्यम से वापस आया था, इसलिए इसमें सबसे अधिक दोषी हेडर थे। बहस के अनुसार यह भी कोई वास्तविक झूठा सकारात्मक नहीं है, बल्कि एक प्रकार का हाइजेनबर्ग अनिश्चितता प्रभाव है: मुझे यह केवल इसलिए मिला क्योंकि मैं स्पैम फ़िल्टरिंग के बारे में लिख रहा था।
इनको छोड़कर, मेरे पास अब तक कुल पांच झूठे सकारात्मक मिले हैं, लगभग 7740 वैध ईमेल में से, .06% की दर से। अन्य दो एक सूचना थी कि मैंने जो खरीदा था वह बैक-ऑर्डर पर था, और Evite से एक पार्टी अनुस्मारक।
मुझे नहीं लगता कि इस संख्या पर भरोसा किया जा सकता है, आंशिक रूप से क्योंकि नमूना बहुत छोटा है, और आंशिक रूप से क्योंकि मुझे लगता है कि मैं फ़िल्टर को इनमें से कुछ को न पकड़ने के लिए ठीक कर सकता हूँ।
झूठे सकारात्मक मुझे झूठे नकारात्मक से एक अलग प्रकार की त्रुटि लगते हैं। फ़िल्टरिंग दर प्रदर्शन का एक उपाय है। झूठे सकारात्मक को मैं बग की तरह मानता हूं। मैं फ़िल्टरिंग दर में सुधार को अनुकूलन के रूप में और झूठे सकारात्मक को कम करने को डिबगिंग के रूप में देखता हूं।
तो ये पांच झूठे सकारात्मक मेरी बग सूची हैं। उदाहरण के लिए, मिस्र से आया मेल इसलिए पकड़ा गया क्योंकि अपरकेस टेक्स्ट ने इसे नाइजीरियाई स्पैम की तरह दिखाया। यह वास्तव में एक प्रकार का बग है। एचटीएमएल की तरह, ईमेल का पूरी तरह से अपरकेस होना वास्तव में वैचारिक रूप से एक सुविधा है, न कि प्रत्येक शब्द के लिए एक। मुझे केस को अधिक परिष्कृत तरीके से संभालना होगा।
तो इस .06% का क्या मतलब है? मुझे नहीं लगता कि बहुत कुछ। आप इसे एक ऊपरी सीमा के रूप में मान सकते हैं, छोटे नमूना आकार को ध्यान में रखते हुए। लेकिन इस स्तर पर यह मेरे कार्यान्वयन में बग का एक माप है, न कि बेयसियन फ़िल्टरिंग की कोई आंतरिक झूठी सकारात्मक दर।
भविष्य
आगे क्या? फ़िल्टरिंग एक अनुकूलन समस्या है, और अनुकूलन की कुंजी प्रोफाइलिंग है। यह अनुमान लगाने की कोशिश न करें कि आपका कोड कहाँ धीमा है, क्योंकि आप गलत अनुमान लगाएंगे। देखें कि आपका कोड कहाँ धीमा है, और उसे ठीक करें। फ़िल्टरिंग में, यह अनुवाद करता है: उन स्पैम को देखें जिन्हें आप चूक जाते हैं, और पता करें कि आप उन्हें पकड़ने के लिए क्या कर सकते थे।
उदाहरण के लिए, स्पैमर अब फ़िल्टर से बचने के लिए आक्रामक रूप से काम कर रहे हैं, और वे जो चीजें कर रहे हैं उनमें से एक शब्दों को तोड़ना और गलत वर्तनी करना है ताकि फ़िल्टर उन्हें पहचान न सकें। लेकिन इस पर काम करना मेरी पहली प्राथमिकता नहीं है, क्योंकि मुझे अभी भी इन स्पैम को पकड़ने में कोई समस्या नहीं है [10]।
दो प्रकार के स्पैम हैं जिनसे मुझे वर्तमान में समस्या हो रही है। एक वह प्रकार है जो एक महिला से ईमेल होने का नाटक करता है जो आपको उसके साथ चैट करने या डेटिंग साइट पर उसकी प्रोफ़ाइल देखने के लिए आमंत्रित करता है। ये इसलिए निकल जाते हैं क्योंकि वे बिक्री की बात किए बिना बिक्री पिच का एकमात्र प्रकार हैं। वे सामान्य ईमेल के समान शब्दावली का उपयोग करते हैं।
स्पैम फ़िल्टर करने में मुझे जिन अन्य प्रकार की स्पैम से परेशानी होती है, वे बुल्गारिया की कंपनियों से अनुबंध प्रोग्रामिंग सेवाएं प्रदान करती हैं। ये इसलिए निकल जाते हैं क्योंकि मैं भी एक प्रोग्रामर हूँ, और स्पैम मेरे वास्तविक मेल के समान शब्दों से भरे होते हैं।
मैं शायद पहले व्यक्तिगत विज्ञापन प्रकार पर ध्यान केंद्रित करूँगा। मुझे लगता है कि अगर मैं करीब से देखूंगा तो मैं इनके और मेरे वास्तविक मेल के बीच सांख्यिकीय अंतर ढूंढ पाऊंगा। लेखन की शैली निश्चित रूप से अलग है, हालांकि इसे पकड़ने के लिए बहु-शब्द फ़िल्टरिंग की आवश्यकता हो सकती है। साथ ही, मैं देखता हूं कि वे यूआरएल को दोहराते हैं, और कोई व्यक्ति वैध मेल में यूआरएल शामिल करने वाला ऐसा नहीं करेगा [11]।
आउटसोर्सिंग प्रकार को पकड़ना मुश्किल होगा। भले ही आप साइट पर एक क्रॉलर भेजें, आपको कोई धूम्रपान सांख्यिकीय बंदूक नहीं मिलेगी। शायद एकमात्र जवाब केंद्रीय डोमेन की सूची है जो स्पैम में विज्ञापित होती है [12]। लेकिन इस प्रकार के मेल की संख्या बहुत अधिक नहीं हो सकती है। यदि केवल स्पैम बुल्गारिया से अनुबंध प्रोग्रामिंग सेवाओं के अवांछित प्रस्ताव थे, तो हम सभी शायद कुछ और काम करने के लिए आगे बढ़ सकते हैं।
क्या सांख्यिकीय फ़िल्टरिंग हमें वास्तव में उस बिंदु तक ले जाएगी? मुझे नहीं पता। अभी, मेरे लिए व्यक्तिगत रूप से, स्पैम कोई समस्या नहीं है। लेकिन स्पैमर्स ने अभी तक सांख्यिकीय फ़िल्टर को नकली बनाने का कोई गंभीर प्रयास नहीं किया है। जब वे करेंगे तो क्या होगा?
मैं नेटवर्क स्तर पर काम करने वाले फ़िल्टर के बारे में आशावादी नहीं हूँ [13]। जब कोई स्थिर बाधा होती है जिसे पार करना लायक होता है, तो स्पैमर उसे पार करने में काफी कुशल होते हैं। पहले से ही Assurance Systems नाम की एक कंपनी है जो आपके मेल को Spamassassin के माध्यम से चलाएगी और आपको बताएगी कि यह फ़िल्टर हो जाएगा या नहीं।
नेटवर्क-स्तरीय फ़िल्टर पूरी तरह से बेकार नहीं होंगे। वे सभी