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

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

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

Давайте попробуем решить реальную проблему, чтобы больше узнать о НЛП.

Заявление о проблеме

Многие компании ежедневно публикуют множество вакансий для ознакомления соискателям. Они помечают эти вакансии, чтобы порекомендовать их соискателям, имеющим аналогичные навыки. Эти теги в основном вводятся вручную рекрутерами. Но в тех случаях, когда рекрутер не очень хорошо владеет множеством тегов, которые могли бы соответствовать работе, система хотела бы внести свои предложения. Таким образом, всякий раз, когда рекрутер публикует вакансию, наша система будет рекомендовать рекрутеру связать соответствующие теги с вакансиями.

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

В этой статье мы рассмотрим следующие шаги, чтобы предсказать тег публикации о вакансии.

  1. Анализ данных и предварительная обработка текста

Вы можете скачать данные из здесь. Набор данных в формате JSON, который будет преобразован во фреймы данных для лучшего понимания на более поздних этапах. Фрейм данных будет иметь такие функции, как Идентификатор, Название, Описание и Теги. Название и описание будут использоваться в качестве функций, а теги выступят в качестве цели для нас.

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

  1. Удаление всех HTML-тегов из описания вакансии с помощью библиотеки BeautifulSoup.
  2. Управление специальными символами, такими как @, #, - и т. Д.
  3. Грамматические или орфографические ошибки.
  4. Работа над сокращениями (годы, годы и т. Д.)

2. Анализ текста и поисковый анализ данных

Всегда полезно проводить предварительный анализ данных. После анализа выяснилось, что в нашем наборе данных есть 20 000 сообщений о вакансиях с их заголовками и описаниями, связанными тегами и еще несколькими вещами.

  1. Количество обучающих примеров: 20000

2. Количество уникальных тегов: 788.

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

3. Текстовое представление и разработка функций

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

Одна горячая кодировка или набор слов

Что это? Это метод, который представляет текст в векторной форме, сначала идентифицируя все уникальные слова из текста, а затем каждое слово предложения помечается как 1 всякий раз, когда оно встречается в пакете уникальных слов. Подождите минуту. Поясню на примере. Собирая все уникальные слова из всех трех предложений «Слон чихнул при виде картошки», «Летучие мыши могут видеть с помощью эхолокации. Смотри, как чихает взгляд летучей мыши »,« Интересно, она открыла дверь в студию ». Рисунок ниже поможет вам визуализировать векторное представление нашего первого предложения «Слон чихает… ..».

Почему не везде работает?

  1. Работает для небольшого корпуса - но если корпус огромен, размер вектора становится огромным.
  2. Не учитывает расположение слов.
  3. Не понимает сходства слов.
  4. Не понимает контекста предложения.

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

Но как это работает?

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

4. Моделирование и обучение данных

У нас есть данные для обучения, которые можно использовать для обучения. Для этого мы разработали нейронную сеть, и один из способов сократить время обучения - улучшить сеть, добавив «сверточный» слой. Сверточные нейронные сети (CNN) происходят от обработки изображений. Они пропускают «фильтр» над данными и вычисляют представление более высокого уровня. Было показано, что они на удивление хорошо работают с текстом.

Эта модель может плохо работать, но при добавлении с LSTM она оказалась более эффективной.

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

Вы можете получить доступ ко всему коду из здесь.

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

Спасибо за терпение ... Хлопки (эхом)