datosciencia
Mi proyecto:
El lenguaje humano es sorprendentemente complejo y diverso. Al escribir, a menudo cometemos errores ortográficos, abreviamos palabras o omitimos signos de puntuación. Estamos rodeados de una gran cantidad de datos no estructurados. El Procesamiento del Lenguaje Natural (NLP) permite a los ordenadores comunicarse con los humanos en su propio idioma y realizar otras tareas relacionadas con el lenguaje.
Por ejemplo, el NLP posibilita que los ordenadores lean y entiendan textos, midan el sentimiento y determinen qué partes son importantes. Comprender esto nos habilita para construir el componente central de cualquier chatbot conversacional.
Resumen Ejecutivo
En este proyecto, he explorado y aplicado técnicas avanzadas de Procesamiento del Lenguaje Natural (NLP) para construir el motor central de un chatbot conversacional.
He abordado la complejidad inherente al lenguaje humano, reconociendo y procesando variaciones como errores ortográficos, abreviaturas y estructuras gramaticales.
Mediante el uso de NLP, he creado un sistema capaz de leer, interpretar y clasificar texto, lo que permite al chatbot entender y responder a consultas de manera precisa y relevante.
Este proyecto demuestra mi habilidad para aplicar NLP en el desarrollo de soluciones de IA que facilitan una comunicación efectiva entre humanos y computadoras, siendo un componente clave en el avance de los chatbots conversacionales.
Trabajo Realizado
Etapas Claves para el Desarrollo del chatbot:
1. Preparación y Limpieza de los Datos
Subir Fichero:
filename = 'leaves.txt'
data = get_content(filename)
Lower case, Tokenize, Stopwords, Tagging, Lemmatize words, Stem words
def extract_feature(text):
words = preprocess(text)
# print('words: ',words)
tags = nltk.pos_tag(words)
# print('tags: ',tags)
extracted_features = extract_tagged(tags)
# print('Extracted features: ',extracted_features)
stemmed_words = [stemmer.stem(x) for x in extracted_features]
# print(stemmed_words)
result = [lmtzr.lemmatize(x) for x in stemmed_words]
return result
2. Extracción de Características:
Función para la extracción de características del texto
def extract_feature_from_doc(data):
result = []
corpus = []
…..
3. Función para la Clasificación de Entradas:
La función que procesa la entrada del usuario y la clasifica en una categoría
4. Entrenamiento del Modelo:
Código para entrenar el modelo de clasificación, como Naive Bayes o Árboles de Decisión.
def train_using_decision_tree(training_data, test_data):
classifier = nltk.classify.DecisionTreeClassifier.train(training_data, entropy_cutoff=0.6, support_cutoff=6)
classifier_name = type(classifier).__name__
training_set_accuracy = nltk.classify.accuracy(classifier, training_data)
print('training set accuracy: ', training_set_accuracy)
test_set_accuracy = nltk.classify.accuracy(classifier, test_data)
print('test set accuracy: ', test_set_accuracy)
return classifier, classifier_name, test_set_accuracy, training_set_accuracy
5. Evaluación del Modelo:
Código para evaluar la precisión del modelo en los conjuntos de entrenamiento y prueba.
training set accuracy: 0.9035087719298246
test set accuracy: 0.8620689655172413
6. Función de Respuesta del Chatbot:
La función reply() que interpreta la entrada del usuario y devuelve una respuesta.
7. Ejemplos de Interacción:
Ejemplos de cómo el chatbot responde a diferentes entradas:
print(reply("Hi"))
print(reply("How many annual leaves do I have left?"))
Te invito cordialmente a ver el video que está abajo, donde podrás descubrir la dinámica y las capacidades avanzadas de mi chatbot, desarrollado y ejecutado en un entorno Jupyter Notebook.
En este video, presento una demostración práctica que captura la interacción real con el chatbot, mostrando su respuesta a través de celdas de entrada y salida.
Esta visualización proporciona una comprensión clara y detallada de cómo el chatbot procesa y responde a diversas consultas, destacando así su inteligencia y eficacia.
Estoy seguro de que esta demostración te dará una perspectiva valiosa sobre el potencial y la funcionalidad de mi proyecto.
Visita este vídeo: