Gensim - Documentos y Corpus
Aquí, aprenderemos sobre los conceptos centrales de Gensim, con un enfoque principal en los documentos y el corpus.
Conceptos básicos de Gensim
A continuación se presentan los conceptos y términos básicos que se necesitan para comprender y utilizar Gensim:
Document - Z Se refiere a algún texto.
Corpus - Se refiere a una colección de documentos.
Vector - La representación matemática de un documento se llama vector.
Model - Se refiere a un algoritmo que se utiliza para transformar vectores de una representación a otra.
¿Qué es un documento?
Como se discutió, se refiere a algún texto. Si entramos en algún detalle, es un objeto del tipo de secuencia de texto que se conoce como‘str’ en Python 3. Por ejemplo, en Gensim, un documento puede ser cualquier cosa como:
- Tuit corto de 140 caracteres
- Párrafo único, es decir, resumen de artículo o trabajo de investigación
- Artículo de noticias
- Book
- Novel
- Theses
Secuencia de texto
Un tipo de secuencia de texto se conoce comúnmente como ‘str’ en Python 3. Como sabemos que en Python, los datos textuales se manejan con cadenas o más específicamente ‘str’objetos. Las cadenas son básicamente secuencias inmutables de puntos de código Unicode y se pueden escribir de las siguientes formas:
Single quotes - Por ejemplo, ‘Hi! How are you?’. También nos permite incrustar comillas dobles. Por ejemplo,‘Hi! “How” are you?’
Double quotes - Por ejemplo, "Hi! How are you?". También nos permite insertar comillas simples. Por ejemplo,"Hi! 'How' are you?"
Triple quotes - Puede tener tres comillas simples como, '''Hi! How are you?'''. o tres comillas dobles como,"""Hi! 'How' are you?"""
Todos los espacios en blanco se incluirán en el literal de cadena.
Ejemplo
A continuación se muestra un ejemplo de un documento en Gensim:
Document = “Tutorialspoint.com is the biggest online tutorials library and it’s all free also”
¿Qué es Corpus?
Un corpus puede definirse como el conjunto grande y estructurado de textos legibles por máquina producidos en un entorno comunicativo natural. En Gensim, una colección de objetos de documento se denomina corpus. El plural de corpus escorpora.
Papel del Corpus en Gensim
Un corpus en Gensim cumple las dos funciones siguientes:
Sirve como entrada para entrenar un modelo
El primer e importante papel que juega un corpus en Gensim es como entrada para entrenar un modelo. Para inicializar los parámetros internos del modelo, durante el entrenamiento, el modelo busca algunos temas comunes y temas del corpus de entrenamiento. Como se discutió anteriormente, Gensim se enfoca en modelos no supervisados, por lo tanto, no requiere ningún tipo de intervención humana.
Sirve como extractor de temas
Una vez que se entrena el modelo, se puede utilizar para extraer temas de los nuevos documentos. Aquí, los nuevos documentos son los que no se utilizan en la fase de formación.
Ejemplo
El corpus puede incluir todos los tweets de una persona en particular, lista de todos los artículos de un periódico o todos los trabajos de investigación sobre un tema en particular, etc.
Recolectando Corpus
A continuación se muestra un ejemplo de pequeño corpus que contiene 5 documentos. Aquí, cada documento es una cadena que consta de una sola oración.
t_corpus = [
"A survey of user opinion of computer system response time",
"Relation of user perceived response time to error measurement",
"The generation of random binary unordered trees",
"The intersection graph of paths in trees",
"Graph minors IV Widths of trees and well quasi ordering",
]
Preprocesamiento de recopilación de corpus
Una vez que recopilamos el corpus, se deben seguir algunos pasos de preprocesamiento para mantener el corpus simple. Simplemente podemos eliminar algunas palabras en inglés de uso común como 'the'. También podemos eliminar palabras que aparecen solo una vez en el corpus.
Por ejemplo, el siguiente script de Python se utiliza para poner en minúsculas cada documento, dividirlo por espacios en blanco y filtrar las palabras vacías:
Ejemplo
import pprint
t_corpus = [
"A survey of user opinion of computer system response time",
"Relation of user perceived response time to error measurement",
"The generation of random binary unordered trees",
"The intersection graph of paths in trees",
"Graph minors IV Widths of trees and well quasi ordering",
]
stoplist = set('for a of the and to in'.split(' '))
processed_corpus = [[word for word in document.lower().split() if word not in stoplist]
for document in t_corpus]
pprint.pprint(processed_corpus)
]
Salida
[['survey', 'user', 'opinion', 'computer', 'system', 'response', 'time'],
['relation', 'user', 'perceived', 'response', 'time', 'error', 'measurement'],
['generation', 'random', 'binary', 'unordered', 'trees'],
['intersection', 'graph', 'paths', 'trees'],
['graph', 'minors', 'iv', 'widths', 'trees', 'well', 'quasi', 'ordering']]
Preprocesamiento eficaz
Gensim también proporciona una función para un preprocesamiento más eficaz del corpus. En tal tipo de preprocesamiento, podemos convertir un documento en una lista de tokens en minúsculas. También podemos ignorar los tokens que son demasiado cortos o demasiado largos. Tal función esgensim.utils.simple_preprocess(doc, deacc=False, min_len=2, max_len=15).
gensim.utils.simple_preprocess() fucntion
Gensim proporciona esta función para convertir un documento en una lista de tokens en minúsculas y también para ignorar tokens que son demasiado cortos o demasiado largos. Tiene los siguientes parámetros:
doc (str)
Se refiere al documento de entrada en el que se debe aplicar el procesamiento previo.
deacc (bool, opcional)
Este parámetro se utiliza para eliminar las marcas de acento de los tokens. Usadeaccent() para hacer esto.
min_len (int, opcional)
Con la ayuda de este parámetro, podemos establecer la longitud mínima de un token. Se descartarán los tokens más cortos que la longitud definida.
max_len (int, opcional)
Con la ayuda de este parámetro podemos establecer la longitud máxima de un token. Los tokens más largos que la longitud definida serán descartados.
La salida de esta función serían los tokens extraídos del documento de entrada.