Умные машины и их обучение. Применяем искусственный интеллект на реальных задачах бизнеса

Публикация № 1210698 16.03.20

Разработка - Идеи и тренды в разработке

Анализ данных и машинное обучение стремительно входят в нашу жизнь. Как решать ежедневные задачи специалиста 1С с помощью технологий машинного обучения на конференции Infostart Event 2019 Inception рассказал разработчик в группе рекомендаций Яндекс.Маркет Владимир Бондаревский.

Добрый день! Меня зовут Владимир Бондаревский, я работаю в Яндекс.Маркете, занимаюсь разработкой рекомендательных систем.

 

О себе и Яндекс.Маркете

 

 

Пару слов о себе. Достаточно длительное время проработал в фирме «1С», успел сделать много интересных полезных штук.

С 2017 года работаю в Яндекс.Маркете, занимаюсь разработкой рекомендательных систем.

 

 

Думаю, не нужно рассказывать, что такое Яндекс.Маркет. Это, наверное, все знают.

Немного цифр:

  • это сотни миллионов предложений от магазинов;
  • более 2 миллионов пользователей в день;
  • 30 миллионов уникальных наименований товаров.

В таком объеме информации очень трудно найти что-то нужное для пользователя. Единственная надежда – на поиск и на рекомендации.

 

Рекомендации в Яндекс.Маркете

 

 

Так как я занимаюсь рекомендациями, расскажу пару слов об этом.

Даже самые простые рекомендации увеличивают продажи.

Мы делаем персональные рекомендации, то есть рекомендации, которые учитывают интересы пользователей, историю посещения ими сайтов и очень много всякой информации.

 

 

Также делаем рекомендации, которые можно порекомендовать какому-то определенному товару – например, при просмотре iPhone мы предлагаем купить к нему защитное стекло, чехол и что-то вроде этого.

В Яндекс.Маркете мы используем машинное обучение практически для всего:

  • для ранжирования поисковой выдачи;
  • для ранжирования товаров в категориях;
  • для рекомендаций;
  • для поиска похожих картинок;
  • для поиска картинок по смыслу;
  • для кластеризации одинаковых предложений от магазинов в одну карточку товара;
  • для прогнозирования спроса;
  • оптимизации рекламы и многого другого.

Если где-то в Яндекс.Маркете еще не используется машинное обучение – значит, просто руки еще не дошли.

И сегодня я как раз и хочу немного увести вас в тему машинного обучения, рассказать про то, как можно начать использовать его в своих задачах. Возможно, после моего доклада кто-то заинтересуется, и в мире 1С тоже что-то появится. Сейчас область интеграции машинного обучения и 1С достаточно свободная – бери и делай.

 

Искусственный интеллект vs Машинное обучение vs Нейросети vs Глубокое обучение

Наверное, многие из вас слышали фразы «Искусственный интеллект будет помогать прогнозировать затраты в ERP», «Нейросети обыграли человека в игру Го» и т.п. Так в чем же разница между этими понятиями?

 

 

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

В профессиональной среде используется термин «Машинное обучение», Machine Learning, просто ML.

 

 

Давайте разберемся:

  • Искусственный интеллект – это область, которая занимается машинным обучением, такая же, как биология, химия, физика. Почему-то никто не говорит: «используя химию, мы что-то сделаем».
  • Машинное обучение – это один из разделов искусственного интеллекта. Один, но при этом не единственный. Есть еще, например, экспертные системы и много-много других.
  • Нейросети – это один из алгоритмов машинного обучения. Популярный, но есть и не хуже.
  • Глубокое обучение – это архитектура сетей и подход к обучению. По факту, мало кто различает глубокие и неглубокие сети. Просто говорят – сеть такая-то, архитектура такая-то.

 

 

На этой картинке хорошо видно, как это все взаимосвязано.

Тут приведена ссылка https://vas3k.ru/blog/machine_learning/, очень рекомендую пройти по ней и прочитать статью про основы машинного обучения – доступным языком, очень легко читается.

 

Машинное обучение

 

 

Так, собственно, что такое машинное обучение?

Для начала рассмотрим, как решаются задачи в традиционном программировании.

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

 

 

Допустим, у нас есть задача научиться определять вид активности человека в конкретный момент времени. Например, он носит фитнес-трекер, мы хотим знать, что в конкретный момент человек делает.

  • Мы пишем условие – если скорость меньше 4, значит, это ходьба.
  • Потом человек побежал, и мы добавляем ветку условия, которая тоже ориентируется на скорость.
  • Потом наш человечек стал женщиной, сел на велосипед и поехал. Мы тоже хотим научиться понимать, что он едет на велосипеде – казалось бы, тут тоже все просто, добавили еще одну ветку.
  • А потом человек снова стал мужчиной и полез в воду. Вроде он плывет, скорость у него что-то между ходьбой и бегом. При этом нагрузка гораздо сильнее. Как такую задачу решать? Сразу непонятно.

Причем, здесь в условии идет ориентир на скорость, а в реальности-то нет такого значения. Есть какие-то параметры с датчиков типа гироскопа, акселерометра, датчика температуры кожи и т.д. – много разных цифр, получаемых с этих датчиков.

 

 

