Sei sulla pagina 1di 19

Procesamiento Del Lenguaje Natural En Python

El lenguaje es una de las herramientas centrales en nuestra vida social y


profesional. Entre otras cosas, actúa como un medio para transmitir ideas,
información, opiniones y sentimientos; así como para persuadir, pedir información,
o dar ordenes. Asimismo, el lenguaje humano es algo que esta en constante
cambio y evolución; y que puede llegar a ser muy ambiguo y variable. Tomemos
por ejemplo la frase "comí una pizza con amigos" comparada con "comí una pizza
con aceitunas"; su estructura es la misma, pero su significado es totalmente
distinto. De la misma manera, un mismo mensaje puede ser expresado de formas
diferentes; "comí una pizza con amigos" puede también ser expresado
como "compartí una pizza con amigos".
Los seres humanos somos muy buenos a la hora de producir e interpretar
el lenguaje, podemos expresar, percibir e interpretar significados muy elaborados
en fracción de segundos casi sin dificultades; pero al mismo tiempo, somos
también muy malos a la hora de entender y describir formalmente las reglas que lo
gobiernan. Por este motivo, entender y producir el lenguaje por medio de
una computadora es un problema muy difícil de resolver. Éste problema, es el
campo de estudio de lo que en inteligencia artificial se conoce
como Procesamiento del Lenguaje Natural o NLP por sus siglas en inglés.
¿Qué es el Procesamiento del Lenguaje Natural?
El Procesamiento del Lenguaje Natural o NLP es una disciplina que se encuentra
en la intersección de varias ciencias, tales como las Ciencias de la Computación,
la Inteligencia Artificial y Psicología Cognitiva. Su idea central es la de darle a las
máquinas la capacidad de leer y comprender los idiomas que hablamos los
humanos. La investigación del Procesamiento del Lenguaje Natural tiene como
objetivo responder a la pregunta de cómo las personas son capaces de
comprender el significado de una oración oral / escrita y cómo las personas
entienden lo que sucedió, cuándo y dónde sucedió; y las diferencias entre una
suposición, una creencia o un hecho.
En general, en Procesamiento del Lenguaje Natural se utilizan seis niveles de
comprensión con el objetivo de descubrir el significado del discurso. Estos niveles
son:
 Nivel fonético: Aquí se presta atención a la fonética, la forma en que las
palabras son pronunciadas. Este nivel es importante cuando procesamos la
palabra hablada, no así cuando trabajamos con texto escrito.
 Nivel morfológico: Aquí nos interesa realizar un análisis morfológico del
discurso; estudiar la estructura de las palabras para delimitarlas y
clasificarlas.
 Nivel sintáctico: Aquí se realiza un análisis de sintaxis, el cual incluye la
acción de dividir una oración en cada uno de sus componentes.
 Nivel semántico: Este nivel es un complemente del anterior, en el
análisis semántico se busca entender el significado de la oración. Las
palabras pueden tener múltiples significados, la idea es identificar el
significado apropiado por medio del contexto de la oración.
 Nivel discursivo: El nivel discursivo examina el significado de la oración en
relación a otra oración en el texto o párrafo del mismo documento.
 Nivel pragmático: Este nivel se ocupa del análisis de oraciones y cómo se
usan en diferentes situaciones. Además, también cómo su significado
cambia dependiendo de la situación.
Todos los niveles descritos aquí son inseparables y se complementan entre sí. El
objetivo de los sistemas de NLP es incluir estas definiciones en
una computadora y luego usarlas para crear una oración estructurada y sin
ambigüedades con un significado bien definido.
Aplicaciones del Procesamiento del Lenguaje Natural
Los algoritmos de Procesamiento del Lenguaje Natural suelen basarse en
algoritmos de aprendizaje automático. En lugar de codificar manualmente grandes
conjuntos de reglas, el NLP puede confiar en el aprendizaje automático para
aprender estas reglas automáticamente analizando un conjunto de ejemplos y
haciendo una inferencia estadística. En general, cuanto más datos analizados,
más preciso será el modelo. Estos algoritmos pueden ser utilizados en algunas de
las siguientes aplicaciones:
 Resumir texto: Podemos utilizar los modelos de NLP para extraer las ideas
