top of page

Text Mining

Immagine del redattore: Mattia GattoMattia Gatto

Il text mining può essere considerato come la scoperta, da parte di una macchina, di nuove informazioni precedentemente sconosciute, estraendole automaticamente da differenti risorse testuali. Il Text mining è essenziale per identificare la ricerca di nuove intuizioni, tendenze o modelli di dati basati su testo che potrebbero essere di notevole supporto decisionale in alcuni campi come quello del business. Ad oggi le principali fonti di dati per le applicazioni di text mining sono acquisite da supporto tecnico ai clienti, e-mail, memo, pubblicità, marketing, messaggi, riviste, pubblicazioni, libri e contenuti di social media, e numerose altre sorgenti informative testuali.


Costruzione del processo di Text Mining


Il processo di text mining prevede principalmente cinque fasi:

  1. Text Pre-processing: I dati di testo grezzi devono essere sottoposti ad una fase di pre-processing al fine di poter estrarre i contenuti informativi e modellarli in forme appropriate per le successive fasi di apprendimento ed analisi. Alcune delle principali operazioni sono descritte brevemente di seguito:

    1. Text Normalization: questa fase indica un processo che comporta la manipolazione del testo attraverso una serie di operazioni a livello di carattere, tra cui conversione delle lettere in minuscolo o in maiuscolo, rimozione dei numeri e della punteggiatura. Il linguaggio di programmazione Python può essere impiegato per implementare questa fase.

    2. Tokenization: In questo processo, l'intero testo viene scomposto in parti più piccole chiamate token. In Python, ad esempio, esistono strumenti quali NLTK, SpaCy e Gensim3 che possono essere utilizzati per la tokenizzazione.

    3. Stemming: questo è un processo di riduzione delle parole alla loro forma di base o radice. I due principali algoritmi utilizzati per questo processo sono l'algoritmo di Porter e l'algoritmo di Lancaster. Le librerie NLTK e Snowball possono essere utilizzate per questa applicazione.

    4. Lemmatization: Lo scopo della lemmatizzazione, come quello dello stemming, è quello di ridurre le forme flesse ad una forma di base comune. La lemmatizzazione non rimuove semplicemente le forme flesse, ma, utilizza le informazioni provenienti da diversi repository computazionali per ottenere le forme di base corrette delle parole.

    5. Part-of-speech Tagging: Ha lo scopo di assegnare parti del discorso a ciascuna parola di un determinato testo in base al suo significato e contesto. NLTK, spaCy, Pattern sono alcune librerie che possono essere utilizzate per questa fase.

    6. Chunking: identifica le parti costitutive delle frasi e le collega a unità di ordine superiore che hanno significati grammaticali discreti. NLTK è un buon strumento per il chunking.

    7. Named Entity Recognition (NER): Ha lo scopo di trovare entità denominate nel testo e classificarle in categorie predefinite. NLTK e spaCy possono essere utilizzati per fare ciò.

    8. Relationship Extraction: consiste nell’identificare le relazioni tra entità denominate come persone, organizzazioni, ecc. Permette, inoltre, di ottenere informazioni strutturate da fonti non strutturate come il testo grezzo.

  2. Text Transformation: Questo processo coinvolge principalmente la rappresentazione del documento da parte del testo che contiene il numero di occorrenze. In questa fase è possibile utilizzare approcci quali:

    1. Bag of Words: Un testo è rappresentato come un bag of words (multi-set), ignorando la grammatica e persino l'ordine delle parole, ma mantenendo la molteplicità.

    2. Vector Space: un documento viene convertito in un vettore di termini di indice derivati da parole. Ogni dimensione del vettore corrisponde a un termine che appare nel loro testo e il peso assegnato indica l'importanza del termine per il testo.

  3. Feature Selection: è il processo di riduzione del numero di variabili durante la creazione di un modello predittivo. Le caratteristiche irrilevanti possono aumentare la complessità e diminuire l'accuratezza dell'analisi, è auspicabile ridurre il numero di variabili di input sia per il costo computazionale nella modellazione sia per migliorare le prestazioni del modello. Nella Feature Selection, inoltre, vi è la selezione delle features più rilevanti dalle variabili disponibili, con il fine di fornire le informazioni più utili per la previsione.

  4. Data Mining: Qui si combina il processo di text mining con le tradizionali tecniche di data mining. Una volta che i dati sono strutturati successivamente ai processi di cui sopra si è discusso, le classiche tecniche di data mining vengono applicate sui dati per recuperare informazioni. Queste tecniche includono classificazione, clustering, regressione, regole di previsione e associazione.

  5. Evaluation: Dopo aver applicato le tecniche di data mining, si ottiene un risultato finale. Tale risultato deve essere valutato e controllato riguardo l'accuratezza raggiunta nella valutazione.


