เทคนิคการทำให้ข้อความเป็นมาตรฐาน

การประมวลผลภาษาธรรมชาติ (NLP) ด้วย Python

Fouad Trad

Machine Learning Engineer

Text normalization

  • การ Normalize นำคำมาสู่รูปแบบมาตรฐาน
  • มีประโยชน์ในการจำแนกข้อความ การค้นหา และการวิเคราะห์ความรู้สึก
  • เทคนิคที่จะเรียน:
    • Lowercasing
    • Stemming
    • Lemmatization

ภาพแสดงคนสามคนที่พูดถึงความชื่นชอบในการดูภาพยนตร์ที่มีการกำกับที่ยอดเยี่ยม ในสามแบบที่แตกต่างกัน: "I enjoy watching movies with great direction!", "I enjoyed watching movies that are well-directed.", "Movies with excellent direction are something I enjoy."

การประมวลผลภาษาธรรมชาติ (NLP) ด้วย Python

Lowercasing

  • หากไม่ normalize คำเหล่านี้จะถูกมองเป็น token คนละตัว
  • ทำให้โมเดลเข้าใจผิดและทำให้ vocabulary มีขนาดใหญ่เกินจำเป็น
text  = """Data scientists and data 
engineers need DATA"""
lower_text = text.lower()

print(lower_text)
data scientists and data 
engineers need data

ภาพแสดงคนที่สับสนระหว่าง 'data', 'Data' และ 'DATA'

การประมวลผลภาษาธรรมชาติ (NLP) ด้วย Python

การใช้งาน Lowercasing

เหมาะสำหรับ

งานที่อาศัยการวิเคราะห์คำสำคัญ

ภาพแสดงคนกำลังค้นหาคำสำคัญในข้อความ

การประมวลผลภาษาธรรมชาติ (NLP) ด้วย Python

การใช้งาน Lowercasing

เหมาะสำหรับ

งานที่อาศัยการวิเคราะห์คำสำคัญ

ภาพแสดงคนกำลังค้นหาคำสำคัญในข้อความ

ไม่เหมาะสำหรับ

งานที่ต้องแยกแยะคำที่มีความหมายต่างกันตามตัวพิมพ์

ภาพแสดงกลุ่มคนแทนคำว่า "us" และธงชาติอเมริกันแทนคำว่า "US"

การประมวลผลภาษาธรรมชาติ (NLP) ด้วย Python

Stemming

  • ลดคำให้เหลือรูปรากศัพท์โดยตัด suffix ออก
    • running → run
    • reading → read
  • มีประโยชน์ในการจัดกลุ่มคำที่มีรูปแบบใกล้เคียงกัน
  • อาจได้คำที่ไม่มีอยู่จริง
    • organization → organizat

Stem_logo.png

การประมวลผลภาษาธรรมชาติ (NLP) ด้วย Python

Stemming ในโค้ด

from nltk.stem import PorterStemmer

stemmer = PorterStemmer()
tokens = ['running', 'bats', 'organizations', 'reading']
stemmed = [stemmer.stem(word) for word in tokens]
print(stemmed)
['run', 'bat', 'organizat', 'read']
การประมวลผลภาษาธรรมชาติ (NLP) ด้วย Python

Lemmatization

  • ลดคำให้เหลือรูปฐาน
  • ผลลัพธ์ที่ได้เป็นคำที่ถูกต้องเสมอ
    • organizations → organization
  • มีประโยชน์เมื่อความถูกต้องทางไวยากรณ์เป็นสิ่งสำคัญ
  • ช้ากว่า Stemming แต่แม่นยำกว่า

lemmalogo.png

การประมวลผลภาษาธรรมชาติ (NLP) ด้วย Python

Lemmatization ในโค้ด

from nltk.stem import WordNetLemmatizer

nltk.download('wordnet')
lemmatizer = WordNetLemmatizer()
tokens = ['running', 'bats', 'organizations', 'reading']
lemmatized = [lemmatizer.lemmatize(word) for word in tokens]
print(lemmatized)
['running', 'bat', 'organization', 'reading']
การประมวลผลภาษาธรรมชาติ (NLP) ด้วย Python

Stemming

  • เร็วกว่า
  • ผลลัพธ์อาจไม่ใช่คำที่มีในพจนานุกรม
  • เหมาะเมื่อต้องการความเร็ว

ภาพแสดงคนกำลังตัดต้นไม้ด้วยเลื่อยยนต์

Lemmatization

  • ช้ากว่า
  • แม่นยำกว่า
  • เหมาะเมื่อต้องการความถูกต้องทางไวยากรณ์

ภาพแสดงคนกำลังตัดแต่งต้นไม้อย่างระมัดระวังเพื่อรักษาโครงสร้าง

การประมวลผลภาษาธรรมชาติ (NLP) ด้วย Python

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

การประมวลผลภาษาธรรมชาติ (NLP) ด้วย Python

Preparing Video For Download...