ईमेल में दिनांक, समय और पते कैसे मिलते हैं?


128

IOS ईमेल क्लाइंट में, जब किसी ईमेल में कोई दिनांक, समय या स्थान शामिल होता है, तो टेक्स्ट हाइपरलिंक बन जाता है और अपॉइंटमेंट बनाना या किसी मैप को लिंक पर टैप करके देखना संभव है। यह न केवल अंग्रेजी में, बल्कि अन्य भाषाओं में भी ईमेल के लिए काम करता है। मुझे यह सुविधा पसंद है और यह समझना चाहते हैं कि वे इसे कैसे करते हैं।

ऐसा करने का भोला तरीका कई नियमित अभिव्यक्तियाँ करना और उन सभी को चलाना होगा। हालाँकि, मैं बहुत अच्छे पैमाने पर नहीं जा रहा हूँ और यह केवल एक विशिष्ट भाषा या तिथि प्रारूप आदि के लिए काम करेगा, मुझे लगता है कि Apple को निकाय सीखने के लिए मशीन की कुछ अवधारणा का उपयोग करना होगा (8:00 PM, 8PM, 8:00 0800, 20:00, 20h, 20h00, 2000 आदि)।

किसी भी विचार कैसे Apple अपने ईमेल क्लाइंट में इतनी जल्दी संस्थाओं को निकालने में सक्षम है? इस तरह के कार्य को पूरा करने के लिए आप किस मशीन लर्निंग एल्गोरिदम को लागू करेंगे?


5
मैंने इस बारे में भी सोचा, विशेष रूप से रेगेक्स ट्रिक। मुझे पता है कि उनके पास इस पर एक पेटेंट है, इसलिए शायद आप इसे खोजने की कोशिश कर सकते हैं। हालाँकि, मुझे इसमें भी बहुत दिलचस्पी होगी। +1
थॉमस जुंगब्लेट

15
वास्तव में regexp ट्रिक शायद बहुत कम त्रुटि दर के साथ 99% मामलों को पकड़ लेगा। और सुपर फास्ट है, जब आप नियमित अभिव्यक्ति को अच्छी तरह से अनुकूलित करते हैं। इसलिए मुझे आश्चर्य नहीं होगा अगर यह वास्तव में नियमित अभिव्यक्तियों का एक सेट है।
है क्विट - Anony-Mousse

जवाबों:


153

वे संभवतः इसके लिए सूचना निष्कर्षण तकनीकों का उपयोग करते हैं।

यहां स्टैनफोर्ड के SUTime टूल का डेमो दिया गया है:

http://nlp.stanford.edu:8080/sutime/process

आप एक दस्तावेज़ में n- ग्राम (लगातार शब्द) के बारे में विशेषताएँ निकालेंगे:

  • numberOfLetters
  • numberOfSymbols
  • लंबाई
  • previousWord
  • nextWord
  • नेक्वर्डनंबरऑफसंबोल्स
    ...

और फिर एक वर्गीकरण एल्गोरिथ्म का उपयोग करें, और इसे सकारात्मक और नकारात्मक उदाहरण खिलाएं:

Observation  nLetters  nSymbols  length  prevWord  nextWord isPartOfDate  
"Feb."       3         1         4       "Wed"     "29th"   TRUE  
"DEC"        3         0         3       "company" "went"   FALSE  
...

आप प्रत्येक के 50 उदाहरणों के साथ दूर हो सकते हैं, लेकिन अधिक मर्जर। फिर, एल्गोरिथ्म उन उदाहरणों के आधार पर सीखता है, और भविष्य के उदाहरणों पर लागू हो सकता है जो पहले नहीं देखा है।

यह इस तरह के नियम सीख सकते हैं

  • यदि पिछला शब्द केवल वर्ण और शायद अवधि है ...
  • और वर्तमान शब्द "फरवरी", "विवाह", "द" में है ...
  • और अगला शब्द "बारहवें" में any_number ...
  • फिर तारीख है

इस विषय पर Google इंजीनियर द्वारा एक सभ्य वीडियो है


4
दिलचस्प! मैं इस तरह से कभी नहीं किया है। धन्यवाद, आप प्रमुख
मार्टिन

2
एल प्रमुख, आपकी राय में, किस तरह का मॉडल उसके लिए सबसे अच्छा होगा? बायेसियन?
मार्टिन

