การใช้ n-gram ที่ยาวขึ้น
จนถึงตอนนี้คุณได้สร้างฟีเจอร์โดยอิงจากคำแต่ละคำในแต่ละข้อความ วิธีนี้อาจมีประสิทธิภาพมากเมื่อนำไปใช้ในโมเดลการเรียนรู้ของเครื่อง แต่ก็อาจกังวลได้ว่าการพิจารณาคำทีละคำจะทำให้บริบทจำนวนมากถูกละเลยไป เพื่อแก้ปัญหานี้เมื่อสร้างโมเดล คุณสามารถใช้ n-gram ซึ่งเป็นลำดับของคำจำนวน n คำที่จัดกลุ่มเข้าด้วยกัน ตัวอย่างเช่น
- bigram: ลำดับของคำสองคำที่เรียงต่อกัน
- trigram: ลำดับของคำสามคำที่เรียงต่อกัน
คุณสามารถสร้าง n-gram เหล่านี้ในชุดข้อมูลได้โดยอัตโนมัติ โดยระบุอาร์กิวเมนต์ ngram_range เป็นทูเพิล (n1, n2) ซึ่งจะรวม n-gram ทั้งหมดที่อยู่ในช่วงตั้งแต่ n1 ถึง n2
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
Feature Engineering สำหรับ Machine Learning ใน Python
คำแนะนำการฝึกหัด
- นำเข้า
CountVectorizerจากsklearn.feature_extraction.text - สร้างอินสแตนซ์ของ
CountVectorizerโดยพิจารณาเฉพาะ trigram เท่านั้น - ฟิตตัวแปลงข้อมูลและนำไปใช้กับคอลัมน์
text_cleanในขั้นตอนเดียว - พิมพ์ชื่อฟีเจอร์ที่ตัวแปลงข้อมูลสร้างขึ้น
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# Import CountVectorizer
from sklearn.feature_extraction.text import ____
# Instantiate a trigram vectorizer
cv_trigram_vec = CountVectorizer(max_features=100,
stop_words='english',
____)
# Fit and apply trigram vectorizer
cv_trigram = ____(speech_df['text_clean'])
# Print the trigram features
print(cv_trigram_vec.____)