Токенизация в обработке естественного языка

Опубликовано: 2020-12-01

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

К концу этого урока вы будете знать следующее:

  • Что такое токенизация
  • Различные типы токенизации
  • Различные способы токенизации

Токенизация — самый фундаментальный шаг в конвейере НЛП.

Но почему?

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

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

Оглавление

Разделение Python()

Функция split() языка Python возвращает список токенов, разделенных указанным символом. По умолчанию он разбивает слова пробелами.

Токенизация слов

Mystr = «Это руководство по токенизации. Мы изучаем разные методы токенизации и способы? Токенизация необходима в задачах НЛП».
Токены = Mystr.split()

#Выход:
>> [ «Это» , «это» , «а» , «токенизация» , «учебник». , «мы» , «есть» , «обучение» , «другие» , «разметка» , «методы» , «и» , «способы?» , «Токенизация» , «есть» , «необходимо» , «в» , «НЛП» , «задачи». ]

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

Один и тот же текст можно разделить на предложения, передав разделитель «.».

Mystr = «Это руководство по токенизации. Мы изучаем разные методы токенизации и способы? Токенизация необходима в задачах НЛП».

Токены = Mystr.split ( «.» )

#Выход:
>> [ «Это руководство по токенизации» , «Мы изучаем различные методы и способы токенизации? Токенизация необходима в задачах НЛП» , « ]

Хотя это кажется простым и понятным, у него есть много недостатков. И если вы заметили, он разбивается после последнего «.» также. И это не учитывает «?» в качестве индикатора следующего предложения, потому что он принимает только один символ — «.».

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

Обязательно прочтите: 10 лучших методов глубокого обучения, которые вы должны знать

Регулярное выражение

Регулярное выражение (RegEx) — это последовательность символов, которая используется для сопоставления с шаблоном символов. Мы используем RegEx, чтобы найти определенные шаблоны, слова или символы, чтобы заменить их или выполнить любую другую операцию над ними. В Python есть модуль re , который используется для работы с RegEx. Давайте посмотрим, как мы можем токенизировать текст с помощью re .

Токенизация слов

Mystr = «Это руководство по токенизации. Мы изучаем разные методы токенизации и способы? Токенизация необходима для задач НЛП».