В этом случае нам как раз приходит на помощь машинное обучение.

  • Мы берем все наши данные с датчиков и размечаем их конкретным видом деятельности.
  • Мы смотрим на человека, видим, что он делает, и проставляем метки для наших показаний. В итоге у нас получается какой-то набор данных.
  • Берем алгоритм машинного обучения и подаем ему на вход эти данные, чтобы он выработал какие-то паттерны – извлек правила из данных и ответов.
  • И на выходе мы получаем какую-то систему, которая сама обучилась, нашла правила, закономерности. И мы можем ее использовать на новых данных, чтобы получать ответы.

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

А если бы мы использовали традиционный подход, там надо было бы добавлять какие-то параметры в условия, что-то самим думать – достаточно сложно.

 

 

Главные вещи, на которых базируется машинное обучение – это:

  • данные:
    • как правило, чем больше данных, тем лучше.
    • главное, чтобы данные были хорошими – если мы на вход будем подавать мусор, мы и на выходе получим мусор.
  • признаки. Это некие независимые переменные, по которым мы будем предсказывать целевое значение. Это могут быть:
    • пиксели в картинке;
    • слова в тексте;
    • числа – например, обороты с контрагентами и пр.
  • и самое главное – это алгоритмы. Под разные задачи – разные алгоритмы. Не существует какого-то одного универсального алгоритма, который решил бы все задачи – взяли бы нейросеть, и она нам все смогла бы сделать. Под каждую конкретную задачу какие-то алгоритмы подходят лучше, какие-то – хуже. Какие-то работы в направлении того, чтобы сама нейросеть умела выбирать нужные алгоритмы для задачи, ведутся, но пока ничего хорошего нет.

 

Данные

 

 

Немного подробнее про данные.

Данные бывают структурированными – например, таблицы в базе данных. С ними работать относительно просто.

 

 

Данные бывают в виде текста – сообщения, описания товаров, отзывы, комментарии и др.

 

 

Это тоже данные – картинки, видео, спектрограммы звука и пр.

 

Признаки

 

 

Немного про признаки.

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

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

  • много капслока;
  • какие-то слова «Увеличить до 25 см», «Вы выиграли миллион долларов»;
  • большое количество вхождений символа доллара в тексте письма и т.д.

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

 

 

Но есть и другой способ – мы можем взять те же письма, разделить их на слова или даже на отдельные символы и подать это на вход нейросети. И пусть она сама найдет какие-то паттерны, которые будут говорить, спам в письме или нет.

Какой здесь плюс? Мы освобождаем человека от рутинной работы, просто грузим железо. Купили железо, загрузили в него данные, на выходе что-то получили.

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

 

Алгоритмы

 

 

Теперь – самое главное, алгоритмы.

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

  • Если у нас данные простые, какие-то линейные зависимости – берем линейную регрессию. Она обучается мгновенно, результат тоже выдает очень быстро. Много где используется в силу своей простоты. Казалось бы, это – прошлый век (по сути, регрессия идет из 18 века). Но по факту – очень хороший алгоритм.
  • Если у нас появляются какие-то нелинейные зависимости, мы берем деревья, ансамбли деревьев (случайные леса, градиентный бустинг поверх деревьев – главный конкурент нейросетей и т.п.).
  • А если данных у нас очень много (миллионы примеров), а еще данные какие-то непонятные (признаки неочевидны), мы берем нейросети. И, как правило, это работает.

 

 

Опять же, я уже приводил ссылку https://vas3k.ru/blog/machine_learning/, там хорошо показано, какие бывают виды машинного обучения. Советую прочитать эту статью.

 

 

А вот такой ужас у нас с нейросетями.

Наверное, многие знают, что такое перцептрон, видели его классическую схему – вход, скрытые слои, выход. Но мир не стоит на месте, на слайде показаны даже не все архитектуры, которые сейчас есть. Это какое-то подмножество. Можно зайти по ссылке https://www.asimovinstitute.org/neural-network-zoo/ и там изучить подробнее.

 

Процесс обучения нейросети

 

 

