标点、数字与分词
在上一章的结尾,您加载了一个已标注的短信(SMS)数据集,标签为 "spam"(标签 1)或 "ham"(标签 0)。接下来您将使用这些数据来构建一个分类器模型。
但在开始之前,您需要先按如下方式准备短信文本:
- 移除标点和数字
- 分词(将文本拆分为单个词)
- 去除停用词
- 应用哈希技巧(hashing trick)
- 转换为 TF-IDF 表示。
本练习中,您将先移除标点和数字,然后对消息进行分词。
短信数据存储在 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)