В почтовом клиенте iOS, когда электронное письмо содержит дату, время или место, текст становится гиперссылкой, и можно создать встречу или посмотреть карту, просто нажав на ссылку. Это работает не только для писем на английском, но и на других языках. Мне нравится эта функция, и я хотел бы понять, как они это делают.
Наивный способ сделать это - иметь много регулярных выражений и запускать их все. Однако я не собираюсь хорошо масштабироваться и будет работать только для определенного языка или формата даты и т. Д. Я думаю, что Apple должна использовать некоторую концепцию машинного обучения для извлечения сущностей (20:00, 20:00, 20:00, 08:00, 20:00, 20:00, 20:00, 2000 и т. Д.).
Есть идеи, как Apple может так быстро извлекать объекты в своем почтовом клиенте? Какой алгоритм машинного обучения вы бы применили для выполнения такой задачи?
Ответы:
Вероятно, они используют для этого методы извлечения информации .
Вот демонстрация инструмента SUTime из Стэнфорда:
http://nlp.stanford.edu:8080/sutime/process
Вы должны извлечь атрибуты о n-граммах (последовательных словах) в документе:
...
А затем используйте алгоритм классификации и скормите ему положительные и отрицательные примеры:
Вы можете получить 50 экземпляров каждого, но чем больше, тем лучше. Затем алгоритм обучается на основе этих примеров и может применяться к будущим примерам, которых он раньше не видел.
Он может изучить такие правила, как
Вот достойное видео инженера Google на эту тему.
источник
Это технология, которую Apple разработала очень давно
Apple Data Detectors
. Вы можете прочитать больше об этом здесь:http://www.miramontes.com/writing/add-cacm/
По сути, он анализирует текст и обнаруживает шаблоны, которые представляют определенные фрагменты данных, а затем применяет к ним контекстные действия ОС. Это аккуратно.
источник
Это называется идентификацией и анализом временного выражения . Вот несколько поисковых запросов 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
источник
Одной из частей головоломки может быть
NSDataDetector
класс. Он используется для распознавания некоторых стандартных типов, таких как номера телефонов.источник
NSDataDetector
класс - результат усилий Apple, приложенных для его реализации. Вопрос в том, как класс работает внутри?Однажды я написал для этого парсер, используя pyparsing. Это действительно очень просто, вам просто нужно найти все разные способы, но их не так много. Это заняло всего несколько часов и было довольно быстро.
источник
У Apple есть патент на то, как они это сделали. Система и метод для выполнения действия над структурой в компьютерных данных , и вот история об этом патенте apples-patch-on-nsdatadetector
источник