Qualche mese fa, uno degli strumenti di ricerca più importanti per la linguistica italiana ha avuto un potenziamento spettacolare. Lo strumento è il gruppo di corpus che per brevità chiamerò
CORIS nel suo assieme, ma che in realtà corrisponde a diversi prodotti:
Non sto ora a spiegare in dettaglio l’importanza di queste raccolte di materiali: diciamo solo che sono una delle più importanti fonti di informazioni sull’italiano scritto moderno e contemporaneo. Una ricerca al loro interno permette per esempio di vedere se una determinata costruzione grammaticale è usata o non usata, in quali percentuali è usata, e infinite altre cose.
Fino a qualche mese fa l’accesso al materiale richiedeva una registrazione (gratuita). Adesso nome utente e password non sono più richiesti, e già questo fatto rende il prodotto infinitamente più accessibile, sia agli studenti sia ai ricercatori - l’accesso è concesso esclusivamente per scopi di ricerca scientifica.
Seconda novità, i testi del CORIS sono stati lemmatizzati. Il che significa, per esempio, che tutte le forme del verbo essere adesso possono essere ricercate in un colpo solo, senza dover cercare separatamente sono, sei, e così via.
Terza novità: ai preesistenti CORIS e CODIS è stato aggiunto un corpus diacronico, il DiaCORIS, che fornisce campioni a partire dal 1861.
Descrivere in pieno le caratteristiche del CORIS richiederebbe molto spazio. Lavorando però, prima della partenza, con studenti e laureandi italiani, ho notato che un ostacolo immediato all’uso dei materiali è dato dalla documentazione. Il linguaggio di ricerca usato sul sito è infatti presentato solo in inglese (il che non dovrebbe essere un problema…) e in forma molto sintetica. Inoltre, il sistema di ricerca è in parte variato rispetto a quello usato negli anni scorsi. Infine, il linguaggio di ricerca usato è CQP, e il sito rinvia correttamente
al relativo tutorial per una documentazione completa, ma mi sembra che realizzi poi alcune funzioni in modo diverso dallo standard. Per esempio, CQP prevede che le stringhe da ricercare possano essere inserite sia tra apici doppi, sia tra apici singoli, ma nel caso del CORIS mi pare che funzionino solo gli apici doppi.
Io ho fatto un po’ di prove, e mi sembra utile mettere in linea qui sotto una breve guida in italiano sia al linguaggio di interrogazione sia al modo di presentazione dei risultati. Lascio fuori per il momento le parti relative alla ricerca lemmatizzata, che però, partendo da questa base e dalle istruzioni presentate sul sito, dovrebbero essere quasi intuitive.
Linguaggio di interrogazione
Punto di partenza: la parola. Nel corpus si può eseguire solo la ricerca per parole intere, o meglio, per stringhe contenute all’interno di apici doppi (mentre non vanno bene le virgolette generate da molti programmi di scrittura… quindi occhio al copia e incolla!) e prive di spazi. Di conseguenza, ricercare che non produce risultati: occorre scrivere "che".
Nota importante: questo sistema di interrogazione funziona solo per parole intere, e non permette la ricerca per sottostringhe. In sostanza, cioè, "che" non restituisce chele. E, no, l’asterisco non funziona… anche se io, inserendolo, ottengo risultati un po’ strani e non documentati: per esempio, se scrivo "ch*" vengono ritrovate non le parole che cominciano per ch- ma le parole composte unicamente dalla lettera c, come in questo esempio:
ma non <c>' era da preoccuparsi.
Non è possibile nemmeno inserire due o più parole all’interno della stessa coppia di virgolette: "che le" non restituisce nulla. Le parole devono essere inserite all’interno di diverse coppie di virgolette e accostate l’una all’altra, in questo modo:
"che" "le"
A differenza della versione precedente del linguaggio, non occorre quindi inserire operatori di concatenazione (tipo un “+”) tra le due parole: basta scriverle una dopo l’altra. Le parole però vengono trovate solo se compaiono nelle sequenza indicata (quindi "mia" "casa" restituisce “mia casa” ma non “casa mia”).
In una ricerca si possono indicare più alternative usando le parentesi tonde e la barra verticale. Per esempio, questa ricerca:
"il" ("mio" | "suo") "amico"
… ritrova sia “il mio amico” sia “il suo amico”.
Sembra invece scomparsa la possibilità di usare l’asterisco come sostituto di una parola intera, presente nella precedente versione. A dire il vero, però, scrivendo
"il" * "nome"
… si ottengono sia occorrenze di nome semplice, sia occorrenze di “il nome” (ma non di “il” semplice); non si trova invece “il suo nome” o simili. Quindi sembra che l’asterisco qui operi con la stessa funzione della barra verticale.
Risultati simili a quelli che si avevano con l’asterisco si ottengono però con l’ultima funzione descritta nelle istruzioni. Usando comandi di questo tipo:
"word1" []{0,AFT} "word2"
… le istruzioni dicono che il sistema “Retrieve all the occurrences of word2 in the context following the word word2”. In effetti, questo non è molto chiaro… Diciamo che i due valori messi tra parentesi graffe e separati da virgola indicano quante parole devono essere presenti, al minimo e al massimo, tra la parola inserita come “word1” e quella inserita come “word2”. Quindi:
- "il" []{0,0} "nome" fornisce come risultati solo le sequenze “il nome"
- "il" []{0,1} "nome" fornisce come risultati sia “il nome” sia “il suo nome”, “il vostro nome”, eccetera
- "il" []{1,1} "nome" fornisce come risultati solo quelli del tipo “il suo nome” (ma non “il nome”)
- "il" []{0,2} "nome" fornisce come risultati solo quelli del tipo “il suo vero nome” (ma non “il nome” o “il suo nome”)
… e così via, combinando i due numeri a piacimento. Non mi sembra ci sia nemmeno un limite superiore, nel senso che io ho provato a fare la ricerca indicando anche come intervallo {20,20} e ho ottenuto comunque risultati – anche se, certo, non risultati linguisticamente significativi!
Altra variazione: adesso la ricerca di default è case sensitive, ma per renderla case insensitive basta aggiungere %c alla parola ricercata, subito dopo le virgolette e senza spazi in mezzo.
Infine, le istruzioni attuali non includono un’altra informazione importante: i segni di punteggiatura e i simboli vengono trattati come parole. Quindi, per cercare “ma, in” occorre scrivere "ma" "," "in", mettendo anche la virgola tra doppi apici.
Risultati
I dati vengono restituiti sotto forma di concordanze KWIC, fino a un massimo di 1000 (o, in alternativa, un massimo di 30, default, o 100, o 300). Nel caso che le concordanze nel corpus siano più del massimo impostato, se ne vede solo un campione. Sembra scomparsa la possibilità di scegliere il modo per realizzare il campione, che nella precedente versione del corpus poteva essere determinata dall’utente scegliendo tra due criteri: “1 every n-h” o “Random”. Non è indicato quale dei due criteri venga utilizzato adesso (immagino comunque il primo).
Allo stesso modo, è scomparsa la possibilità di indicare l’ampiezza del contesto: adesso vengono forniti solo i 30 caratteri precedenti e i 30 caratteri seguenti. Sia questa opzione sia quella precedente sono comunque ancora attive nel CODIS.
Per ogni risultato viene fornita l’indicazione del sottocorpus di provenienza (ma non del testo di provenienza.
Il menu a tendina “Unsorted” dà la possibilità di non presentare in ordine alfabetico le concordanze (default) o di ordinarle in base alle parole a destra e a sinistra della forma cercata (fino a un massimo di 4 parole). Anche in questo caso i segni di punteggiatura vengono trattati come parole a sé stanti.
Le collocazioni possono essere ottenute o non ottenute (default). Se si richiedono le collocazioni, non è piu possibile scegliere se averle “before reduction” o “after reduction” (estraendo i collocati dai contesti dei nodi prima o dopo della riduzione delle occorrenze, calcolandoli cioè su TOT contesti oppure su K). Il sistema non precisa quale delle due impostazioni sia applicata adesso.
Per quanto riguarda il metodo di calcolo delle collocazioni, sapevo (su indicazione di Fabio Tamburini) che la mutual information veniva ricavata secondo la formula:
MI = 100 * log2 f(node,collocate)*DimCorpus / (f(node)*f(collocate))
Il T-score veniva invece calcolato secondo la formula:
Tscore = 100 * (f(node,colloc) - f(node)*f(colloc)/DimCorpus) / sqrt(f(node,colloc))
Le formule erano tratte da M. Stubbs (1995), “Collocations and semantic profiles”, Functions of Language, 2, 1, pp. 23-55. Immagino che anche con l’aggiornamento del sito siano rimaste invariate.