การเจาะลึกด้วย n-grams

Sentiment Analysis ด้วย Python

Violeta Misheva

Data Scientist

บริบทมีความสำคัญ

ฉัน มีความสุข, ไม่ใช่เศร้า.

ฉัน เศร้า, ไม่ใช่มีความสุข.

  • การวาง 'not' ไว้หน้าคำ (การปฏิเสธ) คือตัวอย่างหนึ่งที่แสดงว่าบริบทมีความสำคัญ
Sentiment Analysis ด้วย Python

จับบริบทด้วย BOW

  • Unigrams : โทเคนเดี่ยว

  • Bigrams: คู่ของโทเคน

  • Trigrams: ชุดสามโทเคน

  • n-grams: ลำดับของ n โทเคน

Sentiment Analysis ด้วย Python

จับบริบทด้วย BOW

สภาพอากาศวันนี้ช่างสดใส

  • Unigrams : { The, weather, today, is, wonderful }

  • Bigrams: {The weather, weather today, today is, is wonderful}

  • Trigrams: {The weather today, weather today is, today is wonderful}

Sentiment Analysis ด้วย Python

n-grams ด้วย CountVectorizer

from sklearn.feature_extraction.text import CountVectorizer
vect = CountVectorizer(ngram_range=(min_n, max_n))
# Only unigrams
ngram_range=(1, 1)
# Uni- and bigrams
ngram_range=(1, 2)
Sentiment Analysis ด้วย Python

ค่า n ที่เหมาะสมคือเท่าไร?

ลำดับโทเคนที่ยาวขึ้น
  • ได้จำนวน feature มากขึ้น
  • ความแม่นยำของโมเดล machine learning สูงขึ้น
  • มีความเสี่ยง overfitting
Sentiment Analysis ด้วย Python

การกำหนดขนาด vocabulary

CountVectorizer(max_features, max_df, min_df)
  • max_features: ถ้าระบุ จะรวมเฉพาะคำที่มีความถี่สูงสุดตามจำนวนที่กำหนดไว้ใน vocabulary
    • ถ้า max_features = None จะรวมคำทั้งหมด
  • max_df: ละเว้นคำที่มีความถี่สูงกว่าค่าที่กำหนด
    • ถ้าเป็นจำนวนเต็ม ใช้เป็นจำนวนนับ; ถ้าเป็น float ใช้เป็นสัดส่วน
    • ค่าเริ่มต้นคือ 1.0 หมายความว่าไม่ละเว้นคำใดเลย
  • min_df: ละเว้นคำที่มีความถี่ต่ำกว่าค่าที่กำหนด
    • ถ้าเป็นจำนวนเต็ม ใช้เป็นจำนวนนับ; ถ้าเป็น float ใช้เป็นสัดส่วน
    • ค่าเริ่มต้นคือ 1.0 หมายความว่าไม่ละเว้นคำใดเลย
Sentiment Analysis ด้วย Python

มาฝึกกันเถอะ!

Sentiment Analysis ด้วย Python

Preparing Video For Download...