más importantes y centrales mientras ignoramos la información irrelevante.
 Crear chatbots: Podemos utilizar las técnicas de NLP para
crear chatbots que puedan interactuar con las personas.
 Generar automáticamente etiquetas de palabras clave:
Con NLP también podemos realizar un análisis de contenido aprovechando
el algoritmo de LDA para asignar palabras claves a párrafos del texto.
 Reconocer entidades: Con NLP podemos identificar a las distintas
entidades del texto como ser una persona, lugar u organización.
 Análisis de sentimiento: También podemos utilizar NLP para identificar
el sentimiento de una cadena de texto, desde muy negativo a neutral y a
muy positivo.
Librerías de Python para Procesamiento del Lenguaje Natural
Actualmente, Python es uno de los lenguajes más populares para trabajar en el
campo la Inteligencia Artificial. Para abordar los problemas relacionados con
el Procesamiento del Lenguaje Natural Python nos proporciona las siguientes
librerías:
NLTK: Es la librería líder para el Procesamiento del Lenguaje Natural. Proporciona
interfaces fáciles de usar a más de 50 corpus y recursos léxicos, junto con un
conjunto de bibliotecas de procesamiento de texto para la clasificación,
tokenización, el etiquetado, el análisis y el razonamiento semántico.
Gracias a una guía práctica que presenta los fundamentos de la programación
junto con temas de lingüística computacional, además de documentación API
completa, NLTK es adecuado para lingüistas, ingenieros, estudiantes, educadores,
investigadores y usuarios de la industria por igual. NLTK está disponible para
Windows, Mac OS X y Linux. Lo mejor de todo, NLTK es un proyecto gratuito, de
código abierto y dirigido por la comunidad.
NLTK ha sido llamado "una herramienta maravillosa para enseñar y trabajar en
lingüística computacional usando Python", y "una biblioteca increíble para jugar
con lenguaje natural".

El procesamiento del lenguaje natural con Python proporciona una introducción


práctica a la programación para el procesamiento del lenguaje. Escrito por los
creadores de NLTK, guía al lector a través de los fundamentos de escribir
programas de Python, trabajar con corpus, categorizar texto, analizar la estructura
lingüística y más. La versión en línea del libro se ha actualizado para Python 3 y
NLTK 3. (La versión original de Python 2 todavía está disponible).

Algunas cosas simples que puedes hacer con NLTK 

Tokeniza y etiqueta un poco de texto:


Identificar entidades nombradas:

Mostrar un árbol de análisis:

TextBlob: 
Es una biblioteca de Python (2 y 3) para procesar datos textuales. Proporciona
una API simple para sumergirse en tareas comunes de procesamiento del
lenguaje natural (PNL) como el etiquetado de parte del discurso, extracción de
frases nominales, análisis de sentimientos, clasificación, traducción y más
simplifica el procesamiento de texto proporcionando una interfaz intuitiva a NLTK.
Posee una suave curva de aprendizaje al mismo tiempo que cuenta con una
sorprendente cantidad de funcionalidades.
Características 
 Extracción de frase sustantiva
 Etiquetado de parte del discurso
 Análisis de los sentimientos
 Clasificación (ingenuo Bayes, árbol de decisión)
 Traducción y detección de idiomas con tecnología de Google Translate
 Tokenización (división de texto en palabras y oraciones)
 Frecuencias de palabras y frases
 Analizando
 n-gramos
 Inflexión de palabras (pluralización y singularización) y lematización
 Corrección ortográfica
 Agregue nuevos modelos o idiomas a través de extensiones
 Integración de WordNet
