การใช้ n-gram ที่ยาวขึ้น
จนถึงตอนนี้ได้สร้างฟีเจอร์จากคำแต่ละคำในข้อความ ซึ่งมีประสิทธิภาพดีเมื่อนำไปใช้กับโมเดล machine learning แต่การมองคำทีละคำอาจทำให้สูญเสียบริบทของข้อความไปมาก วิธีแก้คือการใช้ n-gram ซึ่งเป็นการจับกลุ่มคำต่อเนื่องกัน n คำเข้าด้วยกัน ตัวอย่างเช่น:
- bigrams: ลำดับของคำต่อเนื่องกัน 2 คำ
- trigrams: ลำดับของคำต่อเนื่องกัน 3 คำ
สามารถสร้าง n-gram เหล่านี้ในชุดข้อมูลได้โดยอัตโนมัติ ด้วยการระบุอาร์กิวเมนต์ ngram_range เป็น tuple (n1, n2) ซึ่งจะรวม n-gram ทุกช่วงตั้งแต่ n1 ถึง n2
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
Feature Engineering สำหรับ Machine Learning ใน Python
คำแนะนำการฝึกหัด
- นำเข้า
CountVectorizerจากsklearn.feature_extraction.text - สร้าง
CountVectorizerโดยพิจารณาเฉพาะ trigram - ฝึกและแปลงข้อมูลในคอลัมน์
text_cleanในขั้นตอนเดียว - แสดงชื่อฟีเจอร์ที่ vectorizer สร้างขึ้น
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# 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.____)