Стоп-слова та хешування
Далі потрібно вилучити stopwords, а потім застосувати трюк хешування, перетворивши результати на TF-IDF.
Коротке нагадування про ці поняття:
- Трюк хешування забезпечує швидкий та ощадний за пам'яттю спосіб відображення дуже великої (можливо, нескінченної) множини елементів (у нашому випадку всіх слів із SMS) на меншу, скінченну кількість значень.
- Матриця TF-IDF відображає, наскільки важливе слово для кожного документа. Вона враховує як частоту слова в межах кожного документа, так і частоту цього слова в усіх документах колекції.
Токенізовані дані SMS збережено в sms у стовпці words. Ви впорядкували пробіли в даних, тож токенізований текст став акуратнішим.
Ця вправа є частиною курсу
Machine Learning з 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)