Stanford CoreNLP: Paquete desarrollado por la universidad de Stanford, para
muchos constituye el estado del arte sobre las técnicas tradicionales
de Procesamiento del Lenguaje Natural. Si bien esta escrita en Java, posee
una interface con Python.
Stanford CoreNLP proporciona un conjunto de herramientas de tecnología del
lenguaje humano. Puede dar las formas básicas de las palabras, sus partes del
discurso, ya sean nombres de compañías, personas, etc., normalizar fechas,
horas y cantidades numéricas, marcar la estructura de las oraciones en términos
de frases y dependencias sintácticas, indicar cuyas frases nominales se refieren a
las mismas entidades, indican sentimientos, extraen relaciones particulares o de
clase abierta entre menciones de entidades, obtienen citas de personas, etc.
Elija Stanford CoreNLP si necesita:
 Un juego de herramientas de PNL integrado con una amplia gama de
herramientas de análisis gramatical
 Un anotador rápido y robusto para textos arbitrarios, ampliamente utilizado
en producción.
 Un paquete moderno, actualizado regularmente, con la analítica de texto en
general de la más alta calidad.
 Soporte para varios idiomas (humanos) principales
 API disponibles para la mayoría de los principales lenguajes de
programación modernos
 Capacidad para ejecutarse como un simple servicio web
El objetivo de Stanford CoreNLP es facilitar la aplicación de un conjunto de
herramientas de análisis lingüístico a un texto. Una tubería de herramienta se
puede ejecutar en un texto sin formato con solo dos líneas de código. CoreNLP
está diseñado para ser altamente flexible y extensible. Con una sola opción, puede
cambiar qué herramientas deben habilitarse y deshabilitarse. Stanford CoreNLP
integra muchas de las herramientas de NLP de Stanford, incluido el etiquetador de
parte del habla (POS) , el reconocedor de entidad con nombre (NER) , el
analizador , el sistema de resolución de coreferencia , el análisis de sentimientos ,
el aprendizaje de patrones de arranque y la extracción de información
abierta herramientas. Además, una canalización de anotadores puede incluir
anotadores adicionales personalizados o de terceros. Los análisis de CoreNLP
proporcionan los bloques de construcción fundamentales para aplicaciones de
comprensión de texto de nivel superior y de dominio específico.
Spacy: spaCy es una biblioteca para el procesamiento avanzado de lenguaje
natural en Python y Cython. Se basa en las últimas investigaciones y se diseñó
desde el primer día para ser utilizado en productos reales. spaCy viene con
modelos estadísticos pre-entrenados y vectores de palabras, y actualmente admite
tokenización para más de 49 idiomas. Cuenta con modelos de redes neuronales
convolucionales de alta tecnología para el etiquetado, el análisis y el
reconocimiento de entidades nombradas, así como una integración de aprendizaje
profundo y fácil. Es un software comercial de código abierto, publicado bajo la
licencia MIT.
Caracteristicas
 Tokenización no destructiva
 Entidad denominada reconocimiento
 Soporte para más de 53 idiomas.
 23 modelos estadísticos para 11 idiomas
 vectores de palabras preentrenados
 Velocidad de vanguardia
 Integración fácil de aprendizaje profundo
 Etiquetado de parte del discurso
 Análisis de dependencia etiquetado
 Segmentación de oraciones basada en sintaxis
 Construido en visualizadores para sintaxis y NER
 Cómoda asignación de cadena a hash
 Exportar a matrices de datos numpy
 Serialización binaria eficiente
 Empaquetado y despliegue de modelos fáciles
 Precisión robusta, rigurosamente evaluada
Textacy: Es una biblioteca de Python para realizar una variedad de tareas de
procesamiento de lenguaje natural (NLP), construida en la biblioteca spaCy de alto
rendimiento. Con los fundamentos --- tokenización, etiquetado de parte del
discurso, análisis de dependencias, etc. --- delegados a otra biblioteca, textacy se
enfoca principalmente en las tareas que vienen antes y después.
Caracteristicas
 Puntos de entrada convenientes para trabajar con uno o varios documentos
procesados por spaCy, con funcionalidad agregada a través de extensiones
personalizadas e identificación automática del idioma para aplicar la tubería
correcta de spaCy
 Variedad de conjuntos de datos descargables con contenido de texto y
