Токенизация вложенных слов: полное руководство

Содержание:

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

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

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

Subword = sub + word;

Данный прием очень помогает справиться с задачей out of vocabulary – обработки слов вне словарного запаса естественного языка. Чтобы устранить эту проблему, применяют Subword Tokenization – токенизацию слов на составляющие.

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

Подробнее о понятии и его особенностях

Ключевыми терминами токенизации являются:

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

Если говорить проще, то токенизация представляет собой упрощающий восприятие цифровой машиной обычного печатного текста процесс, при котором происходит разбиение предложений на более короткие аналогичные по разным параметрам единицы – токены. Самый простой пример:

  • Исходное предложение: «Белеет парус одинокий в тумане моря голубом».
  • Итог: | белеет | парус | одинокий | в | тумане | моря | голубом |

Вводное предложение в данном случае размечено апострофами между каждым словом. Также существует возможность объединить символы из одного слова и отделить все слова, входящие в данный текст по этому принципу. К примеру: «туман», «туманный», «туманы» и т.д.

Токенизация на сегодняшний день считается одним из первостепенно значимых этапов цифровой обработки текстового контента.

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

В первом случае для начала создается объект TextBlob и формируется стандарт корпуса. Для подробного рассмотрения применим известную строчку из произведения Р. Киплинга:

from textblob import TextBlob

# Creating the corpus

corpus = »’If you can force your heart and nerve and sinew to serve your turn long after they are gone. And so hold on when there is nothing in you except the Will which says to them: ‘Hold on!’

Далее эта комбинация передается конструктору, как позиция TextBlob:

blob_object = TextBlob(corpus)

Затем разрешено выполнять с ним любые опции.

Для получения токенизированных слов, извлекаем words из сформированного blob_object и получаем перечень:

  • from textblob import TextBlob
  • corpus = »’If you can force your heart and nerve and sinew to serve your turn long after they are gone. And so hold on when there is nothing in you except the Will which says to them: ‘Hold on!’
  • blob_object = TextBlob(corpus)
  • # Word tokenization of the sample corpus
  • corpus_words = blob_object.words
  • # To see all tokens
  • print(corpus_words)
  • # To count the number of tokens
  • print(len(corpus_words))

При выводе команд получаем:

[‘If’, ‘you’, ‘can’, ‘force’, ‘your’, ‘heart’, ‘and’, ‘nerve’, ‘and’, ‘sinew’, ‘to’, ‘serve’, ‘your’, ‘turn’, ‘long’, ‘after’, ‘they’, ‘are’, ‘gone’, ‘and’, ‘so’, ‘hold’, ‘on’, ‘when’, ‘there’, ‘is’, ‘nothing’, ‘in’, ‘you’, ‘except’, ‘the’, ‘Will’, ‘which’, ‘says’, ‘to’, ‘them’, ‘Hold’, ‘on’]

38

Также в этой связи важно поговорить о стоп-словах. Это слова, присутствующие в любом языке, не несущие никакой полезной нагрузки, а в NLP, не являющиеся важными для учета данных. Самыми простыми и распространенными стоп-словами являются: «он», «они», «этих» и т.д. К примеру, в английском языке существует около 180 стоп-слов. Чтобы их исключить из токенизации, необходимо удалить их все из заданного текста путем копирования из библиотеки.

Токенизация вложенных слов: полное руководство

Вычленение основы слова

Это процесс, при котором любое слово сокращается до его основы – лемма или корня. То есть, исключаются приставки, суффиксы, окончания. К примеру:

  • кушал – кушать;
  • вышедший – вышел и т.д.

Для выделения основы в Python предусмотрен специальный модуль PorterStemmer, который тоже импортируется в разрабатываемый проект из библиотеки nltk.stem. Максимально эффективно данная система работает с одиночными словами.

Далее поговорим о самых известных методах токенизации

Метод №1: Byte Pair Encoding (BPE)

Был изобретен британскими учеными, создавшими подслова в нейронном машинном переводе с применением алгоритма Byte Pair Encoding (BPE). Сначала он представлял контент без потерь и работал так:

  • «мама я люблю дата сайнс», где «ма» заменялось на «Z»;
  • «ZZ я люблю дата сайнс», где «лю» заменялось на «Y»;
  • «ZZ я YбY дата сайнс».

Для решения следующих задач алгоритм несколько изменили, для этого часто повторяющиеся слоги и знаки, а аккумулируются в токен и записываются в словарь. В соответствии с алгоритмом, можно узнать огромное количество слов при минимальной вместимости словаря. К примеру, «Соединенное Королевство» рассматривается, в качестве единого токена, а «не нужно», как двойной – «нужно» и «не нужно». Принцип комплектации выглядит так:

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

