Gensim - Documentos e Corpus
Aqui, aprenderemos sobre os conceitos centrais do Gensim, com foco principal nos documentos e no corpus.
Conceitos Básicos de Gensim
A seguir estão os principais conceitos e termos que são necessários para entender e usar o Gensim -
Document - ZIt se refere a algum texto.
Corpus - Refere-se a uma coleção de documentos.
Vector - A representação matemática de um documento é chamada de vetor.
Model - Refere-se a um algoritmo usado para transformar vetores de uma representação para outra.
O que é documento?
Conforme discutido, refere-se a algum texto. Se formos em alguns detalhes, é um objeto do tipo de sequência de texto que é conhecido como‘str’ no Python 3. Por exemplo, no Gensim, um documento pode ser qualquer coisa como -
- Tuíte curto de 140 caracteres
- Parágrafo único, ou seja, artigo ou resumo de artigo de pesquisa
- Artigo de notícias
- Book
- Novel
- Theses
Sequência de Texto
Um tipo de sequência de texto é comumente conhecido como ‘str’ em Python 3. Como sabemos que em Python, os dados textuais são tratados com strings ou mais especificamente ‘str’objetos. Strings são basicamente sequências imutáveis de pontos de código Unicode e podem ser escritas das seguintes maneiras -
Single quotes - Por exemplo, ‘Hi! How are you?’. Também nos permite inserir aspas duplas. Por exemplo,‘Hi! “How” are you?’
Double quotes - Por exemplo, "Hi! How are you?". Também nos permite inserir aspas simples. Por exemplo,"Hi! 'How' are you?"
Triple quotes - Pode ter três aspas simples, como, '''Hi! How are you?'''. ou três aspas duplas como,"""Hi! 'How' are you?"""
Todos os espaços em branco serão incluídos no literal da string.
Exemplo
A seguir está um exemplo de um documento no Gensim -
Document = “Tutorialspoint.com is the biggest online tutorials library and it’s all free also”
O que é Corpus?
Um corpus pode ser definido como o conjunto grande e estruturado de textos legíveis por máquina produzidos em um ambiente comunicativo natural. No Gensim, uma coleção de objetos de documentos é chamada de corpus. O plural de corpus écorpora.
Papel do Corpus em Gensim
Um corpus em Gensim desempenha as duas funções a seguir -
Serve como entrada para treinar um modelo
O primeiro e importante papel que um corpus desempenha no Gensim é como uma entrada para treinar um modelo. Para inicializar os parâmetros internos do modelo, durante o treinamento, o modelo procura alguns temas e tópicos comuns do corpus de treinamento. Como discutido acima, Gensim se concentra em modelos não supervisionados, portanto, não requer nenhum tipo de intervenção humana.
Serve como extrator de tópicos
Depois que o modelo é treinado, ele pode ser usado para extrair tópicos dos novos documentos. Aqui, os novos documentos são aqueles que não são utilizados na fase de treinamento.
Exemplo
O corpus pode incluir todos os tweets de uma pessoa em particular, lista de todos os artigos de um jornal ou todos os trabalhos de pesquisa sobre um determinado tópico etc.
Coletando Corpus
A seguir está um exemplo de pequeno corpus que contém 5 documentos. Aqui, todo documento é uma string que consiste em uma única frase.
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",
]
Preprocessing Collecting Corpus
Depois de coletar o corpus, algumas etapas de pré-processamento devem ser realizadas para manter o corpus simples. Podemos simplesmente remover algumas palavras em inglês comumente usadas, como 'o'. Também podemos remover palavras que ocorrem apenas uma vez no corpus.
Por exemplo, o seguinte script Python é usado para colocar cada documento em minúsculas, dividi-lo por espaço em branco e filtrar palavras de parada -
Exemplo
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)
]
Resultado
[['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']]
Pré-processamento eficaz
O Gensim também fornece funções para um pré-processamento mais eficaz do corpus. Nesse tipo de pré-processamento, podemos converter um documento em uma lista de tokens minúsculos. Também podemos ignorar tokens muito curtos ou muito longos. Essa função égensim.utils.simple_preprocess(doc, deacc=False, min_len=2, max_len=15).
gensim.utils.simple_preprocess() fucntion
O Gensim fornece essa função para converter um documento em uma lista de tokens minúsculos e também para ignorar tokens que são muito curtos ou muito longos. Possui os seguintes parâmetros -
doc (str)
Refere-se ao documento de entrada no qual o pré-processamento deve ser aplicado.
deacc (bool, opcional)
Este parâmetro é usado para remover as marcas de acento dos tokens. Usadeaccent() para fazer isso.
min_len (int, opcional)
Com a ajuda deste parâmetro, podemos definir o comprimento mínimo de um token. Os tokens menores que o comprimento definido serão descartados.
max_len (int, opcional)
Com a ajuda deste parâmetro, podemos definir o comprimento máximo de um token. Os tokens maiores que o comprimento definido serão descartados.
A saída desta função seriam os tokens extraídos do documento de entrada.