Уровень статьи: средний

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

В этой серии о предварительной обработке:

Стандартизация данных — Краткое объяснение — для начинающих
Нормализация данных — Краткое объяснение — для начинающих
Горячее кодирование — Краткое объяснение — для начинающих
Порядковое кодирование — Краткое объяснение — для начинающих
Отсутствующие значения в предварительной обработке набора данных — Средний уровень
Токенизация и векторизация текста в НЛП — средний уровень

Обнаружение выбросов в предварительной обработке набора данных — средний уровень

Выбор функций в предварительной обработке данных —Дополнительно

В этом кратком обзоре я объясню, как токенизировать и векторизовать текст. Некоторое понимание конкретных терминов было бы полезно, поэтому я приложил краткое объяснение более сложной терминологии. Попробуйте, и если вам нужна дополнительная информация, просто спросите в разделе комментариев!

НЛП — использование алгоритмов для анализа и обработки человеческого языка.

токенизация —разделение текста на более мелкие единицы, такие как слова или фразы.

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

переформатирование — изменение структуры или представления данных.

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

пробел —пробелы между словами и символами.

лингвистический — относящийся к человеческому языку и его структуре.

префикс —группа букв в начале слова.

семантика —значение слов, фраз, предложений.

Токенизация текста

Токенизация текста — это процесс переформатирования фрагмента текста в более мелкие единицы, называемые «токенами». Он преобразует неструктурированный текст в структурированные данные, понятные моделям. Цель токенизации — разбить текст на значимые единицы, такие как слова, фразы, предложения и т. д., которые затем можно ввести в модели машинного обучения. Это один из первых и наиболее важных шагов в предварительной обработке естественного языка, который часто идет рука об руку с векторизацией текста.

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

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

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

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

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

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

Полезный код Python

Чтобы дать вам некоторое представление о коде, задействованном в такого рода предварительной обработке, я покажу вам, как токенизировать текст с помощью библиотек NLTK (популярный инструментарий, используемый учеными и аналитиками, работающими с моделями естественного языка), а затем сделать простой текст векторизация с помощью sklearn.

import nltk
from sklearn.feature_extraction.text import CountVectorizer

# this downloads a separate module that enables the tokenize functionality.
## you need to do this only once. Hash it out once it's downloaded.
nltk.download('punkt')

# sample text
text = "I would really like to tokenize and vectorize this sentence!" 

# tokenize the text 
tokenized = nltk.tokenize.word_tokenize(text)

# vectorize the tokens 
vectorizer = CountVectorizer()
vectorized = vectorizer.fit_transform(tokenized).toarray()

print(tokenized)
print(vectorized)

Это выведет следующее:

['I', 'would', 'really', 'like', 'to', 'tokenize', 'and', 'vectorize', 'this', 'sentence', '!']

[[0 0 0 0 0 0 0 0 0]
 [0 0 0 0 0 0 0 0 1]
 [0 0 1 0 0 0 0 0 0]
 [0 1 0 0 0 0 0 0 0]
 [0 0 0 0 0 1 0 0 0]
 [0 0 0 0 0 0 1 0 0]
 [1 0 0 0 0 0 0 0 0]
 [0 0 0 0 0 0 0 1 0]
 [0 0 0 0 1 0 0 0 0]
 [0 0 0 1 0 0 0 0 0]
 [0 0 0 0 0 0 0 0 0]]

И это все! Я оставлю вас с некоторыми «веселыми» мелочами 😊

Разное

  • Ранняя программа на естественном языке SHRDLU, разработанная в 1960-х годах, использовала токенизацию текста для понимания команд о смоделированном блочном мире. Разделив входные данные на слова и знаки препинания, SHRDLU может извлечь достаточно синтаксиса и семантики для интерпретации значения текста.
  • Исследования показывают, что средняя длина английского слова составляет 4,7 символа, но отдельные слова сильно различаются: от 1 до 28 букв. Токенизация учитывает это, разбивая текст на отдельные слова, а не на фиксированные единицы. Он обеспечивает гибкое представление, сохраняющее семантику, что позволяет обрабатывать более миллиона слов английского языка.