Lab05 INF513

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 22

Universidad de Panamá

Facultad de Informática, Electrónica y Comunicación


Escuela de Informática
Curso: INF 513.
Denominación: Inteligencia Artificial
Año Académico: 2023
Cuatrimestre: Primero
Profesor: Julio L. Arcia R.

Laboratorio 5.
Título: Procesamiento de Lenguaje Natural

Integrantes:
-Eva Gutiérrez, 8-957-1252
-Rodolfo Quintero, 8-954-1902
-Jazmín Sánchez, 8-972-1072
-Jonathan Sánchez, 2-744-554

OBJETIVOS
● Comprender las características del procesamiento y análisis de texto
● Evaluar los parámetros asociados al análisis morfológico y semántico
● Comparar las diferencias de los resultados que se obtienen para el análisis
morfológico y semántico

INTRODUCCIÓN
El Procesamiento del Lenguaje Natural (PLN) es una rama de la Inteligencia Artificial que
se enfoca en la interacción entre las computadoras y el lenguaje humano. Su objetivo es
permitir a las máquinas entender, interpretar y generar texto o discurso de manera similar
a cómo lo haría un ser humano.

El PLN implica varios niveles de procesamiento para comprender y trabajar con el


lenguaje humano. A continuación, describiré brevemente los niveles principales:

1. Nivel Morfológico: El análisis morfológico se centra en el estudio de la estructura y


formación de las palabras en un texto. Esto incluye identificar las palabras individuales,
así como descomponerlas en sus componentes más pequeños, como raíces, prefijos y
sufijos. También se analiza la categoría gramatical de cada palabra, como sustantivos,
verbos, adjetivos, etc.
2. Nivel Sintáctico: El análisis sintáctico se ocupa de la estructura gramatical y las reglas
de combinación de las palabras en una oración. Se realiza un análisis gramatical para
determinar cómo las palabras se organizan y relacionan entre sí. Esto incluye la

Página 1 de 22
identificación de las partes de la oración, como sujeto, verbo, objeto, así como la
construcción de árboles sintácticos para representar la estructura gramatical.
3. Nivel Semántico: El análisis semántico se enfoca en el significado de las palabras y las
oraciones. Busca comprender el sentido de las palabras y cómo se combinan para formar
significados más complejos. Esto implica el uso de diccionarios y recursos léxicos para
establecer relaciones semánticas entre las palabras, como sinónimos, antónimos,
hiperónimos e hipónimos.
4. Nivel Pragmático: El análisis pragmático se refiere al estudio del uso del lenguaje en un
contexto específico. Se ocupa de la interpretación de las intenciones y el significado
implícito en el discurso. Esto implica comprender los aspectos contextuales, la inferencia
de información implícita y el análisis de la coherencia y cohesión del texto.

El análisis morfológico se centra en la estructura y formación de las palabras dentro de un


texto. Involucra la identificación de las palabras individuales, así como el estudio de sus
características morfológicas, como las raíces, prefijos y sufijos. Además, se asigna una
categoría gramatical a cada palabra, como sustantivo, verbo, adjetivo, etc. El análisis
morfológico es esencial para comprender la estructura gramatical de un texto y es un paso
fundamental en el procesamiento del lenguaje natural.

El análisis semántico se ocupa del significado de las palabras y las oraciones en un texto.
Busca comprender el sentido y la interpretación de las palabras y cómo se combinan para
formar significados más complejos. Utiliza recursos léxicos como diccionarios y tesauros
para establecer relaciones semánticas entre las palabras, como sinónimos, antónimos,
hiperónimos e hipónimos. El análisis semántico es fundamental para la comprensión y
generación de texto con significado.

En el contexto del Procesamiento del Lenguaje Natural, tanto el análisis morfológico como
el análisis semántico son componentes esenciales para comprender y trabajar con el
lenguaje humano. Estos niveles de procesamiento nos permiten descomponer y
comprender la estructura de las palabras, así como asignar significado a las mismas y
establecer relaciones semánticas entre ellas.

Página 2 de 22
Figura 1. Integración conceptual de NLTK con NLP.

Para abordar los problemas relacionados con el Procesamiento del Lenguaje Natural
Python 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.
● TextBlob: TextBlob 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.
● 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 está escrita en Java, posee una interfaz con Python.
● Spacy: Es una librería relativamente nueva que sobresale por su facilidad de uso y su
velocidad a la hora de realizar el procesamiento de texto.
● Textacy: Esta es una librería de alto nivel diseñada sobre Spacy con la idea de facilitar
aún más las tareas relacionadas con el Procesamiento del Lenguaje Natural.
● Gensim: Es una librería diseñada para extraer automáticamente los temas semánticos
de los documentos de la forma más eficiente y con menos complicaciones posible.
● 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.