metadatos, desde discursos del Congreso hasta literatura histórica y
comentarios de Reddit.
 E / S de archivo fácil para transmitir datos hacia y desde el disco
 Limpieza, normalización y exploración de texto sin procesar - antes del
procesamiento
 Extracción flexible de palabras, ngramas, fragmentos de sustantivos,
entidades, acrónimos, términos clave y otros elementos de interés.
 Tokenización y vectorización de documentos, con funcionalidad para
capacitación, interpretación y visualización de modelos de temas.
 Comparación de cadenas, conjuntos y documentos de similitud mediante
una variedad de métricas
 Cálculos para estadísticas de texto comunes, incluyendo Flesch-Kincaid
Grade Level y Flesch Reading Ease multilingüe
Gensim: Es un robusto kit de herramientas de modelado de vectores de código
abierto y tópicos implementado en Python. Utiliza NumPy, SciPy y opcionalmente
Cython para el rendimiento. Gensim está específicamente diseñado para manejar
grandes colecciones de texto, utilizando el flujo de datos y algoritmos
incrementales eficientes, que lo diferencian de la mayoría de los otros paquetes de
software científicos que sólo se enfocan en el procesamiento por lotes y en
memoria.

Caracerísticas de Gensim
Gensim incluye implementaciones de algoritmos tf-idf, proyecciones aleatorias,
algoritmos word2vec y document2vec, procesos jerárquicos Dirichlet (HDP),
análisis semántico latente (LSA) y asignación de Dirichlet latente (LDA),
incluyendo versiones paralelas distribuidas.

Documento 
En Gensim, un documento es un objeto del tipo de secuencia de texto (comúnmente conocido
como stren Python 3). Un documento puede ser cualquier cosa, desde un breve tweet de 140
caracteres, un solo párrafo (es decir, resumen de un artículo de revista), un artículo de noticias
o un libro.

Corpus 
Un corpus es una colección de objetos Document . Los cuerpos cumplen dos roles
en Gensim:
1. Entrada para entrenar un modelo . Durante el entrenamiento, los modelos
usan este corpus de entrenamiento para buscar temas y temas comunes,
inicializando sus parámetros internos del modelo.
Gensim se centra en no supervisadas modelos para que ninguna
intervención humana, tales como anotaciones costosos o etiquetar
documentos por parte, se requiere.
2. Documentos para organizar. Después del entrenamiento, se puede usar un
modelo de tema para extraer temas de documentos nuevos (documentos
que no se ven en el corpus de entrenamiento).
Dichos corpus pueden indexarse para consultas de similitud , consultar por
similitud semántica, agruparse, etc.
Aquí hay un ejemplo de corpus. Se compone de 9 documentos, donde cada
documento es una cadena que consta de una sola oración.
Este es un ejemplo particularmente pequeño de un corpus con fines ilustrativos. Otro ejemplo
podría ser una lista de todas las obras escritas por Shakespeare, una lista de todos los
artículos de Wikipedia o todos los tweets de una persona de interés en particular.

Después de recolectar nuestro corpus, generalmente hay una serie de pasos de


preprocesamiento que queremos realizar. Lo mantendremos simple y solo eliminaremos
algunas palabras inglesas de uso común (como 'the') y palabras que aparecen solo una vez
en el corpus. En el proceso de hacerlo, tokenizaremos nuestros datos. La tokenización divide
los documentos en palabras (en este caso, usando el espacio como delimitador).

pyLDAvis: Esta librería está diseñado para ayudar a los usuarios a interpretar los
temas que surgen de un análisis de tópicos. Nos permite visualizar en forma muy
sencilla cada uno de los temas incluidos en el texto.
Está diseñado para ayudar a los usuarios a interpretar los temas en un modelo de
tema que se ha ajustado a un corpus de datos de texto. El paquete extrae
información de un modelo de tema LDA ajustado para informar una visualización
interactiva basada en la web.
La visualización está destinada a ser utilizada dentro de un cuaderno de IPython,
pero también se puede guardar en un archivo HTML independiente para compartir
fácilmente.

Como veremos, el NLP también se está sumando a la popularidad del Deep


