Tokenização
O que é tokenização?? Em palavras curtas, divide os textos em palavras ou frases…
Aqui vamos falar sobre diferentes tokenizers que podemos usar no NLP ………
- 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:
ll) sent_tokenize: Usa texto dividido como modelos que treinou antes.
lll) wordpunct_tokenize: Aqui divide 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.
V) TweetTokenizer: divide o texto conforme essas pontuações de ?!.,;forma que os emojis
Vl) MWETokenizer: Aqui podemos adicionar token como quisermos, pois este tokenizador fornece add_mwenos permite fazer isso
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.
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.
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.
- Não divida as palavras usadas com frequência em subpalavras menores.
- 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).
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





































![O que é uma lista vinculada, afinal? [Parte 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)