КОМПЬЮТЕРНАЯ РЕАЛИЗАЦИЯ МЕТОДА ИЗВЛЕЧЕНИЯ ЗНАНИЙ «МЫСЛИ ВСЛУХ» - Студенческий научный форум

X Международная студенческая научная конференция Студенческий научный форум - 2018

КОМПЬЮТЕРНАЯ РЕАЛИЗАЦИЯ МЕТОДА ИЗВЛЕЧЕНИЯ ЗНАНИЙ «МЫСЛИ ВСЛУХ»

Цейтлина Н.Е. 1, Карпенко Т.А. 1
1НИУ "БелГУ"
 Комментарии
Текст работы размещён без изображений и формул.
Полная версия работы доступна во вкладке "Файлы работы" в формате PDF
ВВЕДЕНИЕ

Данная работа посвящена компьютерной реализации метода извлечения знаний «Мысли вслух».

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

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

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

Объектом данной работы является анализ протоколов "мыслей вслух". Предметом данной работы является извлечение знаний методом анализа протоколов "мыслей вслух".

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

Относительно поставленной цели можно сформулировать следующие задачи:

  1. подробно описать предметную область и метод извлечения знаний «Мысли вслух»;

  2. выполнить формализацию выбранной методики и описать все этапы создания формализованного представления метода извлечения знаний «Мысли вслух» по данной предметной области;

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

Работа имеет следующую структуру:

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

  2. Формализованная модель метода - описание формализации метода извлечения знаний «Мысли вслух».

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

Данная работа состоит из 3 разделов, 38 страниц, 12 рисунков, 1 приложения.

1 ТЕОРЕТИЧЕСКАЯ ЧАСТЬ 1.1 Анализ предметной области

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

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

Кофе – это напиток, который изготавливается из жареных зерен некоторых типов растений, относящихся к роду Кофе семейства Мареновые[21].

Универсальной системы оценки качества кофейных зерен не существует, поэтому каждая страна, участвующая в кофейной промышленности, по-своему определяет требование к качеству зерен[25]. Такими требованиями в основном являются требования по внешнему виду зерен, географическому местоположению плантации, методам обработки, количеству некачественных зерен в партии, влажности, коэффициентам инородных примесей, параметрам объема зерна[26].

Кофейный напиток – это напиток, содержащий в своем составе кофе. Также кофейным напитком иногда называют заменители кофе, которые по своему описанию должны иметь вкус, аромат и внешний вид, неотличимый от натурального кофе[27].

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

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

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

Существует большое количество способов приготовления кофе. Стоит описать основные из них:

  1. Кофе по-восточному. Данный вид кофе готовится в турке или в так называемой джезве с добавлением различных специй;

  2. Кофе в фильтровой кофеварке. Принцип работы фильтровой кофеварки называют «гравитационным» и заключается он в том, что на воронку с фильтром, в котором находится молотый кофе, попадает горячая вода;

  3. Кофе во френч-прессе. Френч-пресс – это стеклянная колба или металлический термос, внутри которого поршень со специальным ситечком отделяют кофейную гущу от самого напитка.

  4. Кофе в кофеварке гейзерного типа или, как его еще называют, кофе по-неаполитански. Кофеварка гейзерного типа или мока имеет сложную конструкцию, состоящую из трех частей: нижняя часть наполняется водой, при давлении пара приблизительно 1,5 атм. вода поднимается вверх по узкому каналу, проходит через среднюю часть, в которую помещается молотый кофе, а до верхней части доходит уже готовый напиток[24].

  5. Кофе в эспрессо-машине. Эспрессо-машина устроена таким образом, что горячая вода, температурой 88 – 91 градусов по Цельсию, пропускается через молотый кофе под давление в 9 атм.

  6. Кофе в капсульной кофеварке. Для приготовления кофе используются специальные кофейные капсулы.

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

Добавление дополнительных ингредиентов по заранее определенному рецепту во многом определяет вкус напитка. Существует огромное количество рецептов приготовления напитков, основанных на кофе. Здесь приведены основные из них[29].

