2012-01-13 5 views
7

मैं एक एल्गोरिथ्म जो एक छोटी (fx 16 वर्ण (महत्वपूर्ण नहीं) hashCode उत्पन्न कर सकते हैं/एक लंबे समय तक स्ट्रिंग से पचाने के लिए देख रहा हूँ।अजगर डाइजेस्ट/हैश

मुख्य आवश्यकता है जो तार कि है लगभग समान ही डाइजेस्ट में परिणाम चाहिए

Fx 2 लगभग समान मेल:।।।।

हाय मार्टिन यहाँ कुछ ... आप के लिए स्पैम सादर XYZ => AAAA AAAA AAAA AAAA हैं

हाय बो। यहाँ कुछ हैं ... आपके लिए स्पैम। विनम्र ईएफजी। => AAAA AAAA AAAA AAAA

रिटर्न ही diges (या लगभग एक ही), जहां एक अलग मेल के रूप में:

हैलो फिन। यह एक टेस्ट मेल है। => सीसीसीसी सीसीसीसी सीसीसीसी सीसीसीसी

एक अलग डाइजेस्ट लौटाएगा।

यह एल्गोरिदम स्पैम फ़िल्टर का हिस्सा होगा। फिल्टर मेल से digests याद करेगा जो निश्चित है कि यह स्पैम है। यदि एक ही पाचन मेल में दिखाई देता है जहां यह संदेह में है, तो समान पाचन फ़िल्टर को स्पैमकोर को बढ़ाने का कारण बनता है।

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

शायद कुछ ढीले संपीड़न एल्गोरिदम दोनों के बीच लेवेनशेटिन दूरी के एक कैल्क के साथ मिलकर काम कर सकते हैं।

किसी भी पॉइंटर्स की सराहना की।

+0

'समान स्ट्रिंग हैश' के लिए एक सरल खोज रिटर्न इस सवाल के डुप्लिकेट के स्कोर है की व्याख्या की। –

उत्तर

9

ऐसा लगता है कि आप locality-sensitive hashing चाहते हैं। minhash या शिंगलिंग का उपयोग करने पर विचार करें। राजारामन & उलमैन की पुस्तक, Mining Massive Datasets दोनों में एक महान स्पष्टीकरण है। आपको उपरोक्त कीवर्ड के लिए पाइथन खोज ब्लॉग में कई, लघु कार्यान्वयन मिलेगा।

इस के लिए अन्य तरीकों (है कि मैं के बारे में ज्यादा पता नहीं है) होने लगते हैं, लेकिन जब से वे विशेष रूप से स्पैम संदेशों के लिए, विशेष रूप से nilsimsa हैश अनुरूप हैं कि आपकी रुचि का हो सकता है:

+0

कि pypi pypy नहीं है, pypy एक अजगर दुभाषिया है, pypi पायथन पैकेज सूचकांक है। – fijal

+0

बेशक! माफ़ कीजिये। सही किया। – huitseeker