2011-05-20 15 views
9

से मेल खाने वाले पते की आवश्यकता है, मैंने इसके लिए ऑनलाइन देखा है लेकिन वास्तव में बहुत कुछ नहीं मिला है। मूल रूप से मुझे यह पता लगाने के लिए पते के समूह की तुलना करने की आवश्यकता है कि वे मेल खाते हैं या नहीं। पते सभी अलग-अलग तरीकों से लिखे जा सकते हैं। उदाहरण के लिए: 1345 135 वें सेंट एनई, 1345 एनई 135TH एसटी, आदि। साथ ही वे अलग-अलग भाषाओं में भी हो सकते हैं। इससे पहले कि मैं अपने आप पर कुछ पार्सिंग मिलान एल्गोरिदम लिखने का प्रयास करता हूं, क्या कोई भी पुस्तकालयों या तरीकों को जानता है जो मैं आसानी से कर सकता हूं? मेरा दोस्त गूगल या बिंग मैप्स वेब सेवा का उपयोग करने और उन्हें पते पारित करने और भू-निर्देशांक वापस पाने और स्ट्रिंग मिलान के बजाय निर्देशांक का उपयोग करके तुलना करने की तुलना में। लेकिन फिर मुझे इन सभी पतों के लिए हजारों बार वेब सेवा कॉल करना है, जो बहुत ही सुरुचिपूर्ण नहीं है;) कोई मदद अच्छी होगी :)मुझे एल्गोरिदम

उत्तर

3

मुझे नहीं लगता कि यह एक रेगेक्स प्रकार की समस्या है। आप पहले तुलनीय प्रारूप में परिवर्तित करने के लिए देख रहे हैं।

कई वेब सेवाएं/उत्पाद उपलब्ध हैं जो आपके लिए एक पता मानकीकृत करेंगे। "यूएसपीएस एड्रेस मानकीकरण एपीआई" के लिए बिंग और आपको जानकारी का एक टन मिलेगा। एक बार पता मानकीकृत हो जाने पर, तुलना सरल होनी चाहिए।

http://www.bing.com/search?q=usps+address+standardization+api&go=&form=QBRE&qs=n&sk=&sc=1-32

वैकल्पिक रूप से आप निर्देशांकों के एक सेट प्राप्त करने के लिए पता geocode सकते हैं और फिर उन की तुलना करें।

http://code.google.com/apis/maps/documentation/geocoding/

+0

Google कोड आपको "उचित रूप से स्वरूपित पता" वापस करने की अनुमति देता है लेकिन मुझे लगता है कि कई एपीआई कॉल के बाद आपको भुगतान करना होगा या कुछ करना होगा। – jcolebrand

3

मैं 2 विकल्प मिल गया।

सबसे पहले, शायद, कोई इनपुट लेने के बजाय, आप उपयोगकर्ताओं को सीमित संख्या में विकल्पों को चुनने दें, जैसे कि फेसबुक पते के साथ कैसे काम करता है। यदि आप एक स्वत: पूर्ण एपीआई का उपयोग करते हैं, जैसा कि वे टाइप करते हैं, तो संभावित पते एपीआई द्वारा संकुचित किए जाएंगे। यहाँ गूगल से एक है:

http://code.google.com/p/geo-autocomplete/

दूसरे, पता खोजने & योग्यता (लेकिन वे मुक्त arn't):

https://www.craftyclicks.co.uk/

https://smartystreets.com/ (पहले योग्य पता)

https://www.alliescomputing.com/ (पहले पेश किए गए विश्व पते)

1

इसके लिए खुफिया जानकारी सही ढंग से करने की आवश्यकता है; कंप्यूटर बुद्धिमान नहीं हैं।

एक साधारण एल्गोरिथ्म आप बता सकते हैं जो पते, "1345 135 वां सेंट NE" और "1345 NE 135TH ST" उदाहरण के लिए, आम में कुछ है संख्या "1345" आम में है।

आपके पास तुलना करने के लिए कम होगा। यह आपके द्वारा geolocate संख्या को भी कम करेगा।

1

आपको डुप्लिकेट डिटेक्शन विधियों described here प्रति CASS सॉफ़्टवेयर like this की आवश्यकता है।

2

अमेरिकी पते (आमतौर पर) डिलीवरी पॉइंट (डीपीबीसी) नामक 12-अंकों की संख्या द्वारा विशिष्ट रूप से प्रतिनिधित्व किए जा सकते हैं। इस संख्या में 9 अंकों का ज़िप कोड और 3 अंकों का डिलीवरी पॉइंट नंबर शामिल है। डिलीवरी तेज करने के लिए मेल टुकड़ों पर बारकोड बनाने के लिए इसका उपयोग किया जाता है। सीएएसएस-सर्टिफाइड वाली सेवा का उपयोग करना 12-अंकों का वितरण बिंदु और यहां तक ​​कि आपके लिए ध्वज डुप्लीकेट भी प्रदान कर सकता है।

पूर्ण प्रकटीकरण के हित में मैं SmartyStreets के लिए काम करता हूं, जो पहले योग्यता वाला पता था, जिसका उत्तर Mowgli द्वारा दूसरे उत्तर में किया गया था।

हम एक एपीआई प्रदान करते हैं जिसे एक बैच प्रसंस्करण सेवा के साथ-साथ ऊपर वर्णित अनुसार डुप्लीकेट ध्वजांकित किया जा सकता है) प्रदान किया जा सकता है।