Learning, por lo que muchos de los frameworks que se utilizan en Deep
Learning pueden ser aplicados para realizar modelos de NLP.
Frameworks
En estos momentos, si hay un campo en donde Python sobresale sobre cualquier
otro lenguaje, es en su soporte para frameworks de Deep Learning. Existen una
gran variedad y de muy buena calidad, entre los que se destacan:
TensorFlow

Es una librería de código abierto desarrollada por Google cuya finalidad es


extender el uso del deep learning a un rango de tareas muy amplio. TensorFlow
está programado en C++ y Python, ¡Y con APIs disponibles para los usuarios de
R!
Los modelos matemáticos utilizados en TensorFlow son redes neuronales, que en
función de la arquitectura de capas y neuronas que la conforman se podrá
modelizar desde un simple modelo de regresión hasta una arquitectura mucho
más compleja de machine learning. Todo dependerá del nivel de dificultad del
problema en cuestión.

PyTorch

PyTorch es un framework de Deep Learning que utiliza el lenguaje Python y


cuenta con el apoyo de Facebook.
Está desarrollado principalmente por el grupo de investigación de IA de
Facebook. PyTorch se puede usar con Python y con C ++. Naturalmente, la
interfaz de Python está más pulida. Pytorch (respaldado por grandes como
Facebook, Microsoft, SalesForce, Uber) es inmensamente popular en los
laboratorios de investigación. Todavía no en muchos servidores de producción,
que se rigen por trabajos como TensorFlow (respaldado por Google), Pytorch se
está recuperando rápidamente.
A diferencia de la mayoría de los otros marcos de aprendizaje profundo populares
como TensorFlow , que utilizan gráficos de cálculo estático, PyTorch utiliza el
cálculo dinámico, lo que permite una mayor flexibilidad en la construcción de
arquitecturas complejas. Pytorch utiliza conceptos centrales de Python como
clases, estructuras y bucles condicionales, que son muy familiares a nuestros ojos,
por lo tanto, mucho más intuitivos de entender. Esto lo hace mucho más simple
que otros frameworks como TensorFlow que aportan su propio estilo de
programación.
Theano

Es una biblioteca de Python que le permite definir, optimizar y evaluar expresiones


matemáticas que involucran matrices multidimensionales de manera
eficiente. Características de Theano:
 estrecha integración con NumPy : use numpy.ndarray en las funciones
compiladas por Theano.
 Uso transparente de una GPU : realice cálculos intensivos en datos
mucho más rápido que en una CPU.
 diferenciación simbólica eficiente : Theano realiza sus derivadas para
funciones con una o varias entradas.
 Optimizaciones de velocidad y estabilidad : obtenga la respuesta
correcta log(1+x)incluso cuando xes realmente pequeña.
 Generación dinámica de código C : evalúe expresiones más rápido.
 Extensas pruebas unitarias y autoverificación : detecta y diagnostica
muchos tipos de errores.
CNTK

CNTK es un conjunto de herramientas, desarrolladas por Microsoft, fáciles de


usar, de código abierto que entrena algoritmos de Deep Learning para aprender
como el cerebro humano.
Microsoft Cognitive Toolkit (CNTK) es un kit de herramientas de código abierto
para el aprendizaje profundo distribuido de grado comercial. Describe las redes
neuronales como una serie de pasos computacionales a través de un gráfico
dirigido. CNTK permite al usuario realizar y combinar fácilmente tipos de modelos
populares, como los DNN de retroalimentación, las redes neuronales
convolucionales (CNN) y las redes neuronales recurrentes (RNN / LSTM). CNTK
implementa el aprendizaje de descenso de gradiente estocástico (SGD, error de
retropropagación) con diferenciación y paralelización automáticas en múltiples
GPU y servidores.

Keras
Keras es una librería de alto nivel, muy fácil de utilizar. Está escrita y mantenida
por Francis Chollet, miembro del equipo de Google Brain. Permite a los usuarios
elegir si los modelos que se construyen serán ejecutados en el grafo simbólico
de Theano, TensorFlow o CNTK.
Principios rectores
 La facilidad de uso. Keras es una API diseñada para seres humanos, no
