Искусственный интеллект и программирование BAS / 1С
За последний год искусственный интеллект и программирование набирает популярность и нет сферы, в котором его не пытались бы задействовать. В том числе и в сфере BAS / 1С.
И снова стали подниматься темы о том, что скоро ИИ захватит мир, отберет у человечества профессии и т.д.
Да, фреймворки (программные решения, что облегчают работу систем) для работы с ИИ стали доступны. Работать с ними легко и приятно. И быстро. Но… Давайте разбираться.
Как это часто бывает, когда ИИ набрал популярности и люди разобрались что он может, а что искусственному интеллекту не под силу, что развито, что не развито, всеобщая одержимость стала спадать. Технологии искусственного интеллекта стали более продуманными и в ИТ сфере их стали применять более продумано.
Искусственный интеллект – это не робот, как многие думают, а технологии, которые максимально близко пытаются сымитировать действия человеческого мозга.
Искусственный интеллект. Классификация
Международная классификация ИИ обширна (см. изображение ниже).
Machine Learning (машинное обучение). Включает в себя Deep Learning (глубокое обучение) и Predictive analytic (Предиктивная / предсказательная аналитика).
Machine Learning – это и есть та самая нейросеть со множеством слоёв. Deep Learning – это ещё более глубокое понятие – каждый слой тут выполняет свою отдельную функцию и даже проектируются каждый под это. Так, например, один слой распознает изображение, другой – голос и т.д.
К Machine Learning относится не только нейросеть, но так же деревья (и леса) решений, градиентный бустинг, векторную модель, логистическую и линейную регрессии, метод наименьших квадратов. Machine Learning может построить деревья решений в BAS / 1С.
Natural Language Processing (NLP) – обработка процессов естественного языка. Яркий тому пример – всем известные Сири, Алиса, Гугл ассистент.
Когда вы обращаетесь к этому виду ИИ, перед первым общением он настраивается на тот язык, который вы ему задаете, а при следующем общении NLP реагирует на ваши команды (включает кофе-машину, музыку или свет, отвечает на вопросы. Когда вы заводите разговор с NLP, тут подключается действие Deep Learning, нейросеть полностью имитирует размышления людей и может выдать неординарные и интересные ответы.
Speech – аудиотехнологии и речь.
Vision – работа с компьютерным зрением.
Robotic Process Automation (RPA) – автоматизация пользовательских действий с помощью роботизации. Этот вид ИИ использует машинное зрение и предиктивную аналитику.
Robotics – роботизация в её классическом понимании.
Chatbots (чатботы) – вид ИИ, который использует предиктивную аналитику и NLP.
Expert systems (экспертные системы) вид ИИ с деревьями решений.
Нейронные сети
Итак, Машинное Обучение – это НЕ искусственный интеллект. Это 2 РАЗНЫЕ области. Классическая линейная регрессия, например, это не ИИ, а машинное обучение.
Искусственный интеллект – это НЕ нейронная сеть.
Нейронная сеть – это та область, которая анализирует ваши предпочтения в интернете (ваши покупки, скачанную музыку или фильмы, характер постов или рекламы в соц.сетях и т.д.) и на основании этого предлагает вам подобный товар или контент. Программные библиотеки CatBoost, XGBoost – тоже относятся к нейронным сетям.
Инструменты для Искусственного интеллекта
На изображении (см. ниже) вы можете увидеть наиболее популярные в интернете фреймворки, чтобы работать с ИИ.
Специалисты в области исследований искусственного интеллекта выделяют Keras, TensorFlow и Scikit-learn.
Scikit-learn самый известный и простой фреймворк для тех, кто хочет научиться работать с Python. Одним из классических действий в нем считается обучить перцептрон (модель восприятия информации). В итоге несколько строчек кода в Python и 80-90% ваших задач решены.
Для тех, кто более серьёзно подходит к вопросу и хочет работать с изображениями, написать программу для распознавания символов, лучше выбрать TensorFlow. Причем, сам по себе он тяжёлый для работы и его рекомендуют объединять с Keras, чтобы упростить работу, сделать её приятнее и легче.
Для тех, кто работает с NET Framework (дотнет) подойдет Accord.NET. Хотя это далеко не новая платформа, но она поможет решить вам достаточно много задач.
Компьютерное зрение
Компьютерное зрение (Computer Vision) – это не нейронные сети и не машинное обучение. Это технология, которая по типу фильтрации фотошопа, преобразовывает изображение в чёрно-белое, сглаживает его, выделяет контуры и может выявить предмет по контурам.
Технология компьютерного зрения преобразовывает изображение таким образом, что программист работает с ним, как с бинарным. Человеческое лицо – это достаточно стандартный объект с точки зрения компьютерного зрения. Потому что человеческое лицо имеет определенные части тела, расположенные у всех в одном и том же порядке (брови, глаза, нос, рот). И выделить его среди других изображений – для компьютерного зрения – просто. А вот найти печать в документе – уже не такая простая задача и готового решения тут для Computer Vision нет.
Компьютерное зрение активно применяется в RPA (автоматизация пользовательских действий с помощью роботизации), особенно в оптическом распознавании символов.
Библиотекой функций и алгоритмов компьютерного зрения является OpenCV. Он отлично справляется с задачами по выделению на изображениях каких-то конкретных объектов. Но с классификацией текста уже будут трудности.
Применение компьютерного зрения в BAS / 1С
Самое простое применение – код на .NET и Emgu CV, через который подключен OpenCV – source.MatchTemplate. Потом оборачиваем в COMОбъект и подключаем к BAS / 1С.
Если вы работаете на Linux, COMОбъект можно обернуть в приложение, которое будет писать код в файл, а вы из 1С сможете его читать. Не самый удобный вариант, но всё же.
Или же чуть улучшить ситуацию – скрипт с фреймворком обернуть в exe-приложение. При запуске программы BAS / 1С сначала будет выполняться анализ запущен сервис или нет. Если не запущен – он запускается. Далее к нему происходит обращение. При этом в ваш скрипт должен быть встроен SimpleHTTPServer, который делает вызовы и слушает нужный порт (например, https://github.com/comol/OneCWebFramework). То есть из BAS / 1С вы разворачиваете еще один микросервис, к которому обращается сервер BAS / 1С.
Этим решаются две задачи:
- разворачивание происходит быстро и просто, потому что всё это в рамках приложения BAS / 1С;
- скорость работы высокая, потому что сервис работает по протоколу HTTP, и при падении BAS / 1С его снова поднимает.
Время займет только первый вызов при инициализации, пока не наработается пул соединений к сервисам HTTP. А дальше всё будет быстро работать.
Подходит для Python, NodeJS и .NET. Для запаковки Python-скриптов в exe-файлы есть AutoPyToExe. В NodeJS для упаковки в exe есть Pkg. .NET по умолчанию компилируется в exe.
Вот как это выглядит (см. изображение) в 1С – при выполнении скрипта робот открывает окно проводника и кликает на картинку.
Оптическое распознавание символов (OCR)
Сейчас появилось очень много решений для оптического распознавания символов. Большинство из них используют для работы библиотеку Tesseract OCR от Google. Для этого сканируется как можно больше текста, чтобы программа обучилась.
Международная компания по разработке решений в области интеллектуальной обработки документов Abbyy добавили к OCR такие навыки, как знание языка, орфографии и фонетики. Их платформа Abbyy FlexiCapture – для интеллектуальной обработки информации из сканов, фото, электронных писем и документов – одна из лучших и легко интегрируется с BAS / 1С.
Программа Tesseract – бесплатная программа для распознавания текстов, с помощью которой вы за час сможете сделать свою распознавательную программу. Она не распознает не всё, например, не идентифицирует всю первичку при внесении в BAS / 1С, но главное, что значительно упрощает документооборот. Сможет распознать паспорта в документах, реквизиты и подобное, а так же классифицировать эту информацию.
Так же в оптическом распознавании символов можно использовать пакет программ MATLAB (входящий в него OCR Training Engine). Для этого добавляете изображения символов, гдн 1 изображение – это 1 символ, и после нажатия кнопки у вас тренируется OCR. Потом она генерируется в код .NET-библиотечки, которую вы можете подключать к 1С.
Подытожим ещё раз: компьютерное зрение – это не нейронные сети, а набор фильтров, которые мы можем применить к изображению и получить ещё более качественное изображение.
Глубокое обучение (Deep Learning)
Глубокое обучение отличается от машинного тем, что в нем каждый фильтр для компьютерного зрения представляет собой один слой нейросети.
Например, один из слоев нейросети делает рисунок черно-белым. У этого слоя есть определенный набор параметров, по которым связи между нейронами фильтруют черно-белое изображение. Следующий фильтр (второй слой), например, идёт детектирования объектов, следующий – фильтр обобщения. И так вы наслаиваете фильтры, вплоть до распознавания отдельных изображений (или пока не получите ту детализацию, которая вам требуется).
Обучать каждый слой нейронной сети нужно осознанно. Когда вы обучаете слой делать черно-белые изображения, в данном случае вы подстраиваетесь не под то, что изображено, а именно под то, что всё изображение стало черно-белым и такого качества, чтобы уже следующий слой смог распознать и выделять объекты.
И каждый слой разрабатывается исходя из той задачи, которую он будет выполнять.
Вот что считается осознанными слоями в глубоком обучении. Это можно назвать проектированием сетей глубокого обучения.
NLP – работа с естественным языком.
Напомним, Natural Language Processing (NLP) – обработка процессов естественного языка. Для работы с NLP достаточно 2-3 библиотеки. Можно поискать доступные библиотеки на Python со стандартным word2vec, простые и удобные. На основе которых можно сделать чат-бота, основанного на ИИ, бесплатного и обучаемого вами для работы в системе консультирования.
Инструменты
- Самый распространённый инструмент сейчас с множеством библиотек – Python. Например, из 1С к HTTP-сервисам Python можно обратиться через BaseHTTPRequestHandler или SimpleHTTPServer. Просто, удобно, быстро.
- R – более сложный инструмент, не для классических разработчиков.
- MATLAB – инструмент с визуальным конструктором. Особенно удобно для тех, кто не любит писать код. MATLAB отличается от Python неимением возможностей TensorFlow. Но зато в нём удобнее и быстрее выполнять базовые функции. В MATLAB можно обучить модель регрессии (regression learner) и классификации данных (classification learner), что позволит решить множество функций, в том числе и AutoML (автоматизированное машинное обучение).
- Сервис Machine Learning Microsoft Azure. Отличный вариант для тех, кто хочет упростить себе работу по максимуму и ленится делать самостоятельно. В нём нужно пройти регистрацию. Бесплатный до определенного объёма, потом потребуется оплачивать возможность работать с ним. Простой и по окончанию работы в нём можно в закладке Web Service сгенерировать веб-сервис, который будет открыт и доступен по ссылке. Потом в эту модель кидается HTTP-запрос и сервис сам будет выдавать результат.
- Amazon – альтернатива Azure, в котором даже больше функций больше.
Анализ данных и прогнозирование
Если у вас есть желание сделать в BAS / 1С прогнозную модель, которая бы делала обучение или рекомендовала товары к покупке, то в программе BAS / 1С есть механизм «Анализ данных и прогнозирование».
Это сети внутри самой платформы (а никак не нейронные сети 1С), которые написаны на C++. И имеется дерево решений. Это простая и удобная модель прогноза, которая быстро работает и обучается.
Вы просто открываете там ИТС и смотрите примеры. Запрос по данным передается в модель анализа. Модель анализа представлена в виде колонок. Пишете «АнализДанных.Выполнить» и получаете модель, которую сохраняете в хранилище значений.
Если у вас простая классификация, этого вполне достаточно.
К тому же в BAS / 1С есть:
- предиктивная аналитика
- кластерный анализ
- поиск последовательностей
- построение цепочек событий
Всё это в рабочем состоянии и с инструментарием.
Искусственный интеллект в 1С
Искусственный интеллект в 1С применяется очень даже активно. Хотя это далеко не всем известно. Потому что проблема не в том, что нет технологий или знаний, а в том, что не все применяют знания и технологию в нужных кейсах.
- В 1С ERP ИИ может прогнозировать закупки
- В 1С ITIL ИИ классифицирует обращения. Делает это правильно и очень успешно. Ещё и пишется за 10-20 минут.
- 1С Документооборот имеет оптическое распознаванию символов (OCR) и распознает изображения и PDF.
- 1С Fresh – в ней оптическое распознаванию символов распознает текст, а так же создает документы на его основании и автоматически заполняет их значениями.
- 1С Товары – система, способная управлять ассортиментом и рекомендовать клиентам товар. Создана система с использованием градиентного бустинга.
Обучение нейросети в 1С
Т.к. 1С представляет собой интерпретируемый язык, то в ней возможно обучение нейросети, но заниматься в 1С построением архитектуры – трата времени. Как и писать вручную перцептроны. Например, 1С Товары – доработанный сервис, потому что изначально задумывался, как анализатор данных.
Да, 1С – это прекрасный универсальный фреймворк, но для решения специальных задач его нужно интегрировать с чем-то.
Использование искусственного интеллекта в 1С
- OCR (оптическое распознаванию символов) – классика 1С – это распознавание первички. Наиболее оптимальное решение – Abbyy FlexiCapture. Просто в пользование и легко синхронизируется с 1С.
- Автоматическое разнесение операций по счетам бухгалтерского учета, аналитика. Причем это можно сделать и только при помощи встроенных сервисов 1С, без посторонних. Если бухгалтер поставил аналитику, на ней в 1С можно обучить статистическую модель и дальше эту аналитику подставлять.
- Аналитика затрат проектов. Тут принцип действия описанной выше аналитике. Если кто-то из сотрудников постоянно выполняет одно и то же действие, этому можно обучить модель. И это не какое-то дремучее сложное действие, а вполне простые операции.
- Классификация первичной документации. То, что программа может распознать документ – прекрасно, но ведь ещё надо, чтобы оператор его проверил. И тогда получается, что распознавание документа никак не облегчает работу оператора. А вот когда программа документ вместе с его реквизитами классифицирует, определяя, что документ является накладной или счетом-фактурой, с определенным номером и подразделением – вот это по-настоящему круто! Здесь же можно автоматически разнести первичку в ту аналитику, в которую требуется.
- Чат-боты для обработки обращений клиентов. Для чат-бота можно воспользоваться платформой DialogFlow.
- Роботизация действий пользователя. Отличная альтернатива ручной работе оператора в 15 системах и открытию одного и того же Excel-файла по 100 раз. Всё просто и стабильно.
- Скоринг – оценка кредитоспособности. Если вам нужно в CRM оценить контрагента, сделку, лид, если нужно повысить приоритет тикету в зависимости от того, чей он и не прописывать вручную «приоритет 1, если тикет от директора», вы можете обучить этим действиям нейронную сеть. Потом, на основании дальнейших действий, она будет анализировать приоритеты и проставлять их автоматически. Для решения этой задачи используются деревья решений.
- Рекомендации товаров. Для этой функции используется градиентный бустинг (CatBoost, XGBoost – быстрые в работе).
- Прогнозирование. Например прогнозирование количества товара, бюджета, движения денег. Только для этого решения у вас в 1С должно успешно функционировать бюджетирование.
- Транспортная логистика – поиск наиболее оптимального маршрута. Для этой функции используется такое средство искусственного интеллекта, как генетические алгоритмы.
- Распознавание автомобильных номеров (в наше время это очень распространённая опция).
Набирает популярности и является очень удачным решением – роботизация процессов, т.е. замена человека (его действий) роботами. В роботизации активно используется искусственный интеллект для автоматизации. Пока что на уровне компьютерного зрения. Но как показала практика даже роботы способны на творческие процессы, которые могли бы посоперничать с человеческим воображением.
Да и почему бы не автоматизировать то, что можно автоматизировать? Ручная рутина крадет у людей драгоценный ресурс – время. Время, которое можно использовать на что-то более важное – тот же маркетинг или общение с клиентом, расширение ассортимента и т.д.
Искусственный интеллект для разработчиков
Как можно использовать искусственный интеллект разработчикам расскажем на примере сервиса codota – сервиса, где код генерируется автоматически (благодаря машинному обучению по структуре программного кода). То есть обучили искусственный интеллект автоподстановке.
В 1С тоже есть функция автоподстановки и работает она до конца слова. А теперь представьте, что вы будете использовать в 1С код целыми блоками, включая библиотеку стандартных подсистем. Вам стоит только написать запрос, а программа сама формулирует подстановку параметров, обработку результатов и прочее, что прописано в шаблоне. И автоподстановка сразу всё предлагает для совершения операции.
Тем более, что 1С имеет и единую базу кодов, и единые правила кодов. Что даже облегчает введение автоподстановки.
Подведем итог
Искусственный интеллект – друг и помощник, но не волшебная палочка, которая может сделать за вас глобально ВСЁ.
Конкретно в 1С нецелесообразно копать до архитектуры нейронных сетей, составлять для 1С глубокое обучение (Deep Learning) и обучать модели. Хотя бы потому, что готовых моделей уже множество и они просты в применении.
Можно, конечно, использовать и деревья решений в 1С, но гораздо проще написать недлинный код на Python и обернуть их в HTTP-сервис.
Распространённые вопросы
– Справится ли искусственный интеллект с функциями системного администратора, который будет обслуживать Систему управления базами данных в 1С, контролировать процессы, выполнять донастройки?
Теоретически, возможно, но это очень сложно. Есть более простые готовые решения. Например, существует автоматический мониторинг проблем производительности в 1С – они анализируют журнал регистрации, отслеживает сообщения о том, что система где-то глючит или дает сбой, и сама же делает из этих ситуаций выводы.
– Роботизация и дальше будет развиваться?
Современные технологии таковы, что скорее всего разработчики ИТ систем станут переключаться на разработку роботов. И их будет становиться больше.
– Где успешнее всего применяется искусственный интеллект?
В использовании ботов, в статистике, в авторазноске платежей, в рекомендации товаров (сервис 1С Товары тому подтверждение) – в него выгружаются розничные продажи и сервис дает рекомендации чем ещё можно пополнить магазин, какой товар удалить, какого приобрести больше.
В бюджетировании зависит от того насколько давно оно используется, потому что в бюджетировании присутствует творческий элемент, потому не так просто обучить ему модель.