Tf-idf
การนับจำนวนครั้งที่คำปรากฏในข้อความอาจเป็นประโยชน์สำหรับการสร้างโมเดล แต่คำที่ปรากฏบ่อยมากอาจทำให้ผลลัพธ์เบี่ยงเบนไปในทิศทางที่ไม่ต้องการ วิธีหนึ่งที่ช่วยลดอิทธิพลของคำเหล่านี้คือการใช้การ normalize ข้อมูล ในบทเรียนนี้จะใช้ Term frequency-inverse document frequency (Tf-idf) ตามที่ได้อธิบายไว้ในวิดีโอ Tf-idf จะลดค่าน้ำหนักของคำที่พบบ่อย ในขณะเดียวกันก็เพิ่มน้ำหนักให้กับคำที่ปรากฏในเอกสารน้อยกว่า
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
Feature Engineering สำหรับ Machine Learning ใน Python
คำแนะนำการฝึกหัด
- นำเข้า
TfidfVectorizerจากsklearn.feature_extraction.text - สร้าง
TfidfVectorizerโดยกำหนดจำนวน feature สูงสุดไว้ที่ 100 และตัด stop words ภาษาอังกฤษออก - Fit และนำ vectorizer ไปใช้กับคอลัมน์
text_cleanในขั้นตอนเดียว - สร้าง DataFrame ชื่อ
tv_dfที่บรรจุค่าน้ำหนักของคำและใช้ชื่อ feature เป็นชื่อคอลัมน์
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# Import TfidfVectorizer
____
# Instantiate TfidfVectorizer
tv = ____
# Fit the vectroizer and transform the data
tv_transformed = ____(speech_df['text_clean'])
# Create a DataFrame with these features
tv_df = pd.DataFrame(tv_transformed.____,
columns=tv.____).add_prefix('TFIDF_')
print(tv_df.head())