Dentro del contexto de NLP o para el desarrollo de modelos que sean utilizado con ese
fin, se requieren estructuras lingüísticas que brinden información adecuada de los
elementos gramaticales o las representaciones simbólicas que permitan tomar las
decisiones adecuadas. Este tipo de datos se obtienen a través de lo que se conoce como
un corpus lingüístico, el cual contiene un conjunto de datos lo suficientemente grande
como para representar la estructura, variedad y complejidad de una lengua concreta. Uno
de los corpus más populares para realizar procesos de entrenamiento es el de Wikipedia.

MATERIALES
● Computador personal o teléfono móvil
● Conexión a internet de banda ancha

EXPERIENCIA

1. Para iniciar el estudio de los procesos de búsqueda heurísticas, proceda a iniciar


sesión en Google Colab con la cuenta que ha definido. En un nuevo cuaderno jupiter,
ingrese el script que se comparte en la figura 2.

import nltk
from nltk.tokenize import word_tokenize
from nltk.corpus import wordnet

# Descargar recursos necesarios de NLTK


nltk.download('punkt') # Descargar el tokenizador de palabras

Página 3 de 22
nltk.download('averaged_perceptron_tagger') # Descargar el
etiquetador morfológico
nltk.download('wordnet') # Descargar WordNet para el procesamiento
semántico

# Función para realizar el procesamiento morfológico


def morphological_processing(text):
tokens = word_tokenize(text) # Tokenizar el texto en palabras
tagged = nltk.pos_tag(tokens) # Realizar etiquetado morfológico

return tagged

# Función para realizar el procesamiento semántico


def semantic_processing(word):
synsets = wordnet.synsets(word) # Obtener los synsets de la
palabra

if synsets:
hypernyms = synsets[0].hypernyms() # Obtener los hiperónimos
del primer synset
hyponyms = synsets[0].hyponyms() # Obtener los hipónimos del
primer synset
return hypernyms, hyponyms
else:
return None

# Ejemplo 1: Procesamiento morfológico


text = "The cat is sitting on the mat."
tagged_words = morphological_processing(text)
print("Tagged words Example 1:", tagged_words)

# Ejemplo 2: Procesamiento semántico


word = "cat"
hypernyms, hyponyms = semantic_processing(word)
if hypernyms and hyponyms:
print("Hypernyms of Example 2", word + ":", hypernyms)
print("Hyponyms of Example 2", word + ":", hyponyms)
else:
print("No synsets found for Example 2", word)

# Ejemplo 3: Procesamiento morfológico y semántico combinado


text = "The dog is barking loudly."
tagged_words = morphological_processing(text)
print("Tagged words Example 3:", tagged_words)

word = "dog"
hypernyms, hyponyms = semantic_processing(word)
if hypernyms and hyponyms:
print("Hypernyms of Example 3", word + ":", hypernyms)
print("Hyponyms of Example 3", word + ":", hyponyms)
else:
print("No synsets found for Example 3", word)

Figura 2. Ejemplo de script para análisis morfológico y semántico.

Página 4 de 22
2. Ejecute el script con los parámetros básicos establecidos y los criterios de análisis.
Evalúe los resultados que se obtienen por cada ejemplo con los datos requeridos.

Al ejecutar el script con los parámetros básicos establecidos y los criterios de análisis,
los resultados obtenidos son los siguientes:

Salida:

Análisis de los resultados:

Ejemplo 1: Procesamiento morfológico

● Texto de entrada: "The cat is sitting on the mat."


● Resultado: [('The', 'DT'), ('cat', 'NN'), ('is', 'VBZ'), ('sitting', 'VBG'), ('on', 'IN'),
('the', 'DT'), ('mat', 'NN'), ('.', '.')]
● En este ejemplo, se tokeniza el texto en palabras y se realiza el etiquetado
morfológico para cada palabra. Cada palabra se representa como una tupla que
contiene la palabra en sí y su etiqueta morfológica.
● Resultado esperado: El texto se tokeniza en palabras y se etiqueta
morfológicamente.

Ejemplo 2: Procesamiento semántico

● Palabra de entrada: "cat"


● Resultado:
● Hypernyms: [Synset('feline.n.01')]
Hyponyms: [Synset('domestic_cat.n.01'), Synset('wildcat.n.03')]
● En este ejemplo, se busca la palabra "cat" en WordNet y se obtienen los synsets
asociados. Luego se extraen los hiperónimos y los hipónimos del primer synset.
● Resultado esperado: Se encuentran los hiperónimos y los hipónimos de la palabra
"cat" en WordNet.

Ejemplo 3: Procesamiento morfológico y semántico combinado

● Texto de entrada: "The dog is barking loudly."


