Apple หาวันเวลาและที่อยู่ในอีเมลได้อย่างไร


128

ในไคลเอนต์อีเมล iOS เมื่ออีเมลมีวันที่เวลาหรือสถานที่ข้อความจะกลายเป็นการเชื่อมโยงหลายมิติและเป็นไปได้ที่จะสร้างการนัดหมายหรือดูแผนที่เพียงแค่แตะที่ลิงค์ มันไม่ได้ทำงานกับอีเมลที่เป็นภาษาอังกฤษเท่านั้น แต่ยังใช้ในภาษาอื่นด้วย ฉันชอบคุณสมบัตินี้และต้องการที่จะเข้าใจว่าพวกเขาทำได้อย่างไร

วิธีที่ไร้เดียงสาในการทำเช่นนี้คือการมีการแสดงออกปกติและเรียกใช้พวกเขาทั้งหมด อย่างไรก็ตามฉันไม่สามารถปรับขนาดได้อย่างดีและจะทำงานเฉพาะภาษาหรือรูปแบบวันที่ที่เฉพาะเจาะจงเป็นต้นฉันคิดว่า Apple ต้องใช้แนวคิดของการเรียนรู้ของเครื่องเพื่อแยกหน่วยงาน (8:00 PM, 8PM, 8:00, 0800, 20:00, 20h, 20h00, 2000 ฯลฯ )

ความคิดใดที่ Apple สามารถดึงเอนทิตีในไคลเอนต์อีเมลได้อย่างรวดเร็ว อัลกอริทึมการเรียนรู้ด้วยเครื่องใดที่คุณต้องการใช้เพื่อให้บรรลุภารกิจดังกล่าว


5
ฉันยังคิดเกี่ยวกับเรื่องนี้โดยเฉพาะเคล็ดลับ regex ฉันรู้ว่าพวกเขามีสิทธิบัตรอยู่ดังนั้นคุณอาจลองค้นหาดูก็ได้ อย่างไรก็ตามฉันก็จะสนใจมันเช่นกัน +1
โทมัสจองบลุต

15
จริง ๆ แล้วเคล็ดลับ regexp อาจจะจับ 99% ของกรณีที่มีอัตราความผิดพลาดต่ำมาก และเร็วมากเมื่อคุณปรับการแสดงผลปกติให้เหมาะสม ดังนั้นฉันจะไม่แปลกใจถ้ามันเป็นเพียงชุดของการแสดงออกปกติ
เลิกเล่น - Anony-Mousse

คำตอบ:


153

พวกเขาน่าจะใช้เทคนิคการสกัดข้อมูลสำหรับสิ่งนี้

นี่คือตัวอย่างของเครื่องมือ SUTime ของ Stanford:

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

คุณจะแยกคุณลักษณะเกี่ยวกับ n-g (คำต่อเนื่องกัน) ในเอกสาร:

  • 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 ตัวอย่างของแต่ละคน แต่ยิ่ง merrier จากนั้นอัลกอริทึมจะเรียนรู้จากตัวอย่างเหล่านั้นและสามารถนำไปใช้กับตัวอย่างในอนาคตที่ไม่เคยเห็นมาก่อน

มันอาจเรียนรู้กฎเช่น

  • หากคำก่อนหน้าเป็นเพียงตัวอักษรและอาจจะเป็นช่วง ...
  • และคำปัจจุบันอยู่ใน "กุมภาพันธ์", "mar.", "the" ...
  • และคำต่อไปคือ "สิบสอง", any_number ...
  • จากนั้นเป็นวันที่

นี่คือวิดีโอที่ดีโดยวิศวกรของ Google ในเรื่อง


4
! ที่น่าสนใจ ฉันไม่เคยคิดอย่างนั้น ขอบคุณหัวหน้าเอล
Martin

2
ในความคิดของคุณหัวหน้ารุ่นไหนจะเหมาะกับมัน? เบส์?
Martin

5
ฉันค่อนข้างมั่นใจว่าวิธีการดังกล่าวจะไม่ทำงานได้ดีกว่าพูด f- วัดประมาณ 0.9 (หมายเหตุนี่เป็นเพียงความรู้สึกฉันอาจผิด) ในทางกลับกันฉันจะยกเว้นวิธีการเข้ารหัสของรูปแบบทั่วไปทั้งหมดเพื่อให้ทำงานได้ดีขึ้น (อาจเป็น 0.99+ เนื่องจากรูปแบบที่พบบ่อยที่สุดจะไม่พลาด) และจะเร็วกว่าที่จะใช้ + ในขณะทำงาน
b.buchhold

