Введение

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

Чтобы выяснить, какие слова популярны для описания вина, нам нужно использовать НЛП (обработка естественного языка) для анализа каждого описания.

Набор данных

Kaggle

Мы будем использовать набор данных winemag-data-130k-v2.csv для машинного обучения.

Исходный код

Код в Google Colab

Задача

  • Используйте НЛП для анализа описаний

НЛП

НЛП расшифровывается как обработка естественного языка. Это также модель машинного обучения для обработки человеческого языка, такого как стоп-слова.

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

НЛП понимает, что слова яблоко и вкусно важны в предложении. Как люди, мы также понимаем ключевые моменты в предложении точно так же, как НЛП.

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

3 шага к обработке естественного языка.

  • Удалить цифры и знаки препинания
  • Удалить стоп-слова
  • Основа/лемматизированные слова

Удалить цифры и знаки препинания

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

re — это модуль/библиотека Python, которая используется для замены слов в заданной строке и может использоваться с regex (Регулярное выражение).

Что, черт возьми, это значит? (‘(?:\w+))|\\r\\n|\\n|\\r|[^a-zA-Z]в регулярном выражении. Для тестирования регулярных выражений онлайн мы используем regex101.

Мы заметили, что символ | появляется в регулярном выражении и означает ИЛИ. Например, case1 | case2, другими словами case1 или case2.

('(?:\w+))Внешняя скобка — это группа захвата, а внутри группы у нас есть 'и(?:\w+). означает соответствие символу ‘. (?:\w+) означает совпадение любых слов от одного до неограниченного количества раз, иначе \w+, а (?:…) означает совпадение всего заключенного. Например, «я в порядке», тогда все, что после «я» и до пробела между «я» и «в порядке», будет соответствовать .

\\r\\n Сопоставьте Return (ввод с клавиатуры) и Новая строка вместе.

\\n Соответствует только новой строке

\\r Соответствует только Return (ввод с клавиатуры)

[^a-zA-Z] Соответствует всем символам, кроме символов от a~z, как в нижнем, так и в верхнем регистре.

Для параметра flags мы можем обратиться к здесь

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

Удалить стоп-слова

Здесь нам нужно удалить все стоп-слова из данной строки.

Сначала мы загружаем пакет стоп-слов, который содержит все предопределенные стоп-слова. Во-вторых, мы используем английские стоп-слова. Наконец, мы добавляем наши собственные стоп-слова.

В функции мы разбиваем список слов на строки, а затем отфильтровываем все слова, которые появляются в списке стоп-слов.

Основа/лемматизированные слова

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

И Stem, и Lemmatisation используются для нормализации слов, но они немного отличаются. Какие разные мы можем отнести здесь.

Основа: более высокая производительность и простота в реализации, но результат менее точен.

Лемматизация: результат намного лучше, но хуже производительность

Для основы

Для лемматизации

Здесь я выбираю лемматизацию.

PS: мы можем попробовать сформулировать/лемматизировать перед стоп-словами.

Анализируйте описания с помощью НЛП

У нас есть наши функции НЛП, готовые к использованию, и мы можем начать использовать их в описаниях.

Вывод

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

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

Часть 6