Расскажу немного про процесс, как мы обучаем.

  • Формулируем задачу, проверяем ее адекватность и возможность реализации. Как можно быстро приближенно проверить адекватность? Если посадить человека и дать ему эту задачу, и он сможет, не задумываясь, ее решить за одну секунду, то, скорее всего, машинное обучение с этим тоже справится. И, как правило, оно потом будет делать это лучше, чем человек. И не уставать.
  • В зависимости от задачи смотрим, есть ли у нас данные. Если нет – начинаем собирать. Либо где-то приобретаем.
  • Данные нужно подготовить, убрать пропуски и преобразовать в какой-то структурированный вид.
  • Дальше мы трансформируем наши данные. Практически все алгоритмы не умеют работать с данными и с текстом в прямом виде – необходимо преобразование в числовые значения. Трансформация заключается в том, что мы переводим:
    • тексты – в векторы чисел;
    • картинки – в пиксели;
    • числовые значения приводим к шкале от -1 до 1 (или от 0 до 1).
  • Делим эти данные на две части – тренировочные и тестовые.
  • На тренировочных данных обучаем модель и оцениваем результаты.
  • Если что-то не очень хорошо идет, подкручиваем гиперпараметры. Поясню, что такое гиперпараметры. Если вы вспомните слайд, где был показан нейрон, там были коэффициенты, которые мы умножаем на входящие значения. Во время обучения мы их подстраиваем. Это будут параметры – то, на что мы не можем влиять, оно само формируется в процессе обучения. Это некий «черный ящик». А гиперпараметры – это ручки к этому ящику, мы можем их подкрутить и как-то донастроить сеть в процессе обучения.
  • После того, как мы модель обучили, проверяем ее на тестовых данных. Зачем вообще нужны тестовые данные? Они нужны, чтобы как-то сэмулировать появление новых данных, которых до этого не было, и избежать ситуации, когда при появлении новых данных в продакшен мы получим что-то неработающее. Самое главное – никогда не показывать тестовые данные во время обучения. То есть, мы забыли о них, отложили, получили какую-то модель в ходе обучения, а потом проверяем по тестовым данным.
  • В результате получаем какую-то финальную оценку. Если она адекватная, то можно попробовать выкатить это в прод, посмотреть, как все это будет работать. Если нет, то возвращаемся в самое начало, возможно, даже придется переформулировать задачу, потому что она не реализуема в текущий момент. И так далее – все это в цикле может повторяться.

 

Недостатки встроенных средств для анализа данных в 1С

 

 

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

Так как у нас конференция по 1С, то в 1С, вы знаете, есть такой механизм «Анализ данных и прогнозирование», который был в платформе 8.0 с самого начала. Ему 17 лет. За это время он практически ни разу не менялся. Эта такая обнадеживающая штука, которая, по идее, должна работать. Этот механизм даже используется в паре конфигураций – в ERP, например, используются его составляющие (кластеризация и общая статистика).

Из чего состоит механизм «Анализ данных и прогнозирование»:

  • Общая статистика – хорошая штука. Хотя сейчас, в принципе, общую статистику можно заменить механизмом СКД – там как раз добавили ковариации и прочие статистические методы.
  • Кластерный анализ – механизм ограниченного действия, мало где можно применить.
  • Дерево решений – результат, который сейчас выдается этим механизмом, очень плохого качества по сравнению с библиотеками на Python и никак не приближается к ним по качеству даже близко, я проверял.
  • А поиск ассоциаций и поиск последовательностей – это вообще нежизнеспособные штуки, я про них даже говорить не буду.

 

 

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

 

 

А еще мы можем сделать механизм машинного обучения в 1С сами, средствами встроенного языка. Информации, как это реализовать, много, все достаточно просто.

Да, это обязательно стоит сделать в академических целях, а потом отложить и забыть, как о страшном сне.

Почему? Потому что решение, которое будет на встроенном языке, работает на три порядка медленнее, чем простой цикл на C++. И на четыре порядка медленнее, чем GPU.

 

 

Или мы можем написать на C++ штуку, которая умеет параллелиться, потому что используются в основном какие-то матричные операции, и это все очень хорошо параллелится.

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

 

Готовые решения для работы с машинным обучением

 

 

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