Эспрессо – изготовленный при помощи эспрессо-машины крепкий кофе, базисом его вкусовой составляющей являются кисловато-горький привкус, законченное и освежающее послевкусие. Идеальным является образец, имеющий ровную, однородную, золотисто-ореховую пенку, толщиной 2 мм, поданный в течение 1,5 минут после приготовления. Данному виду кофейного напитка в стандартном виде не требуется дополнительных ингредиентов.

Ристретто – более крепкий кофе, чем эспрессо, за счет того, что варится в меньшем количестве воды, однако содержит меньшее количество кофеина за счет использование специальных сортов кофе. Подается вместе со стаканом холодной воды для предотвращения обезвоживания. Употребляется без сахара.

Лунго – кофе еще более крепкий, чем эспрессо за счет более длительного времени экстракции.

Американо – эспрессо, смешанный с горячей водой в соотношении 1:2 или 1:3. После приготовления 30 мл эспрессо добавляется горячая вода для получения 150 – 160 мл объема напитка[28].

Доппио – двойная порция эспрессо.

Коретто – эспрессо с добавлением алкогольных напитков, чаще всего виски.

Капучино – эспрессо, разбавленный горячим молоком, сверху добавляется взбитое в горячую пену молоко. Стандартная порция составляет 150 мл. Подается при температуре 60 – 70 градусов. Популярной специей является корица.

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

Глясе – эспрессо, в который добавлен шарик мороженого, посыпанного тертым шоколадом. Подается в таком же бокале, что и Айриш.

Кон панна – эспрессо со взбитыми сливками. Основной специей является корица. Подается в чашке для капучино.

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

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

Латте маккиято – кофейный напиток, в котором эспрессо, молоко и молочная пена располагаются слоями.

Маккиято – эспрессо, сверху которого аккуратно кладется тонкий слой молочной пены.

Мокко – кофейный напиток, состоящий из эспрессо, молока, взбитых сливок и шоколада[30].

Учитывая все вышеприведенное данную предметную область можно структурировать на следующие тесно связанные между собой тематические разделы:

  1. Деятельность бариста, необходимые навыки и обязанности;

  2. Историческая информация;

  3. Сорта кофе, их особенности, особенности их оценивания;

  4. Алгоритмы приготовления кофе;

  5. Оборудование для приготовления кофе;

  6. Рецепты напитков, основанных на кофе;

  7. Визуальное оформление кофейных напитков;

  8. Латте-арт;

  9. Кофе и здоровье человека.

В данном разделе описана выбранная предметная область: история ее возникновения, ее основные определения, детали работы специалистов данной области, представлен один из вариантов ее структуризации.

1.2 Описание метода

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

Управление знаниями (knowledge management, KM) - это совокупность процессов, которые управляют созданием, распространением, обработкой и использованием информации предприятия[1].

Основной принцип классификации методов извлечения знаний - по источнику знаний. Коммуникативные методы охватывают способы и процедуры контактов аналитика с непосредственным источником знаний - специалистами и экспертами предприятия, а текстологические включают методы извлечения знаний из документов (методик, регламентов, служебных руководств) и специальной литературы (статей, монографий, учебников)[3]. Разделение методов на верхнем уровне классификации не означает их антагонистичности; обычно аналитик комбинирует различные методы[7].

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

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

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

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

По степени структурированности знаний предметные области могут быть:

  • хорошо структурированными - с четкими определениями, устоявшейся технологией и терминологией;

  • среднеструктурированными - с определившейся терминологией, развивающейся технологией, явными взаимосвязями между процессами;

  • слабоструктурированными - с размытыми определениями, часто меняющейся структурой, скрытыми взаимосвязями, с большим количеством "белых пятен"[8].

В соответствии с классификацией ниже рассмотрена подробнее одна из разновидностей коммуникативных методов: пассивные методы. Термин "пассивные" не должен вызывать иллюзий, поскольку он введен в противовес "активным" методам[9]. В реальности же пассивные методы требуют от аналитика не меньшей отдачи, чем такие активные методы, как игры и диалог. Согласно классификации, к этой группе относятся наблюдения, анализ протоколов "мыслей вслух", лекции[11].