● Resultado: [('The', 'DT'), ('dog', 'NN'), ('is', 'VBZ'), ('barking', 'VBG'), ('loudly',
'RB'), ('.', '.')]
● Hypernyms: [Synset('canine.n.02'), Synset('domestic_animal.n.01')]
Hyponyms: [Synset('basenji.n.01'), Synset('corgi.n.01'), Synset('cur.n.01'),
Synset('dalmatian.n.02'), Synset('great_pyrenees.n.01'), Synset('griffon.n.02'),
Synset('hunting_dog.n.01'), Synset('lapdog.n.01'), Synset('leonberg.n.01'),
Synset('mexican_hairless.n.01'), Synset('newfoundland.n.01'),

Página 5 de 22
Synset('pooch.n.01'), Synset('poodle.n.01'), Synset('pug.n.01'),
Synset('puppy.n.01'), Synset('spitz.n.01'), Synset('toy_dog.n.01'),
Synset('working_dog.n.01')]
● En este ejemplo, se realiza el etiquetado morfológico del texto y se realiza el
procesamiento semántico de la palabra "dog". Se obtienen los synsets asociados,
los hiperónimos y los hipónimos.
● Resultado esperado: El texto se tokeniza y se etiqueta morfológicamente. Luego
se encuentran los hiperónimos y los hipónimos de la palabra "dog" en WordNet.

3. Explique el significado dentro del contexto del procesamiento de lenguaje natural de


los hiperónimos y los hipónimos. Evalúe según los resultados del paso 2 las
asociaciones que se han realizado de acuerdo con los datos utilizados y cómo impacta
eso el análisis morfológico y semántico de forma separada y conjunta.

Los significados de hiperónimos y los hipónimos dentro del contexto del


procesamiento de lenguaje natural es el siguiente:
● Hiperónimos: Son palabras que representan un concepto más general o una
categoría amplia. Por ejemplo, en el ejemplo 2, el hiperónimo de la palabra "cat" es
"feline" (félido). "Feline" es un concepto más general que abarca a "cat" y otras
especies de felinos.
● Hipónimos: Son palabras que representan conceptos más específicos o
subcategorías dentro de un concepto más general. En el ejemplo 2, los hipónimos
de la palabra "cat" son "domestic_cat" (gato doméstico) y "wildcat" (gato salvaje).
Estos son ejemplos específicos que se encuentran dentro de la categoría más
general de "gato".

El análisis morfológico es cómo etiquetar las palabras según su función en la oración y el


procesamiento semántico, al utilizar recursos como WordNet, enriquece el análisis al
proporcionar información sobre las relaciones de significado entre las palabras.
Cuando combinamos el análisis morfológico y semántico, obtenemos una comprensión
más completa del texto. Por ejemplo, en el ejemplo 3, al combinar ambos análisis,
podemos entender tanto la estructura gramatical de las palabras como sus significados en
relación con otras palabras en WordNet. Esto nos ayuda a extraer información más
detallada y precisa del texto, lo cual es útil para tareas como clasificar documentos,
analizar sentimientos y obtener información importante.

4. Modifique el script con los siguientes hipónimos y explique si los hiperónimos que se
obtienen coinciden con las relaciones establecidas:

Hypernym: Animal
Hyponyms: Dog, Cat, Elephant, Lion, Horse

Hypernym: Fruit
Hyponyms: Apple, Banana, Orange, Grape, Pear

Hypernym: Vehicle
Hyponyms: Automobile, Motorcycle, Bicycle, Truck, Bus

Hypernym: Country
Hyponyms: United States, Canada, Mexico, France, China

Hypernym: musical instrument

Página 6 de 22
Hyponyms: Piano, Guitar, Violin, Flute, Drums

La salida Según los cambios realizados es la siguiente:

La salida proporcionada corresponde a los resultados del procesamiento de lenguaje


natural para cada uno de los ejemplos. A continuación, se explica la salida para cada
ejemplo:
Ejemplo 1:

Este ejemplo muestra el etiquetado morfológico de las palabras en la oración "The cat
is sitting on the mat.". Cada palabra se muestra junto con su etiqueta POS
(Part-Of-Speech).

Ejemplo 2:

En este ejemplo, se utiliza la palabra "cat" (gato). La salida muestra que el hiperónimo
(hipernym) encontrado para "cat" es "feline" (félido) en la forma de
Synset('feline.n.01'). Además, se encuentran dos hipónimos (hyponyms) para "cat":
"domestic_cat" (gato doméstico) y "wildcat" (gato salvaje).

Ejemplo 3:

En este ejemplo, se utiliza la palabra "dog" (perro). La salida muestra que los
hiperónimos encontrados para "dog" son "canine" (canino) y "domestic_animal"
(animal doméstico). Además, se encuentran varios hipónimos para "dog", como
"basenji", "corgi", "dalmatian", etc.

