Tokenização

Jan 10 2023
O que é tokenização?? Em palavras curtas, ele divide os textos em palavras ou frases... Aqui vamos falar sobre diferentes tokenizadores que podemos usar no NLP...

O que é tokenização?? Em palavras curtas, divide os textos em palavras ou frases…

Tokenização

Aqui vamos falar sobre diferentes tokenizers que podemos usar no NLP ………

  1. Espaço em branco

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

2. Divisão Específica

Igual ao espaço em branco, mas aqui damos splitqualquer divisor que quisermos

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

NLTK é uma plataforma líder para a construção de programas Python para trabalhar com dados de linguagem humana. Existem muitos tokenizadores que podemos usar

l) word_toknizer: Resolve o problema na função split:

word_toknizer: veja a marca Amarela acima

ll) sent_tokenize: Usa texto dividido como modelos que treinou antes.

sent_tokenize: esta é minha citação, divide-a como uma citação e meu nome

lll) wordpunct_tokenize: Aqui divide todas as palavras e pontuações.

wordpunct_tokenize: nos dá token tem todas as palavras e pontuações

lV) TreebankWordTokenizer: divide o texto conforme essas pontuações ?!.,;, por outro lado, é uma variedade de regras comuns para palavras em inglês.

TreebankWordTokenizer: veja a marca amarela acima, você saberá que é meu nome, então ele o vê como um token

V) TweetTokenizer: divide o texto conforme essas pontuações de ?!.,;forma que os emojis

TweetTokenizer

Vl) MWETokenizer: Aqui podemos adicionar token como quisermos, pois este tokenizador fornece add_mwenos permite fazer isso

MWETokenizer: adicionamos um token como vemos no resultado você verá esse token

4. TextBlob

TextBlob é uma biblioteca Python (2 e 3) para processamento de dados textuais . Ele fornece uma API simples para mergulhar em tarefas comuns de processamento de linguagem natural (NLP), como marcação de parte da fala, extração de frase nominal, análise de sentimento, classificação, tradução e muito mais.

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. espaço

spaCy é uma biblioteca gratuita de código aberto para processamento de linguagem natural em Python . Possui NER, marcação POS, análise de dependência, vetores de palavras e muito mais.

Ele nos dá um token e seu índice de todas as palavras, pontuações e emojis

6. Gensim

Gensim: É uma biblioteca de código aberto em python escrita por Radim Rehurek que é usada em modelagem de tópicos não supervisionada e processamento de linguagem natural . Ele é projetado para extrair tópicos semânticos de documentos. Ele pode lidar com grandes coleções de texto.

aqui remove toda a pontuação e emojis

7. Queras

Keras é uma biblioteca de código aberto que é uma das estruturas de aprendizado profundo mais confiáveis. Para realizar a tokenização utilizamos: método text_to_word_sequence da classe Keras.preprocessing.text. A grande coisa sobre Keras é converter o alfabeto em letras minúsculas antes de tokenizá-lo, o que pode economizar bastante tempo.

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. Tokenização baseada em subpalavras

Sua tokenização popular é a tokenização baseada em subpalavras, que é uma solução entre a tokenização baseada em palavras e caracteres. A ideia principal é resolver os problemas enfrentados pela tokenização baseada em palavras (tamanho de vocabulário muito grande, grande número de tokens OOV e diferentes significados de palavras muito semelhantes) e tokenização baseada em caracteres (sequências muito longas e tokens individuais menos significativos).

Os algoritmos de tokenização baseados em subpalavras usam os seguintes princípios.

  1. Não divida as palavras usadas com frequência em subpalavras menores.
  2. Divida as palavras raras em subpalavras significativas menores.

desafios

Vamos discutir os desafios e limitações da tarefa de tokenização.

Em geral, esta tarefa é usada para corpus de texto escrito em inglês ou francês, onde esses idiomas separam palavras usando espaços em branco ou sinais de pontuação para definir o limite das frases. Infelizmente, esse método não pode ser aplicado a outros idiomas, como chinês, japonês, coreano tailandês, hindi, urdu, tâmil e outros. Este problema cria a necessidade de desenvolver uma ferramenta comum de tokenização que combine todas as linguagens.

Outra limitação está na tokenização de textos árabes, já que o árabe tem uma morfologia complicada como idioma. Por exemplo, uma única palavra árabe pode conter até seis tokens diferentes, como a palavra “عقد” (eaqad).

mesmos caracteres, mas têm significados diferentes

Conclusão

Conversamos sobre tokenização e muitas técnicas que podemos usar, pois vemos que existem muitos tipos de pesquisa feitos neste campo e está crescendo e existem muitos desafios enfrentados pelo PNL, mas veremos no futuro que esses problemas serão resolvidos.

você pode ver o código neste link