Primeros pasos con Gensim para tareas básicas de PNL

Estás leyendo la publicación: Primeros pasos con Gensim para tareas básicas de PNL

Gensim es un paquete de Python de código abierto para el procesamiento del lenguaje natural con un enfoque especial en el modelado de temas. Está diseñado como una biblioteca de modelado de temas, lo que permite a los usuarios aplicar modelos académicos comunes en producción o proyectos. Entonces, en este artículo, hablaremos sobre esta biblioteca y sus principales funciones y características, así como varias tareas relacionadas con la PNL. A continuación se presentan los puntos principales que vamos a discutir a lo largo de esta publicación.

Tabla de contenido

  1. ¿Qué es Gensim?
  2. Características del genismo
  3. PNL práctica con Gensim
    1. Creación de un diccionario a partir de una lista de oraciones
    2. Bolsa de palabras
    3. Creando bi-grama
    4. Creación de matriz TF-IDF

Primero analicemos la biblioteca Gensim.

¿Qué es Gensim?

Gensim es un software de código abierto que realiza el modelado de temas sin supervisión y el procesamiento del lenguaje natural utilizando el aprendizaje automático estadístico moderno. Gensim está escrito en Python y Cython para el rendimiento. Está diseñado para manejar grandes colecciones de texto mediante la transmisión de datos y algoritmos en línea incrementales, lo que lo diferencia de la mayoría de los demás paquetes de software de aprendizaje automático que solo están diseñados para el procesamiento en memoria.

Gensim no es una biblioteca de investigación de NLP que lo abarque todo (como NLTK); más bien, es una colección madura, específica y eficiente de herramientas de PNL para el modelado de sujetos. También incluye herramientas para cargar incrustaciones de palabras previamente entrenadas en una variedad de formatos, así como para usar y consultar una incrustación cargada.

Características del genismo

Las siguientes son algunas de las características del gensim.

Gensim proporciona implementaciones multinúcleo eficientes de técnicas comunes que incluyen análisis semántico latente (LSA), asignación de Dirichlet latente (LDA), proyecciones aleatorias (RP) y proceso de Dirichlet jerárquico para acelerar el procesamiento y la recuperación en clústeres de máquinas (HDP).

🔥 Recomendado:  Las 5 mejores herramientas de IA para marketing

Usando sus algoritmos de entrenamiento en línea incrementales, Gensim puede procesar fácilmente corpus masivos y de escala web. Es escalable ya que no es necesario que todo el corpus de entrada esté completamente almacenado en la memoria de acceso aleatorio (RAM) en un momento dado. En otras palabras, independientemente del tamaño del corpus, todos sus métodos son independientes de la memoria.

Gensim es un sistema fuerte que ha sido utilizado en una variedad de sistemas por una variedad de personas. Nuestro propio corpus de entrada o flujo de datos se puede conectar fácilmente. También es sencillo agregarle otros algoritmos de espacio vectorial.

PNL práctica con Gensim

En esta sección, abordaremos algunas de las tareas básicas de PNL mediante el uso de Gensim. Comencemos primero con la creación del diccionario.

1. Crear un diccionario a partir de una lista de oraciones

Gensim requiere que las palabras (también conocidas como tokens) se traduzcan a identificaciones únicas para poder trabajar en documentos de texto. Para lograr esto, Gensim le permite crear un objeto Diccionario que asigna cada palabra a una identificación única. Podemos hacer esto transformando nuestro texto/frases en una lista de palabras y pasándola al corpus.Diccionario() método.

En la siguiente parte, veremos cómo hacer esto realmente. El objeto de diccionario se usa a menudo para generar un Corpus de ‘bolsa de palabras’. Este Diccionario, así como la bolsa de palabras (Corpus), se utilizan como entradas para el modelado de temas de Gensim y otros modelos.

Aquí está el fragmento que crea el diccionario para un texto dado.

texto = [
“Gensim is an open-source library for”,
“unsupervised topic modeling and”,
“natural language processing.”
]
# obtener las palabras separadas text_tokens = [[tok for tok in doc.split()] for doc in text]# crear diccionario dict_ = corpora.Dictionary(text_tokens) # obtener los tkens e ids pprint(dict_.token2id)

2. Bolsa de palabras

