Автоматическая система ответов на вопросы, связанные с COVID-19
Примечание от автора. На пути к науке о данных — это публикация на Medium, в основном посвященная изучению науки о данных и машинного обучения. Мы не специалисты в области здравоохранения или эпидемиологи, и мнения в этой статье не следует интерпретировать как профессиональные советы. Чтобы узнать больше о пандемии коронавируса, нажмите здесь.
В последние месяцы COVID-19 стал вирусной темой в мире. Сегодня, когда COVID-19 наглядно демонстрирует, что профилактика лучше, чем лечение. Большинство из них могли бы очень хорошо понять эту фразу в текущей ситуации. Да, люди пытаются защитить себя от других, чтобы остановить распространение вируса. Действительно, социальное дистанцирование и ношение масок N-95 широко распространены среди людей.
У людей есть свои гипотезы и восприятие каждой темы. У многих людей есть общие вопросы, которые представлены как часто задаваемые вопросы. В сегодняшнем сценарии число случаев COVID-19 быстро увеличивается. Всем, кто хочет узнать точную правду о вирусе COVID-19. Кроме того, у большинства из них есть общие вопросы, как показано ниже,
- Как распространяется вирус?
- Каковы симптомы?
- Есть ли вакцина?
- Как долго вирус выживает на поверхностях?
В этой статье мы обсудим, как создать автоматического бота FAQ по COVID-19 для получения ответов на вопросы FAQ.
- Сбор данных — данные часто задаваемых вопросов о COVID-19
- Подготовка данных
- Предварительная обработка данных
- Методы представления вопросов
- Оценить с помощью пользовательского запроса
1. Сбор данных — часто задаваемые вопросы о COVID-19
Сбор данных – это сбор соответствующей информации из различных доступных источников. Я нашел приведенные ниже ссылки, когда искал в Интернете вопросы, основанные на часто задаваемых вопросах о COVID-19.
Я выбрал данные часто задаваемых вопросов о COVID-19 веб-сайта https://www.un.org для создания нашей системы контроля качества. Он содержит 39 различных часто задаваемых вопросов о COVID-19. Всегда очень важно знать, в каком формате доступны данные. Это неструктурированный документ в формате PDF. Давайте загрузим файл программно, как показано в приведенном ниже фрагменте кода.
2. Подготовка данных
Подготовить данные в нужном формате для решения задачи — следующая задача. Так как нам нужно извлечь каждый вопрос и соответствующие ответы из неструктурированного документа и сохранить его в структурированном файле. Лучший и простой способ извлечь информацию из текстового файла — это выполнить синтаксический анализ. Анализ может помочь получить конкретную информацию о следующих предположениях.
Предположения:
- Он должен следовать некоторым шаблонам в необработанном тексте.
- Следует извлечь ту же структуру из PDF.
- В тексте не должно быть шума.
В конвейере он включает следующие задачи.
- Он преобразует файл PDF в текстовый файл с помощью модуля R. Этот модуль поддерживает ту же структуру PDF в текстовом файле. Я обнаружил, что этот модуль работает очень хорошо по сравнению с другими модулями в Python. Содержимое структуры поможет нам очень хорошо разобрать QA. Процесс преобразования PDF в текст выполняется извне. (Этот процесс не включен во фрагмент кода)
- Сопоставление с образцом очень эффективно для извлечения структурированной информации из необработанного текста. Разбирать вопросы и ответы будем с помощью модуля python. (как показано в приведенном ниже фрагменте кода)
- Храните вопрос и ответ на часто задаваемые вопросы о COVID-19 в виде структурированного файла (.csv).
Данные часто задаваемых вопросов о COVID-19 после подготовки выглядят следующим образом:
3. Предварительная обработка данных
Мы не будем использовать данные как есть. Предварительная обработка — еще один очень важный шаг для точной настройки данных в НЛП.
- Удалить ненужные символы
- Удалить номер вопроса
- Удалить стоп-слова
- Лемматизация — для уменьшения перегиба слов и минимизации неоднозначности слов.
Мы применяем эти методы для вопросов часто задаваемых вопросов и запросов пользователей.
Почему я выбрал лемматизацию, а не стемминг?
Стэмминг и лемматизация предназначены для уменьшения флективных форм. Лемматизацияминимизирует текст до правильного словарного запаса, но корень сводится к префиксу или суффиксу слова. Лемматизацияпреобразует все слова, имеющие одинаковое значение, но разные представления, в их базовую форму.
4. Методы представления вопросов
В этом разделе мы обсудим несколько способов представления вопросов часто задаваемых вопросов.
- TF-IDF
- Вложение слов
- Встраивание 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