Протоколирование "мыслей вслух" заключается в том, что эксперта-специалиста просят не просто прокомментировать свои действия и решения, но и объяснить, как это решение было найдено, т.е. продемонстрировать всю цепочку рассуждений[12]. Во время рассуждений специалиста все его слова, весь "поток сознания" протоколируется; при этом отмечаются даже паузы и междометия. Иногда этот метод называют "вербальные (словесные) отчеты"[13].

Вопрос об использовании диктофонов является спорным, поскольку запись иногда действует на специалиста парализующе, разрушая атмосферу доверительности, которая может и должна возникать при непосредственном общении[14].

Основная трудность при протоколировании "мыслей вслух" состоит в том, что человеку принципиально сложно объяснить, как он думает. Существуют экспериментальные психологические доказательства того факта, что люди не всегда в состоянии достоверно описывать мыслительные процессы. Кроме того, некоторые знания, хранящиеся в невербальной форме, вообще слабо коррелируют с их словесным описанием[16].

Расшифровку полученных протоколов аналитик проводит самостоятельно с коррекциями на следующих сеансах извлечения знаний. Удачно проведенное протоколирование "мыслей вслух" - один из наиболее эффективных методов, поскольку в нем эксперт может проявить себя максимально ярко, он ничем не скован, свободен в потоке собственных умозаключений и рассуждений[10].

Метод "мысли вслух" требует от аналитика тех же умений, что и метод наблюдений. Обычно "мысли вслух" дополняются потом одним из активных методов для реализации обратной связи[15].

2 ФОРМАЛИЗОВАННАЯ МОДЕЛЬ МЕТОДА

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

В данной работе формализация происходит за счет выбора ключевых слов в высказываниях эксперта и построении на их основе логической цепочки, которая является основополагающей структурой образа мышления и состава методов принятия решений конкретного эксперта[17]. Необходимо производить запрос данных от эксперта до тех пор, пока не будет получено достаточно ключевых слов на основе высказываний эксперта для составления удовлетворяющей принципу адекватности логической цепочки[20]. Таким образом можно получить достаточно подробные алгоритмы работы в данной предметной области или достаточно подробное обоснование почему конкретный эксперт сформулировал имеющееся изначальное мнение по тому или иному вопросу или какой-либо задаче выбора, классификации или обозначенной проблеме[18].

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

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

Формализованная модель выбранного метода представлена в виде блок-схемы.

Более подробная чем функциональная модель, техническая блок-схема представлена на рисунке 1.

Рисунок 1 - Блок-схема работы метода

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

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

Так все основные этапы формализации метода анализа протоколов «мыслей вслух» были описаны можно приступить к описанию реализации алгоритма.

3 КОМПЬЮТЕРНАЯ РЕАЛИЗАЦИЯ МЕТОДА 3.1 Программные средства

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

Данное программное обеспечение было создано на языке программирования высокого уровня Python в качестве бота в мессенджере Telegram, в процессе разработки использовался фреймворк для распознавания речи Yandex SpeechKit, в качестве СУБД использовалась нереляционная СУБД MongoDB. Следует подробнее описать данный стек технологий.

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

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

Эталонной реализацией Python является интерпретатор CPython, поддерживающий большинство активно используемых платформ. Он распространяется под свободной лицензией Python Software Foundation License, позволяющей использовать его без ограничений в любых приложениях, включая проприетарные. Есть реализации интерпретаторов для JVM (с возможностью компиляции), MSIL (с возможностью компиляции), LLVM и других. Проект PyPy предлагает реализацию Python с использованием JIT-компиляции, которая значительно увеличивает скорость выполнения Python-программ.

Python — активно развивающийся язык программирования, новые версии (с добавлением/изменением языковых свойств) выходят примерно раз в два с половиной года. Вследствие этого и некоторых других причин на Python отсутствуют стандарт ANSI, ISO или другие официальные стандарты, их роль выполняет CPython.

