Стамбульская академия наук о данных - Проект обработки естественного языка 3

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

Что такое НЛП?

Обработка естественного языка (NLP) - это способность искусственного интеллекта понимать, интерпретировать и манипулировать человеческим языком как машинным. Цель состоит в том, чтобы машины понимали человеческий язык, чтобы выполнять задачи, необходимые в таких областях,

  • Чат-боты, используемые авиакомпаниями или банками.
  • Спам-фильтры, которые использует Google Mail
  • Siri использует распознавание речи в Apple

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

Давайте погрузимся в проект!

Методология

Очистка данных

В этом проекте я собрал данные, полученные с веб-сайтов «BBC Food» и «Epicurious». Я использовал метод очистки веб-страниц с библиотекой BeautifulSoup. В результате я нашел более 5000 ингредиентов, объяснений и способов приготовления блюд.

Я создал модель машинного обучения с данными в столбце Ингредиенты и работал над моделированием темы с данными в столбце Пояснения.

Обработка данных

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

Чтобы уменьшить разнообразие слов, я получил основу слова с помощью функции «WordNetLemmatizer». Это наиболее важный процесс для модели, поскольку сокращение количества слов положительно влияет на нашу модель.

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

Исследовательский анализ данных

На графике видно, что распределение целевых значений. В процессе очистки я сосредоточился на том, чтобы избежать несбалансированных данных. Чтобы сохранить баланс модели, британские и ирландские (или индийские и пакистанские, испанские и португальские) продукты считаются вместе как британские / ирландские, поскольку они почти идентичны друг другу.

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

Классификация кухни

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

CountVectorizer - Term Frequency-Inverse Document Frequency (TF-IDF)

Преобразование текстовых документов в вектор - это способ использовать текстовые столбцы в алгоритмах машинного обучения. Есть два распространенных способа преобразования текста в вектор CountVectorizer и TF-IDF.

Когда мы применяем CountVectorizer, мы создаем матрицу документа, в которой каждая строка представляет наши данные, а каждый столбец представляет слово. Одним словом, каждая ячейка обычно представляет собой счетчик появления слов.

В TF-IDF мы считаем, сколько раз слово появляется в документе. TF-IDF оценивает слова по частоте их появления в документах. Примененная матрица документов TF-IDF выглядит как матрица CountVectorizer, но каждая ячейка представляет собой весовые коэффициенты количества слов.

Чтобы добиться максимальной точности на моделях, я применил методы токенизации CountVectorizer и TF-IDF. Я также использовал эти методы с n-граммом.

Я работал с парой моделей, которые хорошо работают с НЛП. Как вы можете видеть слева, случайный лес переоснащен.

Наша лучшая модель - полиномиальный наивный байесовский анализ с точностью тестирования модели 74%. Мы достигли этой точности с преобразованием TF-IDF и без n-граммы. Чтобы достичь большей точности, я также попробовал все параметры комбинации с Grid Search CV, но результат упал до 0,71.

Тематическое моделирование

Тематическое моделирование направлено на разделение документов на группы. Он может идентифицировать документы, содержание которых близко друг к другу. Скрытое распределение Дирихле (LDA) - один из популярных способов тематического моделирования. Он используется для классификации текста в документах по определенной теме. Я использовал LDA, чтобы понять содержание блюд.

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

Из 4-х тематических моделей, которые я рассмотрел, наиболее разумной оказалась модель с 3-мя моделями. Ниже приводится краткое описание тем:

  • Тема 0 : здоровое питание
  • Тема 1 : десерты
  • Тема 2 : мексиканская кухня

Спасибо, что прочитали мой пост! Вы можете найти блокнот на моем репозитории GitHub.