Давайте Заглянем Под Капот: Напоминание О Вложениях Microsoft Outlook 2013

Работа нашей компании связана с разработкой для Microsoft Outlook и Exchange Server, и поэтому нам очень нравится в них вникать.

Сегодня мы углубимся в небольшую новую функцию Microsoft Outlook — напоминание о забытых вложениях.

Казалось бы, что может быть проще? Тексты наших «раскопок» на английском языке мы публикуем в блоге компании, а на русском — эксклюзивно для Хабра.

Идти! Начиная с версии 2013, пользователь может включить автоматическое напоминание о забытых вложениях в Microsoft Outlook:

Давайте заглянем под капот: напоминание о вложениях Microsoft Outlook 2013

При отправке электронного письма в этом случае может появиться следующее предупреждение:

Давайте заглянем под капот: напоминание о вложениях Microsoft Outlook 2013

Немного поигравшись с текстами, можно обнаружить следующее:

Поддерживается только английский язык (возможно, позже будут добавлены и другие); в случае опечаток в «ключевых» словах напоминания не будет (если быть точным, Microsoft Outlook знает только одну опечатку — слово «ПРИТАНИЕ»); не все «ваши» ключевые слова рассматриваются системой как таковые; Алгоритм непрост, но явно не идеален.

Забегая вперед, скажем сразу, что словарь и алгоритм жестко запрограммированы, и исправить или добавить свои ключевые слова или исключения вы не сможете.

Все, что вы можете сделать, это либо включить, либо выключить эту функцию.

По мере того, как вы будете играть с новой функцией, у вас возникнут вопросы о ней.

Почему система отвечает на фразы «посмотреть картинку» или «посмотреть gif» в теле письма, но не отвечает на «посмотреть фото» или «посмотреть PDF-файл»? Ого, система не ответила на «файл не прикреплен», но среагировала на «файл не прикреплен».

Как это работает?

Как это работает
Алгоритм реализован в библиотеке MSFAD.DLL (мы изучали версию файла от 1 ноября 2013 года), которая находится в папке Microsoft Office. Эта библиотека содержит единственную функцию HasAttachments, которой передаются тема и тело письма.

В ответ функция возвращает решение, предупреждать пользователя или нет. Размер библиотеки более 300 килобайт. Просто найти в одной строке еще одну строчку — это очень много.

Раньше огромные программы умещались в 300 килобайт. Действительно ли он не делает ничего, кроме проверки текста на наличие ключевых слов? Но это правда.

86 килобайт в библиотеке занимают данные, непосредственно связанные с анализом текста.

Но вы не увидите библиотеку ключевых слов в теле, даже если у вас есть шестнадцатеричный редактор.

Словарь хранится в сжатом виде и содержит около 650 ключевых слов.

Но если слова, даже декодированные, занимают чуть больше 5 килобайт, что же тогда занимает еще 80 килобайт? Ответ могут подсказать названия функций, которые можно найти в коде библиотеки: ChunkGrammarRule, ChunkGrammarLevel, CompoundAnalyzer, StringAnalyzer, TemplateLexiconBasedStringAnalyzer, FlatLexiconStringAnalyzer, MorphLayerStringAnalyzer, ScriptStringAnalyzer, PartOfSpeechDisambiguator. 80 килобайт, это данные для системы обработки естественного языка! Какой размах! Почти как искусственный интеллект! Но подходит ли он для этой задачи?

Как это делают другие
Многие плагины для Microsoft Outlook уже около 15 лет умеют показывать напоминания о забытых вложениях.

Например, в «Швейцарском ноже».

MAPILab Toolbox для Outlook Есть компонент «Забыть вложения», настройки которого показаны на изображении.



Давайте заглянем под капот: напоминание о вложениях Microsoft Outlook 2013

Это работает очень просто.

Если в письме обнаружена подстрока, вы получите предупреждение.

В нем нет анализа естественного языка, и его легко «обмануть».

Однако, несмотря на свою простоту, он работает достаточно эффективно.

Кроме того, его можно настроить в соответствии с вашим стилем письма и используемыми вами языками.