Applicazioni di Text Mining

Ogni giorno attraverso attività economiche, accademiche e sociali enormi quantità di dati vengono create, ma tutte queste informazioni possono essere utilizzate in modo ottimale con una corretta combinazione di tecniche di funzionalità. Il text mining è stato ed è tuttora ampiamente utilizzato nei domini aziendali, alcune delle applicazioni del text mining potrebbero essere:

  1. Risk Management: L'enorme quantità di dati testuali disponibili aiuta le aziende ad avere uno sguardo più approfondito sulla loro salute e prestazioni. L'analisi del rischio è un fattore importante nello sviluppo di ogni azienda. Un'analisi del rischio insufficiente potrebbe comportare gravi fallimenti per l'azienda. Il text mining può consentire all'azienda di mitigare i fattori di rischio e può in questo caso aiutare a decidere in quali aziende investire, a quali persone concedere prestiti e molto altro ancora, analizzando i documenti e i profili dei vari clienti.

  2. Customer Care Services: Il text mining e l'elaborazione del linguaggio naturale sono stati ampiamente utilizzati per migliorare l'esperienza del cliente, un esempio di ciò è stato la realizzazione di chat bot. Essi ad oggi, imitano i responsabili umani dell'assistenza clienti, e vengono utilizzati in molti siti Web, al fine di rendere l'esperienza dell'utente più personalizzata. Il text mining è stato utilizzato per fornire una risposta rapida e automatizzata ai clienti, che ha ridotto la loro dipendenza dagli operatori dei call center per risolvere i problemi.

  3. Personalized Advertising: Il campo della pubblicità digitale è stato rivoluzionato dallo sviluppo del text e web mining. I dati di testo relativi a tutto ciò che una persona digita o cerca online sono condivisi con le altre società, che a loro volta mostrano annunci che hanno una maggiore probabilità di essere cliccati e convertiti in una vendita.

  4. Spam Filtering: Uno dei mezzi di comunicazione che ampiamente utilizza tale servizio è l'e-mail. Le e-mail rappresentano uno strumento davvero rivoluzionario per la comunicazione e la condivisione di file, ma purtroppo, un lato oscuro di quest’ultime sono le spam che infestano le caselle di posta degli utenti. Le e-mail di spam consumano molto spazio di archiviazione e possono anche essere una fonte di virus o truffe. Varie aziende utilizzano software di text mining e tradizionali tecniche di corrispondenza per identificare e filtrare le e-mail di spam.

  5. Social Media Analysis and Crime Prevention: I social media sono una tendenza da molto tempo e milioni di utenti utilizzano questi come principale mezzo di comunicazione. Il compito di identificare i messaggi potenzialmente minacciosi da quelli normali è stato reso possibile dall'uso di software avanzati di text mining. Inoltre, l'analisi del testo online può essere un buon metodo per analizzare ciò che risulta essere di tendenza in un determinato momento, e questo può essere molto vantaggioso per varie società commerciali.


Modello Vector Space