В настоящее время токенизация подслов является нормой и используется в наиболее продвинутых моделях, включая контекстные: BERT, GPT-2, RoBERTa и другие. Подробнее об этом и других методах токенизации рассказывают наши преподаватели на курсах программирования DevEducation.

Метод №2: BPE

Для решения задач голосового поиска на японском и корейском языках, в корпорации Гугл создали Byte Pair Encoding и токенизатор WordPiece. Основа алгоритма сохраняется – слова разбиваются на буквы, называются символами и комбинируются попарно. Разница заключается только в том, что объединяются не высокочастотные пары, а пары, увеличивающие вероятность поиска данных.

Метод №3: Unigram Language Model (ULM)

Этот метод отличается от вышеописанных тем, что в данном случае получается полноценное сегментирование, позволяющее сэмплировать. Изначально считается, что все подслова не соединены друг с другом, поэтому вероятность p(x), где х – это слово, равняется перемножению, входящих в него слов p(x1), а далее находится подходящая сегментация.

Методика представляется следующей последовательностью:

  • создается словарь, возможно использовать BPE;
  • последовательность действий повторяется до тех пор, пока хватает вместимости словаря: минимизируется p(x) с использованием ЕМ-алгоритма, вычисляется показатель правдоподобности для отдельного слова, оставляются предельно правдоподобные слова, при этом оставляются слова, которые находятся вне словарного запаса языка.

Метод №4: Sentencepiece

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

  • # загрузка библиотечного собрания: import sentencepiece as spm
  • # обучающий материал из файла text.txt: spm.SentencePieceTrainer.Train(‘—input=test/text.txt —model_prefix=m —vocab_size=1000’)
  • # загрузка обученной модели: sp = spm.SentencePieceProcessor() и sp.Load(«m.model»):
  • # кодировка информации
  • sp.EncodeAsIds(«I like ke»).

Метод №5: BPE-Dropout

Это недавняя разработка компании Яндекс, призванная справиться с рядом недостатков:

  • избавиться от однотипной сегментации;
  • заставить интерпретироваться редко встречающиеся слова.

Разница между сегментацией и токенизацией

Типичный конвейер по формированию обработанного текста подразумевает четыре последовательных этапа:

  • сегментация;
  • нормализация и токенизация;
  • POS – пометка части речи;
  • выявление проименованных элементов.

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

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

Если сегментация – это сокращение предложений, то токенизация – слов. Здесь тоже запятые, точки, двоеточия могут сочетаться или отсутствовать совсем.

Помимо стемминга и лемматизации существуют и другие методы нормализации текста, включающие:

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

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

Классы частей речи POS классифицируются в зависимости от класса слов или лексических категорий. К POS-классам относятся:

  • подлежащее;
  • сказуемое;
  • местоимение;
  • предлог и т.д.

Классифицируются на три основных типа:

  • по правилам правописания;
  • по стилистике;
  • по глубокому обучению.

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

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

Перед полным распознаванием проименованных сущностей, токены делят на части, означающие их сегментирование и маркировку. Кусок, повторяющийся с максимальной периодичностью, считается сегментом именного значения, состоящего из определителя, прилагательных, глаголов. К примеру, предложение «Он привел красивого бегемотика» включает 2 сегмента: «он» и «красивый бегемотик».

Проименованные объекты позиционируются, как именные выражения, относимые к определенным объектам: человеку, предприятию, локации, времени и т.д. Основная цель – идентифицировать их.

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

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

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

Все без исключения алгоритмы машинного обучения работают на основе числовых данных. То есть, текст трансформируется в цифры. Самый простой способ для преобразования в данном случае метод Bag-of-Words (BoW). Любое предложение здесь может формироваться в виде вектора, включающего единицы и нули, который строится в определенной зависимости от того, есть в словаре данное слово или нет.

Еще один способ — TF-IDF, при котором фиксируется важность данного слова по отношению к размеру предложения и частоты документа, фиксирующегося в зависимости от отношения к совокупному количеству строк. Если слово наделяется высшим баллом в предложении, что подчеркивает его редкость, то в полном документе оно будет иметь минимальное значение.

Самые передовые стратегии

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

Современная платформа от Гугл Word2Vec использует мелкие нейронные сети, предназначенные для обучения моделей встраивания слов. Алгоритмы делятся на 2 типа:

  • Skip-Gram;
  • Continuous Bag of Words (CBOW).

Первые используют для определения контекста для данного слова, вторые – для прогнозирования следующего слова.

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

Присоединяйся к DevEducation — стань востребованным специалистом и построй карьеру в IT!