Уровень статьи: средний
Мои клиенты часто спрашивают меня об особенностях тех или иных методов предварительной обработки данных, зачем они нужны и когда их использовать. Я расскажу о нескольких распространенных (и не очень) методах предварительной обработки в серии статей на эту тему.
В этой серии о предварительной обработке:
Стандартизация данных — Краткое объяснение — для начинающих
Нормализация данных — Краткое объяснение — для начинающих
Горячее кодирование — Краткое объяснение — для начинающих
Порядковое кодирование — Краткое объяснение — для начинающих
Отсутствующие значения в предварительной обработке набора данных — Средний уровень
Токенизация и векторизация текста в НЛП — средний уровень
Обнаружение выбросов в предварительной обработке набора данных — средний уровень
Выбор функций в предварительной обработке данных —Дополнительно
В этом кратком обзоре я объясню, как токенизировать и векторизовать текст. Некоторое понимание конкретных терминов было бы полезно, поэтому я приложил краткое объяснение более сложной терминологии. Попробуйте, и если вам нужна дополнительная информация, просто спросите в разделе комментариев!
НЛП — использование алгоритмов для анализа и обработки человеческого языка.
токенизация —разделение текста на более мелкие единицы, такие как слова или фразы.
векторизация — преобразование текста в числовые представления для моделей машинного обучения.
переформатирование — изменение структуры или представления данных.
Модель машинного обучения —алгоритмы, которые могут изучать закономерности на основе данных.
пробел —пробелы между словами и символами.
лингвистический — относящийся к человеческому языку и его структуре.
префикс —группа букв в начале слова.
семантика —значение слов, фраз, предложений.
Токенизация текста
Токенизация текста — это процесс переформатирования фрагмента текста в более мелкие единицы, называемые «токенами». Он преобразует неструктурированный текст в структурированные данные, понятные моделям. Цель токенизации — разбить текст на значимые единицы, такие как слова, фразы, предложения и т. д., которые затем можно ввести в модели машинного обучения. Это один из первых и наиболее важных шагов в предварительной обработке естественного языка, который часто идет рука об руку с векторизацией текста.
Токенизация позволяет выполнять задачи обработки естественного языка, такие как маркировка частей речи (определение глаголов и существительных и т. д.), распознавание именованных сущностей (таких категорий, как человек, организация, местоположение) и извлечение отношений (семейные отношения, профессиональные отношения и т. д.).
Существует несколько различных методов токенизации; некоторые из более простых включают разделение текста на пробелы или знаки препинания. Передовые методы используют языковые правила для определения границ слов и разбиения текста на лингвистические единицы; это может разделить слова на токены подслов (например, префиксы или на основе слогов) или даже объединить определенные токены в более крупные единицы на основе языковой семантики. Цель состоит в том, чтобы создать токены, которые лучше всего представляют исходный текст для целей машинного обучения.
Векторизация текста
Векторизация текста — это процесс преобразования текста в числовые представления (или «векторы»), которые могут быть поняты моделями машинного обучения. Он преобразует неструктурированный текст в структурированные числовые данные с целью представления семантического значения текста в математическом формате.
Векторизация текста позволяет выполнять множество задач 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 букв. Токенизация учитывает это, разбивая текст на отдельные слова, а не на фиксированные единицы. Он обеспечивает гибкое представление, сохраняющее семантику, что позволяет обрабатывать более миллиона слов английского языка.