तो मेरे प्रमुख दर्द बिंदुओं में से एक नाम समझ है और घरेलू नाम & खिताब मिलकर है।क्या मैं जटिल मानव नामों का विश्लेषण करने के लिए पाइथन 'री' का उपयोग कर सकता हूं?
John Jeffries
John Jeffries, M.D.
John Jeffries, MD
John Jeffries and Jim Smith
John and Jim Jeffries
John Jeffries & Jennifer Wilkes-Smith, DDS, MD
John Jeffries, CPA & Jennifer Wilkes-Smith, DDS, MD
John Jeffries, C.P.A & Jennifer Wilkes-Smith, DDS, MD
John Jeffries, C.P.A., MD & Jennifer Wilkes-Smith, DDS, MD
John Jeffries M.D. and Jennifer Holmes CPA
John Jeffries M.D. & Jennifer Holmes CPA
: मैं एक बहुत बड़े पैमाने पर regex मैं एक साथ आज सुबह कि मैं शायद पर गर्व नहीं होना चाहिए डाल (लेकिन बीमार रास्ते की एक किस्म में वैसे भी कर रहा हूँ) के साथ एक 80% समाधान है कि निम्न उदाहरण सही ढंग से मेल खाता है
(?P<first_name>\S*\s*)?(?!and\s|&\s)(?P<last_name>[\w-]*\s*)(?P<titles1>,?\s*(?!and\s|&\s)[\w\.]*,*\s*(?!and\s|&\s)[\w\.]*)?(?P<connector>\sand\s|\s*&*\s*)?(?!and\s|&\s)(?P<first_name2>\S*\s*)(?P<last_name2>[\w-]*\s*)?(?P<titles2>,?\s*[\w\.]*,*\s*[\w\.]*)?
(WTF है ना?)
सुविधा के लिए: http://www.pyregex.com/
तो, उदाहरण के लिए: रेगुलर एक्सप्रेशन मिलान इस तरह दिखता है
'John Jeffries, C.P.A., MD & Jennifer Wilkes-Smith, DDS, MD'
एक समूह dict की तरह लग रहा है कि में regex परिणाम:
connector: &
first_name: John
first_name2: Jennifer
last_name: Jeffries
last_name2: Wilkes-Smith
titles1: , C.P.A., MD
titles2: , DDS, MD
मैं अंतिम चरण है कि कर दिया गया है मुझे ट्रिपिंग, संभव मध्यम नाम समझने के साथ मदद की जरूरत है।
उदाहरणों में शामिल हैं:
'John Jimmy Jeffries, C.P.A., MD & Jennifer Wilkes-Smith, DDS, MD'
'John Jeffries, C.P.A., MD & Jennifer Jenny Wilkes-Smith, DDS, MD'
यह संभव है और वहाँ मशीन सीखने के बिना यह करने के लिए एक बेहतर तरीका है? हो सकता है कि मैं nameparser का उपयोग कर सकूं (रेगेक्स खरगोश छेद नीचे जाने के बाद खोजा गया) इसके बजाय यह निर्धारित करने के लिए कि क्या कई नाम हैं या नहीं? उपरोक्त मैचों में 99.9% मामले हैं इसलिए मुझे लगता है कि यह खत्म होने लायक है।
TLDR: मैं समझ नहीं अगर मैं अग्रदर्शी किसी प्रकार का उपयोग करें या यह सुनिश्चित करें कि संभव मध्य नाम केवल तभी इसके बाद एक अंतिम नाम है से मेल खाता बनाने के लिए lookbehind कर सकते हैं।
नोट: मुझे श्रीमती सुश्री आदि जैसे शीर्षकों का विश्लेषण करने की आवश्यकता नहीं है, लेकिन मुझे लगता है कि मध्य नामों के समान ही जोड़ा जा सकता है।
समाधान नोट्स: सबसे पहले, रिचर्ड की सलाह का पालन करें और ऐसा नहीं करते हैं। दूसरा, यदि आवश्यक हो तो अधिक मजबूत समाधान के लिए एनएलटीके की जांच करें या nameparser पर योगदान/योगदान दें।
पायथन की [प्राकृतिक भाषा टूलकिट (एनएलटीके)] (http://www.nltk.org/) * इस कार्य के लिए * अधिक * बेहतर अनुकूल है। इसे देखें: http://timmcnamara.co.nz/post/2650550090/extracting-names-with-6-lines-of-python-code –
@CurtisMattoon ओह। यह अच्छा लग रहा है। मैं अभी कुछ अधिकार प्राप्त करने के लिए इस रेगेक्स पर हैकिंग कर रहा था "अभी सही" लेकिन एनएलटीके एक लंबे दीर्घकालिक समाधान (और शायद अल्पकालिक) की तरह दिखता है। मैं एक जूनियर पायथन देव हूं इसलिए मुझे वहां के सभी समाधानों के बारे में पता नहीं है। – mzniko
भले ही आपके कार्य के लिए बेहतर टूल हो, फिर भी आप अपने वर्तमान रेगेक्स को अधिक पठनीय बनाने के लिए 're.VERBOSE' ध्वज का उपयोग कर सकते हैं। https://docs.python.org/3/library/re.html#re.VERBOSE –