Если вы часто отправляете счета по почте, вы можете научить MAPILab Toolbox реагировать на фразу «посмотреть счет» в два клика.

Но крутой анализатор естественного языка Microsoft Outlook 2013 не отреагирует на фразу «посмотреть счет» и никогда не узнает ваш стиль письма.

Никакого самообучения в этом нет.

Давайте заглянем глубже под капот
Хотя поначалу мы были весьма заинтригованы и впечатлены новой функцией Microsoft Outlook, после практического тестирования мы остались несколько разочарованы.

Существуют «мощные» слова, которые, если их включить в пустое тело электронного письма, вызовут предупреждение.

Их всего девять: ПРИКРЕПЛЕНИЕ, ПРИКРЕПЛЕНИЕ, ПРИКРЕПЛЕНИЕ, К вашему сведению, ПРИКРЕПЛЕНИЕ, ПОВТОРНОЕ ПРИКРЕПЛЕНИЕ, ENCL, КОРПУС, КОРПУСЫ.

Некоторые из этих слов образуют словосочетания, которые очень хорошо работают в коротких фразах.

Например, алгоритм будет работать для фразы «WHUSGD YODJHHW IS ATTACHED».

Но это пока не сильно отличается от алгоритма MAPILab Toolbox. Он также знает 10 слов, и его можно научить еще десяти фразам.

Перейдем к анализу естественного языка.

Фраза «ОН ОЧЕНЬ ПРИВЯЗАЛСЯ К СТАРУШКЕ» не сработает. Но сработает фраза «ОНИ НАЙТИ ПОЖАР В ПРИСТРОЕННОМ ГАРАЖЕ ЧАСТНОГО ДОМА».

Для анализатора с ограниченным словарным запасом эти фразы выглядят как «ОН БЫЛ ОЧЕНЬ ПРИВЯЗАН К **» и «ОНИ НАШЛИ А* В ПРИСОЕДИНЕННОМ* А**» (звездочки — неизвестные анализатору слова).

Анализатор, видимо, умел различать «очень привязан» и «привязан».

Здесь мы видим, что с синтаксисом анализатор справляется хорошо, но семантика ему неподвластна.

Словаря в 650 слов недостаточно.

Теперь отойдём от слов, связанных с ПРИВЯЗАННОСТЬЮ, и посмотрим, как справится анализатор.

Не совсем корректная фраза «Я ОТПРАВЛЯЮ ВАМ ФАЙЛ» не срабатывает, даже если ФАЙЛ заменить другими похожими словами.

Но фраза «Я ОТПРАВЛЯЮ ВАМ ФАЙЛ» работает. Следует отметить, что анализатор очень хорошо знает английский язык, и если где-то пропустить статью, то зачастую даже очевидная фраза перестает срабатывать.

В словаре многим словам присвоен один и тот же смысловой код. Например, то же самое относится к словам ДОГОВОР, ДОКУМЕНТ, EXCEL, ФАЙЛ, ФОРМА, ФОТО, РЕЗЮМЕ, ЭЛЕКТРОННАЯ ТАБЛИЦА, РАБОЧАЯ КНИГА и некоторым другим.

Поэтому замена слова ФАЙЛ в последней фразе на эти слова ни на что не повлияет. Но словарный запас ограничен, и мы легко можем найти чем заменить, чтобы оно не срабатывало.

Фразы «Я ОТПРАВЛЯЮ ВАМ СЧЕТ» или «Я ОТПРАВЛЯЮ ВАМ СОГЛАШЕНИЕ О НЕРАЗГЛАШЕНИИ» не сработают.

Давайте посмотрим в словаре
На иллюстрации ниже содержится чуть больше пятой части словаря, отсортированного по семантическому коду (КОД, его абсолютное значение ни на что не влияет).

Мы взяли начало, середину и конец словаря:

Давайте заглянем под капот: напоминание о вложениях Microsoft Outlook 2013

Словарь, на наш взгляд, мал для решаемой задачи.

Половина словаря состоит из слов, необходимых для разбора предложения.

