Natural Language Processing (NLP) ทำงานอย่างไร

nattakit pinyorattanakit
2 min readJul 24, 2023

--

Introduction
Natural Language Processing (NLP) คือ สาขาหนึ่งในวงการ Data Science ที่เกี่ยวข้องกับการประมวลผลและการเข้าใจภาษาธรรมชาติโดยคอมพิวเตอร์ โดย NLP ได้รับความสนใจเพิ่มขึ้นอย่างต่อเนื่องในปัจจุบัน เนื่องจากสามารถนำไปใช้ได้หลากหลาย เช่น การสร้าง Chatbot, การแปลภาษาอัตโนมัติ, การวิเคราะห์ความรู้สึกของผู้ใช้งานใน Social Media, การวิเคราะห์ความคิดเห็น (Sentiment Analysis), การเขียนเรื่องราว กวี บทความ และอื่นๆ (TextGeneration) และอื่น ๆ นอกจากนี้ยังมีการนำ NLP ไปใช้ในด้านความปลอดภัยข้อมูล การค้นหาข้อมูลเชิงความหมาย (Semantic Search) และการวิเคราะห์ข้อมูลที่มีลักษณะเป็นข้อความเป็นต้น

กระบวนการเรียนรู้ภาษาของ Natural Language Processing (NLP)

  1. Lexical Level หรือที่เรียกกันอีกชื่อว่า Tokenization หรือตัวอย่างการแบ่งคำ
    เช่นการแยกคำ, การลบคำที่ไม่มีความหมาย ผสมตัวอักษรแล้วเริ่มหาความหมายของคำนั้นๆ เพื่อที่จะให้เข้าใจทั้งประโยค
    ตัวอย่าง คำในประโยค: “The quick brown fox jumps over the lazy dog.”
    หลังจาก Lexical Analysis:
  • “The”
  • “quick”
  • “brown”
  • “fox”
  • “jumps”
  • “over”
  • “the”
  • “lazy”
  • “dog”

ในตัวอย่างนี้ Tokenization ได้แยกประโยคเป็นคำต่างๆ

2. Syntactic Level ขั้นเข้าใจประโยค เช่น การวิเคราะห์ไวยากรณ์ต่างๆ
คำในประโยค: “John eats an apple.”

  • “John”: Proper Noun (นามภาคที่เป็นชื่อเฉพาะ)
  • “eats”: Verb (กริยา)
  • “an”: Determiner (คำกำกับ)
  • “apple”: Noun (นาม)

3. Semantic Level เป็นขั้นตอนที่ทำให้เข้าใจความหมายในเนื้อหาของประโยค เพื่อเข้าใจถึงความหมายของคำที่อยู่นอกเหนือโครงสร้างตามมาตรฐานภาษา
(การวิเคราะห์ความหมาย)
ตัวอย่างประโยค: “I saw a bat flying in the sky.”
“bat”: อาจมีความหมายเป็น “ค้างคาว” หรือ “ไม้กอล์ฟ”

4. Discourse Level สามารถเชื่อมโยงความหมายระหว่างประโยคหรือข้อความที่เป็นลำดับกันเพื่อให้เกิดความเป็นระบบในบริบทที่กว้างขึ้น

5. Pragmatic Level เข้าใจการเชื่อมโยงของประโยค รวมถึงเข้าใจลำดับการใช้คำในประโยคซึ่งให้ความหมายแตกต่างกันด้วย

6. Pragmatic Level เข้าใจความหมายของคำและประโยคโดยอาศัยจากสถานการณ์หรือฐานความรู้เดิม ซึ่งอาจไม่ได้ระบุอยู่ในเนื้อหานั้น ๆ เพื่อให้สามารถตีความได้ใกล้เคียงกับมนุษยที่สามารถเชื่อมโยงข้อมูลใหม่เข้ากับความรู้เดิมได้ตลอดเวลา

BASIC
ต่อไปเราจะใช้การตัดคำ Tokenization ออกมาดังตัวอย่างด้านล่าง
( สามารถเขียน code ตาม ผ่านทาง Google Colab ได้เลย )

step 1: Tokenization นี้เป็นขั้นตอนแรกที่ต้องดำเนินการในกระบวนการ NLP
โดยใช้ pythainlp.tokenize.word_tokenize ซึ่งเป็นฟังก์ชันในไลบรารี PyThaiNLP ที่ใช้สำหรับการแบ่งคำ (Tokenization) ในภาษาไทย

from pythainlp.tokenize import word_tokenize
text = 'นัดกินกันตอนไหนก็ได้ที่สามย่านมิตรทาวน์'

# ดำเนินการ Tokenization โดยใช้ pythainlp
token_01 = word_tokenize(text, engine='newmm')
print(token_01)
# output
['นัด', 'กิน', 'กัน', 'ตอน', 'ไหน', 'ก็', 'ได้', 'ที่', 'สาม', 'ย่าน', 'มิตร', 'ทาวน์']

เราจะเห็นว่า คำว่า [’สาม’, ‘ย่าน’, ‘มิตร’, ‘ทาวน์’] นั้น จริงๆแล้วต้องเป็นคำเดียวกัน
จึงต้องทำขั้นตอนถัดไปเพื่อให้ ‘สามย่านมิตรทาวน์’ เป็นคำที่มีความหมายเดียว

step 2: ติดตั้งไลบรารี marisa-trieเพื่อนำ (Trie) ของคำศัพท์ใหม่มาใช้ในการแยกคำในภาษาไทย การปรับปรุงนี้ทำให้สามารถเพิ่มคำศัพท์ที่ไม่มีในพจนานุกรมมาใช้ในกระบวนการแยกคำได้ด้วย โดยใช้คำศัพท์ที่ถูกเก็บในไฟล์ new_word_th.txt ที่เราเพิ่มขึ้นเอง ดังนี้


from pythainlp.corpus import get_corpus
from marisa_trie import Trie

!cp /usr/local/lib/python3.8/dist-packages/pythainlp/corpus/words_th.txt ./
!mv words_th.txt new_word_th.txt
!echo "สามย่านมิตรทาวน์" >> new_word_th.txt #เพิ่มให้เป็นคำเดียวกัน
!cp ./new_word_th.txt /usr/local/lib/python3.8/dist-packages/pythainlp/corpus/

text='นัดกินกันตอนไหนก็ได้ที่สามย่านมิตรทาวน์'
new_true_tokenizer = Trie(get_corpus('new_word_th.txt'))
tokens = word_tokenize(text, custom_dict=new_true_tokenizer, engine='newmm')
print(tokens)
# output
['นัด', 'กินกัน', 'ตอน', 'ไหน', 'ก็', 'ได้ที่', 'สามย่านมิตรทาวน์']

ว้าว! เห็นไหมกลายเป็นคำเดียวกันแล้วครับ OMG!!!

โค้ดทั้งหมดนี้มีวัตถุประสงค์เพื่อการแก้ไขและเพิ่มคำศัพท์ในการแยกคำใน PyThaiNLP ทำให้สามารถใช้งานคำศัพท์ใหม่ที่ไม่มีในพจนานุกรมแบบมาตรฐานของ PyThaiNLP ได้ ทำให้ใช้งานได้ง่ายขึ้นกับภาษาไทยที่มีความซับซ้อนในกระบวนการแยกคำ ในกรณีนี้ newmm ถูกใช้เป็นเครื่องมือในการแยกคำภาษาไทยซึ่งเป็นที่นิยมในปัจจุบันครับ

See you agian : )

--

--

nattakit pinyorattanakit

AI Engineering and data science ———————————————————————— https://misternattakit.com