5
मुझे पूरा यकीन है कि इस तरह के दृष्टिकोण से बेहतर प्रदर्शन नहीं होगा, कहते हैं, लगभग एफ-उपाय। 0.9। (ध्यान दें, यह सिर्फ एक भावना है, मैं गलत हो सकता हूं)। दूसरी ओर, मैं बेहतर तरीके से प्रदर्शन करने के लिए सभी सामान्य प्रारूपों को एन्कोडिंग करने के लिए निवेच्य दृष्टिकोण को छोड़कर (संभवतः 0.99+ दिया गया कि सबसे लगातार प्रारूप कभी नहीं छूटेंगे) और रनटाइम पर + लागू करने के लिए तेज़ हो।
b.buchhold

@ b.buchhold, हो सकता है, लेकिन तब आपको अगली भाषा और अगली भाषा के लिए समान कार्य करना होगा, जबकि मेरा समाधान सामान्य है।
नील मैक्गुइगन

@ नील मैकगिन, सच। लेकिन आपको उन सभी प्रारूपों / भाषाओं के लिए बहुत सारे प्रशिक्षण डेटा प्रदान करने होंगे जो बहुत अधिक काम करते हैं।
b.buchhold

110

यह एक ऐसी तकनीक है जिसे Apple ने वास्तव में बहुत पहले विकसित किया था Apple Data Detectors। आप इसके बारे में यहां और अधिक पढ़ सकते हैं:

http://www.miramontes.com/writing/add-cacm/

अनिवार्य रूप से यह पाठ को पार्स करता है और उन पैटर्नों का पता लगाता है जो डेटा के विशिष्ट टुकड़ों का प्रतिनिधित्व करते हैं, फिर उस पर ओएस-संदर्भ क्रियाएं लागू करते हैं। यह साफ-सुथरा है।


24
यह सही जवाब है। अन्य उत्तर आपको बता सकते हैं कि आप इसे कैसे कर सकते हैं, लेकिन यह आपको बताता है कि एप्पल कैसे करता है।
लाक

2
क्या हम थोड़े विस्तार से लिख सकते हैं? सिंगल लिंक
एंट्रीज

14
आह, तो यह वह जगह है जहां मेरी वेबसाइट पर सभी हिट :) एफडब्ल्यूआईडब्ल्यू से आए, मैं एटीजी के दिनों में वापस ऐप्पल डेटा डिटेक्टरों पर प्रोजेक्ट लीड था; मैं यहाँ क्या जोड़ सकता हूँ कि यह केवल एक OS 8 और 9 तकनीक थी - इसने OS X के लिए कभी भी छलांग नहीं लगाई। जाहिर तौर पर OS X और IOS में कुछ इसी तरह की चीजें हो रही हैं, और, जबकि मैं Apple में नहीं हूं। और ऐसा वास्तव में नहीं कह सकता, अगर वास्तुकला थोड़ा अलग है तो मुझे आश्चर्य नहीं होगा। फिर भी, मुझे उम्मीद है कि कुछ व्याकरण / पार्सर प्रणाली अभी भी इसके दिल में है। कंप्यूटर इन दिनों तेज हैं, और सरल व्याकरण बहुत सस्ते हैं।
जिम मिलर

18

इसे लौकिक अभिव्यक्ति पहचान और पार्सिंग कहा जाता है । आपको आरंभ करने के लिए यहां कुछ Google खोजें दी गई हैं:

https://www.google.com/#hl=en&safe=off&sclient=psy-ab&q=timebank+timeml+timex

https://www.google.com/#hl=en&safe=off&sclient=psy-ab&q=temporal+expression+tagger


+1 यह कहने के लिए कि "कुछ समय में संदर्भित भावों की पहचान" का नाम साहित्य के कुछ / बहुत
हिस्सों

5

पहेली का एक हिस्सा NSDataDetectorकक्षा हो सकता है । यह कुछ मानक प्रकारों को पहचानता था जैसे फोन नंबर।


2
ऐसा लगता है कि NSDataDetectorApple इसे लागू करने के प्रयास में लगा हुआ वर्ग है। सवाल यह है कि वर्ग आंतरिक रूप से कैसे काम करता है?
ओले बेगमैन

3
यह NSRegularExpression.h में है, इसलिए यह काफी संभव है कि जैसा कि बताया गया है, बस नियमित अभिव्यक्ति का एक सेट है।
रिफ्रैफ

2

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


Miramontes से निकालें "एक परमाणु संरचना जैसे कि URL के लिए एक पहचानकर्ता को हार्डकोड करना मुश्किल नहीं है, लेकिन एक वास्तुकला को तैयार करने के लिए पर्याप्त काम की आवश्यकता होती है जो जटिल संरचनाओं को बनाने की प्रक्रिया को खोलता है।"
रेमी

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.