Python поддерживает динамическую типизацию, то есть тип переменной определяется только во время исполнения. Поэтому вместо «присваивания значения переменной» лучше говорить о «связывании значения с некоторым именем». В Python имеются встроенные типы: булевый, строка, Unicode-строка, целое число произвольной точности, число с плавающей запятой, комплексное число и некоторые другие. Из коллекций в Python встроены: список, кортеж (неизменяемый список), словарь, множество и другие. Все значения являются объектами, в том числе функции, методы, модули, классы.

Добавить новый тип можно либо написав класс (class), либо определив новый тип в модуле расширения (например, написанном на языке C). Система классов поддерживает наследование (одиночное и множественное) и метапрограммирование. Возможно наследование от большинства встроенных типов и типов расширений.

Боты — специальные аккаунты в Telegram, созданные для того, чтобы автоматически обрабатывать и отправлять сообщения. Пользователи могут взаимодействовать с ботами при помощи сообщений, отправляемых через обычные или групповые чаты. Логика бота контролируется при помощи HTTPS запросов к API для ботов.

Как уже было сказано ранее, роботы — особые аккаунты, которые не требуют номера телефона при создании. По сути, эти аккаунты играют роль интерфейса к сервису, который работает на удалённом сервере. Самое интересное в роботах это то, что для их создания не нужно изучать низкоуровневые методы работы с MTProto и шифрованием — общение с роботом организовано при помощи обычного HTTPS интерфейса с упрощенными методами Telegram API. Мы назвали его Bot API.

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

  • У роботов нет статусов «онлайн» и «был в сети», вместо этого отображается надпись «робот».

  • Для роботов выделено ограниченное место на серверах — все сообщения будут удалены по прошествии определенного срока после обработки.

  • Роботы не могут сами начать общение с пользователем. Пользователь должен либо добавить робота в группу, либо первым начать с ним диалог. Для этого можно использовать ссылки вида telegram.me/ или поиск по имени пользователя.

  • Имя пользователя у робота должно заканчиваться на «bot» (например, @TriviaBot, @gadalka_bot).

  • При добавлении в конференцию, по умолчанию робот не получает всех сообщений (см. режим приватности).

  • Роботы никогда не спят, не едят и не жалуются (если только не запрограммированы их на обратное).

У роботов Telegram есть много уникальных возможностей — например, кастомизированные клавиатуры, дополнительные интерфейсы для команд по умолчанию, внешнее связывание и специальные режимы приватности для групп. Пользователи могут общаться с ботом напрямую из поля ввода сообщения — из любого чата или группы. Для этого нужно всего лишь набрать имя пользователя вашего бота и запрос для поиска. Получив запрос, бот может возвратить какие-либо результаты. Как только пользователь нажмет на один из них, он сразу же отправится в чат. Таким образом можно запрашивать контент от бота в чатах, группах или каналах.

С помощью ботов пользователи могут играть в HTML5-игры в группах или приватных чатах. Игровая платформа Telegram поможет составить таблицу рекордов и оповещать пользователей об изменении рейтинга. Одна из самых необычных возможностей Bot API — кастомизированные клавиатуры. При передаче сервером ответа есть возможность передать команду на отображение специальной клавиатуры с предустановленными вариантами ответа. Клиент Telegram, получив сообщение, отобразит пользователю вашу клавиатуру. Нажатие на клавишу сразу же отправит на сервер соответствующую команду. Таким образом можно значительно упростить взаимодействие робота с пользователем.

MongoDB - документоориентированная система управления базами данных (СУБД) с открытым исходным кодом, не требующая описания схемы таблиц. Классифицирована как NoSQL, использует JSON-подобные документы и схему базы данных. Написана на языке C++.

