НЛП стало проще
(Действительно) мягкое введение в НЛП на Python
Возьми меня за руку, и давайте начнем вместе.
Я знаю, это непросто. НЛП - это то, о чем говорят все, и кажется, что этим занимаются все, кроме вас самих, потерявшихся и опечаленных посреди толпы. Не беспокойтесь, обработка естественного языка (NLP) - трудная вещь для изучения, даже если мало кто признает это.
В этом уроке я расскажу об основах, шаг за шагом, без длинных объяснений (так как цель здесь - просто представить предмет), а также сделаю доступным весь исходный код (записная книжка здесь ждет вас), поэтому вы можете следить за мной на протяжении всего процесса.
Данные взяты из отзывов покупателей из интернет-магазина в Бразилии, а исходные наборы данных доступны в репозитории OLIST. Преобразованный файл, который я создал для анализа НЛП, доступен здесь. Давайте проверим первые строки, чтобы понять, о чем идет речь:
Первый столбец - это текст отзывов, оставленных клиентами, а во втором столбце указано, положительный это отзыв или нет, со значениями 1 в случае положительного и 0 в случае, если это не так. Вы можете проверить более подробную информацию о том, как я объединил разные наборы данных и как была создана целевая функция, проверив эту записную книжку.
В этом первом уроке я расскажу:
- Использование НЛП и его применение в машинном обучении;
- Основные методы предварительной обработки;
- Лемматизация;
- Токенизация.
Использование НЛП
Давайте сначала подумаем о возможностях НЛП. Понимание того, что люди говорят о чем-либо, может быть мощным инструментом, но язык - сложная вещь для изучения. Подумайте о нашем собственном процессе изучения языка, сколько времени нужно, чтобы полностью усвоить его, со всеми разными словами в словаре и их комбинациями, делая это осмысленным образом? И после этого нам нужно развить навыки, чтобы обнаруживать тонкие эмоции, которые скрываются за словами, настроением, чтобы классифицировать что-то как искреннее, высокомерное, истинное, ложное, саркастическое и т. Д. .Если для нас это сложно, потому что компьютер намного сложнее, так как он просто не понимает ни одного слова!
Да, это правильно, компьютер понимает только числа, а не слова. Итак, как заставить их понять то, что мы говорим или пишем? Проще говоря, нам нужно преобразовать слова в числа. Когда мы это делаем, компьютеры могут обрабатывать информацию и генерировать мощные идеи на основе вычислений, отсюда и необходимость этого преобразования перед запуском любого алгоритма машинного обучения в текстовых данных.
НЛП и машинное обучение
После того, как мы заставим компьютер понимать слова, мы можем использовать машинное обучение, чтобы делать прогнозы относительно этих слов, например создавать приложения для перевода, предлагать следующие слова во время набора текста, а также более сложные приложения, например понимать тональность текста.
Методы предварительной обработки
Первый шаг к тому, чтобы сделать текст удобным для компьютера, - это очистить его. Мы делаем это, чтобы процесс обучения был более плавным и быстрым. Поскольку эта статья не претендует на всестороннее изучение методов предварительной обработки, я представлю вам самые базовые из них:
- Слова в нижнем регистре: иначе компьютер будет понимать «кошка» и «кошка» как разные вещи.
- Удалить:
1- Пунктуация: сама по себе пунктуация не имеет значения.
2- Стоп-слова: часто встречающиеся слова, такие как «он», «он», «он», «сам» и т. Д. Удаление этих слов сокращает объем данных алгоритма. нужно обрабатывать, делая это быстрее.
Лемматизация
Лемматизация - это процесс преобразования слова по его основной форме. Мы можем думать о базовой форме так, как она должна отображаться в словаре, например, в английском языке слова «walk», «walking» и «walk» произошли от одного и того же корня «walk», который называется лемма для этого слова.
Интересно отметить, что лемматизация также используется для преобразования слов на основе их значения, а не только орфографии. Один из примеров - «лучше», лемма которого «хорошо». Это мощный инструмент, так как он помогает сократить количество слов, которые нужно будет обработать позже.
Токенизация
Помните, я упоминал, что компьютеры понимают только числа? Что ж, токенизация - это как раз процесс преобразования слова в числовое представление или токен. Токены очень полезны, поскольку они позволяют применять модели машинного обучения к текстовым данным, и есть несколько способов сделать это.
В python есть библиотека под названием spacy, в которой есть несколько очень удобных функций, которые помогают нам выполнять всю эту предварительную обработку с помощью нескольких строк кода. Я создал пример ниже, чтобы вы могли проверить его в действии:
Мы видим, что токены разделяют каждое слово и пунктуацию в отдельных токенах, и что леммы уменьшили количество слов для своей базовой формы. Если вы говорите по-португальски, вы заметите, что это не так хорошо, как преобразование «анте» (до) в «антар», которое не имеет значения. Также не были удалены некоторые общие слова, такие как «е» и «ок». Кажется, что португальская библиотека - это постоянный проект, поэтому обратите внимание, если вы собираетесь использовать какой-либо пакет, кроме английского, но это был хороший первый подход. Не стесняйтесь попробовать код с другими текстами и посмотреть, как это работает.
Итак, на сегодня все, надеюсь, это помогло вам понять, как начать с НЛП. Приглашаем вас оставить свои мысли в комментариях ниже. Каковы, на ваш взгляд, настоящие основы НЛП?