Stopwords และการแฮช
ขั้นตอนต่อไปคือการลบ stopwords แล้วนำ hashing trick มาใช้ จากนั้นแปลงผลลัพธ์ให้เป็น TF-IDF
ทบทวนแนวคิดเหล่านี้โดยสังเขป:
- Hashing trick เป็นวิธีที่รวดเร็วและประหยัดพื้นที่ในการแมปชุดข้อมูลขนาดใหญ่มาก (ซึ่งอาจไม่จำกัดจำนวน ในที่นี้คือคำทั้งหมดในข้อความ SMS) ให้กลายเป็นชุดค่าที่มีขนาดเล็กลงและมีจำนวนจำกัด
- เมทริกซ์ TF-IDF สะท้อนความสำคัญของคำแต่ละคำในแต่ละเอกสาร โดยคำนึงถึงทั้งความถี่ของคำในเอกสารนั้น และความถี่ของคำในเอกสารทั้งหมดในชุดข้อมูล
ข้อมูล SMS ที่ผ่านการ tokenize แล้วถูกเก็บไว้ใน sms ในคอลัมน์ชื่อ words โดยได้ปรับปรุงการจัดการช่องว่างในข้อมูลแล้ว เพื่อให้ข้อความที่ผ่านการ tokenize มีความเป็นระเบียบมากขึ้น
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
Machine Learning with PySpark
คำแนะนำการฝึกหัด
- นำเข้าคลาส
StopWordsRemover,HashingTFและIDF - สร้างออบเจกต์
StopWordsRemover(คอลัมน์อินพุตwordsคอลัมน์เอาต์พุตterms) แล้วนำไปใช้กับsms - สร้างออบเจกต์
HashingTF(อินพุตมาจากขั้นตอนก่อนหน้า คอลัมน์เอาต์พุตhash) แล้วนำไปใช้กับwrangled - สร้างออบเจกต์
IDF(อินพุตมาจากขั้นตอนก่อนหน้า คอลัมน์เอาต์พุตfeatures) แล้วนำไปใช้กับwrangled
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
from pyspark.ml.____ import ____, ____, ____
# Remove stopwords
wrangled = ____(inputCol=____, outputCol=____)\
.____(sms)
# Apply the hashing trick
wrangled = ____(____, ____, numFeatures=1024)\
.____(wrangled)
# Convert hashed symbols to TF-IDF
tf_idf = ____(____, ____)\
.____(wrangled).____(wrangled)
tf_idf.select('terms', 'features').show(4, truncate=False)