कैसे करें डाक का पता फ़ज़ी मैचिंग?


14

मैं यह जानना चाहूंगा कि डाक के पतों का मिलान कैसे किया जाए जब उनका प्रारूप अलग-अलग हो या जब उनमें से एक गलत लिखा हो।

अब तक मैंने अलग-अलग समाधान पाए हैं लेकिन मुझे लगता है कि वे काफी पुराने हैं और बहुत कुशल नहीं हैं। मुझे यकीन है कि कुछ बेहतर तरीके मौजूद हैं, इसलिए यदि आपके पास मेरे पढ़ने के लिए संदर्भ हैं, तो मुझे यकीन है कि यह एक ऐसा विषय है जो कई व्यक्तियों को दिलचस्पी ले सकता है।

मैंने पाया समाधान (उदाहरण आर में हैं):

  • Levenshtein दूरी, जो आपके द्वारा एक शब्द को दूसरे में बदलने के लिए आपके द्वारा डाले जाने, हटाने या बदलने के लिए वर्णों की संख्या के बराबर होती है।

    agrep("acusait", c("accusait", "abusait"), max = 2, value = TRUE) ## [1] "accusait" "abusait"

  • फोनेम्स की तुलना

    library(RecordLinkage) soundex(x<-c('accusait','acusait','abusait')) ## [1] "A223" "A223" "A123"

  • वर्तनी सुधारक का उपयोग (अंततः पीटर नॉरविग की तरह एक बायेसियन) , लेकिन मुझे पता है कि बहुत कुशल नहीं है।

  • मैंने Google के सुझावों का उपयोग करने के बारे में सोचा था, लेकिन इसी तरह, यह व्यक्तिगत डाक पते पर बहुत कुशल नहीं है।

  • आप एक मशीन सीखने की निगरानी दृष्टिकोण का उपयोग करने की कल्पना कर सकते हैं, लेकिन आपको ऐसा करने के लिए उपयोगकर्ताओं के गलत अनुरोधों को संग्रहीत करने की आवश्यकता है जो मेरे लिए कोई विकल्प नहीं है।


मैं एक वास्तविक डेटाबेस का उपयोग करने का सुझाव दूंगा जो फजी स्ट्रिंग मिलान का समर्थन करता है: पॉज़र्स । यह कुशल होगा।
एमरे

केवल अमेरिका, कनाडाई, यूके, फ्रेंच, जापानी, बहु-देश ...? संभवतः हर एक के लिए, आप पहले यह निर्धारित / अनुमान लगाते हैं कि यह किस भाषा और देश में है, फिर एक देश-विशिष्ट क्लासिफायरियर लागू करें? क्या आपके पास एक प्रशिक्षण-समूह है और यदि ऐसा है तो देशों का वितरण क्या है?
मुस्कुराते हुए

आपने यह कहां से समाप्त किया? हमने जो समाधान तैयार किया था, वह पते और जगह को रगड़ने और समृद्ध करने के लिए था और Google जियोकोडिंग और वेब एपीआई को जगह दी और फिर कच्चे डेटा की तुलना में सही परिणाम निर्धारित करने के लिए कुछ मोटे गणना करें। इसका एक छोटा समूह है, लेकिन काम करता है, लेकिन पते और स्थानों / स्थानों को सामान्य करने के लिए अधिक सुरुचिपूर्ण तरीका होना चाहिए।
क्रिस स्मिथ

जवाबों:


9

जैसा कि आप R का उपयोग कर रहे हैं, आप स्ट्रैनिस्ट पैकेज और यारो-विंकलर दूरी मीट्रिक में देखना चाहते हैं जिसका उपयोग गणनाओं में किया जा सकता है। इसे लिंक करने के लिए अमेरिकी जनगणना ब्यूरो में विकसित किया गया था।

इस पत्रिका में जारो और यारो-विंकलर दूरी के बारे में अधिक जानकारी के लिए देखें ।

विभिन्न मिलान तकनीकों की तुलना के लिए, इस पेपर को पढ़ें


4

फुलर की तस्वीर देने के लिए लेवेंसहिन दूरी का विस्तार करने के बहुत सारे चतुर तरीके हैं। एक बहुत उपयोगी मॉड्यूल के लिए एक संक्षिप्त परिचय (अजगर के लिए) ' फज़ी वज़ी ' है, टीम द्वारा यहां सीजेक पर है।

