Создание конвейера для упрощения обработки данных

Doc2Vec - это метод встраивания слов. Но зачем нам такой метод, если у нас уже есть Векторизатор подсчета, TF-ID (T erm frequency-inverse document frequency) и модель BOW (Bag-of-Words) . Count Vectorizer и TF-IDF не заботятся о последовательности слов. Они просто пытаются найти слова, которые есть в их словарном запасе, а затем присваивают им баллы. Это может работать с простыми текстами, но они не будут работать лучше, когда тексты станут предметными. Здесь на помощь приходит Doc2Vec.

Прежде чем перейти к Doc2Vec, давайте посмотрим на Word2Vec.

В этой статье в 2013 году был представлен word2vec. Он намеревается дать вам именно это: числовое представление для каждого слова, которое сможет зафиксировать взаимосвязь между словами. Такие представления инкапсулируют различные отношения между словами, такие как синонимы, антонимы или аналогии. Я не буду вдаваться в подробности.

Цель doc2vec - создать числовое представление документа независимо от его длины.

В стратегии обучения Word2Vec используется идея о том, что слово mat следует за фразой кот сидел. Стратегия обучения Doc2Vec основывается на идее, что предсказание соседних слов для данного слова сильно зависит от на документе также. Хотя фраза поймать мяч часто встречается в корпусе, если мы знаем, что тема документа посвящена «технологии», мы можем ожидать таких слов, как ошибка или exception после слова catch (игнорируя the) вместо слова ball, поскольку перехватить ошибку / исключение более правдоподобно в теме "технологии". С другой стороны, если тема документа посвящена «спорту», ​​то можно ожидать мяча после ловли.

А теперь давайте напишем код

  1. Сначала мы импортируем все необходимые пакеты.

tdqm не нужен, но он делает обработку намного лучше.

2. Теперь мы создадим итератор для наших данных. Для предварительной обработки я использую «re», так как его очень легко использовать.

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

3. Создайте объект класса LabeledLineSentence и передайте имя файла с расширением.

Параметры -

  1. min_count = Игнорирует все слова с общей частотой ниже этой.
  2. vector_size = Размерность векторов признаков.
  3. sample = Порог для настройки того, какие из наиболее часто встречающихся слов будут случайным образом субдискретизированы, полезный диапазон - (0, 1e-5).
  4. worker = Используйте эти рабочие потоки для обучения модели
  5. эпохи = количество итераций по корпусу.

Вы можете просмотреть все параметры на - https://radimrehurek.com/gensim/models/doc2vec.html

4. Обучите модель.

6. Давайте разделим данные на обучающий и тестовый набор.

7. Создадим объект модели из Sklearn.

Если у вас есть сомнения в реализации, задавайте их в комментариях.

В следующей части я покажу вам, как использовать Doc2Vec с LSTM (Keras). Быть в курсе.

Полный код доступен на - https://github.com/gaganmanku96/Doc2Vec-Model.

Спасибо