標點符號、數字與權標
在上一章的最後,你載入了一個 SMS 訊息的資料集,這些訊息已被標註為「spam」(標籤 1)或「ham」(標籤 0)。現在你要用這些資料來建立一個分類器模型。
不過在此之前,你需要先把 SMS 訊息做以下前處理:
- 移除標點符號與數字
- 權標化(切分成單字)
- 移除停用字
- 套用 hashing trick
- 轉換為 TF-IDF 表示法。
在本練習中,你會先移除標點符號與數字,然後對訊息進行權標化。
SMS 資料可由 sms 取得。
本練習屬於課程
使用 PySpark 的機器學習
練習說明
- 匯入用於以正規表示式進行取代的函式,以及用於權標化的特徵轉換器。
- 將
text欄位中的所有標點符號取代為空白。對text欄位中的所有數字也做相同處理。 - 將
text欄位切分為權標(tokens)。將輸出欄位命名為words。
動手互動練習
試著完成這個範例程式碼,體驗一下這個練習。
# 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)