Вторая половина тесно связана с тем, что можно отправить по электронной почте в виде вложения.

При этом в словарь вошли только самые популярные слова, относящиеся к электронным вложениям.

В словаре вообще нет таких слов, как ДОМ, ДЕВУШКА, МАШИНА, МИР, МИР.

Поэтому «ПРИЛОЖЕННЫЙ ГАРАЖ» и «ПРИЛОЖЕННЫЙ ЗАЯВЛЕНИЕ» — это совершенно одинаковые полунеизвестные фразы для анализатора.

Анализатор допускает довольно много ложных срабатываний, как первого порядка (реагирует на безобидные фразы), так и ложных срабатываний второго порядка (не отвечает на фразы типа «ЭТО ПИСЬМО СОДЕРЖИТ ВАЖНОЕ ВЛОЖЕНИЕ»).

Если сравнить используемый алгоритм с примитивным поиском по ключевым словам, то их результаты вполне сопоставимы.

Почему Microsoft выбрала такой сложный путь и написала в тысячу раз больше кода для не столь приоритетной задачи?

Во всем виноват Google?
Напоминание о вложениях появилось в Gmail в 2010 году (ранее оно находилось в Gmail Labs в течение двух лет).

Похожая функция появилась в HotMail (теперь Outlook.com) годом позже.

Соперничество двух гигантов проявляется даже в мелочах.

И если Google сделал что-то «простое», то Microsoft сделает это достаточно круто, чтобы снисходительно улыбнуться.

В 2009 году немецкий технический университет опубликовал статью «Учимся распознавать недостающие вложения электронной почты» , который предоставил данные о превосходстве алгоритмов обучения над методом статических ключевых слов.

Возможно, именно она подала Microsoft идею создать «умное» напоминание о вложениях.

Microsoft имеет огромную базу данных электронных писем; результат технологии можно использовать в Outlook.Com, Microsoft Outlook и, возможно, даже в мобильных приложениях.

Вот как работали Напоминания о вложениях на некоторых тестовых фразах в Microsoft Outlook 2013 и популярных онлайн-сервисах (Да — было предупреждение, зеленый — система не ошиблась):

Давайте заглянем под капот: напоминание о вложениях Microsoft Outlook 2013

По результатам этого мини-теста нельзя с уверенностью сказать об используемых алгоритмах.

Но можно разумно предположить, что Gmail использует примитивный метод статических ключевых слов.

Это определенно работает для фраз «Я ПРИСОЕДИНИЛСЯ» и «ПРИЛОЖЕН», независимо от семантики и синтаксиса.

Outlook.com также работает с использованием этого метода, но он работает с большим количеством ключевых фраз, чем Gmail. Судя по всему, передовые технологии, использованные в Microsoft Outlook 2013, до него еще не дошли.

И только Microsoft Outlook 2013 демонстрирует попытку анализа текста.

Но не всегда это получается успешно.

И в прилагаемом мини-тесте он не стал уверенным лидером.

Увеличив словарь (в несколько раз) можно добиться существенного улучшения качества алгоритма.

Но с точки зрения практического применения метод статических ключевых слов с возможностью настройки пользователем, скорее всего, обеспечит лучшую защиту, поскольку в электронной переписке часто используются сокращения речи и слов, профессиональный жаргон, переписка ведется в некотором контексте и поэтому полный анализ текста затруднен.

Но, в любом случае, Microsoft сделала крутую, необычную вещь, которую было очень интересно изучать.

Посмотрим, какой она будет через несколько лет! Мы также рассмотрели версию MSFAD.DLL от 16 июля 2014 года, выпущенную в составе обновления KB2883094 (последнего доступного на момент написания статьи).

В новой версии не изменился словарь и данные для парсинга, не изменились алгоритмы.

Это было всего лишь исправление ошибки.

Таким образом, Microsoft в последнее время, по-видимому, не активно работает над напоминанием о вложениях.

И настоящего обновления нам придется долго ждать.

Теги: #microsoft Outlook 2013 #Семантика

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.