Теперь кратко по этому набору – это все на Python, все бесплатное. По сути, все самое крутое.

  • scikit-learn (https://scikit-learn.org/) – библиотека для машинного обучения, которая реализует классические алгоритмы (деревья, регрессии и прочие штуки). Очень много всяких вспомогательных средств для разбиения данных, кроссвалидации, оценок, метрик и пр.
  • CatBoost (https://yandex.ru/dev/catboost/) – это реализация от Яндекса градиентного бустинга поверх деревьев решений. Эта библиотека совместима с scikit-learn по API. Очень крутая, по сути, в своем классе, лучшая (может быть, для каких-то конкретных задач будут другие победители). Очень активно используется в Яндексе.
  • Pandas (https://pandas.pydata.org/) – это штука для работы с табличными данными. Там можно читать разные форматы, фильтровать, обрабатывать их как-то. Если откинуть в СКД визуальную составляющую, то pandas ее уделывает, как щенка какого-то.
  • numpy (https://numpy.org/) – это библиотека для работы с векторами. По сути, это линейная алгебра. Работает очень быстро, на три порядка быстрее, чем код на 1С
  • jupyter (https://jupyter.org/) – это некая IDE в браузере, в которой очень удобно писать построчно код, сразу видеть какой-то результат, сразу вставлять какие-то картинки, в результат выводить графики – все в одном документе. Очень круто.
  • TensorFlow (https://www.tensorflow.org/) – библиотека от Google для обучения нейросетей.
  • Flask (https://palletsprojects.com/p/flask/) – это некий веб-фреймворк, на котором можно буквально в две строчки взять готовую модель и сделать API, которое можно использовать в 1С.

 

Делаем свой классификатор и дружим его с 1С:Предприятие 8

 

 

Давайте рассмотрим небольшой практический пример. Сделаем свой текстовый классификатор и научим его дружить с 1С.

Задача такая – есть некий набор номенклатур, мы хотим его группировать по номенклатурным группам. Вот у нас категории – «Авто», «Товары для здоровья» и пр.

У меня в Маркете такие данные есть, я их для этого примера взял. А так, вы можете вместо текста номенклатуры взять письма на хотлайн, если они у вас есть. Или можете вместо групп взять, скажем, разделы – «Платформа», «Бухгалтерия предприятия», «Управление торговлей». Или «Срочно» и «Не срочно». То есть, этот пример подходит и для случая, если у нас будут письма или любые другие текстовые данные, которые мы хотим как-то классифицировать.

 

Трансформация данных

Как это все отдать в нейросеть, если она хочет цифры?

Мы пронумеровываем все категории от 1 до 15. Казалось бы, у нас уже есть числа, мы можем их подменить. Но при этом, у нас почему-то последняя категория «Товары для животных» будет иметь номер 15, а категория «Авто» будет иметь номер 1. То есть, мы уже вводим какое-то ранжирование. Почему-то животные у нас приоритетнее. Если мы умножим, то у нас получится какой-то перевес.

 

 

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

То есть, для пятнадцати категорий у нас будет 15 колонок с единичкой в каждой строчке – для соответствующего значения столбика. С этим уже можно работать.

 

 

С текстом сложнее. Текст сначала надо подготовить, а потом преобразовать в векторное преобразование, используя концепцию word2vec. Подробнее о концепции word2vec можно почитать в статье на Хабре https://habr.com/ru/post/446530/ 

 

 

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

 

 

Например, из нашего текста получится вот такой словарь – все слова в нем пронумерованы от 1 до количества слов.

 

 

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

 

 

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

Например, если у нас есть слова «кошка» и «собака», то они будут где-то в одном пространстве, близко друг к другу. А «кошка» и «карандаш» у нас будут иметь расстояние больше, потому что кошка и собака в текстовом контексте рядом встречаются чаще, нежели кошка и карандаш, или собака и карандаш.

 

 

Такую штуку называют векторным представлением слов. Или чаще можно услышать «текстовые эмбеддинги».

С помощью методов снижения размерности (например, t-SNE, PCA) текстовые эмбеддинги легко визуализировать. Например, на сайте https://projector.tensorflow.org/ можно загрузить получившийся текстовый эмбеддинг, ввести слово и покрутить, посмотреть близкие семантически к нему слова. Там видно, например, «дрель», а рядом с ним «шуруповерт» и прочие близкие по смыслу слова.

 

Обучение модели

 

 

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

Первым делом импортируем библиотеки.

 

 

На строке 14, используя pandas, загружаем данные из файла.

Далее заводим какой-то массив, в котором у нас будут метки, соответствующие категориям товара.

 

 

Разбиваем данные на тренировочные и тестовые. Из интересного:

  • параметр stratify=y означает, что, если у нас эти категории как-то распределены в данных, мы хотим это же распределение сохранить и в тестовой, и в тренировочной выборке;
  • shuffle=True означает, что мы как-то случайно набираем данные из этого набора;
  • test_size=0.3 – это размер тестовой выборки.

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

 

 

Дальше, задаем гиперпараметры:

  • размер словаря MAX_WORDS;
  • OOV_TOKEN – символ, который мы будем использовать, если слова нет в нашем словаре;
  • MAX_SEQUENCE_LENGTH – размер предложения. Здесь у меня простые гиперпараметры – не больше 10 слов в названии товара, если вам нужно будет заголовки писем классифицировать, там можно 300-400 поставить;
  • Размер вектора EMBEDDING_DIM, как правило, больше 300 не делают;
  • Количество эпох EPOCHS – это сколько раз мы будем прогонять весь набор данных при обучении нейросети;
  • И BATH_SIZE – сколько данных выбирать при обучении.

Все эти гиперпараметры, как правило, нужно настраивать.

 

 

Далее – создаем и обучаем токенизатор.

Токенизатор – это такая штука, которая переводит наши тексты в словарь, в котором к каждому уникальному слову проставлено число.

Строка 62 берет наши текстовые строки и по этому словарю переводит в векторы чисел.

Строка 70 – это на тот случай, если у нас максимальная строка – 10 слов, а у нас, скажем, 3, то все остальные 7 слов мы дополняем нулями. Причем можно выбрать – слева или справа дополнять.

 

 

Далее – берем наши тексты, преобразуем в наборы чисел. Получаем вот такие вектора чисел.

 

 

Здесь мы создаем нейросеть. Видите, как просто – пара строчек кода, и у вас есть мощная нейросеть.

Sequential() – это такой режим, когда мы берем слои и в режиме стека сверху складываем новый слой.

  • Здесь главное учесть, что первый слой должен соответствовать нашему входному вектору эмбеддинга (его измерение – это количество наших уникальных слов). Получаем слой с многомерным тензором, размер которого равен размеру эмбеддинга на количество слов в предложении.
  • Дальше создается слой рекуррентной нейросети LSTM – это более продвинутая нейросеть, у которой есть память, и она умеет очень хорошо работать с последовательностями. Например, тексты – это последовательности, когда предыдущие предложения дополняют смысл следующего слова.
  • На следующей строке Dense – это, по сути, наш перцептрон. Мы в нем задаем, что количество выходов будет равным количеству входных классов. Функция активации «softmax» приводит сумму всех значений к единице и, соответственно, тот класс, на выходе у которого будет большее значение – это, по сути, и будет тот класс, который мы хотим получить.

С помощью метода fit мы запускаем обучение нейросети.

Из интересного – я пробовал обучать на массиве из миллиона слов, на моем компьютере нейросеть обучается где-то 4 часа (32 Гб памяти, i7, NVidia видеокарта). Если вы будете писать такое средствами 1С, это будет обучаться от полугода до 4-х лет

 

 

И в конце мы сохраняем обученную модель и токенизатор в отдельные файлы, которые будем использовать в нашем веб-сервисе.

 

 

Подробнее об обучении нейросетей можно почитать на Хабре:

 

Веб-сервис классификатора

 

 

Это – API нашего веб-сервиса на flask. Тут в строчке 39 у нас будет некий HTTP-метод predict(), в который мы по POST будем отправлять текст в виде JSON.

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

 

Интегрируем веб-сервис с 1С

 

 

В 1С это выглядит так.

Используется библиотека КоннекторHTTP (//infostart.ru/public/709325/), которую я написал – я за вас уже половину работы сделал.

Вы берете текст, передаете его в метод PostJson() и получаете ответ.

 

 

Вот так это приблизительно выглядит. Видно, что карта памяти – это у нас компьютерная техника с уверенностью практически 100% (от 0 до 1).

Например, если бы я убрал «памяти», убрал «Samsung», она бы все равно предсказывала, что это – компьютерная техника, просто уверенности было бы меньше.

 

 

Например, я пробовал «Сибирская корона светлое 1л», и она уже понимает, что это – пиво.

 

Результат

Этот пример выложен на GitHub https://github.com/vbondarevsky/infostart_event_2019 

Вы можете взять свои данные и сделать на их основании свой текстовый классификатор, чтобы как-то его использовать уже в 1С.

Точность, причем, у меня получилась хорошая, хотя для обучения я использовал порядка 1% своих данных. При этом она хорошо предсказывает и для других 99%.

 

 

****************

Данная статья написана по итогам доклада (видео), прочитанного на конференции INFOSTART EVENT 2019.

Больше статей можно прочитать здесь.


 

*************

 

Специальные предложения

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. skyboy13 13 19.03.20 20:49 Сейчас в теме
А как поднять веб-сервис на flask. Где посмотреть пример и описание этого процесса?
2. 🅵🅾️🆇 514 24.03.20 11:50 Сейчас в теме
(1) Так в статье это написано, смотри слайд `Веб-сервис классификатора`.
Там функция `predict` с аннотацией `@route('/predict')` - это твой HTTP метод.

На самом деле можешь даже взять что то еще проще, например aiohttp вместо flask.

По сути http сервис поднимается на любом языке с пол пинка.
А тебе всего то надо 1 POST запрос принимать, сделать этакое api к готовой либе и обученной модели (в контексте статьи).
Да и в самой 1С собрать http запрос и сериализация/десериализация в json - пару строчек кода.
4. bonv 1385 24.03.20 13:41 Сейчас в теме
(1) дополню к (2)
- установить python (полно инструкций в Интернете)
- установить Flask
- простой пример для понимания
pavelpribytkin96; Дмитрий74Чел; skyboy13; +3 Ответить
7. skyboy13 13 24.03.20 15:23 Сейчас в теме
3. 🅵🅾️🆇 514 24.03.20 11:52 Сейчас в теме
(0) Большое спасибо за статью, все очень понятно и доступно по верхам разжевано.
Давно в планах выучить линал и разобраться с основами машинного обучения, даже книжечка "грокаем машинное обучение" валяется.
Останавливает наличие других задачек и не любовь к пистону)
Но видимо осенью засяду за TensorFlow (тк веб и мобильники)
5. bonv 1385 24.03.20 13:45 Сейчас в теме
(3)
Давно в планах выучить линал и разобраться с основами машинного обучения, даже книжечка "грокаем машинное обучение" валяется.

Вообщем-то можно сделать что-то полезное и без "линейная алгебра, производные, методы машинного обучения под капотом и т.п."
6. 🅵🅾️🆇 514 24.03.20 13:50 Сейчас в теме
(5) Ну это понятно. Как в статье верно подмечено, если рассматривать либу как некий "черный ящик".

Еще полезнейшая и актуальная весч это NLP:
https://cloud.google.com/natural-language
8. Алексей777 81 25.03.20 21:44 Сейчас в теме
Пожалуй, лучшая статья на инфостарте в данном направлении. Спасибо, Владимир!
9. gudun_ku 62 27.03.20 10:43 Сейчас в теме
Спасибо за статью. Только вот про ситуацию на местах - у нас бизнесу дашборд то не нужен, вернее его регулярно переписывают, то делали в 1с, потом я сделал на веб, потом опять уже другие на 1с, все одно и тоже, теперь про него вовсе забыли и даже не обновляется он, потому что опять переход с одной версии 1с на другую... какое уж тут машинное обучение...
10. starik-2005 2810 09.03.21 16:46 Сейчас в теме
"и не имеет повторяющихся абзацей"... Интересно...
11. newtraveller 24 22.03.22 11:16 Сейчас в теме
Попробовал воспроизвести пример в окружении TensorFlow 2.7 на Python 3.9
Ошибок нет, но качество прогноза плохое (не определяет НГ для "Карта памяти Samsung" и "Сибирская корона светлое")

Вот элемент блокнота на моем окружении:
https://github.com/VitaliyVS-2020/TensorFlow-2.7-example/blob/main/Jupyter%20file/question_TF_2_7.ipynb

Предположительно дело в отличиях TensorFlow 1 и TensorFlow 2
Я новичок в Python, можете подсказать, что не так в новом окружении?

Сделал issues https://github.com/vbondarevsky/infostart_event_2019/issues/1
Оставьте свое сообщение

См. также

Как недетерминированная GPT может выдавать четкие ответы

Идеи и тренды в разработке Бесплатно (free)

У человека, не погруженного в тему, внезапно нахлынувший вал сообщений о GPT может оставить противоречивые чувства. Эксперты разделились на два, на первый взгляд, равновеликих лагеря. Одни авторитеты говорят, что это "вау!". Другие уверенно заявляют, что GPT это "генератор бреда". Чтобы вы могли разобраться самостоятельно, я расскажу, как это работает.

13.02.2023    1292    mkalimulin    16    

20

ChatGPT и 1С. Январь 2023

Идеи и тренды в разработке Россия Бесплатно (free)

"If you're listening to this, you are the Resistance!" John Connor. В этой статье я хочу показать уровень чат-бота ChatGPT в области 1С на январь 2023 года. И общие вопросы, и код написать, и поправить ошибки и т.д. Важно зафиксировать время, когда мы это делаем, так как чат-бот развивается и самообучается довольно быстро. Интересно будет написать подобную статью через год и, возможно, зафиксировать, как всё изменилось.

30.01.2023    6666    NovPas    20    

30

Продуктовая разработка на 1С

Идеи и тренды в разработке Облачные сервисы, хостинг Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

На 1С можно создавать онлайн-сервисы, не уступающие по функциональности другим современным продуктам. Чтобы начать это делать, нужно поменять подходы к разработке. О том, как быстро сделать свой продукт на 1С и выйти с ним на рынок, на конференции Infostart Event 2021 Post-Apocalypse рассказал CTO компании WiseAdvice Олег Филиппов.

28.10.2022    3160    comol    6    

34

Реализация нестандартных (для 1С) интерфейсных решений в Web-клиенте

WEB-интеграция Идеи и тренды в разработке Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Онлайн-сервисы, построенные на 1С, могут использовать все многообразие веб-технологий. О том, как спроектировать, реализовать и красиво оформить интерфейс продукта 1С, в докладе на конференции Infostart Event 2021 Post-Apocalypse рассказал CTO компании WiseAdvice Олег Филиппов.

21.10.2022    6483    comol    15    

69

Распознавание и загрузка документов в 1С Промо

Универсальная программа-обработка для распознавания любых сканов или фото первичных документов в 1С (счета-фактуры, УПД, ТТН, акты и тд). Точность распознания до 98%.

от 11 рублей

История развития телеграм-ботов в одной сибирской компании

Идеи и тренды в разработке Мессенджеры и боты Бесплатно (free)

Хочу рассказать историю развития и применения Telegram-ботов в одной компании. Говорить буду о том, что сделано, а не как сделано. Идея написать об этом возникла, так как, делясь опытом с коллегами, неожиданно обнаружил, что реализованные фичи вызывали немалое удивление, по принципу: "А так можно было?". Надеюсь, мой рассказ будет вам полезен и вдохновит на создание чего-нибудь занятного.

28.03.2022    1811    zeltyr    2    

13

Необходимый минимум по AI для 1С-ника

Идеи и тренды в разработке Бесплатно (free)

Технологии искусственного интеллекта (AI или ИИ) уже перестали быть Rocket Science, при этом они не ограничиваются линейной регрессией для решения простых задач. О том, какие особенности и ограничения есть у существующих технологий ИИ, и как они могут помочь 1С-никам, на онлайн-митапе «Интеграционные решения в 1С» рассказал руководитель управления ИТ компании WiseAdvice Олег Филиппов.

19.07.2021    14767    comol    49    

92

Распознавание лиц в связке с 1С "на коленке"

Идеи и тренды в разработке Платформа 1С v8.3 1С:Управление торговлей 11 Бесплатно (free)

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

02.07.2021    1651    KirillGermann    7    

8

Ускорение реструктуризации больших таблиц. Мой вариант

Идеи и тренды в разработке Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

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

28.04.2021    1731    buganov    0    

8

Учет умер, да здравствует учет!

Идеи и тренды в разработке Бесплатно (free)

Все громче звучат в последнее время разговоры о том, что профессия бухгалтера (как, впрочем, и еще целый ряд других) не выдерживает напора современных технологий. Даже если и есть тут некоторое преувеличение, то не такое уж и большое. Откройте прямо сейчас hh. Профессия «бухгалтер». В Москве 7 тысяч вакансий на полмиллиона соискателей. При том, что вакансий «программист» чуть ли не в три раза больше (20 тысяч). И пусть счет все еще идет на тысячи, не стоит обольщаться. Это — всего лишь инерция. Скоро все закончится, потому что… учет умер.

31.03.2021    1487    mkalimulin    32    

5

Готовые переносы данных из различных конфигураций 1C Промо

Рекомендуем готовые решения для переноса данных из различных конфигураций 1C. C техподдержкой от разработчиков и гарантией от Инфостарт.

Highload-оптимизация 1С: теория и практика на примере консолидированной отчетности группы "Магнит" и розничной аптечной сети "Магнит"

Идеи и тренды в разработке Платформа 1С v8.3 Бесплатно (free)

Тема оптимизации 1С на больших данных бесконечная и всеобъемлющая, поскольку на производительность влияет целый ряд факторов – количество пользователей, данных, транзакций, неоптимальные запросы и т.д. Об инструментах для локализации проблем производительности и практических кейсах оптимизации рассказал Алексей Олейник, руководитель сектора автоматизации отчетности МСФО компании «Информационные технологии Магнит».

11.01.2021    30391    user662404_itlexusss    14    

14

1С и Умный дом. Управление голосом

Идеи и тренды в разработке 8.3.6 Бесплатно (free)

Возможно ли управление устройствами умного дома из 1С, да ещё и голосом? Можно ли без умных колонок Google Home, Alexa, Алиса и иных платформ, а также без приложений от Google, Amazon и других управлять этими устройствами? Мой ответ – ДА, можно, нужно просто иметь умное устройство, имеющее возможность работы в DIY, 1С и программу распознавания голоса и взаимодействия с 1С.

04.01.2021    17273    osivv    15    

11

Натуральный интеллект

Мотивация, лидерство и личная эффективность Идеи и тренды в разработке Бесплатно (free)

Много слов сказано об Искусственном Интеллекте, как будут взаимодействовать новое и совсем не забытое старое.

17.08.2020    1797    Ликреонский    1    

2

Визионное программирование

Идеи и тренды в разработке Бесплатно (free)

Новый способ программирования и его практическая демонстрация.

22.04.2020    6413    mkalimulin    111    

24

RPA (роботизация) – "костыль" или автоматизация будущего? Идеи и практические примеры

Идеи и тренды в разработке Бесплатно (free)

Автоматизация действий пользователя упрощает интеграцию с внешними системами, сокращает рутинную работу, делает бизнес-процесс более контролируемым. О подходе Robotic Process Automation (RPA), случаях, когда его можно использовать, существующем рынке RPA-систем, на конференции Infostart Event 2019 Inception рассказал CTO компании WiseAdvice Олег Филиппов.

10.03.2020    17056    comol    2    

25

Работа с 1С:Аналитика Промо

Онлайн-курс предусматривает изучение возможностей системы “1С:Аналитика”, которая работает как составная часть платформы “1С:Предприятие” и обеспечивает оперативный просмотр и анализ необходимых данных.

4500 рублей

Криптовалюты в терминах 1С. Заключение

Идеи и тренды в разработке Бесплатно (free)

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

08.03.2020    2859    mkalimulin    296    

2

Что такое RPA? Как и зачем его делать на 1С?

Идеи и тренды в разработке Платформа 1С v8.3 Бесплатно (free)

В данной публикации я кратко (наверное, ещё раз) расскажу про подход к автоматизации, который принято называть RPA, и продемонстрирую этот подход применительно к 1С. На Infostart event был мой доклад на эту тему, поэтому не буду повторяться - чуть больше углублюсь в технические детали.

05.12.2019    16214    comol    95    

46

Приватный блокчейн и 1С популярно

Идеи и тренды в разработке Бесплатно (free)

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

02.09.2019    7919    mkalimulin    140    

9

Технология блокчейн: новые возможности информационных систем

Идеи и тренды в разработке Бесплатно (free)

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

26.07.2019    5158    Mick2iS    0    

12

Блокчейн, выборы и прозрачность, ч. 1

Идеи и тренды в разработке Бесплатно (free)

Как новейшие технологии помогают придумывать новости и выделять бюджет. Первая часть - абстрактно-теоретическая.

24.07.2019    6236    for_sale    20    

25

Программы для исполнения 488-ФЗ: Маркировка товаров Промо

1 января 2019 года вступил в силу ФЗ от 25.12.2018 № 488-ФЗ о единой информационной системе маркировки товаров с использованием контрольных (идентификационных) знаков, который позволяет проследить движение товара от производителя до конечного потребителя. Инфостарт предлагает подборку программ, связанных с применением 488-ФЗ и маркировкой товаров.

Раскручиваем Гайку: разработка ПО для роботов на платформе 1С

Идеи и тренды в разработке Бесплатно (free)

Роботы на 1С стали реальностью. Их разработкой пока на общественных началах занимаются в компании «Цифровой кот». Насколько перспективно это направление, какие возникали сложности, и какая помощь коллег требуется, участникам конференции Infostart Event 2018 рассказал руководитель и ведущий разработчик компании - Юрий Лазаренко.

23.07.2019    8719    TitanLuchs    36    

46

Цифровая трансформация. Будущее учетных систем

Идеи и тренды в разработке Россия Бесплатно (free)

О цифровой трансформации слышали все, но немногие в этом разбираются. Что она собой представляет, какие несет изменения, на что надо обратить внимание айтишникам и 1С-никам, рассказал на конференции руководитель департамента автоматизации строительных организаций компании «Первый БИТ» Иван Аверьянов.

19.06.2019    12092    FB_10160810658600104    62    

31

Корпоративный мозг на 1С и Python

Идеи и тренды в разработке Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Перед вами краткая инструкция, как можно быстро начать digital-трансформацию компании с помощью нейронных сетей на 1С, а также с использованием, в качестве дополнения, ресурсов Python.

17.05.2019    33065    user995065    75    

169

Коннектор: удобный HTTP-клиент для 1С:Предприятие 8

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Коннектор - библиотека для работы с HTTP запросами. Библиотека берет на себя всю рутину работы с HTTP запросами. Буквально в одну строку можно получать данные, отправлять, не заботясь о необходимости конструирования URL, кодирования данных и т.п.

31.01.2019    102733    bonv    252    

853

Если таблица совсем большая. Использование столбцовой СУБД (Yandex ClickHouse) для расширения возможностей 1С

Идеи и тренды в разработке Бесплатно (free)

В последнее время появилась хорошая тенденция использовать для решений 1С обширный стек смежных технологий. Это, несомненно, радует. В связи с этим я хочу рассказать про бесплатное OpenSource-решение от компании Яндекс – столбцовую базу данных ClickHouse, и то, как ее можно использовать совместно с 1С. Для небольших 1С-систем ClickHouse, скорее всего, не пригодится. Но если мы говорим о HighLoad, тогда эта технология может оказаться очень полезной.

07.06.2018    28495    comol    24    

170

Программы для исполнения 54-ФЗ Промо

С 01.02.2017 контрольно-кассовая техника должна отправлять электронные версии чеков оператору фискальных данных - правила установлены в 54-ФЗ ст.2 п.2. Инфостарт предлагает подборку программ, связанных с применением 54-ФЗ, ККТ и электронных чеков.

Внедрение RFID технологии для автоматизации склада и проведения инвентаризации

Учет ТМЦ Идеи и тренды в разработке 1С:Франчайзи, автоматизация бизнеса Россия Управленческий учет Бесплатно (free)

RFID - это последнее слово в автоматизации бизнес-процессов связанных с идентификацией различных предметом. Сейчас эта технология становится особенно привлекательна и актуальна. Мы решили помочь вам разобраться, что это такое и как применить это новое веяние с пользой для бизнеса.

25.05.2017    21895    alis112358    3    

9

Автоматизация складского учета с применением ТСД Ipod ProLinea

Учет ТМЦ Идеи и тренды в разработке Платформа 1С v8.3 Украина Управленческий учет Бесплатно (free)

Добрый день, уважаемые пользователи сайта infostart.ru, хотелось обратить внимание на автоматизацию складского учета на предприятии. Казалось бы уже столько различных решений есть на рынке, но многие из них не подходят по нескольким причинам: ПО написанные под различные ТСД в большинстве своем реализованы через обмен файлами, что не очень хорошо(товар сняли с полки, но пока мы не выгрузили данные с ТСД, то по системе он ещё лежит на полке, хотя его там уже нет); Как известно iPod touch, это не просто плеер, а полноценный КПК с современной операционной системой iOS. Аналогичные ТСД марок Motorola или Casio выпускаются под управлением ОС Windows Mobile или Windows CE.

09.08.2015    21304    davydoff    8    

8

Горизонты мобильной платформы 1С

Идеи и тренды в разработке Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Однажды я изучил комментарии к моим курсам по мобильной платформе, чтобы понять: как люди видят мобильную платформу, как хотят ее использовать? В результате рейтинг получился таким: большая часть говорила, что они видят разработки под мобильную платформу в качестве инструмента для инвентаризации, на втором месте – заказы, на третьем – монитор руководителя. Все остальное было практически в единичных экземплярах. Я увидел, что есть проблема, которая заключается в том, что мы привыкли работать со стационарной 1С, привыкли к ее архитектуре, к методам работы с ней. И когда 1С-нику говорят: «установи мне 1С» – это сразу подразумевает под собой: «приди, настрой мне принтер, поставь антивирусник, проверь, не битый ли у меня жесткий диск». И мы это принимаем, как должное. А вот с мобильными телефонами все совсем не так.

02.06.2015    41010    DitriX    39    

132