Автоматическая система ответов на вопросы, связанные с COVID-19

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

В последние месяцы COVID-19 стал вирусной темой в мире. Сегодня, когда COVID-19 наглядно демонстрирует, что профилактика лучше, чем лечение. Большинство из них могли бы очень хорошо понять эту фразу в текущей ситуации. Да, люди пытаются защитить себя от других, чтобы остановить распространение вируса. Действительно, социальное дистанцирование и ношение масок N-95 широко распространены среди людей.

У людей есть свои гипотезы и восприятие каждой темы. У многих людей есть общие вопросы, которые представлены как часто задаваемые вопросы. В сегодняшнем сценарии число случаев COVID-19 быстро увеличивается. Всем, кто хочет узнать точную правду о вирусе COVID-19. Кроме того, у большинства из них есть общие вопросы, как показано ниже,

  • Как распространяется вирус?
  • Каковы симптомы?
  • Есть ли вакцина?
  • Как долго вирус выживает на поверхностях?

В этой статье мы обсудим, как создать автоматического бота FAQ по COVID-19 для получения ответов на вопросы FAQ.

  1. Сбор данных — данные часто задаваемых вопросов о COVID-19
  2. Подготовка данных
  3. Предварительная обработка данных
  4. Методы представления вопросов
  5. Оценить с помощью пользовательского запроса

1. Сбор данных — часто задаваемые вопросы о COVID-19

Сбор данных – это сбор соответствующей информации из различных доступных источников. Я нашел приведенные ниже ссылки, когда искал в Интернете вопросы, основанные на часто задаваемых вопросах о COVID-19.

  1. https://www.mohfw.gov.in
  2. https://www.cdc.gov
  3. https://www.un.org

Я выбрал данные часто задаваемых вопросов о COVID-19 веб-сайта https://www.un.org для создания нашей системы контроля качества. Он содержит 39 различных часто задаваемых вопросов о COVID-19. Всегда очень важно знать, в каком формате доступны данные. Это неструктурированный документ в формате PDF. Давайте загрузим файл программно, как показано в приведенном ниже фрагменте кода.

2. Подготовка данных

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

Предположения:

  1. Он должен следовать некоторым шаблонам в необработанном тексте.
  2. Следует извлечь ту же структуру из PDF.
  3. В тексте не должно быть шума.

В конвейере он включает следующие задачи.

  • Он преобразует файл PDF в текстовый файл с помощью модуля R. Этот модуль поддерживает ту же структуру PDF в текстовом файле. Я обнаружил, что этот модуль работает очень хорошо по сравнению с другими модулями в Python. Содержимое структуры поможет нам очень хорошо разобрать QA. Процесс преобразования PDF в текст выполняется извне. (Этот процесс не включен во фрагмент кода)
  • Сопоставление с образцом очень эффективно для извлечения структурированной информации из необработанного текста. Разбирать вопросы и ответы будем с помощью модуля python. (как показано в приведенном ниже фрагменте кода)
  • Храните вопрос и ответ на часто задаваемые вопросы о COVID-19 в виде структурированного файла (.csv).

Данные часто задаваемых вопросов о COVID-19 после подготовки выглядят следующим образом:

3. Предварительная обработка данных

Мы не будем использовать данные как есть. Предварительная обработка — еще один очень важный шаг для точной настройки данных в НЛП.

  1. Удалить ненужные символы
  2. Удалить номер вопроса
  3. Удалить стоп-слова
  4. Лемматизация — для уменьшения перегиба слов и минимизации неоднозначности слов.

Мы применяем эти методы для вопросов часто задаваемых вопросов и запросов пользователей.

Почему я выбрал лемматизацию, а не стемминг?

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

4. Методы представления вопросов

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

  1. TF-IDF
  2. Вложение слов
  3. Встраивание BERT

TF-IDF

Первый подход, который мы будем использовать для семантического сходства, — это использование Bag of Words (BOW). TF-IDF преобразует текст в осмысленные числа. Этот метод широко используется для извлечения признаков в приложениях НЛП. TF (частота терминов) измеряет, сколько раз слова встречаются в документе. IDF (обратная частота документа) измеряет низкое значение слов, которые имеют высокую частоту во всех документах.

Часто задаваемые вопросы о COVID-19 TF-IDF задает вопросы, как показано на рисунке ниже,

Фрагменты кода для создания представления TF-IDF, как показано ниже,

Вложение слов

GloVe — алгоритм обучения без учителя для получения векторных представлений слов. Он обучался на глобальной матрице совпадения слов. Я загрузил предварительно обученный вектор слов из Glove для нашего анализа. Фрагменты кода для создания представления встраивания слов, как показано ниже,

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

Встраивание BERT

BERT — это модель на основе преобразователя, которая пытается использовать контекст слов для встраивания. BERT побил несколько рекордов в задачах НЛП. Следующий поисковый запрос — отличный способ понять BERT. «Путешественнику из Бразилии в США в 2019 году нужна виза». Мы замечаем, что отношение слова «к» к другим словам в предложении важно для семантического декодирования значения. Возврат информации о гражданах США, направляющихся в Бразилию, не актуален, поскольку речь идет о гражданах Бразилии, направляющихся в США. BERT может справиться с этим хорошо.

5. Оценить с помощью пользовательского запроса

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

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

Мы добились наилучших результатов за счет встраивания и представления встраивания BERT. Недостатки TF-IDF не могут семантически представить вопрос. Весь код доступен на GitHub. Вы можете связаться со мной в LinkedIn.

Спасибо за чтение.!!!

Ресурсы:

https://github.com/narendraprasath/COVID-19-FAQ-Question-Answering-Bot