Intro
00:00:00В этом руководстве демонстрируется, как преобразовать описания книг в числовые представления для точного сопоставления содержимого, используя передовые методы НЛП, такие как векторный поиск и классификация с нулевым результатом. В нем описан практический процесс, основанный на программировании, который включает в себя очистку текстовых данных, анализ тем и эмоций с помощью больших языковых моделей и интеграцию этих элементов в интерактивную панель мониторинга. Этот подход подтверждает, что работа с LLMS доступна и может быть адаптирована к различным текстовым рекомендательным системам, что служит универсальной основой для будущих проектов.
Introduction to getting and preparing text data
00:03:05Проект начинается с поиска данных в Kaggle, где активное сообщество делится разнообразными наборами данных, в том числе несколькими для обработки на естественном языке. Тщательно подобранный набор данных 7K books, содержащий исчерпывающую информацию, такую как ISBN, названия, подзаголовки, авторы, миниатюры обложек, описания, даты публикации и рейтинги, которые формируют прочную основу для системы рекомендаций. PyCharm, универсальная среда IDE для Python, используется для эффективной обработки и анализа данных, создавая надежный рабочий процесс для дальнейшего изучения.
Starting a new PyCharm project
00:05:51Запуск проекта PyCharm в виртуальной среде Процесс начинается с установки и открытия PyCharm, где на экране приветствия предлагаются варианты создания нового проекта. Выбирается проект на чистом Python с виртуальной средой по умолчанию вместо специализированной настройки. Проекту присваивается имя, и среда автоматически настраивает окно инструментов интерпретатора и упаковки для плавного запуска.
Установка необходимых библиотек для работы с данными и LLM Зависимости устанавливаются через инструментальное окно Python packages для поддержки задач обработки данных и моделирования. Установка включает в себя Kaggle Hub для бесперебойной загрузки данных и pandas для обработки табличных данных. Также настроены инструменты визуализации, такие как matplotlib и Seaborn, пакеты управления учетными данными, а также крупные платформы языковых моделей, такие как Lang chain и Transformers, gradio, Jupyter и ipywidgets.
Загрузка набора данных Books Новый Jupyter Notebook создан для интеграции кода шаблона, предоставленного Kaggle Hub для загрузки данных. Набор данных автоматически помещается в указанную папку и содержит один CSV-файл с именем "books.csv". Затем CSV-файл считывается в pandas, и в нем отображаются те же структурированные данные, что и на странице Kaggle.
Анализ свойств набора данных и потребностей в очистке Интерактивный инструмент в PyCharm отображает подробную статистику по столбцам, чтобы проверить качество набора данных. Отмечены уникальные идентификаторы и обширное поле описания, в то время как в столбце субтитров наблюдается высокий процент пропущенных значений. Наблюдение за несоответствующими обозначениями категорий подчеркивает необходимость очистки и стандартизации данных, чтобы повысить их полезность для построения рекомендательной системы.
Patterns of missing data
00:16:59Сопоставление недостающих данных для выявления предвзятости Выявление закономерностей в пропущенных значениях имеет решающее значение для предотвращения искажений в наборе данных. Тепловая карта, созданная с использованием Caborn и Matplotlib, преобразует данные и помечает их для более четкой визуализации. Закономерности проявляются в том, что некоторые переменные, такие как средний рейтинг, количество страниц и количество оценок, показывают одновременное отсутствие записей, что указывает на другой источник или подгруппу данных.
Проверка недостающих описаний на предмет целостности рекомендаций Описания книг, необходимые для обработки на естественном языке в рекомендательных системах, тщательно проверяются на предмет искажений из-за отсутствия данных. Двоичный индикатор отмечает недостающие описания при преобразовании года публикации в возраст книги, и они анализируются наряду с количеством страниц и средними оценками. Корреляционная матрица Спирмена и последующая тепловая карта выявляют слабые взаимосвязи, подразумевая, что отсутствие описаний не приводит к систематическому искажению других характеристик книги.
Устранение минимальных недостающих данных для сохранения качества набора данных Целенаправленный анализ позволяет определить количество пропущенных данных по ключевым полям, таким как описание, количество страниц, рейтинг и год публикации. В наборе данных всего 303 строки с пробелами, что составляет менее 5% от общего числа записей. Удаление этих нескольких записей обеспечивает надежный набор данных, сводя к минимуму потенциальную погрешность и оптимизируя последующий анализ.
Checking the number of categories
00:25:21Обзор набора данных показывает, что более 500 различных и чрезмерно специфичных категорий книг остаются даже после очистки, что делает поле практически непригодным для использования. Анализ показывает, что преобладают такие распространенные категории, как "художественная литература" и "детская литература", в то время как многие категории используются редко, что подчеркивает ярко выраженную тенденцию "длинного хвоста". Визуализация этого распределения с помощью гистограмм подтверждает важность нормализации, и для устранения этого дисбаланса предлагается метод, использующий большие языковые модели.
Remove short descriptions
00:28:27Оценка достаточности описания книги Набор данных показывает, что многие описания книг слишком краткие, чтобы служить надежными рекомендациями, а некоторые записи сводятся к одному неинформативному слову. Количество слов подсчитывается путем разбиения каждого описания на пробелы, что позволяет получить доступ к этим минимальным записям. Гистограмма количества слов показывает отсутствие естественного разрыва между слишком короткими и адекватными описаниями, что указывает на необходимость ручной отсечки. Этот анализ подтверждает, что описания, недостаточно подробные, не могут эффективно служить основой для рекомендаций.
Внедрение фильтра из 25 слов для получения надежных рекомендаций Разбивка описаний на разделы для подсчета количества слов показывает, что записи, содержащие менее 25 слов, редко дают достаточно информации о книге. Описания постепенно становятся более подробными по мере увеличения количества слов, и 25 слов становятся пороговым значением, при котором предоставляется достаточно информации. Фильтрация набора данных для включения в него только записей, содержащих 25 или более слов, позволяет увеличить количество записей примерно до 5200. Такой подход эффективно гарантирует, что для составления рекомендаций по книгам используются только достаточно информативные описания.
Final cleaning steps
00:34:36Интеграция названий книг и субтитров для обеспечения согласованности В процессе очистки пропущенные значения субтитров устраняются путем объединения заголовка и подзаголовка с помощью стандартного разделителя двоеточий, что соответствует общепринятым правилам именования книг. При отсутствии подзаголовка заголовок используется как есть, что обеспечивает согласованность записей. Явное преобразование строк гарантирует, что объединенное поле правильно отформатировано во всем наборе данных.
Добавление тегов ISBN и доработка набора данных К описанию каждой книги добавляются уникальные идентификаторы с указанием ISBN 13 в качестве префикса, что гарантирует уникальность каждой записи. Этот метод заключается в преобразовании ISBN и описания в строки и объединении их в одно поле с тегами. После создания этих ключевых столбцов ненужные данные удаляются, а очищенный набор данных сохраняется для будущей работы с NLP.
Introduction to LLMs and vector search
00:38:11Преобразование текста в математические векторы Исходный текст преобразуется в числовые векторы, которые отображают значение слов, позволяя проводить математические сравнения между текстами. Это преобразование начинается с простого встраивания слов, которые группируют похожие слова в многомерном пространстве. Ранние модели встраивания, такие как те, которые используют метод skip-gram, изучают контекст, предсказывая окружающие слова, формируя основу для последующих разработок.
Улавливание нюансов с помощью контекстуального внимания к себе Усовершенствования в текстовом представлении включают позиционное кодирование и внимание к себе, которые добавляют контекст к вставляемым словам. Присваивая значения на основе окружающих слов, модель дифференцирует значения, например, позволяет отличить финансовое учреждение от речного берега для слова "банк". Этот механизм самоконтроля улучшает понимание, выборочно фокусируясь на важных словах в предложении.
Платформа Transformer Framework: Кодеры и декодеры Модель Transformer революционизирует языковую обработку благодаря своим двум компонентам: кодерам для понимания исходного текста и декодерам для генерации последовательностей на целевом языке. Кодеры фиксируют сложные взаимосвязи между словами, в то время как декодеры используют эту информацию для получения согласованных выходных данных. Эта архитектура поддерживает как задачи генерации, так и задачи понимания и формирует основу для современных больших языковых моделей.
Использование предварительно подготовленных моделей для встраивания документов Предварительно обученные модели, примером которых могут служить системы на основе кодировщиков, такие как Roberta, совершенствуются с помощью задач, которые предсказывают замаскированные слова для создания глубоких контекстуальных связей. Они преобразуют целые предложения или документы в сжатые векторы, которые точно отражают их значение. Эти вложения в документы позволяют математически сравнивать и оценивать сходство между различными текстами.
Эффективный векторный поиск в практических системах Вложенные документы хранятся в векторных базах данных с уникальными идентификаторами, которые ссылаются на полный текст и метаданные. Запрос преобразуется в вектор и сравнивается с базой данных с использованием таких показателей, как косинусоидальное сходство, что позволяет получить наиболее релевантные результаты. Усовершенствованные алгоритмы индексации еще больше повышают эффективность такого поиска за счет группировки похожих векторов, чтобы сбалансировать скорость и точность.
LangChain
00:54:43LangChain расширяет возможности универсальных приложений LLM LangChain - это надежный фреймворк на Python, который позволяет создавать семантические рекомендации, векторный поиск, чат-ботов и агентов с помощью расширенных языковых моделей. Его дизайн обеспечивает плавную интеграцию как с проприетарными провайдерами, так и с моделями с открытым исходным кодом, такими как OpenAI и Hugging Face. Такая универсальность способствует экспериментированию и поддерживает самые современные приложения в различных задачах обработки языковых данных.
Создание конвейера векторного поиска с безопасной интеграцией API Процесс начинается с преобразования необработанных описаний книг в структурированный формат с помощью текстового загрузчика, после чего текст разбивается на значимые фрагменты с помощью символьного текстового разделителя. Эти фрагменты преобразуются во вложения в документы с помощью вызовов API и сохраняются в векторной базе данных Chroma с открытым исходным кодом. Безопасное управление ключами API осуществляется с помощью специального пакета, который загружает ключи из файла конфигурации, в то время как pandas импортирует очищенный набор данных для обработки.
Splitting the books using CharacterTextSplitter
00:58:46Интеграция ISBN для эффективной фильтрации книжных рекомендаций После настройки среды и загрузки данных о книгах с помощью векторного поиска извлекаются описания книг, хранящиеся в базе данных. Система позволяет избежать представления пользователям длинных описаний, сосредоточившись на отображении названий книг и авторов. Добавление ISBN в качестве идентификатора обеспечивает точную фильтрацию, которая позволяет избежать неэффективности полного сопоставления текстов.
Реализация точной обработки тегов с неперекрывающимся разделением текста Описания тегов сохраняются в виде обычного текстового файла, отформатированного с новыми строками и без индексов или заголовков для обеспечения совместимости. Текстовый загрузчик считывает эти описания, которые затем сегментируются с помощью текстового разделителя, настроенного с нулевым перекрытием фрагментов и разделителем новой строки. Такая настройка гарантирует точное соответствие каждого сегмента заданным границам, что обеспечивает точную и эффективную обработку.
Building the vector database
01:02:57Процесс начинается с создания векторной базы данных с использованием метода цветности для хранения вложений в документы, созданных на основе предварительно разделенных текстов. Модель Ada в OpenAI используется для эффективного и экономичного создания вложений, гарантируя, что документы будут хорошо представлены. Настройка учетной записи OpenAI включает в себя переход на платформу, управление выставлением счетов и начислением кредитов, а также создание ключа API для бесперебойного использования. Как только ключ API надежно загружен, база данных создается быстро, что является важным шагом вперед в рабочем процессе проекта.
Getting book recommendations using vector search
01:05:50Использование векторного поиска для поиска рекомендаций по книгам на природную тематику Для поиска книг, рассказывающих детям о природе, создается запрос, запускающий поиск по семантическому сходству, который возвращает текст с описанием. В ходе этого процесса извлекается и ранжируется множество результатов, при этом лучшие описания содержат намеки на увлекательные истории о повседневных животных. Метод извлекает ISBN из каждого описания для сопоставления с числовыми полями в наборе данных книги. Этот подход эффективно сочетает векторный поиск с точной фильтрацией для получения соответствующих рекомендаций.
Преобразование результатов поиска в подробные данные о книгах с автоматической фильтрацией Специальная функция обрабатывает каждую рекомендацию, удаляя лишние символы и преобразуя извлеченный ISBN в целое число. Это целое число затем используется для фильтрации полного набора данных о книгах, что позволяет получить подробные метаданные о книгах, а не просто описания. Циклический просмотр результатов и стандартизация данных обеспечивают согласованное соответствие результатов поиска и сведений о записи. Интеграция семантического поиска с фильтрацией pandas упрощает систему рекомендаций для практического применения.
Introduction to zero-shot text classification using LLMs
01:11:07Преобразование запутанных категорий с помощью классификации с нулевым результатом LLM предоставляет мощный метод реорганизации неочищенных данных, группируя беспорядочные категории в несколько значимых кластеров. Система рекомендаций книг приносит пользу, когда сложные описания, такие как "Трогательное путешествие любви и дружбы", автоматически попадают в такие категории, как художественная литература или нон-фикшн. Этот подход улучшает фильтрацию данных за счет непосредственного применения классификации текста без дополнительного обучения.
Использование предварительно подготовленных моделей для точной семантической группировки Классификация с нулевым шагом использует предварительно обученную языковую модель, предоставляя ей подсказку рядом с текстом и нужными надписями, что позволяет сразу же классифицировать. Модели на основе Transformer используют обширную подготовку по различным текстам для определения семантических связей и точного прогнозирования категорий. Встроенное понимание, полученное из различных источников, позволяет этим моделям эффективно классифицировать тексты без дополнительной настройки.
Finding LLMs for zero-shot classification on Hugging Face
01:15:34Упорядочение категорий книг для точной фильтрации Набор данных содержал огромное количество категорий книг, начиная от широких жанров, таких как художественная литература, и заканчивая узкоспециализированными изданиями, такими как "Самопомощь" и "вычислительная техника". Благодаря объединению категорий, в которых опубликовано не менее 50 книг, появилось четкое различие между художественной и научно-популярной литературой, включая такие более сложные категории, как детская художественная литература и детский нон-фикшн. В результате сопоставления 12 лучших категорий такие разделы, как биография и история, были переведены в категорию научной литературы, а комиксы и драмы - в категорию художественной литературы, в результате чего был получен обширный набор данных из 3743 книг с известными названиями.
Использование обтягивающих моделей лиц для классификации с нулевым отрывом Классификация с нулевым шагом позволяет сортировать текст по предопределенным категориям без специального обучения, а Hugging Face предлагает обширное хранилище LLM с открытым исходным кодом для достижения этой цели. В этом подходе используется библиотека Transformers на Python, упрощающая доступ к таким моделям, как популярный MNLI BART large, для решения этой задачи. Интегрированные инструменты, такие как PyCharm model selector, упрощают процесс, дублируя функции сайта Hugging Face и предоставляя стандартный код. Этот рабочий процесс в сочетании с бесплатным курсом НЛП предоставляет пользователям информацию и ресурсы, необходимые для выполнения сложных задач анализа текста.
Classifying book descriptions
01:22:21Пользовательская настройка конвейера с поддержкой графического процессора Процесс начинается с определения жанров для взрослых, в частности художественной и научно-популярной литературы, в качестве целевых категорий для классификации с нулевым результатом. Модельный ряд настраивается с учетом этих категорий и настраивается для использования на соответствующем устройстве, будь то CUDA или MPS от Apple. Встроенное окно инструментов управляет загруженными моделями объемных лиц, подчеркивая важность периодического удаления неиспользуемых больших файлов.
Эффективное прогнозирование и постобработка Обрабатывается отфильтрованный пример художественной литературы, где модель возвращает оценки вероятности для каждой категории, четко указывая наивысшую вероятность для художественной литературы. Функция максимального индекса Numpy применяется к массиву оценок, чтобы извлечь метку с наибольшей достоверностью. Процедура классификации инкапсулирована в функцию, которая упрощает выполнение прогнозов для любой заданной текстовой последовательности.
Checking classifier accuracy
01:26:24Проверка точности классификатора жанров с нулевым результатом Оценка начинается с обработки обширной выборки описаний художественных и научно-популярных книг. Прогнозируемые метки генерируются пакетами, сравниваются с известными метками и объединяются во фрейм данных для оценки эффективности. Расчет точности показывает, что 78% прогнозов соответствуют фактическим категориям, что подтверждает надежную классификацию с нулевым результатом.
Интеграция прогнозируемых меток для поиска недостающих данных Затем метод устраняет отсутствующие метки категорий, отфильтровывая книги с неполной информацией. На основе описаний выполняются итеративные прогнозы, и соответствующие ISBN и прогнозируемые метки сохраняются в отдельном фрейме данных. Затем эти прогнозы объединяются обратно в основной набор данных с помощью объединения слева и условной замены пропущенных значений, в результате чего получается более чистая и полная таблица данных.
Оценка распространения прогнозирования на поджанры в условиях дефицита данных В процессе исследования изучается возможность распространения классификации с нулевым результатом на более конкретные поджанры художественной литературы, такие как романтика, научная фантастика и триллер. Учитывая, что более половины набора данных относится к художественной литературе, дальнейшая разбивка концептуально привлекательна, однако ограниченное количество помеченных примеров — всего 16 наблюдений — представляет проблему. Эта ситуация подчеркивает важность надлежащей маркировки данных и тщательной проверки, напоминая практикам о том, что передовые модели по-прежнему требуют традиционных проверок качества.
Introduction to using LLMs for sentiment analysis
01:35:19Повышение качества рекомендаций книг с помощью анализа настроений Большие языковые модели теперь извлекают эмоциональные оттенки из текста, классифицируя описания книг по семи различным эмоциям: гневу, отвращению, страху, радости, печали, удивлению и нейтральности. Это нововведение расширяет систему рекомендаций, позволяя использовать фильтры, основанные на настроении, превращая простую классификацию в детальную обработку впечатлений. Этот метод использует текстовые данные, чтобы предоставить пользователям возможность выбора, соответствующего их желаемому эмоциональному путешествию.
Настройка LLMS с помощью тонкой настройки для распознавания эмоций В процессе тонкой настройки предварительно обученная модель Roberta обновляется, заменяя ее конечные уровни прогнозирования на те, которые предназначены для классификации эмоций. Надежные уровни кодирования остаются неизменными, сохраняя глубокое понимание языка, в то время как новые слои учатся на основе набора данных с краткими надписями. Этот метод позволяет создать LLM, специализирующийся на классификации эмоций, предлагая точную альтернативу простым подходам и прокладывая путь для более продвинутых приложений в области обработки естественного языка.
Finding fine-tuned LLMs for sentiment analysis
01:39:25В Jupyter notebook создан набор данных, содержащий прогнозируемые категории настроений, которые используются для классификации эмоций. Процесс включает в себя фильтрацию текстовых классификационных моделей Hugging Face с открытым исходным кодом путем поиска точно настроенных моделей Roberta, специфичных для эмоций. Среди вариантов одна модель выделяет шесть основных эмоций плюс нейтральный класс, который оценивается с помощью показателей настроения. При наблюдаемой точности в 66%, что значительно превышает базовый уровень случайной вероятности в 14%, модель оказалась надежно подходящей для поставленной задачи обнаружения эмоций.
Extracting emotions from book descriptions
01:42:07Уточнение настройки классификатора эмоций Простой текстовый тест вызвал предупреждения об использовании графического процессора и устаревших параметрах, что потребовало немедленных исправлений. Аргумент return_all_scores был заменен на top_k, равный none, при переключении устройства на MPS для использования графических процессоров. Обновления гарантируют эффективную загрузку классификатора и соответствие параметров последним рекомендациям по моделированию.
Выявление нюансов на уровне предложений В ходе анализа сравнивался единый прогноз общего настроения с разбивкой по отдельным предложениям. Целостный подход позволил получить искаженный ярлык страха на 65%, который не смог отразить весь спектр эмоций в контексте смешанного описания. Напротив, разбиение описания на предложения высвечивало различные эмоции, такие как удивление, страх, печаль и радость.
Агрегирование максимальных вероятностей возникновения эмоций Был разработан систематический метод, позволяющий получить наиболее вероятную оценку для каждой эмоции из нескольких предложений. Процесс включал сортировку выходных данных предложений для стандартизации порядка отображения эмоций, а затем циклический просмотр каждого предложения для извлечения. Сбор максимальных оценок для каждой надписи позволяет сохранить интенсивность различных чувств в описании каждой книги.
Интеграция оценок настроений в метаданные книги В ходе окончательной интеграции агрегированные оценки эмоций объединяются с идентификаторами книг с использованием базы данных pandas. Каждой эмоции присваивается отдельный столбец, что позволяет получить подробное представление об эмоциональном тоне на основе тысяч наблюдений. Объединенный набор данных облегчает надежный анализ и поддерживает системы рекомендаций и визуализацию панели мониторинга.
Introduction to Gradio
01:54:25Сложная система рекомендаций по книгам использует векторную базу данных для поиска похожих книг и классификации текстов, чтобы отделять художественную литературу от научной, а также анализирует эмоциональные оттенки в описаниях. Система переходит от кода и необработанных данных к интерактивному интерфейсу, переходя от Jupyter notebooks к настройке сценариев на Python. Интегрированный с такими зависимостями, как pandas, numpy и LangChain, Gradio используется для создания удобной панели мониторинга, которая эффективно демонстрирует модель машинного обучения.
Building a Gradio dashboard to recommend books
01:56:51Миниатюры книг с высоким разрешением Проект интегрирует изображения обложек книг, улучшая качество миниатюр. Панель мониторинга изменяет URL-адреса Google Books, чтобы запросить максимально возможное разрешение, обеспечивая потрясающий визуальный просмотр. Для записей, у которых отсутствует обложка, используется промежуточное изображение по умолчанию для сохранения единообразного внешнего вида.
Создание семантической векторной базы данных Текстовые описания книг загружаются и сегментируются на управляемые фрагменты, которые затем преобразуются во вложения с помощью OpenAI. Эти вложения сохраняются в базе данных chroma vector для поддержки семантической оценки. Эта основа позволяет эффективно отображать содержимое книг в рекомендательных целях.
Интеллектуальный поиск рекомендаций Функция извлекает рекомендации путем обработки пользовательских запросов, первоначально выбирая 50 совпадений для дальнейшего уточнения. Результаты фильтруются по определенным категориям и сортируются на основе вероятности эмоционального тона. Такой подход гарантирует, что итоговые 16 рекомендаций будут соответствовать как тематическим, так и эмоциональным критериям.
Составление кратких книжных рассказов Рекомендуемые книги представлены с подписями, в которых сочетаются название, сокращенное описание и отформатированный список авторов. Описания, превышающие 30 слов, лаконично сокращены многоточием, а несколько авторов элегантно объединены. Такое лаконичное оформление оптимизирует плотность информации в визуальном интерфейсе.
Развертывание интерактивной семантической панели мониторинга Собрана информационная панель Gradio с полями ввода, выпадающими меню для категорий и эмоций, а также динамической галереей для визуального отображения книг. Настраиваемые темы и макеты улучшают взаимодействие с пользователем и доступность. Тщательное тестирование с использованием различных запросов подтверждает баланс между семантической точностью и привлекательным дизайном.
Outro
02:12:49Мы познакомимся с обширными языковыми моделями, лежащими в основе современной обработки естественного языка и позволяющими гибко решать сложные языковые задачи. В статье рассказывается о том, как проприетарные API и платформы с открытым исходным кодом упрощают доступ к передовым моделям, делая разработку более доступной, чем когда-либо. Такие инструменты, как Hugging Face Hub, LangChain и Transformers, позволяют разработчикам выполнять сложные задачи с минимальным количеством кода, оптимизируя инновации. Это исследование вдохновляет на более глубокое изучение науки о данных и способствует продолжению открытий в динамичной области НЛП.