कुछ चीजें जो आप कर सकते हैं, वह आंशिक स्ट्रिंग समानता है (यदि आपके पास अलग-अलग लंबाई के तार हैं, तो m & n को m <n के साथ कहें), फिर आप केवल m वर्णों के लिए मेल खाते हैं। आप स्ट्रिंग को टोकन (व्यक्तिगत शब्दों) में भी अलग कर सकते हैं और देख सकते हैं कि टोकन के सेट मैच से कैसे मेल खाते हैं या उन्हें वर्णानुक्रम से व्यवस्थित करते हैं।


4

आंशिक स्ट्रिंग मिलानों का पता लगाने के लिए एक और लोकप्रिय तकनीक (हालांकि आमतौर पर दस्तावेज़-स्तर पर) चमकती है । संक्षेप में, यह एक चलती-खिड़की वाला दृष्टिकोण है जो लक्ष्य शब्द / डॉक्टर के लिए n-ग्राम का एक सेट निकालता है और उनकी तुलना जैकार्डकार्ड के माध्यम से अन्य शब्दों / डॉक्स के लिए n- gr के सेट से करता है । मैनिंग और सहकर्मियों (2008) ने सूचनात्मक पुनर्प्राप्ति के संदर्भ में डुप्लिकेट और शिंगलिंग के पास चर्चा की ।


4

मैंने पायथन में एक जेनेरिक प्रोबैलिस्टिक फ़ज़ी मैचर्स लिखा है जो किसी भी प्रकार के डेटा के मिलान का एक उचित काम करेगा:

https://github.com/robinl/fuzzymatcher

यह स्मृति में है, इसलिए आप संभवतः इसका उपयोग डेटासेट से मेल खाने के लिए नहीं करना चाहते हैं जो लगभग 100k पंक्तियों से ऊपर हैं।

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

https://github.com/RobinL/AddressMatcher

यदि आप इसे जल्दी से प्राप्त करना चाहते हैं, तो मैं आपके पते को सामान्य करने के लिए libpostal का उपयोग करके पुनः प्राप्त करूंगा और फिर उन्हें मेरे सामान्य फ़ज़ीमेचेर ( pip install fuzzymatcher) में खिलाऊंगा

आप यहां उपयोग के उदाहरण पा सकते हैं ।


हाय रॉबिन, मुझे आपकी AddressMatcher लाइब्रेरी में दिलचस्पी है। क्या आपके पास इसका उपयोग करने के बारे में कोई प्रलेखन है? मुझे यह सटीक समस्या है - पते के 1 सेट (गड़बड़) को दूसरे (आधिकारिक डाक पते) से मिलान करने की आवश्यकता है। धन्यवाद
SCool

1
दुःख की बात यह है कि पतेदार के साथ यह बिल्कुल नहीं है और मेरे पास अच्छे दस्तावेज नहीं हैं। मुख्य बात यह है कि आपको पोस्टग्रेजेक में एड्रेसबेस प्रीमियम, एक वाणिज्यिक उत्पाद लोड करना है।
रॉबिनएल

ठीक है, मुझे वापस पाने के लिए धन्यवाद। मैं Eircode नामक एड्रेसबेस प्रीमियम के आयरिश संस्करण को मानने के साथ काम कर रहा हूं जो असंगत होगा। क्या आपको लगता है कि फजी मैच्योर प्रोडक्शन एनवायरनमेंट एड्रेस मिलान में काम करना होगा? मैं सिर्फ अपने डेटा में उन पते के पोस्टकोड को जोड़ना चाहता हूं जो उनके पास नहीं हैं, उदाहरण के लिए, '1 Main Street, Some Town, County'यदि मैं एक मैच ढूंढता हूं, तो आइरकोड डायटाब खोजें और पोस्टकोड वापस लाएं।
SCool

1
फजी मैच - हाँ मैं निश्चित रूप से एक जाने लायक लगता है। यह बीफ़ मशीन पर आधिकारिक पतों (यानी eircode) की एक बड़ी सूची के भीतर पतों की एक छोटी सूची के लिए यथोचित काम करना चाहिए। एक अन्य विकल्प R
RobinL
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.