Tokenización

La tokenización es el proceso de dividir un texto en palabras, frases o elementos más pequeños llamados tokens.

Ejemplo de Tokenización en Python

Podemos usar la biblioteca nltk para tokenizar un texto en palabras:

import nltk
from nltk.tokenize import word_tokenize

nltk.download('punkt')
nltk.download('punkt_tab')
texto = "Hola, ¿cómo estás? Espero que estés bien."
tokens = word_tokenize(texto)
print(tokens)

Tokenización en frases

También podemos dividir el texto en frases:

from nltk.tokenize import sent_tokenize

texto = "Hola, ¿cómo estás? Espero que estés bien. Nos vemos luego."
frases = sent_tokenize(texto)
print(frases)

Lematización y Stemming

Estos procesos permiten reducir las palabras a su forma base o raíz.

Ejemplo de Stemming en Python

El stemming reduce una palabra a su raíz eliminando sufijos. Usaremos nltk:

import nltk
from nltk.stem import PorterStemmer

stemmer = PorterStemmer()
palabras = ["running", "played", "playing", "happily"]
stems = [stemmer.stem(palabra) for palabra in palabras]
print(stems)

Ejemplo de Stemming en Python

El stemming reduce una palabra a su raíz eliminando sufijos. Usaremos nltk:

import nltk
from nltk.stem import PorterStemmer
from nltk.stem import SnowballStemmer

stemmer = SnowballStemmer("spanish")
palabras = ["corriendo", "corri", "correremos", "correr", "corre", "correspondencia","correa"]
stems = [stemmer.stem(palabra) for palabra in palabras]
print(stems)

Ejemplo de Lematización en Python

La lematización reduce una palabra a su forma base teniendo en cuenta su significado. Usaremos WordNetLemmatizer:

import nltk
from nltk.stem import WordNetLemmatizer
from nltk.corpus import wordnet

nltk.download('wordnet')
lemmatizer = WordNetLemmatizer()
palabras = ["running", "played", "better", "dogs"]
lemmas = [lemmatizer.lemmatize(palabra, pos=wordnet.VERB) for palabra in palabras]
print(lemmas)

Análisis Sintáctico

El análisis sintáctico (parsing) estructura una oración según la gramática de un idioma. En Python, usamos spaCy para identificar la estructura gramatical.

Ejemplo de Análisis Sintáctico en Python

Utilizaremos spaCy para analizar la estructura de una oración en español.

import spacy

# Cargar modelo en español
spacy.cli.download("es_core_news_sm")
nlp = spacy.load("es_core_news_sm")
texto = "El gato negro corre rápidamente por el jardín."
doc = nlp(texto)

# Mostrar análisis sintáctico
for token in doc:
    print(f"Palabra: {token.text}, Etiqueta gramatical: {token.pos_}, Dependencia: {token.dep_}")

Análisis Semántico

El análisis semántico interpreta el significado de las palabras y sus relaciones en un texto.

Ejemplo de Análisis Semántico en Python

Podemos usar spaCy para calcular la similitud semántica entre palabras.

import spacy
spacy.cli.download("es_core_news_md")
nlp = spacy.load("es_core_news_md")
palabra1 = nlp("perro")
palabra2 = nlp("lobo")
print(f"Similitud entre 'perro' y 'lobo': {palabra1.similarity(palabra2)}")

Bibliotecas de NLP en Python:

        
    import spacy
    spacy.cli.download("es_core_news_sm")
    nlp = spacy.load("en_core_web_sm")
    doc = nlp("Chatbots are revolutionizing customer service.")
    for token in doc:
        print(token.text, token.lemma_, token.pos_)
        
        

Aplicaciones de NLP

Etapas del NLP

El NLP consta de varias etapas clave:

Modelos de NLP

Algunos modelos populares en NLP incluyen:

Bibliotecas de NLP en Python:

    
import spacy
nlp = spacy.load("en_core_web_sm")
doc = nlp("Chatbots are revolutionizing customer service.")
for token in doc:
    print(token.text, token.lemma_, token.pos_)
    
    

Herramientas y Bibliotecas de NLP

Existen diversas herramientas para NLP, como:

Casos de Uso de los Chatbots:

3. Diseño y Desarrollo de un Chatbot Básico

Objetivo:

Implementar un chatbot básico utilizando bibliotecas de Python.

Configuración del Entorno de Desarrollo:

Instalación de bibliotecas necesarias.

    
pip install rasa
    
    

Desarrollo de un Chatbot con Rasa:

    
# domain.yml
intents:
- greet
- ask_weather
responses:
  utter_greet:
  - text: "Hello! How can I help you today?"
  utter_ask_weather:
  - text: "The weather is sunny."
stories:
- story: greet user
  steps:
  - intent: greet
  - action: utter_greet
    
    

3. Entrenamiento y Prueba del Chatbot

    
rasa train
rasa shell