Наверняка все наши читатели уже слышали о машинном обучении и знают, чем эта дисциплина может быть им полезна. Но если вам по какой-то причине не доводилось сталкиваться с этим термином, перейдите по ссылке на страницу Википедии и прочтите статью о машинном обучении: https://en.wikipedia.org/wiki/Machine_learning.

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

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

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

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

Наряду с другими поставщиками миллионы выделенных для проведения научно-исследовательских работ долларов затрачивает на разработку затронутой нами темы и корпорация Microsoft. Какое же отношение имеет эта тема к проблемам разработки Office 365 и SharePoint?

В число компонентов бизнес-платформы Office 365 входит Office Graph, интеллектуальная виртуальная структура, применяющая машинное обучение для установления взаимосвязей между людьми, объектами и контентом (см. материалы по адресу: https://graph.microsoft.io/en-us/ и https://graph.microsoft.io/en-us/graph-explorer).

Однако под внешней оболочкой базовый продукт Azure Stack оперирует целым набором так называемых когнитивных служб, которые вы можете взять на вооружение в ходе разработки. Чтобы воспользоваться этими службами, вам нужно прежде всего зарегистрироваться на портале Azure Management. Для этого требуется зайти на сайт https://portal.azure.com и найти там раздел Cognitive Services (экран 1).

 

Раздел Cognitive Services на портале Azure Management
Экран 1. Раздел Cognitive Services на портале Azure Management

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

 

Настройки экземпляра службы
Экран 2. Настройки экземпляра службы

Для настройки API Type мы выберем значение Text Analytics API (экран 3). И разумеется, для тестирования нужно выбрать настройку FREE (экран 4).

 

Настройка API Type для службы аналитики
Экран 3. Настройка API Type для службы аналитики

 

Настройка режима использования службы
Экран 4. Настройка режима использования службы

Когда все это будет установлено в вашей подписке абонента Azure Tenant, вы увидите, что именованный экземпляр стал доступным. Щелкнув на нем, пользователь попадает на экран свойств и управления, как показано на экране 5.

 

Окно свойств и управления экземпляром службы
Экран 5. Окно свойств и управления экземпляром службы

На данном этапе обратите внимание на раздел Endpoint и вкладку Keys, где первое место в списке занимает элемент Key. Оба элемента пригодятся вам, когда вы будете использовать данную службу.

После выполнения всех процедур установки мы можем создать демонстрационную консоль на языке C# с использованием минимального фрагмента кода. Для достижения этой цели мы создадим стандартное приложение «консоль Windows» и сформируем две строковые константы: одна будет содержать указатель API URL, а другая — объект Key, который нам потребуется для обращения к службе (экран 6).

 

Создание демонстрационной консоли
Экран 6. Создание демонстрационной консоли

Теперь нам нужно добавить метод, обеспечивающий непосредственный вызов службы. Для этого необходимо обратиться к объекту HttpClient и передать с его помощью определенные заголовки, такие как ключ подписки, полученный с сайта Azure. Здесь важно отметить, что нам необходимо также передать непосредственную конечную точку, к которой мы собираемся обращаться, так что для Text Analytics мы используем text/analytics/v2.0/keyPhrases (экран 7).

 

Указание конечной точки
Экран 7. Указание конечной точки

Внутри кода вы увидите компонент byteData, который нужно заполнить нашим текстом, или содержимое документа, который мы хотим отправить службе. В данном примере я использовал приведенные здесь параграфы, преобразованные в формат JSON (экран 8).

 

Пример передачи данных службе
Экран 8. Пример передачи данных службе

Чтобы консольное приложение работало, нам необходимо заэкранировать все спецсимволы, поэтому мое приложение выглядит так, как показано на экране 9.

 

Передача данных на консоль
Экран 9. Передача данных на консоль

Последнее по порядку, но не по значению — это выбор метода, который непосредственно осуществляет обращение к веб-службе (экран 10).

 

Выбор метода обращения к веб-службе
Экран 10. Выбор метода обращения к веб-службе

Итак, мы сделали все необходимое. Что же теперь будет?

После запуска консольное приложение передаст содержимое из файла JSON веб-службе, с помощью методов машинного обучения выполнит на этом материале анализ текста и, поскольку мы используем конечную точку Key Phrases, приложение, осуществив последовательный перебор всего контента, возвратит содержащиеся в тексте ключевые фразы (экран 11). На экране 12 показаны более удобочитаемые текстовые версии возвращенных значений.

 

Ключевые фразы
Экран 11. Ключевые фразы

 

Удобные для чтения текстовые версии возвращенных значений
Экран 12. Удобные для чтения текстовые версии возвращенных значений

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

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

 

Цикл операций для разметки и классификации содержимого
Рисунок. Цикл операций для разметки и классификации содержимого

Как вы можете убедиться, этот процесс, будучи реализованным на сайте SharePoint, способен дать превосходные результаты: теоретически он может облегчить осуществление классификации в автоматическом режиме и уж во всяком случае — обогатить свойства содержимого. Если мы сумеем включить в процесс и другие конечные точки, то сможем дополнительно получить язык и «эмоциональность» контента. Кроме того, не следует забывать о возможностях, предоставляемых другими когнитивными службами, такими как Translation, Recommendation, Emotion, Modera­tion и даже Facial recognition. Совместное использование таких служб и предоставление допуска к ним в среде SharePoint пошло бы на пользу тем из нас, кто работает в группах и создает контент. Так что я всем рекомендую в процессе работы над решениями всегда держать в поле зрения эти новые типы служб.