СПОСОБ УПРАВЛЕНИЯ ДИАЛОГОМ И СИСТЕМА ПОНИМАНИЯ ЕСТЕСТВЕННОГО ЯЗЫКА В ПЛАТФОРМЕ ВИРТУАЛЬНЫХ АССИСТЕНТОВ
METHOD FOR CONTROLLING A DIALOGUE AND NATURAL LANGUAGE RECOGNITION SYSTEM IN A PLATFORM OF VIRTUAL ASSISTANTS

ОБЛАСТЬ ТЕХНИКИ
[001] Данное техническое решение в общем относится к области вычислительной техники, а в частности к способам управления диалогом и системам понимания естественного языка в платформе виртуальных ассистентов.
УРОВЕНЬ ТЕХНИКИ
[002] На сегодняшний день информационные диалоговые системы получили широкое распространение и используются в различных областях общественной жизни, например для организации автоматической проверки знаний, автоматизированной службы поддержки пользователей, для диагностики заболеваний и прочее. Однако существующие информационные диалоговые системы предназначены для решения задач узкого профиля, то есть они способны поддерживать только диалог на заданную тему. Кроме того, большинство из них не имеет возможности формировать ответ на естественном языке, придавать эмоциональную окраску формируемому ответу, выполнять какие-либо дополнительные действия, в том числе взаимодействовать с другими информационными системами и подсистемами. Наличие таких возможностей позволило бы выполнять не только двухсторонний обмен информацией, инструкциями и командами между пользователем и системой, но и вести полноценный диалог, создавая у пользователя впечатление общения с живым собеседником, а также решать поставленные пользователем задачи гораздо эффективнее. Поэтому на данный момент остается актуальной разработка такого способа коммуникации пользователя с информационной диалоговой системой, который расширил бы возможности взаимодействия пользователя с информационной диалоговой системой.
[003] Ближайшим аналогом заявляемого изобретения является адаптивный естественно-языковой интерфейс и способ получения, интерпретации и выполнения пользовательского ввода на естественном языке, описанные в патенте US 7216080 B2 «Natural-language voice-activated personal assistants правообладатель: INDNER ROBERT D JR Nuance Communications Inc Vlingo Corp, опубл. 08.05.2007. Способ включает ввод пользователем запроса, прием и преобразование запроса пользователя в текст, обработку текста и формирование ответа в виде выходной команды, преобразование выходной команды в исполнительную, выведение исполнительной команды в дополнительную систему и/или подсистемы для исполнения.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
[004] Технической проблемой или технической задачей, решаемой в данном техническом решении, является осуществление способа управления диалогом и система понимания естественного языка в платформе виртуальных ассистентов.
[005] Техническим результатом, достигаемым при решении вышеуказанной технической проблемы, является повышение точности формирования ответов пользователю виртуальным ассистентом посредством применения алгоритмов машинного обучения.
[006] Указанный технический результат достигается посредством реализации способа управления диалогом, выполняемый по меньшей мере одним процессором, в котором получают от по меньшей мере одного пользователя по меньшей мере один запрос на инициацию диалога, содержащий уникальный идентификатор виртуального ассистента и идентификатор диалога; осуществляют поиск в базе данных виртуального ассистента на основании полученного на предыдущем шаге идентификатора ассистента; осуществляют поиск в базе данных ранее инициированного диалога на основании идентификатора диалога, полученного на предыдущем шаге, причем если диалог был найден, то выполняют поиск в базе данных активной сессии, связанной с найденным диалогом; если сессия не обнаружена, то в базе данных для найденного диалога создают новую сессию, которая определяется новым уникальным идентификатором сессии, идентификатором созданного диалога, пустым контекстом сессии; получают от пользователя запрос в диалоге, содержащий идентификатор диалога с виртуальным ассистентом, полученный при инициации диалога, по меньшей мере одно текстовое сообщение пользователя, контекст запроса; осуществляют обнаружение интентов пользователя посредством алгоритмов машинного обучения, которые получают на вход идентификатор виртуального ассистента и текстовое сообщение из запроса пользователя, в результате чего формируют список интентов и степени уверенности в том, что данные интенты присутствуют в сообщении пользователя; выполняют поиск наиболее подходящего правила для формирования ответа на основании интентов пользователя, полученных на предыдущем шаге.
[007] В некоторых вариантах реализации технического решения виртуальный ассистент содержит уникальный идентификатор ассистента и набор именованных параметров.
[008] В некоторых вариантах реализации технического решения при получении запроса от пользователя в диалоге осуществляют поиск вхождений словарей языка DL в сообщении пользователя по следующему способу:
• определяют все вхождения текстовых элементов строк словарей DL с использованием заранее подготовленного префиксного дерева;
• выбирают все строки словарей, которые отвечают следующим эвристикам:
a. в сообщении пользователя есть все текстовые элементы входящие в строку словаря DL,
b. существует порядок найденных вхождений текстовых элементов, соответствующий строке словаря DL,
если нет текстовых элементов, располагающихся в самом начале сообщения пользователя, то в строке словаря DL в начале должна стоять звездочка или суперзвездочка,
если нет текстовых элементов, располагающихся в самом конце сообщения пользователя, то в строке словаря DL в конце должна стоять звездочка или суперзвездочка.
[009] В некоторых вариантах реализации технического решения при обнаружении интентов, если их уверенность классификации ниже конфигурационного параметра, они отбрасываются.
[0010] В некоторых вариантах реализации технического решения для каждого интента уверенность классификации умножается на конфигурационный параметр и округляется с точностью, определяемой конфигурационным параметром.
[0011] В некоторых вариантах реализации технического решения после обнаружения интентов они группируются по имени роли, присвоенной им.
[0012] В некоторых вариантах реализации технического решения при осуществлении поиска подходящего правила для формирования ответа для каждого шаблон-вопроса и интента, входящего в шаблон языка DL, определяется вес его совпадения с сообщением пользователя.
[0013] В некоторых вариантах реализации технического решения весом является 32х битовое беззнаковое целое число.
[0014] В некоторых вариантах реализации технического решения осуществляют выборку шаблонов одинакового веса посредством выбора из найденных всех шаблонов-вопросов и интентов с максимальным весом, при этом выбранные шаблоны удаляются из списка поиска.
[0015] В некоторых вариантах реализации технического решения при осуществлении поиска подходящего правила для формирования ответа
составляют список шаблон-ответов, относящихся к выбранным шаблон-вопросам и интентам;
проверяют возможность генерации непустого ответа, где пустым ответом считается ответ, не содержащий ни одного текстового элемента вывода;
осуществляют рандомизацию, причем выбирают случайно один из отобранных ранее шаблон-ответов и определяют его ответом на сообщение пользователя;
формируют ответ по выбранному правилу, причем для выбранного шаблон-ответа обрабатываются все функциональные элементы языка DL в соответствии с их описанием;
записывают журнал диалога и сформированный ответ записывается в базу данных.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[0016] Признаки и преимущества настоящего технического решения станут очевидными из приведенного ниже подробного описания и прилагаемых чертежей, на которых:
[0017] На Фиг. 1 показан вариант реализации способа управления диалогом в платформе виртуальных ассистентов.
[0018] На Фиг. 2 показан вариант реализации взаимодействия пользователя и виртуального ассистента в виде блок-схемы.
[0019] На Фиг. 3 показан пример реализации контекста диалога пользователя с виртуальным ассистентом.
[0020] На Фиг. 4 показан пример реализации системы понимания естественного языка в платформе виртуальных ассистентов.
ПОДРОБНОЕ ОПИСАНИЕ ИЗОБРЕТЕНИЯ
[0021] Ниже будут подробно рассмотрены термины и их определения, используемые в описании технического решения.
[0022] В данном изобретении под системой подразумевается компьютерная система, ЭВМ (электронно-вычислительная машина), ЧПУ (числовое программное управление), ПЛК (программируемый логический контроллер), компьютеризированные системы управления и любые другие устройства, способные выполнять заданную, четко определенную последовательность операций (действий, инструкций), централизованные и распределенные базы данных, смарт-контракты.
[0023] Под устройством обработки команд подразумевается электронный блок либо интегральная схема (микропроцессор), исполняющая машинные инструкции (программы), смарт-контракт, виртуальная машина Ethereum (EVM) или подобное. Устройство обработки команд считывает и выполняет машинные инструкции (программы) с одного или более устройства хранения данных. В роли устройства хранения данных могут выступать, но, не ограничиваясь, жесткие диски (HDD), флеш-память, ПЗУ (постоянное запоминающее устройство), твердотельные накопители (SSD), оптические приводы.
[0024] Программа - последовательность инструкций, предназначенных для исполнения устройством управления вычислительной машины или устройством обработки команд.
[0025] NLU (англ. «Natural Language Understanding))) - понимание естественного языка или интерпретация естественного языка
[0026] NLU часть данного технического решения состоит из компонент определения намерений пользователя (классификация интентов, англ. «lntent Classification», сокр. IC) и извлечения именованных сущностей (англ. «Named Entity Recognition)), сокр. NER) из текста сообщения пользователя.
[0027] Задача классификации (категоризации) - задача, в которой имеется множество объектов, разделенных некоторым образом на классы (категории). Задано конечное множество объектов, для которых известно, к каким классам они относятся. Это множество называется выборкой. Классовая принадлежность остальных объектов неизвестна. Требуется построить алгоритм, способный классифицировать (категоризировать) произвольный объект из исходного множества. Классифицировать объект - значит, указать номер (или наименование) класса, к которому относится данный объект.
[0028] Классификация объекта - номер или наименование класса, выдаваемый алгоритмом классификации в результате его применения к данному конкретному объекту.
[0029] Точность (англ. «precision») и полнота (англ. «recall») являются метриками, которые используются при оценке большей части алгоритмов извлечения информации.
[0030] Точность алгоритма в пределах класса - это доля объектов классификации, действительно принадлежащих данному классу, относительно всех объектов, которые алгоритм отнес к этому классу. Полнота алгоритма - это доля найденных классификатором объектов, принадлежащих классу, относительно всех объектов этого класса в тестовом наборе данных.
[0031] F-мера является общепринятой метрикой качества для задач категоризации и представляет собой гармоническое среднее между точностью и полнотой.
[0032] Определение намерения пользователя - категоризация того, что пользователь хотел узнать, когда вводил текст запроса в обращении к чат-боту. Категоризация реплик происходит по заранее заданному списку возможных намерений пользователей. Является алгоритмом классификации на уровне коротких текстов (реплик пользователя). Например, пользовательская реплика «хочу открыть вклад в вашем банке» может быть категоризирована как намерение «открытие вкладов».
[0033] Интент поискового запроса - это намерение пользователя, которое он вкладывает в запрос; та цель, которая движет человеком, когда он вводит запрос в поисковую строку.
[0034] Извлечение именованных сущностей - процесс выделения границ и категоризации в тексте пользовательских обращений к чат-боту слов или словосочетаний, относящихся по смыслу к одной из заданных заранее категорий, интересных для возможной дальнейшей обработки чат-ботом. Является также алгоритмом классификации на уровне отдельных слов и словосочетаний в репликах пользователя. Например, в пользовательской реплике «хочу перевести 1000 рублей со сберегательного счета на дебетовую карту» можно выделить сущности «1000 рублей» - «денежная сумма», «сберегательного счета» - «продукт банка», «дебетовую карту» - «банковские карты».
[0035] Диалогом называется обмен связанными сообщениями между двумя участниками этого процесса, например, между двумя пользователями.
[0036] Платформа виртуальных ассистентов (далее - платформа) - это программный комплекс, реализующий функционал ведения диалогов между пользователями и в автоматизированном режиме.
[0037] Диалоги ведутся в текстовом формате на естественном языке между пользователем платформы и диалоговыми роботами (чат-ботами), называемыми в рамках платформы - виртуальными ассистентами (далее - ассистенты). Виртуальный ассистент - программный агент, который может выполнять задачи для пользователя на основе информации, введенной пользователем, данных о его местонахождении, а также информации, полученной из различных интернет-ресурсов.
[0038] Каналами (транспортами) для ведения диалогов в рамках технического решения могут служить различные текстовые каналы связи (такие как виджет на сайте, мессенджеры и т.п.), подключенные к платформе через серверное API на основе протокола HTTP.
[0039] Данное техническое решение предоставляет возможность одновременного ведения множества диалогов между различными пользователями и различными ассистентами.
[0040] Ниже будет подробно раскрыт способ управления диалогом в платформе виртуальных ассистентов, показанный в виде последовательности шагов.
[0041] Шаг 110: получают от по меньшей мере одного пользователя по меньшей мере один запрос на инициацию диалога, содержащий уникальный идентификатора виртуального ассистента и идентификатор диалога.
[0042] В данном техническом решении пользователь 210 осуществляет взаимодействие с виртуальным ассистентом 230 посредством устройства связи пользователя 220, как это показано на Фиг. 2.
[0043] Каждый ассистент 230 определяется следующими данными:
• уникальным идентификатором ассистента 230,
• набором именованных параметров, называемым контекстом ассистента 230.
[0044] Все параметры контекста представляют из себя пару значений:
уникальное имя параметра;
значение параметра, которое может быть различным для разных ассистентов 230 и может быть изменено.
[0045] База знаний ассистента (далее - база знаний) - набор правил и словарей, включающих в себя:
описания намерений (интентов) в виде набора примеров для обучения нейронной сети и правил на специализированном языке описания диалога DL,
описания выделяемых сущностей в виде набор размеченных примеров для обучения нейронной сети.
[0046] Параметры контекста ассистента 230 могут быть определены как системными - такие параметры используются в алгоритме ведения диалога и прямым образом влияют на выбор приоритетов при генерации ответов на запросы пользователя 210.
[0047] Данное техническое решение использует следующие системные параметры (использование таких параметров описано далее в текущем документе):
• that_anchor.
[0048] Все данные виртуальных ассистентов 230 хранятся в базе данных технического решения.
[0049] Диалог пользователя 210 с ассистентом 230 состоит из следующих этапов: 1. Инициация диалога между пользователем 210 и ассистентом 230,
2. Обмен сообщениями в текстовой форме между участниками диалога, и определяется следующими данными:
• уникальным идентификатором диалога, определенным на этапе инициации диалога.
• уникальным идентификатором ассистента 230, с которым ведется диалог.
• уникальным идентификатором пользователя 210, ведущего диалог с ассистентом 230.
• уникальным идентификатором сессии, где сессия - это отрезок диалога, определяемый тем, что на его протяжении время между сообщениями пользователя 210 не превышало заранее заданное значение, называемое - максимально допустимое время бездействия (далее - предел бездействия).
[0050] Каждый идентификатор диалога может содержать переменные диалога - это переменные, используемые в рамках диалога. Их значения сохраняются в течение диалога, но сбрасываются, когда диалог завершается. Критерием завершения диалога является установленный таймаут для периода молчания пользователя.
[0051] Примеры правил показаны ниже:
[0052] //правило 1
$ меня зовут [--]
Приятно познакомиться, [&1]. [%var1="[&1]"]
//правило 2
$ * как * меня * зовут *
#[if(%var1)]{Вы [%var1].}[else]{fl не знаю, как Вас зовут.}
[0053] В правиле 1 в инструкции по генерации ответа (строка #) указана команда присвоить переменной var1 значение, которое было выделено из реплики пользователя на этапе ее обработки правилом (строка $).
[0054] В правиле 2 в инструкции по генерации ответа производится проверка того, что переменная var1 не пустая (имеет значение). Если значение переменной var1 существует в этот конкретный момент диалога, то оно используется для генерации ответа.
[0055] Пример диалога с использованием данных правил:
• Пользователь: меня зовут Вася
• Бот (сработало правило 1): приятно познакомиться, Вася.
• Пользователь: как меня зовут?
• Бот (сработало правило 2): Вы Вася.
[0056] Диалог завершился. Если через какое-то время тот же пользователь 210 начнет новый диалог, то значения переменных будут «сброшены», и бот не будет «помнить» имя пользователя:
• Пользователь: как меня зовут?
• Бот (сработало правило 2, часть ответа в else, поскольку значение переменной var1 сбросилось по окончании прошлого диалога): Я не знаю, как Вас зовут.
[0057] Сессия диалога определяется следующими данными:
• уникальным идентификатором сессии.
• уникальным идентификатором диалога, к которому относится сессия.
• набором именованных параметров, называемым контекстом сессии.
[0058] Все параметры контекста представляют из себя пару значений:
уникальное имя параметра.
значение параметра, которое может быть изменено в ходе диалога.
[0059] Параметры контекста сессии могут быть определены как параметры уровня диалога - такие параметры сохраняют свои значения между сессиями, остальные параметры их теряют, как показано на Фиг. 3.
[0060] Сессия, в рамках которой нет ни одного сообщения пользователя 210, либо для которой время прошедшее с последнего сообщения пользователя 210 меньше предела бездействия, называется активной сессией.
[0061] Все данные диалогов и сессий хранятся в базе данных технического решения.
[0062] Инициация диалога - это первый этап в диалоге, определяющий все данные диалога и формирующий его внутри технического решения, результатом которого является предоставление идентификатора диалога, необходимого для обмена сообщениями с ассистентом.
[0063] Для инициации диалога необходимы следующие параметры, принимаемые в решении:
• идентификатор ассистента (обязательный параметр),
• идентификатор диалога.
[0064] Идентификатор диалога передается, если инициируемый диалог является продолжением диалога, имевшего место быть ранее между теми же пользователем 210 и ассистентом 230.
[0065] При получении запроса на инициацию диалога выполняются следующие шаги.
[0066] Шаг 120: осуществляют поиск в базе данных виртуального ассистента на основании полученного на предыдущем шаге идентификатора ассистента.
[0067] На первом шаге осуществляется поиск ассистента 230. Таким образом производится поиск в базе данных технического решения ассистента 230 с полученным идентификатором. Если ассистент 230 в базе не найден, то техническое решение возвращает информацию об ошибке и завершает инициацию.
[0068] Шаг 130: осуществляют поиск в базе данных ранее инициированного диалога на основании идентификатора диалога, полученного на предыдущем шаге.
[0069] Затем выполняют поиск диалога. Этот шаг осуществляется только в случае, если был получен идентификатор диалога. На нем производится поиск в базе данных технического решения ранее инициированного диалога с соответствующим идентификатором.
[0070] Каждый пользователь 210 имеет свои переменные. Переменные пользователя 210 - переменные, сохраняющие значения между диалогами с одним и тем же пользователем. Формат имени переменной: user X.
[0071] Примеры шаблонов показаны ниже.
//шаблон 1
$ меня зовут [-**-]
# Приятно познакомиться, [&1]. [%user_name="[&1]"]
//шаблон 2
$ * как * меня * зовут *
#[if(%user_name)]{Вы[%user_name].}[else]{не знаю, как Вас зовут.}
[0072] Пример диалога показан ниже:
[0073] Пользователь: меня зовут Вася
[0074] Виртуальный ассистент (сработало правило 1): Приятно познакомиться, Вася.
[0075] Пользователь: Как меня зовут?
[0076] Виртуальный ассистент (сработало правило 2, часть ответа под условием на непустую переменную username): Вы Вася.
[0077] Диалог завершился. Через день пользователь 210 приходит с того же компьютера поговорить с виртуальным ассистентом 230, который «понимает», что это тот же самый пользователь 210.
[0078] Пользователь: Как меня зовут?
[0079] Виртуальный ассистент (сработало правило 2, часть ответа под условием на непустую переменную user name, потому что значение этой переменной сохраняется между диалогами): Вы Вася.
[0080] Если диалог был найден, то производится поиск в базе данных активной сессии, связанной с найденным диалогом. Если сессия не обнаружена, то в базе данных для найденного диалога создается новая сессия (автоматически являющаяся активной), определяемая следующими данными:
• новым уникальным идентификатором сессии.
• идентификатором созданного диалога.
• пустым контекстом сессии.
[0081] Техническое решение возвращает идентификатор найденного диалога и завершает инициацию.
[0082] На следующем шаге осуществляют создание диалога. Этот шаг осуществляется, если предыдущий шаг был пропущен или на нем не был найден целевой диалог. На нем выполняются следующие действия.
[0083] В базе данных технического решения создается новый диалог, определяемый следующими данными:
• новым уникальным идентификатором диалога.
• полученным идентификатором ассистента.
[0084] Для созданного диалога в базе данных технического решения создается новая сессия, определяемая следующими данными:
• новым уникальным идентификатором сессии.
• идентификатором созданного диалога.
• пустым контекстом сессии.
[0085] Техническое решение возвращает идентификатор созданного диалога и завершает инициацию.
[0086] Затем будет ниже более подробно раскрыт обмен сообщениями.
[0087] Шаг 140: получают от пользователя запрос в диалоге, содержащий идентификатор диалога с виртуальным ассистентом, полученный при инициации диалога, по меньшей мере одно текстовое сообщение пользователя, контекст запроса.
[0088] Пользователь 210 технического решения отправляет запрос, который содержит следующие данные:
• идентификатор диалога с ассистентом 230, полученный при инициации диалога.
• текстовое сообщение пользователя 210.
• набором именованных параметров, называемым контекстом запроса пользователя 210 (далее контекстом запроса).
[0089] Все параметры контекста представляют из себя пару значений:
• уникальное имя параметра,
• значение параметра.
[0090] Задачей технического решения является обработать такой запрос, сформировать максимально подходящий ответ на него и передать его пользователю.
[0091] В рамках этой задачи выполняются следующие шаги.
[0092] На первом этапе осуществляется поиск в базе данных ранее инициированного диалога с соответствующим идентификатором.
[0093] Если диалог не был найден, то техническое решение возвращает ошибку и завершает обработку запроса пользователя 210.
[0094] Далее происходит получение сессии.
[0095] На этом шаге производится поиск в базе данных активной сессии, связанной с найденным диалогом. Если сессия не обнаружена, то в базе данных для найденного диалога создается новая сессия (автоматически являющаяся активной), определяемая следующими данными:
• новым уникальным идентификатором сессии.
• идентификатором созданного диалога.
• пустым контекстом сессии.
[0096] Далее происходит обновление контекста сессии.
[0097] Этот шаг производится только, если контекст запроса не пуст. На нем производится обновление контекста сессии по следующему алгоритму:
• все параметры, имена которых отсутствуют в контексте сессии, но присутствуют в контексте запроса, добавляются в контекст сессии с соответствующими значениями из контекста запроса.
• всем параметрам, имена которых присутствуют как в контексте сессии, так и в контексте запроса, в контексте сессии присваиваются соответствующие значения из контекста запроса.
[0098] Затем осуществляется формирование контекста поиска. Контекстом поиска называется набор именованных параметров, получаемый из контекста ассистента 230 и контекста сессии по следующему алгоритму.
[0099] Контекст ассистента 230 копируется в контекст поиска. Все параметры, имена которых отсутствуют в контексте поиска, но присутствуют в контексте сессии, добавляются в контекст поиска с соответствующими значениями из контекста сессии. Всем параметрам, имена которых присутствуют как в контексте поиска, так и в контексте сессии, в контексте поиска присваиваются соответствующие значения из контекста сессии.
[00100] Далее осуществляют поиск вхождений словарей DL.
[00101] На этом шаге производится поиск всех вхождений словарей языка DL в сообщение пользователя 210 по следующему алгоритму:
• ищутся всех вхождения текстовых элементов строк словарей DL (не содержащих элементов языка DL) с использованием заранее подготовленного префиксного дерева.
• выбираются все строки словарей, которые отвечают следующим эвристикам:
в сообщении пользователя 210 есть все текстовые элементы входящие в строку словаря DL,
существует порядок найденных вхождений текстовых элементов, соответствующий строке словаря DL,
если нет текстовых элементов, располагающихся в самом начале сообщения пользователя 210, то в строке словаря DL в начале должна стоять звездочка или суперзвездочка,
если нет текстовых элементов, располагающихся в самом конце сообщения пользователя, то в строке словаря DL в конце должна стоять звездочка или суперзвездочка.
• все выбранные строки словаря проверяются на точное соответствие сообщению пользователя.
[00102] Ниже описано начало формирования пула выделенных именованных сущностей.
[00103] Для каждого словаря DL, вхождения из которых были найдены на прошлом шаге, выбираются вхождения, для которых количество слов в шаблоне DL при вместо подстановки всех inline-словарей их конкретных значений, максимальное для данного словаря. Такие вхождения называются выделенными именованными словарными сущностями, имя которых совпадает с именем словаря DL, в которые они входят.
[00104] Набор выделенных именованных словарных сущностей образует множество выделенных сущностей для сообщения пользователя 210.
[00105] Шаг 150: осуществляют обнаружение интентов пользователя посредством алгоритмов машинного обучения, которые получают на вход идентификатор виртуального ассистента и текстовое сообщение из запроса пользователя, в результате чего формируют список интентов и степени уверенности в том, что данные интенты присутствуют в сообщении пользователя.
[00106] Далее осуществляют обнаружение возможных намерений пользователя 210 (интентов).
[00107] На этом шаге для обнаружения возможных намерений используются нейросетевые алгоритмы, описанные ниже, которые получают на вход идентификатор ассистента 230 и текстовое сообщение из запроса пользователя 210, а результатом их выполнения является список возможных намерений и степени уверенности в том, что это намерение действительно присутствует в сообщении пользователя 210.
[00108] Все интенты, уверенность классификации которых ниже конфигурационного параметра (например, значение Threshold), отбрасываются.
[00109] Для каждого интента уверенность умножается на специальный конфигурационный параметр (Multiplier) и округляется с точностью, определяемой конфигурационным параметром (Accuracy). Если уверенность превышает значение конфигурационного параметра (Limit), то значение уверенности устанавливается в Limit. Полученное значение считается далее уверенностью данного интента.
[00110] Затем осуществляют выделение именованных сущностей на основе нейронной сети. На этом шаге для выделения именованных сущностей используются нейросетевые алгоритмы, описанные ниже, которые получают на вход идентификатор ассистента 230 и текстовое сообщение из запроса пользователя 210, а результатом их выполнения является список выделенных сущностей с указанием их ролей и степени уверенности в том, что они были выделены корректно.
[00111] Все выделенные сущности группируются по имени роли, присвоенной им. Для каждого имени выбирается сущность с максимальным показателем уверенности. Для каждой такой сущности проверяется, есть ли сущность с таким именем в множестве выделенных сущностей, сформированных ранее. Если такая сущность отсутствует, то она добавляется в множество выделенных сущностей.
[00112] Шаг 160: выполняют поиск наиболее подходящего правила для формирования ответа на основании интентов пользователя, полученных на предыдущем шаге.
[00113] На следующем шаге выполняют поиск наиболее подходящего правила для формирования ответа. Для каждого шаблон-вопроса и интента, входящего в шаблон языка DL, определяется вес его совпадения с сообщением пользователя 210. Весом является 32х битовое беззнаковое целое число определяющиеся по следующим принципам:
• если в шаблоне DL есть условия на специальную переменную that_anchor, то 31-й бит принимает значение 1, иначе 0.
• для интентов и шаблон-вопросов, в которых есть звездочки и суперзвездочки 30-й бит всегда равен 0, для шаблон-вопросов в которых звездочек и суперзвездочек нет, 30-й бит равен 1.
• 16-ти битное число, расположенное с 14-го по 29-й бит, определяется следующим образом:
для интентов оно равно числу слов в сообщении пользователя, умноженное на уверенность интента. При превышении значения 2^16-1, значение устанавливается в 2^16-1.
для шаблон-вопросов оно равно числу слов в шаблон-вопросе в раскрытом виде (после подстановки конкретных значений вместо элементов языка DL таких как словари или inline-словари), включая звездочки и суперзвездочки. При превышении значения 2^16-1, значение устанавливается в 2^16-1.
• 8 ми битное число, расположенное с 6ого по 13ый бит, определяется как число шаблон-условий в шаблоне. Если число шаблон-условий превышает 2^8-1, то значение устанавливается в 2^8-1.
[00114] Далее выполняется следующий алгоритм выбора.
[00115] На первом шаге осуществляют выборку шаблонов одинакового веса посредством выбора из найденных всех шаблонов-вопросов и интентов с максимальным весом, при этом выбранные шаблоны удаляются из списка поиска. Если список пуст, то считают, что порождается пустой ответ и пропускают следующие два шага.
[00116] Далее формируют выборку всех реально возможных шаблон-ответов.
[00117] Составляется список шаблон-ответов, относящегося к выбранным на предыдущем шаге шаблон-вопросам и интентам, проверяется возможность генерации непустого ответа, где пустым ответом считается ответ, не содержащий ни одного текстового элемента вывода (текста, inline-словаря, словаря и т.п.). Если список оказывается пустым, то возвращаются к предыдущему шагу.
[00118] Далее осуществляется рандомизация. Выбирают случайно один из отобранных ранее шаблон-ответов и определяют его ответом на сообщение пользователя.
[00119] Затем формируют ответ по выбранному правилу. Для выбранного шаблон-ответа обрабатываются все функциональные элементы языка DL в соответствии с их описанием.
[00120] Далее записывают журнал диалога. Сформированный ответ записывается в базу данных технического решения.
[00121] Затем сохраняют контекст сессии. Для каждой инструкции по изменению сессии, изменяют контекст сессии в соответствии с этой инструкций. Обновленный контекст сессии сохраняется в базу данных технического решения.
[00122] На последнем шаге осуществляется передача ответа пользователю 210. Сформированный ответ передается пользователю 210.
[00123] Ниже будут описаны алгоритмы машинного обучения, используемые в данном техническом решении.
[00124] Современные алгоритмы классификации интентов и извлечения именованных сущностей традиционно состоят из двух частей, а именно выделения признаков из текста в некотором числовом векторном виде и применения специальной решающей функции к этим числовым векторам, которая дает в результате номер класса в списке классов намерений для задачи классификации интентов и метки с номерами названий сущностей из списка сущностей для всех слов исходной реплики пользователя.
[00125] Выделение признаков - это разновидность абстрагирования, процесс снижения размерности, в котором исходный набор исходных переменных сокращается до более управляемых групп (признаков) для дальнейшей обработки, оставаясь при этом достаточным набором для точного и полного описания исходного набора данных.
[00126] Векторизация текстовых данных - способ представления выделенных признаков через преобразование в числовые векторы некоторого многомерного пространства.
[00127] Функция, производящая векторизацию текстовых данных, называется векторизатором (эмбеддером), а полученные признаки, соответствующие исходной фразе - вектором (эмбеддингом предложения).
[00128] Одни из лучших векторизаторов по качественным показателям (по итоговой F-мере полного алгоритма классификации интентов или извлечения именованных сущностей на произвольных наборах данных) на данный момент являются ELMo (Embeddings from Language Models) и BERT (Bidirectional Encoder Representations from Transformers).
[00129] ELMo - более производительный вариант (способный обрабатывать большее количество текстовых реплик в секунду), построенный на основе Bi-LSTM сетей (Bidirectional Long-Short-Term-Memory, двунаправленных рекуррентных искусственных нейронных сетей, состоящих из LSTM слоев, слоев долгой краткосрочной памяти). ELMo смотрит на целое предложение, прежде чем присвоить каждому слову его эмбеддинг.Нейронная сеть такого векторизатора обучается (подбирает и оптимизирует коэффициенты некоторой сложной числовой функции для лучшей аппроксимации ожидаемого поведения алгоритма) специально под задачу создания таких эмбеддингов. Модель во время обучения на большом наборе текстов пытается предсказывать следующее слово в предложениях, а также и предыдущее при обратном проходе по предложению. Предварительное обучение происходит на текстах без разметки, автоматически генерируя пары «часть предложения» - «следующее или предыдущее слово». Таким образом, модель запоминает совместно встречающиеся слова и устойчивые языковые конструкции.
[00130] BERT - более тяжелый вариант (обладает меньшей производительностью), архитектура которого состоит из частей с sequence-to-sequence нейронными сетями (моделями, принимающими на вход последовательности элементов, слов, букв, иных признаков, и возвращающая другую последовательность элементов), использующими в своей основе механизм внимания. Это нейронная сеть-трансформер, состоящая из целого стека энкодеров sequence-to-sequence сетей. Можно обучать такую модель «маскированием» отдельных слов в предложениях без какой-либо разметки. Модель, побившая несколько рекордов по успешности решения ряда NLP-задач. В открытом доступе есть и большое количество предобученных моделей для разных языков, в том числе и мультиязычные для решения всевозможных задач.
[00131] В NLU части данного технического решения в качестве векторизаторов, исходя из показателей качества и производительности, может использоваться облегченная реализация BERT (DistilBERT) для классификации интентов и ELMo для извлечения именованных сущностей. Специальные предобработки текстов отсутствуют, поскольку обе эти модели лучше работают с исходными текстами и умеют учитывать части речи, формы слова, знаки препинания и прочую дополнительную информацию, которая может быть потеряна во время предобработки, и на основе знаний о сочетаниях слов и языковых конструкциях делают свои предсказания.
[00132] После получения эмбеддинга для целиковой реплики пользователя остается классифицировать этот эмбеддинг в векторном пространстве. Эту задачу в данном техническом решении могут решать как средствами классического машинного обучения, так и при помощи неглубоких нейронных сетей, состоящих из 2-3 полносвязных слоев. Опытным путем на репрезентативных наборах данных (порядка 500 интентов, минимум по 50 примеров на каждый интент) было произведено сравнение по качеству и производительности алгоритмов (k-NN, Random Forest, SVM, XGBoost, их композиции, неглубокие нейронные сети), в результате которого был отобран подход с Feed-Forward Neural Network (FFNN) из трех полносвязных слоев с выходным слоем равным количеству требуемых классов и параметрами архитектуры, полученными при помощи байесовской оптимизации.
[00133] Байесовская оптимизация - это метод глобальной оптимизации для неизвестной функции. Задача поиска архитектуры нейросети (NNAS) предполагает автоматический подбор архитектуры нейросети. Это задача морфизма нейросети (англ. «network morphism»), когда функциональность нейросети сохраняется, но архитектура нейросети подбирается другая. Ключевая идея предлагаемого метода в том, чтобы исследовать пространство поиска архитектур с помощью алгоритма байесовской оптимизации (ВО). Традиционно байесовская оптимизация состоит из цикла с 3 шагами: обновление, генерация и наблюдение. В контексте поиска нейросетевой архитектуры цикл состоит из следующих шагов:
• Обновление: обучается гауссовский процесс на существующих архитектурах и их результатах;
• Генерация: генерируется новая архитектура через оптимизацию функции исследования (англ. «acquisition function*);
• Наблюдение: записать результаты новой архитектуры.
[00134] Так подбирается количество слоев, нейронов на каждом слое, тип используемой нормализации, активация, вероятность выключения нейронов в Dropout слоях.
[00135] Итоговая оптимальная нейронная сеть для классификации интентов подбирается автоматически под каждый набор данных, в примере с рассмотренным репрезентативным набором данных была получена архитектура, состоящая из последовательности слоев: первый полносвязный слой, нормализация батча, Dropout слой, слой Elu активации, второй полносвязный слой, нормализация батча, Dropout слой, слой Elu активации, третий полносвязный слой, всего - 233 нейрона в полносвязных слоях. По сути своей такая нейронная сеть есть гибрид FFNN сети. На выходе из этой нейронной сети получается вектор распределения вероятностей для каждого из классов (количество элементов вектора равно количеству классов).
[00136] В итоге получается следующая последовательность обработки реплик пользователей: реплика -> DistilBERT -> эмбеддинг -> FFNN -> распределение вероятности принадлежности реплики интентам.
[00137] После получения эмбеддингов слов пользовательской реплики дальше происходит их классификация по заданному набору меток (тегов) сущностей. При разметке текста для обучения каждое слово отмечается специальным тегом - именем класса, к которому слово относится, и положением слова по отношению к целиковой отмечаемой сущности в виде префикса:
[00138] В - от слова beginning - первое слово в сущности, состоящей из больше, чем 1 слова.
[00139] I - от слова inside - слова, находящиеся в середине сущности, состоящей из больше, чем 1 слова.
[00140] О - от слова out - если слово не относится ни к какой сущности, он помечается этой меткой.
[00141] Для каждого слова нужно получить тег. Это можно сделать разными способами. Более простой и очевидный способ - использовать некоторую нейронную сеть, в качестве последнего слоя которой будет использован полносвязный слой размерности d, где d - количество возможных меток слова. Таким образом, получают вероятности слова иметь каждую из возможных меток (и можем выбрать самую вероятную из них). Но, чтобы учесть в финальных тегах их взаимную зависимость, этого недостаточно.
[00142] После сравнения по метрикам качества различных алгоритмов классического машинного обучения (k-NN, Random Forest, SVM, XGBoost, их композиции) и архитектур нейронных сетей (Bi-LSTM Encoder+CRF, sequence-to-sequence модели) в качестве классификатора был выбран Bi-LSTM Encoder с дополнительным CRF (conditional random field) слоем, учитывающим соотношения тегов друг с другом для правильной расстановки префиксов. На выходе из этой нейронной сети получается вектор распределения вероятностей для каждого из тегов для каждого слова (количество элементов вектора равно количеству тегов).
[00143] В итоге получается следующая последовательность обработки реплик пользователей: реплика -> ELMo -> эмбеддинги слов -> Bi-LSTM Encoder + CRF -> рапределение вероятностей принадлежности слов реплики тегам сущностей.
[00144] Модели векторизации не дообучаются в рамках платформы, а подготавливаются и поставляются разработчиками под каждую конкретную область применения. Такие модели заранее обучаются без разметки на больших текстовых массивах целевого содержания. Например, большие корпуса русского языка, такие как Википедия и новостные сайты, расширенные логами общения клиентов банка в чатах с операторами для обучения векторизаторов для банковской тематики. Затем в случае с моделью BERT для использования в классификации может быть произведено разовое дополнительное дообучение в составе вместе с классификатором на целевых обучающих данных (парах «реплика» - «интент»), что существенно повышает итоговые метрики качества.
[00145] Модели классификации интентов и тегов сущностей обучаются в рамках взаимодействия оператора с платформой на размеченных операторами пользовательских данных, вносимых через интерфейс IDE платформы в разделах с "примерами". В платформе есть следующие регулируемые гиперпараметры обучения, изменяемые в текстовом конфигурационном файле: скорость обучения (англ. «learning rate»), выбор функции потерь, метрики для оптимизации, количество эпох обучения и размер батча. При запуске обучения из IDE происходит сбор всех примеров с отметками их интентов и тегов сущностей, данные проходят через векторизаторы и собираются эмбеддинги фраз для последующей классификации интентов и эмбеддинги слов для извлечения именованных сущностей. Данные стратифицировано разбиваются на обучающую и валидационную выборки (пропорция разбиения на эти части также задается в конфигурационном файле с гиперпараметрами обучения, и эта пропорция соблюдается для каждого интента и тега сущности), затем для задачи классификации интентов происходит автоматическая балансировка классов по количеству примеров. Для этой задачи используется оверсемплинг (искусственное расширение количества примеров в классах с маленьким количеством примеров) обучающей части выборки при помощи техники SMOTE (Synthetic Minority Oversampling TEchnique) малых классов до размера самого большого. Это специальная техника генерации синтетических (ненастоящих) данных в пространстве эмбеддингов, полученных из векторизатора (а не на уровне генерации текстов, подаваемых в векторизатор). Таким образом, мы повышаем чувствительность классификатора к маленьким классам.
[00146] Дальше происходит непосредственное обучение классификатора (интентов и сущностей). Во время обучения скорость обучения регулируется автоматически, а также может быть произведена ранняя остановка в случае быстрой сходимости (чтобы не проходить все заданные эпохи впустую), либо если алгоритм не может существенно оптимизироваться на текущем наборе данных.
[00147] По окончании обучения все полученные параметры моделей сериализуются в файлы моделей, которые можно использовать для создания новых экземпляров классификаторов интентов и моделей извлечения именованных сущностей.
[00148] Все компоненты NLU части технического решения работают внутри отдельных сервисов, являющихся обертками вокруг нейросетевых модулей. В них входит отдельный сервис с векторизаторами (в целях оптимизации все более тяжелые нейронные сети, векторизаторы, были вынесены в отдельный сервис), сервисы классификации интентов, обучения классификаторов интентов, извлечения именованных сущностей и обучения моделей извлечения именованных сущностей.
[00149] Для инициализации сервисов рантайма необходимо указать путь к файлам соответствующих моделей, из которых поднимаются сервисы. Запросы к сервисам должны содержать реплики пользователей, и ответы сервисов представляют из себя списки наиболее вероятных интентов с их соответствующими уровнями вероятности от 0.0 до 1.0, и наборы слов, которые могут являться представителями искомых именованных сущностей. Для каждого такого выделенного слова в ответе сервиса извлечения именованных сущностей присутствует его положение в тексте (отступ от начала реплики в символах) и список сущностей с их уровнями вероятности. Наиболее вероятные интенты и сущности могут быть использованы в дальнейшей обработке реплики пользователя платформой.
[00150] Сервисы обучения в теле запросов на старт обучения принимают пути к текстовым файлам с наборами примеров, размеченных операторами IDE реплик и формируют файлы моделей. При необходимости обучение можно остановить, запросить статус обучения (узнать на какой стадии процесс), либо по окончании использовать сформированные файлы моделей для инициализации новых сервисов рантайма.
[00151] Ссылаясь на Фиг. 4, данное техническое решение может быть реализовано в виде вычислительной системы 400 осуществления способа управления диалогом и системы понимания естественного языка в платформе виртуальных ассистентов, которая содержит один или более из следующих компонентов:
• компонент 401 обработки, содержащий по меньшей мере один процессор 402,
• память 403,
• компонент 405 мультимедиа,
• компонент 406 аудио,
• интерфейс 407 ввода/вывода (I/О),
• сенсорный компонент 408,
• компонент 409 передачи данных.
[00152] Компонент 401 обработки в основном управляет всеми операциями системы 400, например, осуществляет обработку данных о пользователе или его запросе в чате, а также управляет дисплеем, телефонным звонком, передачей данных, работой камеры и операцией записи мобильного устройства связи. Компонент 401 обработки может включать в себя один или более процессоров 402, реализующих инструкции для завершения всех или части шагов из указанных выше способов. Кроме того, компонент 401 обработки может включать в себя один или более модулей для удобного процесса взаимодействия между другими модулями 401 обработки и другими модулями. Например, компонент 401 обработки может включать в себя мультимедийный модуль для удобного облегченного взаимодействия между компонентом 405 мультимедиа и компонентом 401 обработки.
[00153] Память 403 выполнена с возможностью хранения различных типов данных для поддержки работы системы 400, например, базу данных с профилями пользователей. Примеры таких данных включают в себя инструкции из любого приложения или способа, контактные данные, данные адресной книги, сообщения, изображения, видео, и т.д., и все они работают на системе 400. Память 403 может быть реализована в виде любого типа энергозависимого запоминающего устройства, энергонезависимого запоминающего устройства или их комбинации, например, статического оперативного запоминающего устройства (СОЗУ), Электрически-Стираемого Программируемого постоянного запоминающего устройства (ЭСППЗУ), Стираемого Программируемого постоянного запоминающего устройства (СППЗУ), Программируемого постоянного запоминающего устройства (ППЗУ), постоянного запоминающего устройства (ПЗУ), магнитной памяти, флэш-памяти, магнитного диска или оптического диска и другого, не ограничиваясь.
[00154] Компонент 405 мультимедиа включает в себя экран, обеспечивающий выходной интерфейс между системой 400, которая может быть установлена на мобильном устройстве связи пользователя и пользователем. В некоторых вариантах реализации, экран может быть жидкокристаллическим дисплеем (ЖКД) или сенсорной панелью (СП). Если экран включает в себя сенсорную панель, экран может быть реализован в виде сенсорного экрана для приема входного сигнала от пользователя. Сенсорная панель включает один или более сенсорных датчиков в смысле жестов, прикосновения и скольжения по сенсорной панели. Сенсорный датчик может не только чувствовать границу прикосновения субъекта или жест перелистывания, но и определять длительность времени и давления, связанных с режимом работы на прикосновение и скольжение. В некоторых вариантах осуществления компонент 405 мультимедиа включает одну фронтальную камеру и/или одну заднюю камеру. Когда система 400 находится в режиме работы, например, режиме съемки или режиме видео, фронтальная камера и/или задняя камера могут получать данные мультимедиа извне. Каждая фронтальная камера и задняя камера может быть одной фиксированной оптической системой объектива или может иметь фокусное расстояние или оптический зум.
[00155] Компонент 406 аудио выполнен с возможностью выходного и/или входного аудио сигнала. Например, компонент 406 аудио включает один микрофон (MIC), который выполнен с возможностью получать внешний аудио сигнал, когда система 400 находится в режиме работы, например, режиме вызова, режима записи и режима распознавания речи. Полученный аудио сигнал может быть далее сохранен в памяти 403 или направлен по компоненту 409 передачи данных. В некоторых вариантах осуществления компонент 406 аудио также включает в себя один динамик, выполненный с возможностью вывода аудио сигнала.
[00156] Интерфейс 407 ввода/вывода (I/О) обеспечивает интерфейс между компонентом 401 обработки и любым периферийным интерфейсным модулем. Вышеуказанным периферийным интерфейсным модулем может быть клавиатура, руль, кнопка, и т.д. Эти кнопки могут включать, но не ограничиваясь, кнопку запуска, кнопку регулировки громкости, начальную кнопку и кнопку блокировки.
[00157] Сенсорный компонент 408 содержит один или более сенсоров и выполнен с возможностью обеспечения различных аспектов оценки состояния системы 400. Например, сенсорный компонент 408 может обнаружить состояния вкл/выкл системы 400, относительное расположение компонентов, например, дисплея и кнопочной панели, одного компонента системы 400, наличие или отсутствие контакта между субъектом и системой 400, а также ориентацию или ускорение/замедление и изменение температуры системы 400. Сенсорный компонент 408 содержит бесконтактный датчик, выполненный с возможностью обнаружения присутствия объекта, находящегося поблизости, когда нет физического контакта. Сенсорный компонент 408 содержит оптический датчик (например, КМОП или ПЗС-датчик изображения) выполненный с возможностью использования в визуализации приложения. В некоторых вариантах сенсорный компонент 408 содержит датчик ускорения, датчик гироскопа, магнитный датчик, датчик давления или датчик температуры.
[00158] Компонент 409 передачи данных выполнен с возможностью облегчения проводной или беспроводной связи между системой 400 и другими устройствами. Система 400 может получить доступ к беспроводной сети на основе стандарта связи, таких как WiFi, 2G, 3G, 5G, или их комбинации. В одном примерном варианте компонент 409 передачи данных получает широковещательный сигнал или трансляцию, связанную с ними информацию из внешней широковещательной системы управления через широковещательный канал. В одном варианте осуществления компонент 409 передачи данных содержит модуль коммуникации ближнего поля (NFC), чтобы облегчить ближнюю связь. Например, модуль NFC может быть основан на технологии радиочастотной идентификации (RFID), технологии ассоциации передачи данных в инфракрасном диапазоне (IrDA), сверхширокополосных (UWB) технологии, Bluetooth (ВТ) технологии и других технологиях.
[00159] В примерном варианте осуществления система 400 может быть реализована посредством одной или более Специализированных Интегральных Схем (СИС), Цифрового Сигнального Процессора (ЦСП), Устройств Цифровой Обработки Сигнала (УЦОС), Программируемым Логическим Устройством (ПЛУ), логической микросхемой, программируемой в условиях эксплуатации (ППВМ), контроллера, микроконтроллера, микропроцессора или других электронных компонентов, и может быть сконфигурирован для реализации способа 100 управления диалогом и системы понимания естественного языка в платформе виртуальных ассистентов.
[00160] В примерном варианте осуществления энергонезависимый машиночитаемый носитель содержит память 403, которая включает инструкции, где инструкции выполняются процессором 401 системы 400 для реализации описанных выше способов осуществления управления диалогом.
[00161]. Например, энергонезависимым машиночитаемым носителем может быть ПЗУ, оперативное запоминающее устройство (ОЗУ), компакт-диск, магнитная лента, дискеты, оптические устройства хранения данных и тому подобное.
[00162] Вычислительная система 400 может включать в себя интерфейс дисплея, который передает графику, текст и другие данные из коммуникационной инфраструктуры (или из буфера кадра, не показан) для отображения на компоненте 405 мультимедиа. Вычислительная система 400 дополнительно включает в себя устройства ввода или периферийные устройства. Периферийные устройства могут включать в себя одно или несколько устройств для взаимодействия с мобильным устройством связи пользователя, такие как клавиатура, микрофон, носимое устройство, камера, один или более звуковых динамиков и другие датчики. Периферийные устройства могут быть внешними или внутренними по отношению к мобильному устройству связи пользователя. Сенсорный экран может отображать, как правило, графику и текст, а также предоставляет пользовательский интерфейс (например, но не ограничиваясь ими, графический пользовательский интерфейс (GUI)), через который субъект может взаимодействовать с мобильным устройством связи пользователя, например, получать доступ и взаимодействовать с приложениями, запущенными на устройстве.
[00163] Элементы заявляемого технического решения находятся в функциональной взаимосвязи, а их совместное использование приводит к созданию нового и уникального технического решения. Таким образом, все блоки функционально связаны.
[00164] Все блоки, используемые в системе, могут быть реализованы с помощью электронных компонент, используемых для создания цифровых интегральных схем, что очевидно для специалиста в данном уровне техники. Не ограничиваюсь, могут использоваться микросхемы, логика работы которых определяется при изготовлении, или программируемые логические интегральные схемы (ПЛИС), логика работы которых задается посредством программирования. Для программирования используются программаторы и отладочные среды, позволяющие задать желаемую структуру цифрового устройства в виде принципиальной электрической схемы или программы на специальных языках описания аппаратуры: Verilog, VHDL, AHDL и др. Альтернативой ПЛИС могут быть программируемые логические контроллеры (ПЛК), базовые матричные кристаллы (БМК), требующие заводского производственного процесса для программирования; ASIC специализированные заказные большие интегральные схемы (БИС), которые при мелкосерийном и единичном производстве существенно дороже.
[00165] Обычно, сама микросхема ПЛИС состоит из следующих компонент:
• конфигурируемых логических блоков, реализующих требуемую логическую функцию;
• программируемых электронных связей между конфигурируемыми логическими блоками;
• программируемых блоков ввода/вывода, обеспечивающих связь внешнего вывода микросхемы с внутренней логикой.
[00166] Также блоки могут быть реализованы с помощью постоянных запоминающих устройств.
[00167] Таким образом, реализация всех используемых блоков достигается стандартными средствами, базирующимися на классических принципах реализации основ вычислительной техники.
[00168] Как будет понятно специалисту в данной области техники, аспекты настоящего технического решения могут быть выполнены в виде системы, способа или компьютерного программного продукта. Соответственно, различные аспекты настоящего технического решения могут быть реализованы исключительно как аппаратное обеспечение, как программное обеспечение (включая прикладное программное обеспечение и так далее) или как вариант осуществления, сочетающий в себе программные и аппаратные аспекты, которые в общем случае могут упоминаться как «модуль», «система» или «архитектура». Кроме того, аспекты настоящего технического решения могут принимать форму компьютерного программного продукта, реализованного на одном или нескольких машиночитаемых носителях, имеющих машиночитаемый программный код, который на них реализован.
[00169] Также может быть использована любая комбинация одного или нескольких машиночитаемых носителей. Машиночитаемый носитель хранилища может представлять собой, без ограничений, электронную, магнитную, оптическую, электромагнитную, инфракрасную или полупроводниковую систему, аппарат, устройство или любую подходящую их комбинацию. Конкретнее, примеры (неисчерпывающий список) машиночитаемого носителя хранилища включают в себя: электрическое соединение с помощью одного или нескольких проводов, портативную компьютерную дискету; жесткий диск, оперативную память (ОЗУ), постоянную память (ПЗУ), стираемую программируемую постоянную память (EPROM или Flash-память), оптоволоконное соединение, постоянную память на компакт-диске (CD-ROM), оптическое устройство хранения, магнитное устройство хранения или любую комбинацию вышеперечисленного. В контексте настоящего описания, машиночитаемый носитель хранилища может представлять собой любой гибкий носитель данных, который может содержать или хранить программу для использования самой системой, устройством, аппаратом или в соединении с ними.
[00170] Программный код, встроенный в машиночитаемый носитель, может быть передан с помощью любого носителя, включая, без ограничений, беспроводную, проводную, оптоволоконную, инфракрасную и любую другую подходящую сеть или комбинацию вышеперечисленного.
[00171] Компьютерный программный код для выполнения операций для шагов настоящего технического решения может быть написан на любом языке программирования или комбинаций языков программирования, включая объектно-ориентированный язык программирования, например Python, R, Java, Smalltalk, С++ и так далее, и обычные процедурные языки программирования, например язык программирования «С» или аналогичные языки программирования. Программный код может выполняться на компьютере пользователя полностью, частично, или же как отдельный пакет программного обеспечения, частично на компьютере пользователя и частично на удаленном компьютере, или же полностью на удаленном компьютере. В последнем случае, удаленный компьютер может быть соединен с компьютером пользователя через сеть любого типа, включая локальную сеть (LAN), глобальную сеть (WAN) или соединение с внешним компьютером (например, через Интернет с помощью Интернет-провайдеров).
[00172] Аспекты настоящего технического решения были описаны подробно со ссылкой на блок-схемы, принципиальные схемы и/или диаграммы способов, устройств (систем) и компьютерных программных продуктов в соответствии с вариантами осуществления настоящего технического решения. Следует иметь в виду, что каждый блок из блок-схемы и/или диаграмм, а также комбинации блоков из блок-схемы и/или диаграмм, могут быть реализованы компьютерными программными инструкциями. Эти компьютерные программные инструкции могут быть предоставлены процессору компьютера общего назначения, компьютера специального назначения или другому устройству обработки данных для создания процедуры, таким образом, чтобы инструкции, выполняемые процессором компьютера или другим программируемым устройством обработки данных, создавали средства для реализации функций/действий, указанных в блоке или блоках блок-схемы и/или диаграммы.
[00173] Эти компьютерные программные инструкции также могут храниться на машиночитаемом носителе, который может управлять компьютером, отличным от программируемого устройства обработки данных или отличным от устройств, которые функционируют конкретным образом, таким образом, что инструкции, хранящиеся на машиночитаемом носителе, создают устройство, включающее инструкции, которые осуществляют функции/действия, указанные в блоке блок-схемы и/или диаграммы.