Обзор

  • Хотите начать работу с обработкой естественного языка (NLP)? Вот идеальный первый шаг
  • Узнайте, как выполнять токенизацию — ключевой аспект подготовки данных для построения моделей НЛП.
  • Мы представляем 6 различных способов токенизации текстовых данных.

Введение

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

Итак, как мы можем манипулировать и очищать эти текстовые данные для построения модели? Ответ кроется в чудесном мире Обработки естественного языка (NLP).

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

  • Токенизация слов
  • Предсказание частей речи для каждого токена
  • лемматизация текста
  • Выявление и удаление стоп-слов и многое другое.

В этой статье мы поговорим о самом первом шаге — токенизации. Сначала мы увидим, что такое токенизация и почему она требуется в НЛП. Затем мы рассмотрим шесть уникальных способов выполнения токенизации в Python.

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

Оглавление

  • Что такое токенизация в НЛП?
  • Зачем нужна токенизация?
  • Различные методы выполнения токенизации в Python
  • Токенизация с использованием функции Python split()
  • Токенизация с использованием регулярных выражений
  • Токенизация с использованием NLTK
  • Токенизация с использованием Spacy
  • Токенизация с использованием Keras
  • Токенизация с использованием Gensim

Что такое токенизация в НЛП?

Токенизация — одна из самых распространенных задач при работе с текстовыми данными. Но что на самом деле означает термин «токенизация»?

Токенизация — это, по сути, разделение фразы, предложения, абзаца или всего текстового документа на более мелкие единицы, такие как отдельные слова или термины. Каждая из этих более мелких единиц называется токенами.

Посмотрите на изображение ниже, чтобы визуализировать это определение:

Жетоны могут быть словами, числами или знаками препинания. При токенизации более мелкие единицы создаются путем определения границ слов. Подождите, а что такое границы слов?

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

Почему токенизация требуется в НЛП?

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

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

Возьмем пример. Рассмотрим следующую строку:

Как вы думаете, что произойдет после того, как мы выполним токенизацию этой строки? Получаем [‘Это’, ‘есть’, ‘а’, кот’].

Есть множество способов сделать это. Мы можем использовать эту токенизированную форму для:

  • Подсчитайте количество слов в тексте
  • Подсчитайте частоту слова, то есть количество раз, когда конкретное слово присутствует

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

Методы выполнения токенизации в Python

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

1. Токенизация с помощью функции Python split()

Начнем с метода split(), так как он самый простой. Он возвращает список строк после разрыва данной строки указанным разделителем. По умолчанию split() разрывает строку на каждом пробеле. Мы можем изменить разделитель на что угодно. Давайте проверим это.

Токенизация Word

Output : ['Founded', 'in', '2002,', 'SpaceX's', 'mission', 'is', 'to', 'enable', 'humans', 'to', 'become', 'a', 'spacefaring', 'civilization', 'and', 'a', 'multi-planet', 'species', 'by', 'building', 'a', 'self-sustaining', 'city', 'on', 'Mars.', 'In', '2008,', 'SpaceX's', 'Falcon', '1', 'became', 'the', 'first', 'privately', 'developed', 'liquid-fuel', 'launch', 'vehicle', 'to', 'orbit', 'the', 'Earth.']

Токенизация предложений

Это похоже на токенизацию слов. Здесь мы изучаем структуру предложений в анализе. Предложение обычно заканчивается точкой (.), поэтому мы можем использовать «.» в качестве разделителя для разрыва строки:

Output : ['Founded in 2002, SpaceX's mission is to enable humans to become a spacefaring civilization and a multi-planet \nspecies by building a self-sustaining city on Mars', 'In 2008, SpaceX's Falcon 1 became the first privately developed \nliquid-fuel launch vehicle to orbit the Earth.']

Одним из основных недостатков использования метода Python split() является то, что мы можем использовать только один разделитель за раз. Еще одно замечание: при токенизации слов функция split() не рассматривала пунктуацию как отдельный токен.

2. Токенизация с использованием регулярных выражений (RegEx)

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

Мы можем использовать библиотеку re в Python для работы с регулярными выражениями. Эта библиотека предустановлена ​​вместе с установочным пакетом Python.

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