Ejemplo 4:

Página 7 de 22
En este ejemplo, se utiliza la palabra "apple" (manzana). La salida muestra que los
hiperónimos encontrados para "apple" son "edible_fruit" (fruta comestible) y "pome"
(pomo). Además, se encuentran algunos hipónimos para "apple", como
"cooking_apple" (manzana de cocina), "crab_apple" (manzana silvestre), etc.

Ejemplo 5:

En este ejemplo, se utiliza la palabra "automobile" (automóvil). La salida muestra que


el hiperónimo encontrado para "automobile" es "motor_vehicle" (vehículo de motor).
Además, se encuentran varios hipónimos para "automobile", como "ambulance"
(ambulancia), "bus" (autobús), "sedan" (sedán), etc.

Ejemplo 6:

En este ejemplo, se utiliza la palabra "United States" (Estados Unidos). La salida


indica que no se encontraron synsets para la palabra "United States" en WordNet, por
lo tanto, no se pueden determinar hiperónimos e hipónimos.

Ejemplo 7:

En este ejemplo, se utiliza la palabra "piano". La salida muestra que los hiperónimos
encontrados para "piano" son "keyboard_instrument" (instrumento de teclado),
"percussion_instrument" (instrumento de percusión) y "stringed_instrument"
(instrumento de cuerda). Además, se encuentran algunos hipónimos para "piano",
como "grand_piano" (piano de cola), "upright" (piano vertical), etc.

5. Explique de manera detallada cómo funciona el script y analice la forma como se hace
el análisis morfológico y semántico del contenido de referencia. Brinde al menos 2
alternativas (conceptualmente) cómo se podría realizar la misma función para ampliar
la capacidad de análisis del script

Script Cómo funciona

import nltk Lo primero que podemos ver es que se


from nltk.tokenize import word_tokenize importa la biblioteca “nltk” y se descargan
from nltk.corpus import wordnet otros paquetes.

nltk.download('punkt') Se descarga el tokenizador “punkt” , este


se utiliza para dividir el texto en palabras
individuales.

nltk.download('averaged_perceptron_tagger') Se descarga el etiquetador morfológico,


este asigna etiquetas gramaticales a cada

Página 8 de 22
palabra en función de su función en la
oración

nltk.download('wordnet') Se descarga 'wordnet' el cual es una base


de datos léxica que contiene conjuntos de
sinónimos y relaciones semánticas entre
palabras.

def morphological_processing(text): Aquí empieza el procesamiento


tokens = word_tokenize(text) morfológico.
tagged = nltk.pos_tag(tokens) morphological_processing es una
return tagged función que toma un texto como entrada y
realiza los siguientes pasos;
Utiliza el tokenizador de palabras de NLTK
( word_tokenize) para dividir el texto en
palabras individuales. Esto crea una lista
de tokens (palabras) a partir del texto.

Utiliza el etiquetador morfológico de NLTK (


nltk.pos_tag) para asignar una etiqueta
gramatical a cada palabra en función de su
función en la oración. El resultado es una
lista de tuplas, donde cada tupla contiene
una palabra y su etiqueta gramatical.

def semantic_processing(word): Aquí empieza el procesamiento semántico.


synsets = wordnet.synsets(word) semantic_processing es una función que
toma una palabra como entrada y utiliza
if synsets: WordNet para realizar el procesamiento
hypernyms = synsets[0].hypernyms() semántico.
hyponyms = synsets[0].hyponyms()
else:
Luego utiliza wordnet.synsets para obtener
return None
los conjuntos de sinónimos asociados con
la palabra proporcionada.

Si se encuentran synsets se obtienen sus


hiperónimos (palabras más generales) e
hipónimos (palabras más específicas).

A continuación se explicara los ejemplos que tenían el script:

Ejemplo (script) Como funciona /explicación

# Ejemplo 1: Procesamiento Vemos que se proporciona el texto "El gato está


morfológico sentado en la alfombra", luego se llama a la función
text = "The cat is sitting on the morphological_processing para el texto que se
mat." proporcionó. El resultado muestra una lista de
tagged_words = tuplas que contienen cada palabra del texto y su
morphological_processing(text)

Página 9 de 22
print("Tagged words Example 1:", etiqueta gramatical.
tagged_words)

# Ejemplo 2: Procesamiento semántico Aquí vemos que proporciona la palabra "cat" y se