СУБД управляет наборами JSON-подобных документов, хранимых в двоичном виде в формате BSON. Хранение и поиск файлов в MongoDB происходит благодаря вызовам протокола GridFS. Подобно другим документоориентированным СУБД (CouchDB и др.), MongoDB не является реляционной СУБД. В СУБД нет такого понятия, как «транзакция». Атомарность гарантируется только на уровне целого документа, то есть частичного обновления документа произойти не может. Отсутствует понятие «изоляции». Любые данные, которые считываются одним клиентом, могут параллельно изменяться другим клиентом. В MongoDB реализована асинхронная репликация в конфигурации «ведущий — ведомый» (англ. master — slave), основанная на передаче журнала изменений с ведущего узла на ведомые. Поддерживается автоматическое восстановление в случае выхода из строя ведущего узла. Серверы с запущенным процессом mongod должны образовать кворум, чтобы произошло автоматическое определение нового ведущего узла. Таким образом, если не используется специальный процесс-арбитр (процесс mongod, только участвующий в установке кворума, но не хранящий никаких данных), количество запущенных реплик должно быть нечётным.

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

3.2 Технология распознавания речи

В данном разделе описана технология распознавания речи, использованная при разработке.

SpeechKit Cloud — это программа, которая открывает разработчикам доступ к технологиям распознавания и синтеза речи Яндекса.

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

Взаимодействие со SpeechKit Cloud идет через HTTP API. Поэтому вам не придется разворачивать и поддерживать свою инфраструктуру, чтобы в сжатые сроки реализовать самые разные функции:

  • голосовой ввод в компьютерных играх и приложениях;

  • голосовое управление в салоне автомобиля — например, навигационной системой;

  • интерактивное голосовое меню (IVR) в телефонии;

  • голосовой интерфейс систем «Умный дом»;

  • голосовой интерфейс электронных роботов;

  • голосовое управление бытовой техникой и т.д.

Распознавание речи — это процесс преобразования речи в текст. SpeechKit Cloud позволяет распознавать спонтанную речь на нескольких языках. Языки: русский, английский, украинский, турецкий.

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

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

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

Список доступных языковых моделей приведен ниже.

  1. Короткие запросы (queries) — фразы (3—5 слов) на различные темы, в том числе запросы в поисковых системах (на сайтах).

  2. Адреса (maps) — адреса, названия организаций и географических объектов.

  3. Даты (dates) — названия месяцев, порядковые и количественные числительные.

  4. Имена (names) — имена и фамилии, просьбы соединить по телефону.

  5. Числа (numbers) — количественные числительные от 1 до 999 и разделители — точка, запятая, тире. Модель подходит для диктовки номеров телефонов, счетов, документов.

  6. Музыка (music) — названия музыкальных произведений и исполнителей. Модель не предназначена для распознавания музыкальных фрагментов. Подходит только для распознавания названий, имен авторов и исполнителей песен.

  7. Заказы (buying) — фразы, связанные с оформлением заказов в интернет-магазинах (подтверждение заказа и форма доставки).

Для подготовки моделей используются большие массивы данных из сервисов и приложений Яндекса. Это позволяет постоянно улучшать качество распознавания.

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

Скорость распознавания зависит от способа передачи звуковых данных. Если данные передаются частями, распознавание происходит одновременно с передачей данных. В этом случае разрыв между окончанием отправки данных и получением результата обычно не превышает 1 секунды. Следует учитывать, что SpeechKit Cloud преобразует полученные аудио данные в моно PCM/16 бит/16 кГц.

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

3.3 Реализация программного средства

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

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

Рисунок 2 - База данных системы

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

Ниже приведен тестовый набор высказываний для проверки работы программного обеспечения:

  1. Полноценный набор из гипотезы и пояснений.

  2. Нераспознаваемый текст

Полноценный набор из гипотезы и пояснений приведен ниже.

Капучино - лучший выбор.

Пояснения:

  • Этот напиток содержит молочные компоненты

  • А также сиропы

  • Например мятный или карамельный

Результат ввода гипотезы представлен на рисунке 3.

Рисунок 3 - Результат ввода гипотезы

Результат первого пояснения представлен на рисунке 4.

Рисунок 4 - Результат ввода первого пояснения

Результат ввода второго пояснения представлен на рисунке 5.

Рисунок 5 - Результат ввода второго пояснения

Результат ввода третьего пояснения и полученная логическая цепочка представлены на рисунке 6.

