Punteggiatura, numeri e token
Alla fine del capitolo precedente hai caricato un insieme di dati di messaggi SMS etichettati come "spam" (etichetta 1) o "ham" (etichetta 0). Ora userai questi dati per costruire un modello di classificazione.
Ma prima devi preparare i messaggi SMS come segue:
- rimuovere punteggiatura e numeri
- tokenizzare (suddividere in singole parole)
- rimuovere le stop word
- applicare l'hashing trick
- convertire nella rappresentazione TF-IDF.
In questo esercizio rimuoverai punteggiatura e numeri, quindi tokenizzerai i messaggi.
I dati degli SMS sono disponibili come sms.
Questo esercizio fa parte del corso
Machine Learning con PySpark
Istruzioni dell'esercizio
- Importa la funzione per sostituire usando espressioni regolari e la feature per tokenizzare.
- Sostituisci tutti i caratteri di punteggiatura nella colonna
textcon uno spazio. Fai lo stesso per tutti i numeri nella colonnatext. - Suddividi la colonna
textin token. Assegna alla colonna di output il nomewords.
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
# Import the necessary functions
from pyspark.sql.functions import ____
from pyspark.ml.feature import ____
# Remove punctuation (REGEX provided) and numbers
wrangled = sms.withColumn('text', ____(sms.text, '[_():;,.!?\\-]', ____))
wrangled = wrangled.withColumn(____, ____(____, ____, ____))
# Merge multiple spaces
wrangled = wrangled.withColumn('text', regexp_replace(wrangled.text, ' +', ' '))
# Split the text into words
wrangled = ____(inputCol='text', outputCol=____).____(wrangled)
wrangled.show(4, truncate=False)