Это руководство даст вам ясновидение по построению системы контроля качества на основе НЛП. Здесь я расскажу о полном стеке (от необработанных текстовых файлов до интерактивного веб-приложения). Я воспользуюсь Haystack от Deepset.ai, чтобы построить эту систему контроля качества для языка хинди.

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

  1. Краткое описание системы контроля качества
  2. Строительство трубопровода Haystack
  • Подготовка и индексация документов
  • Индивидуальная подготовка данных для обучения и точная настройка
  • Настройте конвейер поиска с помощью точно настроенной модели

3 .. Вывод в веб-приложении с помощью Streamlit

Кратко о системе контроля качества

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

Теперь, если я упомяну здесь когнитивные навыки, то определенно появится роль ИИ. Таким образом, с помощью НЛП (обработки естественного языка) и поиска информации мы пытаемся достичь этого человеческого понимания, запоминания и точности нахождения. И эти системы называются системами обеспечения качества на основе НЛП.

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

Строительство трубопровода стога сена

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

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

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

Предложение-преобразователь: преобразователь предложений очень удобен в предоставлении различных предварительно обученных моделей на основе преобразователя для встраивания предложения или документа. Чтобы ознакомиться с этими моделями (с точки зрения использования), нажмите здесь.

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

St-annotated-text: для отображения аннотированного текста в оптимизированном веб-приложении.

Подготовка документов и индексирование: Все, что вам нужно, это указать каталог, в котором хранятся ваши файлы txt. В моем случае у меня есть около 2k исторических документов на языке хинди. Теперь вызовите метод get_data_haystack_format (), он вернет в основном List [Dict], как того требует Haystack.

Как только мы получим данные в вышеупомянутом формате, мы проиндексируем их, вызвав get_haystack_document_store (). Я использовал InMemoryDocumentStore () Haystack, потому что у меня не было много данных. Но если у вас большой объем данных, вы можете использовать другой DocumenStore, например ElasticSearch, FAISS и т. Д.

Подготовка пользовательских данных для обучения и точная настройка: поскольку у меня есть данные истории (на языке хинди) только в текстовых файлах (с вопросом, ответом), я преобразовал их в формат SQUAD, чтобы точно - тюнинговать на любую базовую модель. Я готовил набор данных вручную по выходным 😅 и рассмотрел пару вопросов и ответов очень простого уровня, которые не требуют особых рассуждений. Ниже приведен пример фрагмента преобразованных данных в файле json:

Теперь у нас есть готовый обучающий json-файл. Здесь Haystack предоставляет простую и эффективную абстракцию для выполнения точных задач. Вам просто нужно предоставить три вещи: txt-файлы dir (содержат только txt), обучающий json-файл, тип базовой модели, и Haystack справится со всем этим.

#Infra: среда выполнения графического процессора Google colab (рекомендуется)

#training_samples: ~ 2k

#base_model: предложения-трансформеры / msmarco-distilroberta-base-v2

#epoch: 5

#fine_tunning_time: ~ 30–45 мин.

Настройка поискового конвейера с помощью точно настроенной модели: В Haystack есть 3 основных компонента для поискового конвейера: DocumentStore, Retriever, Reader. Есть еще один компонент, называемый Finder, который представляет собой просто связывающую абстракцию Retriever & Reader.

Мы уже закончили с DocumentStore. Теперь мы настроили Retrieve & Reader. Вы можете думать о Retriever & Reader как о фильтрах, которые будут определять точные результаты на основе любого из предложенных вами методов. Я использовал TfidfRetriever () в Retriever, есть другие варианты, такие как BM25, EmbeddingRetriever и т. Д. И не забудьте проверить совместимость DocumentStore-Retriever.

Кроме того, В моем предыдущем блоге я подробно объяснил семантический поиск с помощью EmbeddingRetriever. Вы можете проверить это, если хотите поэкспериментировать с другим ретривером.

Теперь вывод извлеченных Retriever документов будет входом для Reader. В Reader мы будем использовать новейшие модели большого языка на основе преобразователей, чтобы понять запрос не только синтаксически, но и семантически, и попытаться найти точные результаты. Вот почему здесь мы будем использовать нашу точно настроенную модель, поскольку она уже обучена на пользовательских данных, она будет лучше понимать запросы. После всего этого нам нужно связать ретривер и ридер с Finder. И тогда Finder позаботится о считывании и извлечении результатов в потоке ч / б.

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

Вывод в веб-приложении с использованием streamlit

Вы все согласны с тем, что streamlit - это лучшая библиотека для всех инженеров машинного обучения и специалистов по данным, которые демонстрируют эксперименты машинного обучения. Вам просто нужно подключить к нему свой метод вывода, и веб-приложение будет готово к запуску. Я сделал то же самое. Кроме того, я использовал библиотеку st-annotated-text для отображения аннотированного текста в приложении Streamlit.

Вуаля !!!! Вы только что создали сквозную систему ответов на вопросы с вашей собственной Точно настроенной моделью с Haystack lib и предоставили результаты в веб-приложении. Давайте посмотрим на результаты в веб-приложении 😋

Вот и все. Теперь у вас есть полное представление о том, как построить вопросно-ответную систему с Haystack. Так что вперед, запустите сеанс colab и попробуйте разные модели, проведите эксперименты.

Спасибо за прочтение, ребята. Хорошего дня!

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

Инстаграм || LinkedIn || Twitter