Gensim - Documents & Corpus
Qui apprenderemo i concetti fondamentali di Gensim, con focus principale sui documenti e sul corpus.
Concetti fondamentali di Gensim
Di seguito sono riportati i concetti e i termini fondamentali necessari per comprendere e utilizzare Gensim:
Document - ZSi riferisce a un testo.
Corpus - Si riferisce a una raccolta di documenti.
Vector - La rappresentazione matematica di un documento è chiamata vettore.
Model - Si riferisce a un algoritmo utilizzato per trasformare i vettori da una rappresentazione all'altra.
Cos'è il documento?
Come discusso, si riferisce a un testo. Se andiamo in qualche dettaglio, è un oggetto del tipo di sequenza di testo noto come‘str’ in Python 3. Ad esempio, in Gensim, un documento può essere qualsiasi cosa come -
- Breve tweet di 140 caratteri
- Paragrafo singolo, ad es. Abstract dell'articolo o del documento di ricerca
- Articolo di notizie
- Book
- Novel
- Theses
Sequenza di testo
Un tipo di sequenza di testo è comunemente noto come ‘str’ in Python 3. Come sappiamo che in Python, i dati testuali vengono gestiti con stringhe o più specificamente ‘str’oggetti. Le stringhe sono fondamentalmente sequenze immutabili di punti di codice Unicode e possono essere scritte nei seguenti modi:
Single quotes - Ad esempio, ‘Hi! How are you?’. Ci permette anche di incorporare virgolette doppie. Per esempio,‘Hi! “How” are you?’
Double quotes - Ad esempio, "Hi! How are you?". Ci permette anche di incorporare virgolette singole. Per esempio,"Hi! 'How' are you?"
Triple quotes - Può avere tre virgolette singole come, '''Hi! How are you?'''. o tre virgolette doppie come,"""Hi! 'How' are you?"""
Tutti gli spazi saranno inclusi nella stringa letterale.
Esempio
Di seguito è riportato un esempio di un documento in Gensim:
Document = “Tutorialspoint.com is the biggest online tutorials library and it’s all free also”
Cos'è Corpus?
Un corpus può essere definito come l'insieme ampio e strutturato di testi leggibili dalla macchina prodotti in un contesto comunicativo naturale. In Gensim, una raccolta di oggetti documento è chiamata corpus. Il plurale di corpus ècorpora.
Ruolo del corpo in Gensim
Un corpus in Gensim svolge i seguenti due ruoli:
Serve come input per l'addestramento di un modello
Il primo e importante ruolo che un corpus gioca in Gensim è come input per la formazione di un modello. Per inizializzare i parametri interni del modello, durante l'addestramento, il modello cerca alcuni temi e argomenti comuni dal corpus formativo. Come discusso in precedenza, Gensim si concentra su modelli non supervisionati, quindi non richiede alcun tipo di intervento umano.
Funge da Topic Extractor
Una volta che il modello è stato addestrato, può essere utilizzato per estrarre argomenti dai nuovi documenti. Ecco, i nuovi documenti sono quelli che non vengono utilizzati nella fase di formazione.
Esempio
Il corpus può includere tutti i tweet di una determinata persona, l'elenco di tutti gli articoli di un giornale o tutti i documenti di ricerca su un determinato argomento, ecc.
Raccolta di Corpus
Di seguito è riportato un esempio di piccolo corpus che contiene 5 documenti. Qui ogni documento è una stringa composta da una singola 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
Una volta raccolto il corpus, è necessario eseguire alcuni passaggi di preelaborazione per mantenerlo semplice. Possiamo semplicemente rimuovere alcune parole inglesi di uso comune come "the". Possiamo anche rimuovere le parole che ricorrono solo una volta nel corpus.
Ad esempio, il seguente script Python viene utilizzato per minuscolo ogni documento, dividerlo per uno spazio bianco e filtrare le parole di arresto:
Esempio
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)
]
Produzione
[['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']]
Pre-elaborazione efficace
Gensim fornisce anche funzioni per una preelaborazione più efficace del corpo. In questo tipo di pre-elaborazione, possiamo convertire un documento in un elenco di token minuscoli. Possiamo anche ignorare i gettoni troppo corti o troppo lunghi. Tale funzione ègensim.utils.simple_preprocess(doc, deacc=False, min_len=2, max_len=15).
gensim.utils.simple_preprocess() fucntion
Gensim fornisce questa funzione per convertire un documento in un elenco di token minuscoli e anche per ignorare i token che sono troppo corti o troppo lunghi. Ha i seguenti parametri:
doc (str)
Si riferisce al documento di input su cui deve essere applicata la preelaborazione.
deacc (bool, opzionale)
Questo parametro viene utilizzato per rimuovere i segni di accento dai token. Utilizzadeaccent() per farlo.
min_len (int, opzionale)
Con l'aiuto di questo parametro, possiamo impostare la lunghezza minima di un token. I gettoni più corti della lunghezza definita verranno scartati.
max_len (int, opzionale)
Con l'aiuto di questo parametro possiamo impostare la lunghezza massima di un token. I gettoni più lunghi della lunghezza definita verranno scartati.
L'output di questa funzione sarebbero i token estratti dal documento di input.