0Pricing
Learn AI with Python · บทเรียน

การกรองตามเนื้อหา

การแทนรายการด้วย 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. การกรองแบบร่วมมือ: อิงผู้ใช้และอิงรายการ
  2. การแยกตัวประกอบเมทริกซ์ด้วย SVD
  3. การกรองตามเนื้อหา
  4. ระบบผสมและตัวชี้วัดการประเมิน
← กลับไปที่ Learn AI with Python