Tokenización
¿Qué es la tokenización? En pocas palabras, divide los textos en palabras u oraciones…
Aquí hablaremos sobre los diferentes tokenizadores que podemos usar en NLP ………
- espacio en blanco
text = 'Earth was born around 4.54 billion years ago.'
print(text.split())
# output
# ['Earth', 'was', 'born', 'around', '4.54', 'billion', 'years', 'ago.']
2. División específica
Igual que el espacio en blanco, pero aquí damos splitcualquier divisor que queramos.
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 es una plataforma líder para crear programas de Python para trabajar con datos de lenguaje humano. Hay muchos tokenizadores que podemos usar
l) word_toknizer: Resuelve el problema en la función split:
ll) sent_tokenize: utiliza texto dividido como modelos que entrenó antes.
lll) wordpunct_tokenize: Aquí divide todas las palabras y puntuaciones.
lV) TreebankWordTokenizer: divide el texto como estos signos de puntuación ?!.,;, por otro lado, es una variedad de reglas comunes para las palabras en inglés.
V) TweetTokenizer: divide el texto como estos signos de puntuación en ?!.,;emojis
Vl) MWETokenizer: aquí podemos agregar el token que queramos, ya que este tokenizador add_mwenos permite hacer eso.
4. Blob de texto
TextBlob es una biblioteca de Python (2 y 3) para procesar datos textuales . Proporciona una API simple para sumergirse en tareas comunes de procesamiento de lenguaje natural (NLP), como el etiquetado de partes del discurso, la extracción de frases nominales, el análisis de sentimientos, la clasificación, la traducción y más.
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. espacio
spaCy es una biblioteca gratuita de código abierto para el procesamiento del lenguaje natural en Python . Cuenta con NER, etiquetado POS, análisis de dependencia, vectores de palabras y más.
6. Gensim
Gensim: Es una biblioteca de código abierto en python escrita por Radim Rehurek que se utiliza en el modelado de temas no supervisados y procesamiento de lenguaje natural . Está diseñado para extraer temas semánticos de los documentos. Puede manejar grandes colecciones de texto.
7. Kerás
Keras es una biblioteca de código abierto que es uno de los marcos de aprendizaje profundo más confiables. Para realizar la tokenización usamos: método text_to_word_sequence de la clase Class Keras.preprocessing.text. Lo mejor de Keras es convertir el alfabeto en minúsculas antes de tokenizarlo, lo que puede ahorrar bastante tiempo.
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. Tokenización basada en subpalabras
Su tokenización popular es la tokenización basada en subpalabras, que es una solución entre la tokenización basada en palabras y caracteres. La idea principal es resolver los problemas que enfrenta la tokenización basada en palabras (tamaño de vocabulario muy grande, gran cantidad de tokens OOV y diferentes significados de palabras muy similares) y la tokenización basada en caracteres (secuencias muy largas y tokens individuales menos significativos).
Los algoritmos de tokenización basados en subpalabras utilizan los siguientes principios.
- No divida las palabras de uso frecuente en subpalabras más pequeñas.
- Divide las palabras raras en subpalabras significativas más pequeñas.
Desafíos
Analicemos los desafíos y las limitaciones de la tarea de tokenización.
En general, esta tarea se usa para corpus de texto escritos en inglés o francés, donde estos idiomas separan las palabras usando espacios en blanco o signos de puntuación para definir el límite de las oraciones. Desafortunadamente, este método no puede aplicarse a otros idiomas como el chino, el japonés, el coreano, el tailandés, el hindi, el urdu, el tamil y otros. Este problema crea la necesidad de desarrollar una herramienta de tokenización común que combine todos los idiomas.
Otra limitación está en la tokenización de los textos árabes, ya que el árabe tiene una morfología complicada como lengua. Por ejemplo, una sola palabra árabe puede contener hasta seis tokens diferentes como la palabra “عقد” (eaqad).
Conclusión
Hablamos sobre la tokenización y muchas técnicas que podemos usar, ya que vemos que se realizan muchos tipos de investigación en este campo y está creciendo y hay muchos desafíos que enfrenta la PNL, pero veremos que en el futuro estos problemas se resolverán.
Puedes ver el código en este enlace.

![¿Qué es una lista vinculada, de todos modos? [Parte 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