@ b.buchhold บางที แต่ถ้าอย่างนั้นคุณจะต้องทำงานในปริมาณเท่ากันสำหรับภาษาถัดไปและภาษาถัดไปในขณะที่โซลูชันของฉันเป็นแบบทั่วไป
Neil McGuigan

@ Neil McGuigan จริง แต่คุณจะต้องให้ข้อมูลการฝึกอบรมจำนวนมากสำหรับรูปแบบ / ภาษาเหล่านั้นทั้งหมดซึ่งทำงานได้มากกว่า
b.buchhold

110

Apple Data Detectorsนั่นคือเทคโนโลยีแอปเปิ้ลพัฒนาจริงเป็นเวลานานมากที่ผ่านมาเรียกว่า คุณสามารถอ่านเพิ่มเติมได้ที่นี่:

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

เป็นหลักมันแยกวิเคราะห์ข้อความและตรวจจับรูปแบบที่แสดงชิ้นส่วนของข้อมูลที่เฉพาะเจาะจงจากนั้นใช้การกระทำตามบริบทของระบบปฏิบัติการกับมัน มันเรียบร้อย


24
นี่คือคำตอบที่ถูกต้อง คำตอบอื่น ๆ อาจบอกคุณว่าคุณทำได้อย่างไร แต่อันนี้บอกคุณว่า Apple ทำได้อย่างไร
LaC

2
เราจะมีรายละเอียดเล็ก ๆ น้อย ๆ ในบทความนี้ได้ไหม? รายการลิงค์เดียวไม่เพิ่มมากนัก
shigeta

14
อาดังนั้นนี่คือที่มาทั้งหมดในเว็บไซต์ของฉันมาจาก :) FWIW ฉันเป็นผู้นำโครงการใน Apple Data Detectors ย้อนกลับไปในสมัยของ ATG; สิ่งที่ฉันสามารถเพิ่มได้ที่นี่คือนี่เป็นเทคโนโลยี OS 8 และ 9 เท่านั้น - ไม่เคยข้ามไปยัง OS X มีสิ่งที่คล้ายกันเกิดขึ้นใน OS X และ IOS อย่างชัดเจนและในขณะที่ฉันไม่ได้อยู่ที่ Apple อีกต่อไป และไม่สามารถพูดได้ว่าฉันจะไม่แปลกใจถ้าสถาปัตยกรรมแตกต่างกันเล็กน้อย อย่างไรก็ตามฉันคาดหวังว่าระบบไวยากรณ์ / ตัวแยกวิเคราะห์บางอย่างยังคงเป็นหัวใจของมัน คอมพิวเตอร์เร็ววันนี้และไวยากรณ์ง่าย ๆ ก็ค่อนข้างถูก
Jim Miller

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 เพื่อบอกว่าชื่อของ "การระบุนิพจน์ที่อ้างถึงเวลา" มีอยู่ในวรรณกรรมบางส่วน / มาก
arturomp

5

ส่วนหนึ่งของปริศนาอาจเป็นNSDataDetectorชั้นเรียน มันใช้ในการรับรู้บางชนิดมาตรฐานเช่นหมายเลขโทรศัพท์


2
ดูเหมือนว่าNSDataDetectorคลาสจะเป็นผลมาจากความพยายามของแอปเปิ้ล คำถามคือชั้นเรียนทำงานอย่างไรภายใน
Ole Begemann

3
มันอยู่ใน NSRegularExpression.h ดังนั้นจึงเป็นไปได้ค่อนข้างที่จะเป็นไปได้ว่าเป็นชุดของนิพจน์ทั่วไป
riffraff

2

ฉันเคยเขียนโปรแกรมแยกวิเคราะห์เพื่อทำสิ่งนี้โดยใช้การแยกวิเคราะห์ มันง่ายมากจริง ๆ คุณแค่ต้องทำให้ทุกอย่างถูกต้อง แต่ก็มีไม่มาก ใช้เวลาเพียงไม่กี่ชั่วโมงและค่อนข้างเร็ว


สารสกัดจากMiramontes "ไม่ยากที่จะฮาร์โค้ดตัวจดจำสำหรับโครงสร้างอะตอมเช่น URL แต่ต้องใช้งานจำนวนมากเพื่อสร้างสถาปัตยกรรมที่เปิดกระบวนการสร้างโครงสร้างที่ซับซ้อน"
Remy

1

Apple มีสิทธิบัตรเกี่ยวกับวิธีที่พวกเขาใช้ระบบและวิธีการดำเนินการกับโครงสร้างในข้อมูลคอมพิวเตอร์และนี่คือเรื่องราวเกี่ยวกับสิทธิบัตรแอปเปิ้ล - สิทธิบัตร -on-nsdatadetector

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.