para máquinas. Pone la experiencia del usuario al frente y al centro. Keras
sigue las mejores prácticas para reducir la carga cognitiva: ofrece API
consistentes y simples, minimiza el número de acciones del usuario
requeridas para casos de uso comunes y proporciona comentarios claros y
procesables sobre el error del usuario.
 Modularidad. Un modelo se entiende como una secuencia o un gráfico de
módulos independientes totalmente configurables que se pueden conectar
con la menor cantidad de restricciones posible. En particular, las capas
neurales, las funciones de costo, los optimizadores, los esquemas de
inicialización, las funciones de activación y los esquemas de regularización
son módulos independientes que puede combinar para crear nuevos
modelos.
 Fácil extensibilidad. Los nuevos módulos son fáciles de agregar (como
nuevas clases y funciones), y los módulos existentes proporcionan amplios
ejemplos. Poder crear fácilmente nuevos módulos permite una expresividad
total, lo que hace que Keras sea adecuado para la investigación avanzada.
 Trabaja con Python . No hay archivos de configuración de modelos
separados en un formato declarativo. Los modelos se describen en el
código Python, que es compacto, más fácil de depurar y permite la facilidad
de extensibilidad.

MXNet:
MXNet es una librería flexible y eficiente para armar modelos de Deep
Learning con soporte para varios idiomas.
Que permite definir, entrar y desplegar redes neuronales deep en un largo número
de dispositivos (desde Entornos cloud a dispositivos móviles).
Entre sus características tenemos:
· Flexible: soporta programación imperativa y simbólica
· Portable: corre en CPUs, GPUs, clusters, servers, desktops o telefónos móviles
· Soporte Múltiples Lenguajes: incluyendo C++, Python, R, Scala, Julia, Matlab y
Javascript, todos con el mismo rendimiento
· Distribuido en Cloud: soporta training distribuido en múltiples máquinas
CPU/GPU incluyendo clusters AWS, Azure, YARN y GCE
· Rendimiento: Engine optimizada en C++ paraleliza I/O y computación

Bibliografia .-

- Briega, R. (2019). Procesamiento del Lenguaje Natural con Python. Visitado el


22 Noviembre 2019, disponible en :
https://relopezbriega.github.io/blog/2017/09/23/procesamiento-del-lenguaje-
natural-con-python/

- Briega, R. (2019). Intro Python - Libro online de IAAR. Visitado el 22 Noviembre


2019, disponible en : https://iaarbook.github.io/python/#frameworks-para-
deep-learning

- software Java o Python para procesamiento de lenguaje natural. (2019).


Visitado el 22 Noviembre 2019, disponible en : https://code-
examples.net/es/q/15d7cd9
- Procesamiento del Lenguaje Natural (NLP). (2019). Visitado el 22 Noviembre
2019, disponible en :
https://www.aprendemachinelearning.com/procesamiento-del-lenguaje-
natural-nlp/

- Comenzando con spaCy para procesamiento de lenguaje natural. (2019).


Visitado el 22 Noviembre 2019, disponible en : https://medium.com/datos-y-
ciencia/comenzando-con-spacy-para-procesamiento-de-lenguaje-natural-
e8cf24a18a5a

- Frameworks de Machine Learning Open Source. (2019). Visitado el 22


Noviembre 2019, disponible en : https://planetachatbot.com/frameworks-de-
machine-learning-open-source-5cbac67d38e5

UNIVERSIDAD NACIONAL “SIGLO XX”


ÁREA TECNOLOGÍA
CARRERA INGENIERÍA INFORMÁTICA

4 to PARCIAL

INTELIGENCIA ARTIFICIAL
Librerias, Frameworks, APIS de
Procesamiento Del Lenguaje Natural En Python
Docente: Ing. Santos Irineo Juchasara
Colque
Universitario: Rayni Gean Marco Prada
Oliva
Curso: 4to año
Fecha: 24 de Noviembre de 2019

Llallagua–Potosí–Bolivia

Noviembre–2019

Potrebbero piacerti anche