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

Вы когда-нибудь задумывались, как компьютеры понимают человеческий язык?

Как Сири и ее друзья Алекса и Кортана понимают, что мы говорим и отвечаем?

Ответ - Обработка естественного языка.

Обработка естественного языка

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

(Источник: Википедия)

NLP имеет дело с текстовыми данными, будь то структурированные, неструктурированные или частично структурированные данные.

Если вы хотите начать проект в НЛП, есть конвейер, по которому вы можете следовать.

ТРУБОПРОВОД ПРОЕКТА НЛП

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

  • Сбор данных
  • Сегментация
  • Токенизация
  • Удаление стоп-слова
  • POS-теги
  • Лемматизация
  • Векторизация текста
  • Обучение модели и прогнозирование

1. Сбор данных

Вам могут быть предоставлены данные, или вы также можете сгенерировать / загрузить данные. Специалист по данным может помочь вам получить данные, с которыми вы можете работать.

Предположим, у нас есть следующий текст в качестве наших данных:

Это первое предложение. Это второе предложение, которое длиннее первого.

2. Сегментация

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

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

1. "Это первое предложение",

2. «Это второе предложение длиннее первого».

В самой базовой форме мы можем сказать, что мы ищем знаки препинания для разделения текста.

3. Токенизация

После разбиения абзаца на предложения (этап сегментации) мы далее разбиваем предложение на слова. Этот процесс называется токенизацией (или токенизацией слов).

Если мы токенизируем второе предложение, мы получим это как результат:

«Это», «есть», «второе», «предложение», «и», «есть», «длиннее», «чем», «первый», «один», «.»

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

4. Удаление стоп-слова

Стоп-слова - это слова, не придающие значения предложению. Иногда лучше выявить и убрать стоп-слова из текста.

Некоторые из игнорируемых слов -

«я», «я», «мой», «я», «мы», «наш», «наш», «мы», «ты», «твой», «твой», «сам» , «Сами», «он», «он», «нет», «ни», «не», «только», «собственный», «такой же»

Итак, наш пример предложения теперь становится-

«Это», «второе», «предложение», «длиннее», «первое», «одно», «.»

Здесь слова 'равно', 'и' и 'чем' удалены.

ПРИМЕЧАНИЕ, что выбор игнорируемых слов сильно зависит от требований. Исходя из требований, вы можете добавлять / удалять игнорируемые слова.

Например, список игнорируемых слов по умолчанию содержит такие слова, как «нет», «не», «ни». Удалять их в таком проекте, как анализ настроений, не рекомендуется, так как это изменит все настроения.

5. POS-теги

Части речи (POS), как следует из названия, - это процесс привязки текста к соответствующей части речи (существительное, глагол, прилагательное, наречия , так далее).

Для того же предложения после выполнения POS-тегов мы получим:

('Это', 'DT'), ('второй', 'JJ'), ('предложение', 'NN'), ('длиннее', 'JJR'), ('первый', 'JJ '), (' один ',' CD '), ('. ','. ')

Вот список тегов и их значение:

  • DT - определитель
  • JJ - прилагательное
  • NN - существительное
  • JJR - прилагательное, сравнительное «больше»
  • JJ - прилагательное «большой»
  • CD - кардинальная цифра
  • . - пунктуация

6. Лемматизация

Лемматизация - это процесс преобразования любого слова в его базовую форму.

Например, слово «Забота» будет преобразовано в слово «Забота».

Для нашего предложения это работает как-

«Это», «второе», «предложение», «длинное», «первое», «одно», «.»

Здесь слово «длиннее» было изменено на «длиннее».

7. Векторизация текста.

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

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

  1. Мешок слов (BoW)
  2. tf-idf
  3. word2vec

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

8. Обучение модели и прогнозирование.

После получения вектора самое время построить нашу модель.

Мы разделяем данные на набор поездов и набор тестов (обычно 20–30% набора данных).

Затем векторизованные предложения передаются с ожидаемым результатом (фактическими метками) в нашу модель, чтобы она училась и была готова к любому новому предложению.

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

В противном случае мы всегда можем переобучить модель.

ЗАКЛЮЧЕНИЕ

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

Но не всегда обязательно выполнять все шаги (а то и в одном порядке). Это полностью зависит от вашего варианта использования и набора данных.

Если вам это нравится, оставьте 👏.

Отзывы и предложения всегда приветствуются.