การกรองตามเนื้อหา
การแทนรายการด้วย TF-IDF ความคล้ายคลึงโคไซน์ และการสร้างระบบแนะนำภาพยนตร์จากข้อมูลเมทาดาทา
การกรองตามเนื้อหา เป็นบทเรียน Learn AI with Python ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Learn AI with Python และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Learn AI with Python มีบทเรียนทั้งหมด 4 บทเรียน
การกรองแบบอิงเนื้อหาคืออะไร
การกรองแบบอิงเนื้อหาแนะนำรายการที่คล้ายกับรายการที่ผู้ใช้ชื่นชอบอยู่แล้ว โดยอิงจาก คุณลักษณะของรายการนั้นเอง เช่น ข้อความ ประเภท และแท็ก ต่างจากการกรองแบบร่วมมือ วิธีนี้ไม่ต้องใช้ข้อมูลของผู้ใช้คนอื่น จึงหลีกเลี่ยงปัญหาการเริ่มต้นแบบเย็นของรายการได้
รายการในรูปเวกเตอร์คุณลักษณะ
แนวคิดสำคัญคือ แปลงแต่ละรายการให้เป็นเวกเตอร์ตัวเลขที่อธิบายเนื้อหา แล้ววัดความคล้ายคลึงระหว่างเวกเตอร์ สำหรับคำอธิบายที่เป็นข้อความ TF-IDFเป็นวิธีคลาสสิกในการสร้างเวกเตอร์เหล่านั้น
TF-IDF คืออะไร
TF-IDF (ความถี่ของคำ-ความถี่เอกสารผกผัน) ให้น้ำหนักคำตามความถี่ที่คำปรากฏในรายการ แต่ลดน้ำหนักคำที่พบทั่วไปในรายการทั้งหมด คำที่พบได้น้อยและมีลักษณะเฉพาะจะได้รับน้ำหนักสูง ทำให้จับจุดเด่นที่ทำให้รายการมีเอกลักษณ์ได้
TfidfVectorizer
scikit-learn สามารถแปลงรายการคำอธิบายรายการให้เป็นเมทริกซ์ TF-IDF ได้ด้วยโค้ดเพียงสองบรรทัด
from sklearn.feature_extraction.text import TfidfVectorizer
vectorizer = TfidfVectorizer(stop_words="english")
tfidf_matrix = vectorizer.fit_transform(df["description"])ทำความเข้าใจรูปร่างของเมทริกซ์
tfidf_matrix มีรูปร่างเป็น (จำนวนรายการ, จำนวนคำ) โดยมีหนึ่งแถวต่อหนึ่งรายการ และหนึ่งคอลัมน์ต่อหนึ่งคำที่ไม่ซ้ำกันในคลังคำ เมทริกซ์นี้มีลักษณะเบาบาง เนื่องจากรายการส่วนใหญ่ใช้คำเพียงบางส่วนจากคำทั้งหมด
print(tfidf_matrix.shape) # (n_items, vocabulary_size)การปรับแต่งตัวแปลงเวกเตอร์
พารามิเตอร์ที่มีประโยชน์ ได้แก่ stop_words ซึ่งตัดคำทั่วไปออก max_features ซึ่งจำกัดขนาดคลังคำ และ ngram_range=(1,2) ซึ่งรวมวลีสองคำเพื่อสร้างคุณลักษณะที่มีรายละเอียดมากขึ้น
vectorizer = TfidfVectorizer(
stop_words="english",
max_features=5000,
ngram_range=(1, 2)
)ความคล้ายคลึงแบบโคไซน์ระหว่างรายการ
คำนวณความคล้ายคลึงเป็นคู่ระหว่างรายการทั้งหมด ผลลัพธ์คือเมทริกซ์ขนาด จำนวนรายการ × จำนวนรายการ โดยแต่ละเซลล์แสดงว่าคำอธิบายของรายการสองรายการคล้ายกันเพียงใด
from sklearn.metrics.pairwise import cosine_similarity
cosine_sim = cosine_similarity(tfidf_matrix)
print(cosine_sim.shape) # (n_items, n_items)ทางลัดด้วยเคอร์เนลเชิงเส้น
เนื่องจากเวกเตอร์ TF-IDF ถูกทำให้เป็นมาตรฐานแบบ L2 โดยค่าเริ่มต้น linear_kernel จึงให้ผลลัพธ์เดียวกับความคล้ายคลึงแบบโคไซน์ แต่ทำงานได้เร็วกว่า ซึ่งเป็นการปรับปรุงประสิทธิภาพที่ใช้กันทั่วไปกับคลังรายการขนาดใหญ่
from sklearn.metrics.pairwise import linear_kernel
cosine_sim = linear_kernel(tfidf_matrix, tfidf_matrix)การแมปชื่อกับดัชนี
หากต้องการค้นหารายการด้วยชื่อ ให้สร้างดัชนีย้อนกลับจากชื่อเรื่องไปยังตำแหน่งแถว
indices = pd.Series(df.index, index=df["title"]).drop_duplicates()ฟังก์ชัน get_recommendations
เมื่อได้รับชื่อเรื่อง ให้ดึงแถวความคล้ายคลึงของรายการนั้น เรียงจากมากไปน้อย ข้ามรายการนั้นเอง แล้วส่งคืนรายการที่ตรงกันมากที่สุดตามจำนวนที่ต้องการ
def get_recommendations(title, n=10):
idx = indices[title]
scores = list(enumerate(cosine_sim[idx]))
scores = sorted(scores, key=lambda x: x[1], reverse=True)
top = scores[1:n+1] # skip itself at position 0
item_idxs = [i for i, _ in top]
return df["title"].iloc[item_idxs]จุดแข็งและข้อจำกัด
จุดแข็ง: ใช้ได้กับรายการใหม่เอี่ยม และอธิบายคำแนะนำได้ เช่น “เพราะรายการนี้มีคำเหล่านี้ร่วมกัน”
ข้อจำกัด: คำแนะนำจะอยู่ภายในรสนิยมที่ผู้ใช้เคยแสดงไว้ ซึ่งอาจทำให้เจาะจงมากเกินไป และไม่สามารถค้นพบรายการข้ามประเภทที่น่าประหลาดใจได้เหมือนการกรองแบบร่วมมือ
ตรวจสอบความเข้าใจอย่างรวดเร็ว
ทดสอบความรู้เกี่ยวกับการกรองแบบอิงเนื้อหาของคุณ
สรุปทบทวน
คุณได้สร้าง การกรองแบบอิงเนื้อหา โดย TfidfVectorizer แปลงคำอธิบายให้เป็นเมทริกซ์ (จำนวนรายการ, จำนวนคำ) cosine_similarity เปรียบเทียบรายการ และ get_recommendations ส่งคืนรายการที่คล้ายกันมากที่สุดโดยข้ามรายการนั้นเอง วิธีนี้จัดการปัญหาการเริ่มต้นแบบเย็นได้ แต่มีความเสี่ยงที่จะเจาะจงมากเกินไป บทถัดไปคือระบบผสมและตัวชี้วัดการประเมินผล
คำถามที่พบบ่อย
บทเรียน “การกรองตามเนื้อหา” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การกรองตามเนื้อหา” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Learn AI with Python ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Learn AI with Python มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การกรองตามเนื้อหา”
การแทนรายการด้วย TF-IDF ความคล้ายคลึงโคไซน์ และการสร้างระบบแนะนำภาพยนตร์จากข้อมูลเมทาดาทา คุณปฏิบัติ Learn AI with Python ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Learn AI with Python หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Learn AI with Python บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน
บทเรียน “การกรองตามเนื้อหา” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Learn AI with Python นี้ได้ไหม
ได้ บทเรียน Learn AI with Python ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- การกรองแบบร่วมมือ: อิงผู้ใช้และอิงรายการ
- การแยกตัวประกอบเมทริกซ์ด้วย SVD
- การกรองตามเนื้อหา
- ระบบผสมและตัวชี้วัดการประเมิน