ध्यान रखें कि 12 अंकों वाला डीपीबीसी हमेशा एक विशेष पते की विशिष्ट पहचान नहीं करता है। यह अक्सर होता है जब एक विशेष सड़क ब्लॉक, या 9-अंक ज़िप कोड, घरों का एक लंबा हिस्सा है जिसमें समान प्राथमिक संख्याएं होती हैं। इन मामलों में, पते को मानकीकृत और मान्य करने के लिए सीएएसएस सेवा का उपयोग करना सबसे अच्छा है, फिर उन्हें सुविधाजनक तुलना के लिए हैश करें। (लेकिन जैसे कहा, डुप्लिकेट पहले से ही कुछ CASS सेवाओं द्वारा चिह्नित किए गए जाएगा।)

अद्यतन: SmartyStreets अब international address verification प्रदान करता है।

+0

ज़िप प्लस 5 कोड असाइन करने की संभावना बाद में तुलना करने का सबसे अच्छा तरीका होगा। कोड को असाइन करने के लिए पूर्ण पता डेटाबेस में मिलान और लुकअप की आवश्यकता होती है। –

+1

नहीं, बस ज़िप + 4 कोड (9-अंक) होने के कारण पर्याप्त नहीं है। माध्यमिक जानकारी (अपार्टमेंट नंबर, डिस्क्रिप्टर, इत्यादि) हो सकती हैं जो केवल 12 अंकों के डिलीवरी प्वाइंट बारकोड में मिलती हैं (जिसमें 9 अंकों वाला ज़िप कोड प्लस डिलीवरी पॉइंट और चेक-डिजिट होता है)। (यह निश्चित रूप से, अमेरिकी पते पर विशिष्ट है) – mdwhatcott

2

रिकॉर्ड deduplication/इकाई संकल्प के लिए एक ओपन सोर्स पायथन लाइब्रेरी है जिसे पता मिलान पर लागू किया जा सकता है: Dedupe

यह मुफ़्त है और एक विशाल सर्वर के विपरीत लैपटॉप पर चलाया जा सकता है।

1

मैं इसे एक रेगेक्स समस्या पर विचार नहीं करता।

एक निःशुल्क टूल जो सहायक हो सकता है वह हैड्रेस्रेस, पार्सिंग पते के लिए एक अजगर लाइब्रेरी है। यह पता प्रारूप के सभी प्रकार पर बहुत अच्छी तरह से करता है, ख/ग यह एक regex दृष्टिकोण के बजाय एक संभाव्य दृष्टिकोण का उपयोग करता है (हालांकि यह अमेरिका पतों के लिए किया जाता है, & अन्य भाषाओं में पते पर अच्छी तरह से काम नहीं कर सकता) http://usaddress.readthedocs.org/en/latest/

पार्सिंग पते आपकी समस्या को 100% हल नहीं करेंगे, लेकिन दो पते की तुलना, विशेष रूप से w/भिन्न प्रारूपों को संबोधित करते हैं, यदि पते उनके संबंधित घटकों में विभाजित होते हैं तो बहुत आसान होगा (ताकि आप सड़क # # के खिलाफ सड़क # की तुलना कर सकें शहर, आदि)

फिर, रिकॉर्ड की तुलना करने के लिए, आप dedupe - एक और मुफ्त पायथन पुस्तकालय का उपयोग कर सकते हैं। http://dedupe.readthedocs.org/en/latest/

संबंधित मुद्दे