Токенизация Word

Output : ['Founded', 'in', '2002', 'SpaceX', 's', 'mission', 'is', 'to', 'enable', 'humans', 'to', 'become', 'a', 'spacefaring', 'civilization', 'and', 'a', 'multi', 'planet', 'species', 'by', 'building', 'a', 'self', 'sustaining', 'city', 'on', 'Mars', 'In', '2008', 'SpaceX', 's', 'Falcon', '1', 'became', 'the', 'first', 'privately', 'developed', 'liquid', 'fuel', 'launch', 'vehicle', 'to', 'orbit', 'the', 'Earth']

«\w» представляет собой «любой символ слова», который обычно означает буквенно-цифровой (буквы, цифры) и знак подчеркивания (_). «+» означает любое количество раз. Поэтому [\w']+ сигнализирует о том, что код должен найти все буквенно-цифровые символы, пока не встретится какой-либо другой символ.

Output : ['Founded in 2002, SpaceX's mission is to enable humans to become a spacefaring civilization and a multi-planet \nspecies by building a self-sustaining city on Mars.', 'In 2008, SpaceX's Falcon 1 became the first privately developed \nliquid-fuel launch vehicle to orbit the Earth.']

Здесь у нас есть преимущество перед методом split(), поскольку мы можем передавать несколько разделителей одновременно. В приведенном выше коде мы использовали функцию re.compile(), в которой мы передали [.?!]. Это означает, что предложения будут разделяться, как только встретится любой из этих символов.

Хотите узнать больше о RegEx? Следующие ресурсы помогут вам начать работу с регулярными выражениями в НЛП:

3. Токенизация с использованием NLTK

Теперь вы оцените эту библиотеку, чем больше будете работать с текстовыми данными. NLTK, сокращение от Natural Language ToolKit, представляет собой библиотеку, написанную на Python для символической и статистической обработки естественного языка.

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

pip install --user -U nltk

NLTK содержит модуль под названием tokenize(), который подразделяется на две подкатегории:

  • Токенизация слов. Мы используем метод word_tokenize(), чтобы разделить предложение на токены или слова.
  • Токенизация предложения. Мы используем метод sent_tokenize(), чтобы разделить документ или абзац на предложения.

Давайте посмотрим на оба из них один за другим.

Токенизация Word

Output: ['Founded', 'in', '2002', ',', 'SpaceX', ''', 's', 'mission', 'is', 'to', 'enable', 'humans', 'to', 'become', 'a', 'spacefaring', 'civilization', 'and', 'a', 'multi-planet', 'species', 'by', 'building', 'a', 'self-sustaining', 'city', 'on', 'Mars', '.', 'In', '2008', ',', 'SpaceX', ''', 's', 'Falcon', '1', 'became', 'the', 'first', 'privately', 'developed', 'liquid-fuel', 'launch', 'vehicle', 'to', 'orbit', 'the', 'Earth', '.']

Токенизация предложений

Output: ['Founded in 2002, SpaceX's mission is to enable humans to become a spacefaring civilization and a multi-planet \nspecies by building a self-sustaining city on Mars.', 'In 2008, SpaceX's Falcon 1 became the first privately developed \nliquid-fuel launch vehicle to orbit the Earth.']

4. Токенизация с помощью библиотеки spaCy

Мне нравится библиотека spaCy. Я не могу вспомнить, когда в последний раз я не использовал его, когда работал над проектом НЛП. Это просто полезно.

spaCy — это библиотека с открытым исходным кодом для расширенной обработки естественного языка (NLP). Он поддерживает более 49 языков и обеспечивает современную скорость вычислений.

Чтобы установить Spacy в Linux:

pip install -U spacy 
python -m spacy download en

Чтобы установить его на другие операционные системы, перейдите по этой ссылке.

Итак, давайте посмотрим, как мы можем использовать возможности spaCy для выполнения токенизации. Мы будем использовать spacy.lang.en, который поддерживает английский язык.

Токенизация Word

Output : ['Founded', 'in', '2002', ',', 'SpaceX', ''s', 'mission', 'is', 'to', 'enable', 'humans', 'to', 'become', 'a', 'spacefaring', 'civilization', 'and', 'a', 'multi', '-', 'planet', '\n', 'species', 'by', 'building', 'a', 'self', '-', 'sustaining', 'city', 'on', 'Mars', '.', 'In', '2008', ',', 'SpaceX', ''s', 'Falcon', '1', 'became', 'the', 'first', 'privately', 'developed', '\n', 'liquid', '-', 'fuel', 'launch', 'vehicle', 'to', 'orbit', 'the', 'Earth', '.']

Токенизация предложений

Output : ['Founded in 2002, SpaceX's mission is to enable humans to become a spacefaring civilization and a multi-planet \nspecies by building a self-sustaining city on Mars.', 'In 2008, SpaceX's Falcon 1 became the first privately developed \nliquid-fuel launch vehicle to orbit the Earth.']

spaCy довольно быстр по сравнению с другими библиотеками при выполнении задач NLP (да, даже NLTK). Я рекомендую вам послушать подкаст DataHack Radio ниже, чтобы узнать историю создания spaCy и того, где вы можете его использовать:

И вот подробное руководство, которое поможет вам начать работу со spaCy:

5. Токенизация с использованием Keras

Керас! На данный момент одна из самых популярных сред глубокого обучения в отрасли. Это библиотека нейронных сетей с открытым исходным кодом для Python. Keras очень прост в использовании и может работать поверх TensorFlow.

В контексте NLP мы можем использовать Keras для очистки неструктурированных текстовых данных, которые мы обычно собираем.

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

pip install Keras

Давайте взломать. Чтобы выполнить токенизацию слов с помощью Keras, мы используем метод text_to_word_sequence из класса keras.preprocessing.text.

Давайте посмотрим на Кераса в действии.

Токенизация Word

Output : ['founded', 'in', '2002', 'spacex's', 'mission', 'is', 'to', 'enable', 'humans', 'to', 'become', 'a', 'spacefaring', 'civilization', 'and', 'a', 'multi', 'planet', 'species', 'by', 'building', 'a', 'self', 'sustaining', 'city', 'on', 'mars', 'in', '2008', 'spacex's', 'falcon', '1', 'became', 'the', 'first', 'privately', 'developed', 'liquid', 'fuel', 'launch', 'vehicle', 'to', 'orbit', 'the', 'earth']

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

6. Токенизация с использованием Gensim

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

Вот как вы можете установить Gensim:

pip install gensim

Мы можем использовать класс gensim.utils для импорта метода tokenize для выполнения токенизации слов.

Токенизация Word

Outpur : ['Founded', 'in', 'SpaceX', 's', 'mission', 'is', 'to', 'enable', 'humans', 'to', 'become', 'a', 'spacefaring', 'civilization', 'and', 'a', 'multi', 'planet', 'species', 'by', 'building', 'a', 'self', 'sustaining', 'city', 'on', 'Mars', 'In', 'SpaceX', 's', 'Falcon', 'became', 'the', 'first', 'privately', 'developed', 'liquid', 'fuel', 'launch', 'vehicle', 'to', 'orbit', 'the', 'Earth']

Токенизация предложений

Чтобы выполнить токенизацию предложений, мы используем метод split_sentences из класса gensim.summerization.texttcleaner:

Output : ['Founded in 2002, SpaceX's mission is to enable humans to become a spacefaring civilization and a multi-planet ', 'species by building a self-sustaining city on Mars.', 'In 2008, SpaceX's Falcon 1 became the first privately developed ', 'liquid-fuel launch vehicle to orbit the Earth.']

Вы могли заметить, что Gensim довольно строг с пунктуацией. Он разбивается всякий раз, когда встречается знак препинания. При разделении предложений Gensim также размечал текст при встрече с «\n», в то время как другие библиотеки его игнорировали.

Конечные примечания

Токенизация является важным шагом в общем конвейере НЛП. Мы не можем просто перейти к части построения модели без предварительной очистки текста.

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

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

Вы также можете прочитать эту статью о приложении Analytics Vidhya для Android.

Статьи по Теме

Первоначально опубликовано на https://www.analyticsvidhya.com 18 июля 2019 г.