El Corpus es el siguiente elemento importante que debe aprender si desea usar gensim de manera efectiva (una bolsa de palabras). Es un objeto de corpus que contiene tanto la palabra id como la frecuencia con la que aparece en cada documento.

🔥 Recomendado:  Los investigadores del Sony Computer Science Lab (CSL) han desarrollado un modelo basado en el aprendizaje automático llamado "SampleMatch", que puede recuperar automáticamente muestras de batería que coinciden con una pista de música específica...

Para crear una bolsa de corpus de palabras, todo lo que se requiere es alimentar la lista de palabras tokenizadas al Diccionario después de que se haya actualizado. doc2bow(). Para generar BOW, continuaremos con el texto tokenizado del ejemplo anterior.

# tokens text_tokens = [[tok for tok in doc.split()] para doc en texto]# crear dict dict_ = corpora.Dictionary() #BOW BoW_corpus = [dict_.doc2bow(doc, allow_update=True) for doc in text_tokens]
pprint(BoW_corpus)

El (0, 1) en la línea 1 indica que la palabra id=0 aparece solo una vez en la primera oración. De manera similar, el (10, 1) en el tercer elemento de la lista indica que la palabra con el id 10 aparece en la tercera frase una vez. Etcétera.

3. Creación de Bi-grama

Ciertas palabras en los párrafos aparecen invariablemente en pares (bigram) o en grupos de tres (trigram). Porque los dos términos cuando se unen forman la entidad real. La formación de bigramas y trigramas a partir de frases es fundamental, especialmente cuando se trabaja con modelos de bolsa de palabras. Es simple y rápido con el modelo Phrases de Gensim. Debido a que el modelo construido de Frases soporta la indexación, simplemente envíe el texto original (lista) al modelo construido de Frases para generar los bigramas.

from gensim.models.phrases import Phrases # Construir los modelos bigram bigram = gensim.models.phrases.Phrases(text_tokens, min_count=3, threshold=10) #Construir bigram pprint(bigram[text_tokens[0]])

4. Creación de matriz TF-IDF

Al igual que el modelo de corpus regular, el modelo Frecuencia de término – Frecuencia de documento inversa (TF-IDF) reduce el peso de los tokens (palabras) que aparecen con frecuencia en los textos. Tf-Idf se calcula dividiendo un componente local, como la frecuencia de término (TF), por un componente global, como la frecuencia de documento inversa (IDF), y luego normalizando el resultado a la longitud de la unidad. Como resultado, las frases que aparecen con frecuencia en las publicaciones tendrán menos peso.

🔥 Recomendado:  Una lista de verificación de 14 puntos para un lanzamiento de sitio web feliz con SEO

Hay varias modificaciones de fórmula para TF e IDF. A continuación se muestra la forma en que podemos obtener la matriz TF-IDF. Los fragmentos de golpe obtienen primero la frecuencia dada por el BOW y luego por el TF-IDF.

from gensim.utils import simple_preprocess from gensim import models import numpy as np # datos a procesar doc = [
“Gensim is an open-source library for “,
“unsupervised topic modeling and”,
“natural language processing.”]

# Crear el Diccionario y Corpus mydict = corpora.Dictionary([simple_preprocess(line) for line in doc]) cuerpo = [mydict.doc2bow(simple_preprocess(line)) for line in doc]

# Mostrar los Pesos de las palabras en Corpus para doc en corpus: print([[mydict[id]freq]para id, freq en doc])

Ahora moviéndose con TF-IDF, solo necesitamos ajustar el modelo y acceder a los pesos por bucles y condiciones para cada palabra.

# Crear el modelo TF-IDF tfidf = models.TfidfModel(corpus, smartirs=”ntc”) # Mostrar los pesos TF-IDF para doc en tfidf[corpus]: imprimir([[mydict[id]np.around(frecuencia, decimales=2)]para id, frecuencia en doc])

Aquí está la salida.

Ultimas palabras

A lo largo de este artículo, hemos discutido la biblioteca basada en Python llamada Gensim, que es un tipo de biblioteca modular que nos brinda la posibilidad de construir algoritmos SOTA y canalizaciones para problemas relacionados con la PNL. Esta publicación trata sobre cómo comenzar con Gensim, donde prácticamente hemos abordado algunas de las tareas básicas relacionadas con la PNL y las hemos entendido.

Referencia

Tabla de Contenido