Andiamo nel dettaglio con gli n-grammi

Sentiment Analysis con Python

Violeta Misheva

Data Scientist

Il contesto conta

Io sono felice, non triste.

Io sono triste, non felice.

  • Mettere "not" davanti a una parola (negazione) è un esempio di quanto conti il contesto.
Sentiment Analysis con Python

Catturare il contesto con un BOW

  • Unigrammi: token singoli

  • Bigrammi: coppie di token

  • Trigrammi: triple di token

  • n-grammi: sequenze di n token

Sentiment Analysis con Python

Catturare il contesto con BOW

The weather today is wonderful.

  • Unigrammi: { The, weather, today, is, wonderful }

  • Bigrammi: {The weather, weather today, today is, is wonderful}

  • Trigrammi: {The weather today, weather today is, today is wonderful}

Sentiment Analysis con Python

n-grammi con CountVectorizer

from sklearn.feature_extraction.text import CountVectorizer
vect = CountVectorizer(ngram_range=(min_n, max_n))
# Solo unigrammi
ngram_range=(1, 1)
# Uni- e bigrammi
ngram_range=(1, 2)
Sentiment Analysis con Python

Qual è il miglior n?

Sequenze di token più lunghe
  • Producono più feature
  • Maggiore precisione dei modelli di machine learning
  • Rischio di overfitting
Sentiment Analysis con Python

Specificare la dimensione del vocabolario

CountVectorizer(max_features, max_df, min_df)
  • max_features: se impostato, include solo le parole più frequenti nel vocabolario
    • Se max_features = None, include tutte le parole
  • max_df: ignora i termini con frequenza superiore a quella specificata
    • Se intero, conteggio assoluto; se float, proporzione
    • Predefinito 1.0: non ignora alcun termine
  • min_df: ignora i termini con frequenza inferiore a quella specificata
    • Se intero, conteggio assoluto; se float, proporzione
    • Predefinito 1.0: non ignora alcun termine
Sentiment Analysis con Python

Esercitiamoci!

Sentiment Analysis con Python

Preparing Video For Download...