Un modello di rappresentazione del testo largamente utilizzato è il cosiddetto Vector Space Model, che si basa sull'uso combinato del concetto di Bag-of-words insieme ad una funzione di calcolo della rilevanza dei termini in documenti, nota come TF-IDF.

  1. Bag of Words: È un concetto di base utilizzato nell'elaborazione del linguaggio naturale. Si chiama Bag of words (BOW) perché l’ordine delle parole nel documento viene trascurato.L'approccio base è unigram in quanto si considera solo una parola alla volta. Allo stesso modo si potrebbe avere il bigram (usando due parole alla volta, per esempio: ‘ecco qui’), il trigram (usando tre parole alla volta) fino al ngram (usando n parole alla volta). Utilizzando la funzione CountVectorizer attraverso il linguaggio Python è possibile convertire il documento di testo in una matrice di conteggio delle parole. La matrice che viene prodotta è una matrice sparsa. Usando CountVectorizer su un documento si ottiene una matrice sparsa n*n (n-frasi*n-parole) di tipo numpy.int64.

  2. Term Frequency-Inverse Document Frequency TF-IDF sta per Term Frequency-Inverse Document Frequency e fondamentalmente ha lo scopo di catturare l'importanza delle parole nel corpus o nel Dataset. TF-IDF si basa su due concetti:

    1. Frequenza del termine (TF)

    2. Frequenza di documento inversa (IDF)

Term Frequency è definito come la frequenza con cui la parola appare nel documento o nel corpus. La frequenza dei termini può essere definita come:


È possibile aggiungere un logaritmo per ridurre il valore del conteggio delle frequenze. L'aggiunta di log, non solo smorza le prestazioni di IDF, ma riduce anche il conteggio delle frequenze di TF. Quindi la formula di TF può essere ridefinita come:



La frequenza inversa del documento è un altro concetto che viene utilizzato per scoprire l'importanza di una parola. Per la IDF la frequenza è a livello di ogni documento nel corpus; quindi, misura la rarità di un termine all'interno del corpus. IDF è rappresentato dalla formula:



Si può dire, che l'IDF di un termine raro, cioè con poche occorrenze, è molto alto, mentre quello di un termine frequente è relativamente basso. TF-IDF è fondamentalmente una moltiplicazione tra la risultante TF per quella IDF. Per comprendere a pieno come funziona TF-IDF, è possibile prendere nota del seguente esempio. Supponendo di avere una raccolta di quattro documenti, così come segue:

  • D1: “Il cielo è azzurro.”

  • D2: “Oggi c'è il sole.”

  • D3: “Il sole nel cielo è luminoso.”

  • D4: “Possiamo vedere il sole splendente, il sole splendente.“

L’obiettivo è quello di determinare i punteggi tf-idf per ogni termine in ogni documento. Dopo un processo di pre-processing, si avrà:

  • d_1D1: " azzurro

  • d_2D2: " sole splendente oggi "

  • d_3D3: " cielo di sole splendente "

  • d_4D4: " può vedere il sole splendente sole splendente "

Disponendo dei testi successivi alla fase di pre-processing si può procedere con il:

  • Calcolare TF: trovando la matrice sparsa word-document e normalizzando in modo che la somma dei termini sia pari ad 1.

  • Calcolare IDF: trovando il numero di documenti in cui si trova ogni parola e quindi calcolando la formula:


  • Calcolare TF-IDF: moltiplicando i punteggi TF per quelli di IDF.


Similarità del coseno

La similarità del coseno non solo denota la similarità tra due vettori, ma testa anche l'ortogonalità del vettore. La similarità del coseno è rappresentata dalla formula:

dove theta è angolo tra due vettori:

  • se l'angolo è vicino allo zero si può dire che i vettori sono molto simili tra loro

  • se theta è 90 allora si può dire che i vettori sono ortogonali l'uno all'altro

  • se theta è 180 si può dire che entrambi i vettori sono opposti l'uno all'altro.

La similarità del coseno non solo scopre la similarità tra i vettori, ma ignora anche il conteggio delle frequenze delle parole. Ad esempio, supponendo che la parola 'The' appaia in un documento 200 volte e in secondo documento 500 volte, l'angolo tra entrambe le parole sarà molto vicino. Questo è il punto di partenza dell’insieme di metodologie e tecniche di word embeddings.

25 visualizzazioni0 commenti

Post recenti

Mostra tutti

Comments


bottom of page