Рисунок 6 - Результат третьего пояснения и полученная логическая цепочка.

Для получения полноценного отчета необходим еще один тестовый набор. Он представлен ниже.

Лучше выбрать капучино

Пояснения:

  • Молочные компоненты есть в нем.

  • И сиропы.

  • Фисташковый, ореховый и карамельный.

В первую очередь эксперт высказывает гипотезу. Результат ввода гипотезы представлен на рисунке 7.

Рисунок 7 - Результат ввода гипотезы

Результат ввода первого пояснения представлен на рисунке 8.

Рисунок 8 - Результат ввода первого пояснения

Второе пояснение эксперта представлено на рисунке 9.

Рисунок 9 - Второе пояснение эксперта

Третье объяснение эксперта и выявленная логическая цепочка представлены на рисунке 10.

Рисунок 10 - Третье объяснение и логическая цепочка

Получив несколько мнений экспертов можно сформировать полноценный отчет. Его можно получить отправив команду “/report” и ключевое слово, по которому необходим отчет. Пример отчета представлен на рисунке 11.

Рисунок 11 - Пример отчета

Результат обработки программой неразборчивого или не имеющего содержания сообщения представлен на рисунке 12.

Рисунок 12 - Результат обработки не имеющего смысла сообщения

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

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

ЗАКЛЮЧЕНИЕ

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

Стоит указать пути дальнейшего развития данного программного продукта:

  • добавить возможность изменить критерии, по которым оценивается гипотеза и пояснения;

  • реализовать возможность изменить содержание пояснений после их ввода экспертом;

  • включить возможность изменить количество пояснений в зависимости от пожеланий эксперта;

  • расширить экспертный вывод, сделав его более подробным описанием эффективности построенной логической цепочки;

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

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

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

