Creación de un resumen de texto extractivo con GUI usando Python y NLTK

Kenneth Idanwekhai
de pixabay

Debe haber visto varias aplicaciones que convierten palabras largas en palabras cortas. Mientras estaba en la universidad estudiando historia, siempre buscaba formas de resumir textos escritos extremadamente largos para poder leerlos en poco tiempo. Este proceso se denomina resumen de texto. El resumen de texto es el proceso de obtener resúmenes de un texto fuente grande sin sacrificar detalles importantes. Es una poderosa técnica de procesamiento de lenguaje natural (NLP) que condensa el contenido de un texto mientras preserva su información clave.

La capacidad de los resúmenes de texto de NLP para mejorar los procedimientos de extracción de conocimiento y recuperación de información es una de sus ventajas más importantes. La tecnología permite a los expertos en disciplinas como la investigación, el periodismo y la curación de contenidos filtrar rápidamente grandes cantidades de texto y localizar la información pertinente. Estas herramientas pueden ser utilizadas por los productores de contenido para revisar y condensar artículos, publicaciones de blog o informes publicados anteriormente, lo que les brinda una comprensión completa del tema. Esto hace posible que los escritores creen material reflexivo e interesante que satisfaga las demandas de su público objetivo al mismo tiempo que asegura la originalidad y evita el plagio. Además, los maestros pueden usar herramientas de resumen de texto de NLP para evaluar la comprensión de textos de sus alumnos y señalar cualquier lugar que necesite una explicación o discusión adicional.

Tipos de resúmenes de texto

Hay principalmente dos tipos de resúmenes de texto: extractivos y abstractivos.

  1. Extractivo: Las oraciones o frases más importantes son elegidas y combinadas por resúmenes extractivos en un esfuerzo por reducir el material original. Estos resúmenes funcionan seleccionando información clave del texto original y extrayéndola literalmente para proporcionar un resumen.

2. Abstractivo → Este método de resumen va más allá de simplemente extraer frases del texto fuente, los resúmenes abstractos usan una nueva estrategia. En su lugar, buscan comprender el contenido y el contexto del texto antes de usar sus propios talentos generadores de lenguaje para producir un resumen. El material del texto original se puede parafrasear para proporcionar un significado más contextual.

Para este proyecto, usaré el método extractivo. En este tutorial, exploraremos cómo crear un resumen de texto simple usando Python y el kit de herramientas de lenguaje natural (NLTK). Revisaremos el código paso a paso, explicando su funcionalidad y brindando ejemplos a lo largo del camino.

Paso 1: Importación del paquete de Python que se utilizará

El primer paso es instalar e importar las bibliotecas necesarias. Abra su entorno de Python y ejecute el siguiente código:

!pip install nltk
import nltk
from nltk.corpus import stopwords
from nltk.tokenize import word_tokenize, sent_tokenize
import ipywidgets as widgets
from IPython.display import display

En esta sección se tratan la instalación de la biblioteca NLTK y la importación de los módulos necesarios. Estas líneas importan las bibliotecas necesarias: nltk para el procesamiento del lenguaje natural, wordnet de nltk.corpus para la recuperación de sinónimos, word_tokenize de nltk.tokenize para tokenización de palabras, ipywidgets para crear los widgets GUI, y IPython.display para mostrar los widgets. He escrito un artículo explicando los conceptos básicos de PNL aquí. Si no entiende algunos términos utilizados aquí.

nltk.download('punkt')
nltk.download('wordnet')

Estas líneas descargan los recursos NLTK necesarios para la tokenización y WordNet.

def paraphrase_text(b):
text = input_text.value.strip()

Cuando se selecciona el botón «Paráfrasis», la función paraphrase_text se define en esta línea. Se recupera el texto escrito en el widget input_text y se eliminan los espacios iniciales o posteriores.

words = word_tokenize(text)
paraphrased_text = []

Estas líneas tokenizan el texto de entrada en palabras usando el word_tokenize función e inicializar una lista vacía, paraphrased_textpara almacenar las palabras parafraseadas.

for word in words:
synonyms = wordnet.synsets(word)
if synonyms:
paraphrased_word = synonyms[0].lemmas()[0].name()
paraphrased_text.append(paraphrased_word)
else:
paraphrased_text.append(word)

Estas líneas iteran sobre cada palabra en el texto de entrada. Para cada palabra, recupera los sinónimos usando WordNet’s synsets función. Si hay sinónimos disponibles, selecciona el primer lema del primer sinset como palabra parafraseada. De lo contrario, mantiene la palabra original. Las palabras parafraseadas se recogen en el paraphrased_text lista.

paraphrased_sentence = ' '.join(paraphrased_text)
output_text.value = paraphrased_sentence

Estas líneas unen las palabras parafraseadas usando ' '.join() para formar una oración parafraseada. La oración parafraseada generada se asigna a la value atributo de la output_text widget, que actualiza el texto parafraseado que se muestra en la GUI.

input_text = widgets.Textarea(
value='',
placeholder='Enter text to paraphrase...',
layout={'height': '200px'}
)
display(input_text)

Estas líneas crean el input_text Widget de área de texto, que se utiliza para ingresar el texto a parafrasear. Inicialmente está vacío y tiene un texto de marcador de posición. El widget se muestra en el cuaderno con una altura de 200 píxeles.

paraphrase_button = widgets.Button(description='Paraphrase')
paraphrase_button.on_click(paraphrase_text)
display(paraphrase_button)

Estas líneas crean el widget de botón «Paráfrasis» usando widgets.Button y asociar el paraphrase_text funcionar con el on_click evento del botón. Cuando se hace clic en el botón, se activa el proceso de paráfrasis. El botón se muestra en el bloc de notas.

output_text = widgets.Textarea(
value='',
placeholder='Paraphrased text will appear here...',
layout={'height': '200px'},
disabled=True
)
display(output_text)

Estas líneas crean el output_text Widget de área de texto, que muestra el texto parafraseado generado. Inicialmente está vacío y tiene un texto de marcador de posición. El widget está deshabilitado, por lo que el usuario no puede editar su contenido. Se muestra en el portátil con una altura de 200 píxeles.

El producto final se ve así

Probaría la aplicación ahora usando cualquier prueba de formato largo para ver cómo funciona.

yo ingreso esto

Y se resumió así

¡Felicidades! Ha creado correctamente un resumen de texto con una GUI mediante Python, NLTK e ipywidgets. Obviamente, puedes mejorar esto y hacerlo mejor. Hay otros paquetes que mejorarían esto. Esto es solo para fines de demostración. El enfoque basado en GUI permite a los usuarios ingresar texto de manera conveniente y obtener un resumen con un solo clic. Siéntase libre de experimentar con diferentes textos y personalizar la GUI para satisfacer sus necesidades específicas.


Comentarios

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *