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

Предварительная обработка текста для части НЛП — 1

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

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

Существует множество методов векторизации, вот некоторые важные и широко используемые:

  1. Мешок слов / Векторизация подсчета
  2. Встраивание слов (Word2Vec, GloVe, FastText)
  3. TF-IDF (частота документа, обратная частоте термина)
  4. Обученные внедрения (модели на основе трансформаторов, внедрения BERT)

Во второй части мы подробно рассмотрим Bag of Words, а о двух других темах я расскажу в следующих статьях.

Мешок слов

«Мешок слов» — одна из самых простых форм векторизации текста в машинном обучении. Мешок слов включает в себя следующий простой механизм:

1. Возьмите все уникальные слова в заданном тексте, каждому слову соответствует токен, т. е. в «Привет, я чувствую себя прекрасно» есть 4 токена, один токен соответствует каждому слову в предложении…

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

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

предложение 1: «Эй, ты отлично выглядишь, и ты сделал это»

предложение 2: «Ты молодец»

предложение 3: «Я удивлен, что ты это сделал»

Теперь давайте разберем данные три предложения:

я. Получите все уникальные жетоны

[«Эй», «ты», «посмотри», «отлично», «и», «сделал», «это», «есть», «я», «удивлен», «это»]

ii. Подсчитайте векторизацию каждого предложения в соответствии с количеством токенов вхождений.

предложение 1: «Эй, ты отлично выглядишь, и ты сделал это» → [1,2,1,1,1,1,0,0,0,0,0]

Это потому, что когда вы видите вектор токенов ["Эй", "ты", "смотри", "отлично", "и", "сделал", "это", "есть", "я", "есть", «удивлен», «это»] и предложение «Эй, ты выглядишь великолепно, и ты сделал это», слово «Эй» звучит один раз, «ты» — дважды, «посмотри» — один раз, и так далее, пока мы не увидим «удивлен», «это»] и предложение «Эй, ты выглядишь великолепно, и ты сделал это», слово «Эй» произносится один раз, «ты» — дважды, «посмотри» — один раз, и так далее, пока мы не увидим » в векторе токена, но мы не видим его в предложении, поэтому счетчик равен 0.

сходным образом,

предложение 2: «ты молодец» → [0,1,0,1,0,0,0,1,0,0,0,0]

предложение 3: «Я удивлен, что ты это сделал» → [0,1,0,0,0,1,1,0,1,1,1,1]

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

Если вы все еще не понимаете, взгляните на рис. 2, на котором четко показано, как работает этот процесс.

Реализация кода векторизации подсчета:

Векторизация подсчета — это популярный алгоритм предварительной обработки текстовых данных, основанный на машинном обучении, который использует концепцию «мешка слов» в качестве основы…

Библиотека scikit-learn предоставляет отличный механизм векторизации подсчета.

from sklearn.feature_extraction.text import CountVectorizer #import the Countvectorizer class

vectorizer = CountVectorizer() #instantiate an object of the class

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

sentences = ["Hey you look great and you did this",
             "you are great",
              "I am surprised that you did this"]
vectorizer.fit(sentences)

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

vec_sentences = vectorizer.transform(sentences) #countvectorizes the text
print(vec_sentences.toarray()) #printing out the vectorized text

Теперь вы получите следующий вывод:

[[1,2,1,1,1,1,0,0,0,0,0]
[0,1,0,1,0,0,0,1,0,0,0,0]
[0,1,0,0,0,1,1,0,1,1,1,1]]

Каждый из них представляет разные предложения…

from sklearn.feature_extraction.text import CountVectorizer #import the Countvectorizer class

vectorizer = CountVectorizer() #instantiate an object of the class
sentences = ["Hey you look great and you did this",
             "you are great",
              "I am surprised that you did this"]
vectorizer.fit(sentences)
vec_sentences = vectorizer.transform(sentences) #countvectorizes the text
print(vec_sentences.toarray()) #printing out the vectorized text

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

print(vectorizer.vocabulary_)

и вы увидите что-то вроде этого в качестве вывода

{"Hey":4, "you":1, "look":0, "great":2, "and":5, "did":7, "this":3 , "are":6, "I":10, "am":9, "surprised":11, "that":8}

Хотя мы использовали здесь sklearn для создания модели Bag of Words, ее можно реализовать несколькими способами с помощью таких библиотек, как Keras, Gensim и других. Вы также можете довольно легко написать свою собственную реализацию Bag of Words.

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

Надеюсь, это было полезно…