Список использованных источников
  1. Андерсен, В. Базы данных Microsoft Access. Проблемы и решения: Практ. пособ. / В. Андерсен - М.: Издательство ЭКОМ, 2001. - 384 с.

  2. Глухих, И. Н. Интеллектуальные информационные системы : учеб. пособие для студентов учреждений высш. проф. образования / И. Н. Глухих - М. : Академия, 2012. - 110 с.

  3. Ефимов, Е. Н. Информационные системы и технологии в экономике: учеб. пособие для студентов, обучающихся по специальностям "Мировая экономика", "Бухгалт. учет, анализ и аудит" и "Финансы и кредит" / Е. Н. Ефимов, Е. В. Ефимова, Г. М. Лапицкая ; под ред. Г. М. Лапицкой. - Ростов н/Д : МарТ: Феникс, 2012. - 296 с.

  4. Ясницкий, Л. Н. Введение в искусственный интеллект : учеб. пособие для студентов вузов, обучающихся по мат. направлениям и специальностям / Л. Н. Ясницкий. - М. : Академия, 2013. - 175 с.

  5. Боженюк, А. В. Интеллектуальные интернет-технологии : учеб. для студентов вузов, обучающихся по специальности "Прикладная информатика (по обл.)" и др. специальностям / А. В. Боженюк, Э. М. Котов, А. А. Целых. - Ростов н/д : Феникс, 2012. - 382 с.

  6. Абдикеев, Н. М. Проектирование интеллектуальных систем в экономике : учеб. для студентов вузов, обучающихся по специальности 351400 "Приклад. информатика (по обл.)" / Н. М. Абдикеев; под ред Н. П. Тихомирова; Рос. экон. акад. им. Г. В. Плеханова. - М. : Экзамен, 2014. - 526 с.

  7. Иванов, В. М.. Интеллектуальные информационные системы : Учеб. пособие / В. М. Иванов - Екатеринбург : Издательство УрГЭУ, 2013. - 177 с.

  8. Аверкин, А.Н. Толковый словарь по искусственному интеллекту / А.Н. Аверкин, М.Г. Гаазе-Рапопорт, Д.А. Поспелов - М.: Радио и связь, 1992.

  9. Попов, Э.В. Искусственный интеллект: В 3 кн. Кн 1. Системы общения и экспертные системы: Справочник / Э.В. Попов - М.: Радио и связь, 2012.

  10. Осипов, Г. С. Приобретение знаний интеллектуальными системами / Г.С. Осипов - М.: Наука, 1997.

  11. Осуга, С. Обработка знаний: Пер. с яп / С. Осуга - М.: Мир, 1989.

  12. Попов, Э.В. Экспертные системы / Э.В. Попов - М: Наука, 1987. - 288 с.

  13. Хейес-Рот, Ф. Построение экспертных систем: Пер. с англ. / Под ред. Ф. Хейес-Рота, Д. Уотермена, Д. Лената. - М.: Мир, 2012.

  14. Уэно, Х. Представление и использование знаний: Пер. с яп. / Под ред. Х.Уэно, М. Исидзука. - М.: Мир, 1989.

  15. Осуга, С. Приобретение знаний: Пер. с япон. / Под ред. С. Осуга, Ю. Саэки. - М.: Мир, 2013.

  16. Блох Д. «Эффективное программирование.» / Д. Блох - М.: Мир, 2014.

  17. Виттих, В.А. Интеллектуальный анализ данных с помощью кластеризации / В.А. Виттих, И.В. Майоров, П.О. Скобелев, О.Л. Сурнин - М.: Мир, 2014.

  18. Гаврилова, Т.А. Базы знаний интеллектуальных систем / Т.А. Гаврилова - М:2000, 2012.

  19. Хорстманн, К. «Java. Библиотека профессионала. Том 1».10-е издание / Кей Хорстманн, Гари Корнелл - М.: Мир, 2016/

  20. Джордж Ф.Л. Искусственный интеллект. Стратегии и методы решения сложных проблем / Ф.Л. Джордж - Издательство «Вильямс», Москва, Санкт-Петербург, Киев, 2003.

  21. Рецепты кофейных напитков | http://coffee-klatsch.ru [Электронный ресурс] – Режим доступа http://coffee-klatsch.ru/coffee-kinds.html, свободный.

  22. Рецепты кофейных напитков | http://pro-cofe.ru [Электронный ресурс] – Режим доступа http://pro-cofe.ru/retseptyi-kofe/, свободный.

  23. Рецепты кофейных напитков | http://coffe-master.ru [Электронный ресурс] – Режим доступа http://coffe-master.ru/category/recepty-kofe/, свободный.

  24. Рецепты кофейных напитков | http://www.folgerscoffee.com [Электронный ресурс] – Режим доступа http://www.folgerscoffee.com/coffee-recipes/, свободный.

  25. Рецепты кофейных напитков | https://www.coffee-mate.com [Электронный ресурс] – Режим доступа https://www.coffee-mate.com/Recipes/Default.aspx, свободный.

  26. Рецепты кофейных напитков | http://www.mrcoffee.com [Электронный ресурс] – Режим доступа http://www.mrcoffee.com/service-and-support/recipes/recipes.html, свободный.

  27. Рецепты кофейных напитков | http://kofeka.ru [Электронный ресурс] – Режим доступа http://kofeka.ru/recept-cofe.html, свободный.

  28. Рецепты кофейных напитков | http://pearl-coffee.org [Электронный ресурс] – Режим доступа http://pearl-coffee.org/, свободный.

  29. Фомиченко, К. Кофе. 333 рецепта со всего мира [Текст]/ К. Фомиченко – Минск: Ураджай, 1999. – 95 с.

  30. Чудесный кофе (документальный фильм) | https://vk.com [Электронный ресурс] – Режим доступа https://vk.com/video-40050524_163202787, свободный.

Приложение

# -*- coding: utf-8 -*-

from telegram import Bot

from telegram.ext import Updater

from telegram.ext import MessageHandler, Filters

import requests

import xml.etree.ElementTree as XmlElementTree

import json

from pymongo import MongoClient

YANDEX_API_KEY = 'e4f504da-8d3a-43f9-aee5-00c0964c49cd'

YANDEX_ASR_HOST = 'asr.yandex.net'

YANDEX_ASR_PATH = '/asr_xml'