Токены = re.findall ( «[\w']+» , Mystr)

#Выход:
>> [ «Это» , «есть» , «а» , «токенизация» , «учебник» , «мы» , «есть» , «обучение» , «другое» , «токенизация» , «методы» , «и» , «способы» , «токенизация» , «есть» , «существенный» , «в» , «НЛП» , «задачи» ]

Итак, что здесь произошло?

Функция re.findall() сопоставляется со всеми последовательностями, которые соответствуют ей, и сохраняет их в списке. Выражение «[\w]+» означает, что любой символ — будь то буквы или цифры, или символ подчеркивания («_»). Знак «+» означает все вхождения шаблона. Таким образом, он будет сканировать все символы и помещать их в список как один токен, когда он сталкивается с пробелом или любым другим специальным символом, кроме подчеркивания.

Обратите внимание, что слово «НЛП» — это одно слово, но наше регулярное выражение разбило его на «НЛП» и «s» из-за апострофа.

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

Mystr = «Это руководство по токенизации. Мы изучаем разные методы токенизации и способы? Токенизация необходима для задач НЛП».

Токены = re.compile( '[.!?] ' ).split(Mystr)

#Выход:
>> [ 'Это руководство по токенизации' , 'Мы изучаем различные методы и способы токенизации' , 'Токенизация необходима в задачах NLP.' ]

Здесь мы объединили несколько разделительных символов в одно условие и вызвали функцию re.split. Поэтому, когда он сталкивается с любым из этих 3 символов, он будет рассматривать его как отдельное предложение. Это преимущество RegEx по сравнению с функцией разделения Python, где вы не можете передать несколько символов для разделения.

Читайте также: Применение обработки естественного языка

Токенизаторы NLTK

Natural Language Toolkit (NLTK) — это библиотека Python, специально предназначенная для обработки задач NLP. NLTK состоит из встроенных функций и модулей, которые предназначены для некоторых конкретных процессов полного конвейера NLP. Давайте посмотрим, как NLTK обрабатывает токенизацию.

Токенизация слов

У NLTK есть отдельный модуль NLTK.tokenize для обработки задач токенизации. Для токенизации слов одним из методов, из которых он состоит, является word_tokenize.

из nltk.tokenize импортировать word_tokenize

Mystr = «Это руководство по токенизации. Мы изучаем разные методы токенизации и способы? Токенизация необходима для задач НЛП».
word_tokenize (Mystr)

#Выход:
>>[ 'Это' , 'есть' , 'а' , 'токенизация' , 'учебник' , '.' , 'Мы' , 'есть' , 'обучение' , 'другие' , 'токенизация' , 'методы' , ',' , 'и' , 'способы' , '?' , «Токенизация» , «есть» , «необходимо» , «в» , «НЛП» , «задачи» , «.» ]

Обратите внимание, что word_tokenize считает знаки препинания отдельными токенами. Чтобы этого не произошло, нам нужно убрать все знаки препинания и спецсимволы перед самим этим шагом.

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

из nltk.tokenize импортировать sent_tokenize

Mystr = «Это руководство по токенизации. Мы изучаем разные методы токенизации и способы? Токенизация необходима для задач НЛП».
send_tokenize (Mystr)

#Выход:
>> [ 'Это руководство по токенизации.' , «Мы изучаем различные методы и способы токенизации?» , «Токенизация необходима в задачах НЛП». ]

Токенизаторы SpaCy

SpaCy, вероятно, является одной из самых продвинутых библиотек для задач НЛП. Он состоит из поддержки почти 50 языков. Поэтому первым шагом является загрузка ядра для английского языка. Затем нам нужно импортировать английский модуль, который загружает токенизатор, тегировщик, синтаксический анализатор, NER и векторы слов.

Токенизация слов

импорт английского языка из spacy.lang.en

нлп = английский ()
Mystr = «Это руководство по токенизации. Мы изучаем разные методы токенизации и способы? Токенизация необходима для задач НЛП».
my_doc = nlp (Mystr)

Токены = []
для токена в my_doc:
Tokens.append(токен.текст)
Токены

#Выход:
>> [ 'Это' , 'есть' , 'а' , 'токенизация' , 'учебник' , '.' , 'Мы' , 'есть' , 'обучение' , 'другие' , 'токенизация' , 'методы' , ',' , 'и' , 'способы' , '?' , «Токенизация» , «есть» , «существенный» , «в» , «НЛП» , «s» , «задачи» , «.» ]

Здесь, когда мы вызываем функцию nlp с переданным MyStr, она создает для нее токены слова. Затем мы индексируем их и сохраняем в отдельный список.

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

импорт английского языка из spacy.lang.en

нлп = английский ()
sent_tokenizer = nlp.create_pipe( 'sentencizer' )
nlp.add_pipe (sent_tokenizer)

Mystr = «Это руководство по токенизации. Мы изучаем разные методы токенизации и способы? Токенизация необходима для задач НЛП».

my_doc = nlp (Mystr)

Отправлено = []
для отправленных в doc.sents:
Sents.append(отправленный.текст)
Отправляет

#Выход:
>> [ 'Это руководство по токенизации.' , «Мы изучаем различные методы и способы токенизации?» , «Токенизация имеет важное значение в задачах НЛП». ]

Для токенизации предложений вызовите метод creat_pipe, чтобы создать компонент Sentencizer, который создает токены предложений. Затем мы добавляем конвейер к объекту nlp. Когда мы передаем текстовую строку объекту nlp, на этот раз он создает для него токены предложения. Теперь их можно добавить в список так же, как и в предыдущем примере.

Токенизация Кераса

В настоящее время Keras является одной из наиболее предпочтительных сред глубокого обучения. Keras также предлагает специальный класс для задач обработки текста — keras.preprocessing.text. Этот класс имеет функцию text_to_word_sequence , которая создает токены уровня слова из текста. Давайте быстро посмотрим.

из keras.preprocessing.text импортировать text_to_word_sequence

Mystr = «Это руководство по токенизации. Мы изучаем разные методы токенизации и способы? Токенизация необходима для задач НЛП».
Токены = text_to_word_sequence(Mystr)
Токены

#Выход:
>> [ 'это' , 'есть' , 'а' , 'токенизация' , 'учебник' , 'мы' , 'есть' , 'обучение' , 'другое' , 'токенизация' , 'методы' , 'и' , 'способы' , 'токенизация' , 'есть' , 'необходимый' , 'в' , "nlp's" , "задачи" ]

Обратите внимание, что слово «НЛП» трактуется как отдельный токен. Кроме того, этот токенизатор keras переводит все токены в нижний регистр, что является дополнительным бонусом.

Gensim Токенизатор

Gensim — еще одна популярная библиотека для обработки задач на основе НЛП и тематического моделирования. Класс gensim.utils предлагает метод tokenize, который можно использовать для наших задач токенизации.

Токенизация слов

из gensim.utils импортировать токенизацию
Mystr = «Это руководство по токенизации. Мы изучаем разные методы токенизации и способы? Токенизация необходима для задач НЛП».

список (токенизировать (Mystr))

#Выход:
>> [ «Это» , «есть» , «а» , «токенизация» , «учебник» , «мы» , «есть» , «обучение» , «другое» , «токенизация» , «методы» , «и» , «способы» , «токенизация» , «есть» , «существенный» , «в» , «НЛП» , «s» , «задачи» ]

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

Для токенизации предложений мы используем метод split_sentences из класса gensim.summarization.textcleaner .

из gensim.summarization.textcleaner импортировать split_sentences

Mystr = «Это руководство по токенизации. Мы изучаем разные методы токенизации и способы? Токенизация необходима для задач НЛП».

Токены = разделенные_предложения ( Mystr )
Токены

#Выход:
>> [ 'Это руководство по токенизации.' , «Мы изучаем различные методы и способы токенизации?» , «Токенизация имеет важное значение в задачах НЛП». ]

Прежде чем ты уйдешь

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

Если вам интересно узнать больше о машинном обучении и искусственном интеллекте, ознакомьтесь с дипломом PG IIIT-B и upGrad в области машинного обучения и искусственного интеллекта, который предназначен для работающих профессионалов и предлагает более 450 часов тщательного обучения, более 30 тематических исследований и заданий, Статус выпускника IIIT-B, более 5 практических практических проектов и помощь в трудоустройстве в ведущих фирмах.

Возглавьте технологическую революцию, управляемую искусственным интеллектом

ДИПЛОМ PG В ОБЛАСТИ МАШИННОГО ОБУЧЕНИЯ И ИСКУССТВЕННОГО ИНТЕЛЛЕКТА
Узнать больше