Python | Resumidor de texto

Hoy en día, varias organizaciones, ya sean compras en línea, organizaciones gubernamentales y del sector privado, la industria de la restauración y el turismo u otras instituciones que ofrecen servicios al cliente, se preocupan por sus clientes y solicitan comentarios cada vez que utilizamos sus servicios. Considere el hecho de que estas empresas pueden recibir enormes cantidades de comentarios de los usuarios todos los días. Y sería bastante tedioso para la gerencia sentarse y analizar cada uno de ellos.
Pero, las tecnologías de hoy han llegado a un punto en el que pueden hacer todas las tareas de los seres humanos. Y el campo que hace que estas cosas sucedan es el aprendizaje automático. Las máquinas se han vuelto capaces de comprender los lenguajes humanos utilizando el procesamiento del lenguaje natural. Hoy en día se están realizando investigaciones en el campo de la analítica de texto.
Y una de esas aplicaciones de análisis de texto y NLP es un Resumen de comentarios que ayuda a resumir y acortar el texto en los comentarios de los usuarios. Esto se puede hacer con un algoritmo para reducir cuerpos de texto pero manteniendo su significado original, o brindando una gran perspectiva del texto original.

Si está interesado en el análisis de datos, encontrará muy útil aprender sobre el procesamiento del lenguaje natural. Python proporciona un inmenso soporte de biblioteca para NLP. Usaremos NLTK, el kit de herramientas de lenguaje natural. que servirá a nuestro propósito derecho.

Instale el módulo NLTK en su sistema usando:
sudo pip install nltk

Entendamos los pasos –
Paso 1: Importación de bibliotecas requeridas

Hay dos bibliotecas NLTK que serán necesarias para crear un resumen de comentarios eficiente.

from nltk.corpus import stopwords
from nltk.tokenize import word_tokenize, sent_tokenize

Términos utilizados:

  • Corpus
    Corpus significa una colección de texto. Podrían ser conjuntos de datos de cualquier cosa que contenga textos, ya sean poemas de un determinado poeta, obras de un determinado autor, etc. En este caso, vamos a utilizar un conjunto de datos de palabras vacías predeterminadas.
  • Tokenizers
    divide un texto en una serie de tokens. Hay tres tokenizadores principales: palabra, oración y tokenizador de expresiones regulares. Solo usaremos el tokenizador de palabras y oraciones.

Paso 2: eliminar las palabras vacías y almacenarlas en una array separada de palabras.

Palabra de parada

Cualquier palabra como (is, a, an, the, for) que no agrega valor al significado de una oración. Por ejemplo, digamos que tenemos la oración

 GeeksForGeeks is one of the most useful websites for competitive programming.

Después de eliminar las palabras vacías, podemos reducir el número de palabras y conservar el significado de la siguiente manera:

['GeeksForGeeks', 'one', 'useful', 'website', 'competitive', 'programming', '.']

Paso 3: Cree una tabla de frecuencia de palabras
. Un diccionario de Python que mantendrá un registro de cuántas veces aparece cada palabra en los comentarios después de eliminar las palabras vacías. Podemos usar el diccionario sobre cada oración para saber qué oraciones tienen las más relevantes. contenido en el texto general.

stopWords = set(stopwords.words("english"))
words = word_tokenize(text)
freqTable = dict()

Paso 4: Asigne puntaje a cada oración según las palabras que contiene y la tabla de frecuencia

Podemos usar el método sent_tokenize() para crear la array de oraciones. En segundo lugar, necesitaremos un diccionario para llevar la puntuación de cada oración, luego revisaremos el diccionario para generar el resumen.

sentences = sent_tokenize(text)
sentenceValue = dict()

Paso 5: Asigne un puntaje determinado para comparar las oraciones dentro de la retroalimentación.
Un enfoque simple para comparar nuestros puntajes sería encontrar el puntaje promedio de una oración. El promedio en sí mismo puede ser un buen umbral.

sumValues = 0
for sentence in sentenceValue:
    sumValues += sentenceValue[sentence]
average = int(sumValues / len(sentenceValue))

Aplique el valor de umbral y almacene oraciones en orden en el resumen.

Código: implementación completa de Text Summarizer usando Python

# importing libraries
import nltk
from nltk.corpus import stopwords
from nltk.tokenize import word_tokenize, sent_tokenize
   
# Input text - to summarize 
text = """ """
   
# Tokenizing the text
stopWords = set(stopwords.words("english"))
words = word_tokenize(text)
   
# Creating a frequency table to keep the 
# score of each word
   
freqTable = dict()
for word in words:
    word = word.lower()
    if word in stopWords:
        continue
    if word in freqTable:
        freqTable[word] += 1
    else:
        freqTable[word] = 1
   
# Creating a dictionary to keep the score
# of each sentence
sentences = sent_tokenize(text)
sentenceValue = dict()
   
for sentence in sentences:
    for word, freq in freqTable.items():
        if word in sentence.lower():
            if sentence in sentenceValue:
                sentenceValue[sentence] += freq
            else:
                sentenceValue[sentence] = freq
   
   
   
sumValues = 0
for sentence in sentenceValue:
    sumValues += sentenceValue[sentence]
   
# Average value of a sentence from the original text
   
average = int(sumValues / len(sentenceValue))
   
# Storing sentences into our summary.
summary = ''
for sentence in sentences:
    if (sentence in sentenceValue) and (sentenceValue[sentence] > (1.2 * average)):
        summary += " " + sentence
print(summary)

Aporte:

Hay muchas técnicas disponibles para generar resúmenes extractivos para mantenerlo simple, usaré un enfoque de aprendizaje no supervisado para encontrar la similitud de las oraciones y clasificarlas. El resumen se puede definir como una tarea de producir un resumen conciso y fluido mientras se preserva la información clave y el significado general. Un beneficio de esto será que no necesita entrenar y construir un modelo antes de comenzar a usarlo para su proyecto. Es bueno comprender la similitud del coseno para hacer el mejor uso del código que verá. La similitud de coseno es una medida de similitud entre dos vectores distintos de cero de un espacio de producto interno que mide el coseno del ángulo entre ellos. Mide el coseno del ángulo entre vectores. El ángulo será 0 si las oraciones son similares.

Producción

Hay muchas técnicas disponibles para generar resúmenes extractivos. El resumen se puede definir como una tarea de producir un resumen conciso y fluido mientras se preserva la información clave y el significado general. Un beneficio de esto será que no necesita entrenar y construir un modelo antes de comenzar a usarlo para su proyecto. La similitud de coseno es una medida de similitud entre dos vectores distintos de cero de un espacio de producto interno que mide el coseno del ángulo entre ellos.

Publicación traducida automáticamente

Artículo escrito por KanishkaLahori y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

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