uuid = '01ae13cb744628b58fb536d496daa1e6'

TEXTERRA_API_KEY = '8df4842292413c624c619f26ee25098d0aa64ed9'

BOT_API_KEY = '486241800:AAFkto2jZaHUT_P2p6I5Fh-s5NxXDvboiRs'

bot = Bot(token=BOT_API_KEY)

print(bot.get_me())

updater = Updater(token=BOT_API_KEY)

dispatcher = updater.dispatcher

mongoClient = MongoClient()

db = mongoClient.expert_views

counters = {}

logical_chain = {}

views = {}

def echo(bot, update):

chat_id = update._effective_message.chat.id

if counters.get(chat_id) == None:

counters[chat_id] = 0

logical_chain[chat_id] = ''

views[chat_id] = []

else:

counters[chat_id] += 1

print(update._effective_message.chat)

file = bot.get_file(update._effective_message.voice.file_id)

file.download('voice' + str(chat_id))

try:

url = 'http://' + YANDEX_ASR_HOST + YANDEX_ASR_PATH + '?uuid=' + uuid + '&key=' + YANDEX_API_KEY + '&topic=queries&lang=ru-RU&disableAntimat=true'

data = {'file': open('voice' + str(chat_id), 'rb')}

headers = {'Content-Type': 'audio/ogg;codecs=opus'}

response = requests.post(url, headers=headers, files=data)

print(response.content)

except Exception as e:

print(e)

message_text = ''

if response.status_code == 200:

response_text = response.content

xml = XmlElementTree.fromstring(response_text)

if int(xml.attrib['success']) == 1:

max_confidence = - float("inf")

text = ''

for child in xml:

if float(child.attrib['confidence']) > max_confidence:

text = child.text

max_confidence = float(child.attrib['confidence'])

if max_confidence != - float("inf"):

message_text = text

if logical_chain[chat_id] == '':

logical_chain[chat_id] = message_text

if message_text != '':

bot.send_message(chat_id=chat_id, text=message_text)

words = message_text.split(' ')

word = ''

for w in words:

if len(w) >= len(word):

word = w

logical_chain[chat_id] = word + ' + ' + logical_chain[chat_id]

try:

views[chat_id].append(message_text)

except Exception as e:

print(e)

if counters[chat_id] < 3:

try:

bot.send_message(chat_id=chat_id, text=u'Расскажите подробнее о компонентах вашего высказывания. Например о ' + word)

except Exception as e:

print(e)

elif counters[chat_id] == 3:

bot.send_message(chat_id=chat_id, text=u'Вы пришли к решению следующим образом: ' + logical_chain[chat_id])

try:

view = db.views.insert_one({'chat_id': chat_id, 'view': views[chat_id], 'chain': logical_chain[chat_id]})

except Exception as e:

print(e)

counters.pop(chat_id)

logical_chain.pop(chat_id)

else:

counters.pop(chat_id)

logical_chain.pop(chat_id)

bot.send_message(chat_id=chat_id, text='Не удалось распознать текст')

def report(bot, update):

chat_id = update._effective_message.chat.id

text = update._effective_message.text

if '/report' in text:

word = text.split(' ')[1]

message_text = u'Отчет по заданному слову "' + word + '"n'

views_list = list(db.views.find())

chains_list = list(db.chains.find())

i = 1

for v in views_list:

if word in v[u'view'][0]:

message_text += str(i) + u' эксперт:n'

message_text += u'Гипотеза: ' + v[u'view'][0] + 'n'

message_text += u'Аргументы:n'

i += 1

j = 0

for v1 in v[u'view']:

if j != 0:

message_text += u'-' + v1 + 'n'

j = 1

message_text += u'Логическая цепочка:n'

message_text += v[u'chain'] + 'n'

bot.send_message(chat_id=chat_id, text=message_text)

echo_handler = MessageHandler(Filters.voice, echo)

report_handler = MessageHandler(Filters.command, report)

dispatcher.add_handler(echo_handler)

dispatcher.add_handler(report_handler)

updater.start_polling()

Просмотров работы: 195