word = "cat" llama a la función semantic_processing con la
hypernyms, hyponyms = palabra que se proporcionó. Si se encuentran
semantic_processing(word) synsets para "cat", se extraen los hiperónimos e
if hypernyms and hyponyms: hipónimos del primer synset y se muestran como
print("Hypernyms of Example 2",
listas.
word + ":", hypernyms)
print("Hyponyms of Example 2",
word + ":", hyponyms)
else:
print("No synsets found for
Example 2", word)

# Ejemplo 3: Procesamiento Por último podemos ver que nuevamente se


morfológico y semántico combinado proporciona un texto, en este caso el texto es "El
text = "The dog is barking loudly." perro ladra fuerte". y se llama a la función
tagged_words = morphological_processing con el texto
morphological_processing(text) proporcionado. Luego, se realiza el procesamiento
print("Tagged words Example 3:",
semántico para la palabra "dog" utilizando la
tagged_words)
función semantic_processing.
word = "dog" Por último en los resultados se muestran las
hypernyms, hyponyms = palabras etiquetadas y los hiperónimos e hipónimos
semantic_processing(word) encontrados para la palabra "perro".
if hypernyms and hyponyms:
print("Hypernyms of Example 3",
word + ":", hypernyms)
print("Hyponyms of Example 3",
word + ":", hyponyms)
else:
print("No synsets found for
Example 3", word)

Las 2 alternativas para ampliar la capacidad de análisis del script serían las siguientes:
● En lugar de solo etiquetar las palabras, podemos analizar cómo las palabras se
conectan entre sí en una oración. Esto nos ayudaría a entender mejor cómo se
organizan y dependen unas de otras.
● También se puede agregar una función para determinar si un texto o palabras
tienen una connotación positiva, negativa o neutra. Sería como detectar si alguien
está expresando algo bueno, malo o neutral.

Estas alternativas mejorarían bastante el script , ya que ayudaría a que pueda hacer más
cosas en el procesamiento de lenguaje natural. Por un lado, podría entender mejor cómo
las palabras se relacionan y se conectan en una oración, lo que nos daría una idea más
clara de la estructura de la oración. Por otro lado, también podría identificar las emociones
expresadas en el texto, como si es positivo, negativo o neutral. Así, el script sería más
completo y versátil al analizar diferentes aspectos del lenguaje.

Página 10 de 22
6. Explique qué cambios serían necesarios para realizar el mismo tipo de análisis que se
hace con el script actual en inglés para el español. Pruebe las modificaciones
sugeridas e intente repetir el paso 4 usando las palabras en español. Compare los
resultados que se obtuvieron con relación a los que con los datos en inglés se dieron
previamente.

Para realizar el mismo tipo de análisis que se hace con el script actual en inglés para el
español, se necesitaría hacer los siguientes cambios:

Se debe hacer un cambio de la importación de NLTK para que incluya los recursos
específicos para el español. En lugar de import nltk, se puede usar import
nltk.corpus.reader.wordnet as wn para importar el módulo de WordNet en español.

Se debe descargar los recursos necesarios para el procesamiento en español. En lugar


de descargar 'punkt', 'averaged_perceptron_tagger' y 'wordnet', se necesitará descargar
los recursos adecuados para el español. Por ejemplo, se puede utilizar
nltk.download('omw') para descargar la versión en español de WordNet.

Se debe utilizar un tokenizador de palabras específico para el español. En lugar de


nltk.tokenize.word_tokenize, se puede utilizar un tokenizador adecuado para el español,
como nltk.tokenize.casual_tokenize.

Se debe realizar el etiquetado morfológico utilizando un etiquetador adecuado para el


español. Puedes investigar etiquetadores morfológicos para el español y utilizar uno
compatible con NLTK.

Se debe asegurar de que los nombres de las funciones y las variables sean apropiados
para el análisis en español. Por ejemplo, en lugar de usar morphological_processing, se
podría utilizar procesamiento_morfologico, y así una vez tras otra.

Se deben revisar si existen recursos adicionales en NLTK para el análisis semántico en


español, como sinónimos, hiperónimos e hipónimos en español. Si no hay recursos
disponibles, es posible que se necesite utilizar otras bibliotecas o enfoques para realizar el
procesamiento semántico en español.

En resumen, para adaptar el script actual al análisis en español, se necesitará cambiar las
importaciones, descargar los recursos adecuados, utilizar tokenizadores y etiquetadores
específicos para el español, y encontrar recursos semánticos en español si están
disponibles.

Página 11 de 22
Página 12 de 22
Salida:

7. Ejecute el script que se comparte en la figura 3, con los parámetros básicos


establecidos y los criterios de análisis correspondientes al lenguaje español. Evalúe la
forma como se realiza el análisis en español y determine si los cambios sugeridos en
el paso 6 coinciden con los propuestos en éste nuevo código.

#!python -m spacy download es_core_news_sm

import spacy

# Cargar el modelo de lenguaje en español


nlp = spacy.load("es_core_news_sm")

# Función para realizar el procesamiento morfológico y semántico de un


texto
def procesar_texto(texto):
# Crear un objeto Doc para el texto proporcionado
doc = nlp(texto)

# Procesamiento morfológico: lematización y etiquetado gramatical


for token in doc:
# Obtener el lema de cada palabra
lema = token.lemma_
# Obtener la etiqueta gramatical de cada palabra
etiqueta = token.pos_

print(f'Palabra: {token.text}\tLema: {lema}\tEtiqueta:


{etiqueta}')

# Procesamiento semántico: extracción de entidades nombradas


entidades = [ent.text for ent in doc.ents]
if len(entidades) > 0:
print('Entidades encontradas:')
for entidad in entidades:
print(entidad)
else:
print('No se encontraron entidades en el texto')

# Ejemplos de texto para probar el programa


texto1 = 'El gato está durmiendo en la alfombra.'

Página 13 de 22
texto2 = 'Hoy en día, el procesamiento del lenguaje natural es
ampliamente utilizado en diversas aplicaciones.'
texto3 = 'El libro "Cien años de soledad" fue escrito por Gabriel
García Márquez.'

# Procesar los textos utilizando la función definida anteriormente


print('Procesamiento del Texto 1:')
procesar_texto(texto1)

print('\nProcesamiento del Texto 2:')


procesar_texto(texto2)

print('\nProcesamiento del Texto 3:')


procesar_texto(texto3)

El código proporcionado utiliza la biblioteca spaCy para realizar el procesamiento


morfológico y semántico de un texto en español en Google Colab.
Primero, el código descarga el modelo de lenguaje preentrenado en español llamado
"es_core_news_sm" utilizando el comando spacy.load("es_core_news_sm").
A continuación, se define la función procesar_texto(texto) que toma un texto como
entrada. Dentro de la función, el texto se procesa mediante el modelo de lenguaje cargado
utilizando nlp(texto). Luego, se recorre cada token del texto y se obtiene el lema y la
etiqueta gramatical de cada palabra. Estos resultados se imprimen en la salida.
Además del procesamiento morfológico, la función también extrae las entidades
nombradas presentes en el texto utilizando doc.ents. Si se encuentran entidades, se
imprimen en la salida.
Después de definir la función, se proporcionan tres ejemplos de texto para probarla. Cada
texto se pasa a la función procesar_texto(texto) y se imprime el resultado del análisis
morfológico y semántico.
Sí se cumplen ciertos patrones similares con la 6 ya que contiene variables similares, se
pueden usar ciertas bibliotecas iguales y para la transformación del idioma español se
utillizan los mismo parámetros.

8. Ejecute el script considerando los valores descritos en el paso 4 solo que en español y
compare los resultados que se obtienen

El código para realizar esta área es :

Página 14 de 22
Página 15 de 22
la salida a este código es:

Página 16 de 22
Página 17 de 22
Para hacer la comparación se puede decir que el código adaptado (problema 8) utiliza
la biblioteca SpaCy para realizar el procesamiento morfológico y semántico de los
textos en español. Identifica entidades específicas como animales, frutas, vehículos,
países e instrumentos musicales.

Mientras que el código del problema 4 utiliza NLTK y WordNet para realizar el
etiquetado morfológico y obtener hiperónimos e hipónimos de las palabras. No
identifica entidades específicas como en el código adaptado.

Entonces, el código adaptado (problema 8) proporciona una identificación más precisa


y específica de las entidades relacionadas con animales, frutas, vehículos, países e
instrumentos musicales, mientras que el código del problema 4 ofrece una visión más
general a través del etiquetado morfológico y el uso de WordNet.

9. Investigue las librerías que se utilizan para el procesamiento de lenguaje y las


capacidades que brindan cada una de ellas para el desarrollo de procesos de análisis
morfológico o semántico

Página 18 de 22
El avance de la supercomputación y la analítica de datos en campos tan dispares
como las redes sociales o la atención al cliente está fomentando que una parte de la
inteligencia artificial (IA) se enfoque en desarrollar algoritmos capaces de procesar y
generar un lenguaje natural.

Para poder llevar a cabo esta tarea en un contexto como el actual, tener acceso a un
heterogéneo listado de bibliotecas de procesamiento de lenguaje natural es clave para
diseñar soluciones IA eficaces y funcionales de forma ágil. Estos archivos de código
fuente, que se utilizan para desarrollar software, facilitan la programación al
proporcionar funcionalidades comunes, resueltas previamente por otros
desarrolladores, evitando duplicidades y minimizando los errores.

Estas son algunas librerías que se utilizan para el procesamiento de lenguaje:

● Natural Language Toolkit (NLTK): es una biblioteca gratuita y de código abierto


para el procesamiento del lenguaje natural en Python. Esta librería ofrece una
amplia gama de funciones para el procesamiento de texto, que incluyen
tokenización, desempaquetado, etiquetado, análisis sintáctico y clasificación. NLTK
también incluye una serie de herramientas de análisis morfológico y semántico,
como la capacidad de identificar partes del discurso, extraer entidades nombradas
y realizar la desambiguación del sentido de las palabras.
● Gensim es una biblioteca Python gratuita de código abierto para modelado de
temas, procesamiento del lenguaje natural y aprendizaje automático. Proporciona
funciones para el análisis morfológico, incluyendo la capacidad de identificar afijos,
tallos y formas de palabras.
● CoreNLP es una biblioteca para procesamiento de lenguaje natural en Java.
Proporciona una amplia gama de funciones para el procesamiento de texto, que
incluyen tokenización, desempaquetado, etiquetado, análisis sintáctico y
resolución de correferencialidad. CoreNLP también incluye una serie de
herramientas de análisis morfológico y semántico, como la capacidad de identificar
partes del discurso, extraer entidades nombradas y realizar la desambiguación del
sentido de las palabras.
● spaCy es una biblioteca Python para el procesamiento del lenguaje natural.
Proporciona una serie de funciones para el análisis morfológico, incluyendo la
capacidad de identificar afijos, tallos y formas de palabras. spaCy también incluye
una serie de herramientas de análisis semántico, como la capacidad de calcular la
similitud de palabras y realizar el etiquetado de roles semánticos.
● TextBlob es una biblioteca de Python (2 y 3) para procesar datos textuales.
Proporciona una API consistente para sumergirse en tareas comunes de
procesamiento de lenguaje natural (NLP), como el etiquetado de parte del habla, la
extracción de frases nominales, el análisis de sentimientos.Text Blob también
incluye una serie de herramientas de análisis morfológico y semántico, como la
capacidad de identificar partes del discurso y extraer entidades nombradas.

10. Investigue la información que brinda el análisis morfológico y semántico dentro del
marco de procesamiento de lenguaje natural y la importancia que tiene dentro del
proceso global
El análisis morfológico y semántico son fundamentales en el procesamiento del
lenguaje natural (NLP). El análisis morfológico se enfoca en la estructura de las
palabras, mientras que el análisis semántico se centra en su significado.

Página 19 de 22
El análisis morfológico resulta importante en NLP, ya que permite a las computadoras
comprender la estructura de las palabras. Esto es especialmente útil en tareas como
la traducción automática, la generación de texto y el reconocimiento del habla. Por
ejemplo, al analizar la morfología de la palabra "walk", un sistema de traducción
automática puede determinar si se trata de un verbo o un sustantivo, y así lograr una
traducción adecuada en otro idioma.

Por su parte, el análisis semántico es igualmente importante en NLP, ya que ayuda a


las computadoras a comprender el significado de las palabras. Esto resulta valioso en
tareas como la comprensión del lenguaje natural, la respuesta automática y el
resumen de texto. Por ejemplo, mediante el análisis semántico, un sistema de
comprensión del lenguaje natural puede entender que la frase "El perro está sentado
en el sofá" implica que un perro se encuentra en una posición de sentado sobre un
mueble.

11. Investigue y proponga (en concepto), qué cambios deberían realizarse para analizar la
similitud entre palabras, frases o documentos como parte del análisis morfológico y
semántico
El análisis de la similitud entre palabras, frases o documentos es una tarea importante
en el procesamiento del lenguaje natural (NLP). Esto permite medir la proximidad o la
relación semántica entre unidades lingüísticas y es útil en aplicaciones como la
búsqueda de información, la agrupación de textos y la detección de plagio.

algunas sugerencias para mejorar el análisis de la similitud entre palabras, frases o


documentos como parte del análisis morfológico y semántico:

● Utilizar una base de datos de palabras y sus significados: Esto permitiría a los
sistemas de NLP identificar la similitud entre palabras, incluso si tienen diferentes
ortografías. Por ejemplo, se podría reconocer que "walk" y "walked" son similares,
a pesar de su ortografía distinta.

● Utilizar un modelo de lenguaje: Es fundamental tener en cuenta el contexto en el


que se encuentran las palabras o frases. El significado de una palabra puede
variar según su contexto. Esto permitiría a los sistemas de NLP comprender el
significado de las palabras en su contexto. Por ejemplo, podrían diferenciar el
significado de "dog" en la frase "El perro está sentado en el sofá" y en la frase "El
perro es mi mejor amigo".

● Utilizar una red neuronal: El uso de redes neuronales permitiría a los sistemas de
NLP aprender de los datos y mejorar su precisión con el tiempo. Por ejemplo,
podrían aprender a identificar la similitud entre palabras que no están relacionadas
en una base de datos de palabras y sus significados.

URL DEL GOOGLE COLAB:

https://colab.research.google.com/drive/1--q8UBTFJ0m6KxIFg__aYwI_cTnGgQWu?usp=s
haring

Página 20 de 22
Conclusiones
Eva Gutiérrez:
Para mi fue muy interesante ver cómo se obtuvieron resultados que incluyen el
procesamiento morfológico y semántico de textos. Pude comprender como las librerías
como NLTK y Spacy brindan herramientas para el análisis morfológico y semántico en el
procesamiento de lenguaje natural. Pude investigar cómo estas técnicas son importantes
para comprender la estructura gramatical y el significado de las palabras en un texto. Para
analizar la similitud entre palabras, frases o documentos, se pueden utilizar técnicas como
la comparación de vectores de palabras o modelos de lenguaje pre-entrenados. Esto
permite realizar tareas como la clasificación de textos o la recuperación de información.

Jazmín Sánchez:
Este laboratorio fue de mucha enseñanza, primeramente gracias al script que se
proporcionó pude entender como es el análisis morfológico y semántico, si bien es cierto
estos dos análisis pueden ser algo confuso con los ejemplos pude entenderlos muy bien,
puede ver como tanto el análisis morfológico como el semántico son fundamentales en el
procesamiento del lenguaje natural, y nos permiten comprender y extraer el significado del
texto.
También pudimos ver que para llevar a cabo todo lo anterior es necesario el uso de
bibliotecas y herramientas adecuadas que nos ayuden a llevar a cabo nuestros objetivos.
A primera vez todo se puede ver algo complicado ya que es primera vez que tratamos
este tema, pero gracia a este laboratorio te puso entender de manera fácil como es el
funcionamiento del análisis morfológico y semántico en el procesamiento de lenguaje
natural.

Jonathan Sánchez
En este laboratorio pude ver que existen diversas librerías como Spacy, TextBlob entre
otras que brindan herramientas de procesamiento morfológico semántico de un texto.
Pude comprender que el análisis morfológico se refiere a la estructura de las palabras y el
semántico se refiere a su significado y permite determinar su contexto, estos dos resultan
sumamente importantes en el procesamiento del lenguaje natural. Por otra parte, para
mejorar la similitud entre palabras, frases o documentos se pueden implementar ciertas
herramientas como base de datos de palabras, un modelo de lenguaje o utilizar una red
neuronal lo cual ayudaría a determinar de mejor manera el contexto y estructura de las
palabras.

Rodolfo Quintero:
En este laboratorio pude observar y comprender las diferentes características que posee
tanto el procesamiento y el análisis de texto, como a su vez, los análisis morfológico y
semántico con sus diferentes conceptos, análisis y definiciones de diferentes scripts en
diferentes idiomas para su funcionalidad y formación de aprendizaje y por último, la
importancia y beneficios que presenta el procesamiento del lenguaje natural como por
ejemplo, la interacción humana y máquina de un forma más optimizada, extracción de
información y sus diferentes aplicaciones en diferentes campos como, reconocimiento de
voz, corrección gramatical y búsquedas específicas en internet.

Página 21 de 22
Bibliografía

Beltrán, N. C. B. (2020). Procesamiento del lenguaje natural (PLN) - GPT-3.: aplicación en


la ingeniería de software. https://revistas.udistrital.edu.co/index.php/tia/article/view/17323

Leiva, I. G. (1996). El procesamiento del lenguaje natural aplicado al análisis del contenido
de los documentos. Dialnet. https://dialnet.unirioja.es/servlet/articulo?codigo=169971

NLTK. (2023). Kit de herramientas de lenguaje natural. NLTK. https://www.nltk.org/


Řehůřek,Radim . (2013). ¿Qué es Gensim?. Gensim.
https://radimrehurek.com/gensim/intro.html#what-is-gensim

McClosky, B. y. D. (2014). CoreNpl. CoreNLP. https://stanfordnlp.github.io/CoreNLP/

SpaCy. (2018). Procesamiento del lenguaje natural. SpaCy. https://spacy.io/


Loria, Steven. (2020). Procesamiento de texto simplificado. TextBlob.
https://textblob.readthedocs.io/en/latest/

Datos.go.es. (2022). 10 Librerías populares de procesamiento del lenguaje natural.


Datos.go.es.
https://datos.gob.es/es/blog/10-librerias-populares-de-procesamiento-del-lenguaje-natural

Rouse, M. (2020, diciembre 8). Procesamiento de lenguaje natural o NLP.


ComputerWeekly.es; TechTarget.
https://www.computerweekly.com/es/definicion/Procesamiento-de-lenguaje-natural-o-NLP

Página 22 de 22

También podría gustarte