Токенизация

Jan 10 2023
Что такое токенизация?? Короче говоря, он разбивает тексты на слова или предложения… Здесь мы рассмотрим различные токенизаторы, которые мы можем использовать в НЛП……… 2. Конкретное разделение То же, что и пробел, но здесь мы даем разделение любому разделителю, который мы хотим 3.

Что такое токенизация?? Короче говоря, он разбивает тексты на слова или предложения…

Токенизация

Здесь мы рассмотрим различные токенизаторы, которые мы можем использовать в НЛП ………

  1. Белое пространство

text = 'Earth was born around 4.54 billion years ago.'
print(text.split())
# output
# ['Earth', 'was', 'born', 'around', '4.54', 'billion', 'years', 'ago.']

2. Конкретное разделение

То же, что и пробел, но здесь мы даем splitлюбой сплиттер, какой захотим.

text = 'Egypt, a country linking northeast Africa with the Middle East, dates to the time of the pharaohs.'
print(text.split(','))
# output
# ['Egypt', ' a country linking northeast Africa with the Middle East', ' dates to the time of the pharaohs.']

3. НЛТК

NLTK — это ведущая платформа для создания программ Python для работы с данными человеческого языка. Есть много токенизаторов, которые мы можем использовать

l) word_toknizer: решает проблему в функции разделения:

word_toknizer: см. желтую отметку выше

ll) sent_tokenize: он использует разделенный текст в качестве моделей, которые он обучал ранее.

sent_tokenize: это моя цитата, она разделила ее как цитату и мое имя

lll) wordpunct_tokenize: Здесь он разделяет все слова и знаки препинания.

wordpunct_tokenize: дает нам токен со всеми словами и знаками препинания

lV) TreebankWordTokenizer: с другой стороны, он разбивает текст, как эти знаки препинания ?!.,;, это множество общих правил для английских слов.

TreebankWordTokenizer: посмотрите на желтую метку выше, вы узнаете, что это мое имя, поэтому он видит его как токен

V) TweetTokenizer: он разбивает текст как на эти знаки препинания ?!.,;, так и на смайлики.

ТвитТокенайзер

Vl) MWETokenizer: здесь мы можем добавить токен по своему усмотрению, поскольку этот токенизатор add_mweпозволяет нам это сделать .

MWETokenizer: мы добавили токен, как мы видим в результате вы увидите этот токен

4. TextBlob

TextBlob — библиотека Python (2 и 3) для обработки текстовых данных . Он предоставляет простой API для погружения в общие задачи обработки естественного языка (NLP), такие как маркировка частей речи, извлечение именной фразы, анализ тональности, классификация, перевод и многое другое.

from textblob import TextBlob
text="""But I'm glad you'll see me as I am. Above all, I wouldn't want people to think that I want to 
prove anything. I don't want to prove anything, I just want to live; to cause no evil to anyone but myself. 
I have that right, haven't I? Leo Tolstoy """

blob_object= TextBlob(text)     # Word tokenization of  the text
text_words = blob_object.words  # To see all tokens
print(text_words)  # To count the number of tokens
print(len(text_words))

# output
# ['But', 'I', "'m", 'glad', 'you', "'ll", 'see', 'me', 'as', 'I', 'am', 'Above', 'all', 'I', 'would', "n't", 'want', 'people', 'to', 'think', 'that', 'I', 'want', 'to', 'prove', 'anything', 'I', 'do', "n't", 'want', 'to', 'prove', 'anything', 'I', 'just', 'want', 'to', 'live', 'to', 'cause', 'no', 'evil', 'to', 'anyone', 'but', 'myself', 'I', 'have', 'that', 'right', 'have', "n't", 'I', 'Leo', 'Tolstoy']
# 55

5. просторный

spaCy — это бесплатная библиотека с открытым исходным кодом для обработки естественного языка в Python . Он включает в себя NER, теги POS, анализ зависимостей, векторы слов и многое другое.

Он дает нам токен и его индекс, все слова, знаки препинания и смайлики.

6. Генсим

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

здесь он удаляет все знаки препинания и смайлики

7. Керас

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

from keras.preprocessing.text import Tokenizer
from keras.preprocessing.text import text_to_word_sequence

text = "Two things are infinite: the universe and human stupidity; and I'm not sure about the universe.  #Albert Einstein"


tokinzer = Tokenizer(num_words=20)  # as recommended we put here the max text length we have
tokinzer.fit_on_texts(text)
tokens = text_to_word_sequence(text)
print(tokens)

# output
# ['two', 'things', 'are', 'infinite', 'the', 'universe', 'and', 'human', 'stupidity', 'and', "i'm", 'not', 'sure', 'about', 'the', 'universe', '', 'albert', 'einstein']

8. Токенизация на основе подслов

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

Алгоритмы токенизации на основе подслов используют следующие принципы.

  1. Не разбивайте часто используемые слова на более мелкие подслова.
  2. Разделите редкие слова на более мелкие значащие подслова.

Проблемы

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

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

Другое ограничение связано с токенизацией арабских текстов, поскольку арабский язык имеет сложную морфологию. Например, одно арабское слово может содержать до шести различных токенов, таких как слово «عقد» (eaqad).

одинаковые символы, но имеют разные значения

Заключение

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

вы можете увидеть код по этой ссылке