ปฏิวัติการทำ Sentiment Analysis วิเคราะห์อารมณ์ลูกค้าด้วย Generative AI

ปฏิวัติการทำ Sentiment Analysis วิเคราะห์อารมณ์ลูกค้าด้วย Generative AI

Sentiment Analysis หรือ การวิเคราะห์อารมณ์จากบริบทต่างๆ ของ Input ที่ได้รับมาเช่น คอมเมนต์ที่เป็น Text หรือจากข้อมูลที่เป็น Voice ได้กลายเป็นเครื่องมือที่สำคัญในการเปลี่ยนแปลงวิธีที่บริษัทต่างๆ เข้าใจ และตอบสนองต่อความคิดเห็นของลูกค้าเพื่อเพิ่มความพึงพอใจต่อสินค้าและบริการ หรือแม้แต่การเพิ่ม Engagement

ซึ่งจากเดิมการวิเคราะห์อารมณ์ลูกค้านี้ เป็นการทำเพื่อการศึกษาและวิเคราะห์ข้อมูลจากแหล่งต่างๆ ไม่ว่าจะเป็นรีวิวสินค้า, บันทึกการสนทนา, อีเมล, หรือการโต้ตอบผ่านศูนย์บริการลูกค้า เพื่อจัดหมวดหมู่ลูกค้าเป็นกลุ่มที่มีความสุข 😄, กลางๆ 😏หรือไม่พอใจ 😤 ผ่านการจำแนกประเภทจาก ML Model แบบ Classification กว้างๆ แต่ในปัจจุบันที่ภาษามีความหลากหลายและซับซ้อนมายิ่งขึ้น การเข้าใจบริบทของข้อความ หรือบทสนทาด้วยจึงมีความสำคัญเพิ่มเข้ามา

ในบทความนี้ นิกเลยจะพาทุกท่านไปร่วมกันปฏิวัติการทำ Sentiment Analysis แบบเดิมๆ ด้วยการเพิ่มความสามารถในการเข้าในบริบทและวิเคราะห์อารมณ์ในความหมายแฝงของข้อความโดยอาศัยความสามารถของ Generative AI ซึ่งจะทำให้การจำแนกประเภทของอารมณ์มีความแม่นยำมากยิ่งขึ้น และส่งผลให้พวกเราสามารถปรับปรุง/พัฒนา การตอบสนองและกลยุทธ์เพื่อเพิ่มความพึงพอใจของลูกค้าได้อย่างเต็มประสิทธิภาพ 📊🔎😊📈

โดยในบทความนี้จะแบ่งออกเป็นตอนใหญ่ๆ ได้ออกเป็น 3 ส่วนดังนี้ค่ะ

  1. บทบาทของการเปลี่ยนแปลง Generative AI ในการทำ Sentiment Analysis และผลกระทบ (ทั้งด้าน + และ – นะคะ^^) ที่มีต่อการตีความบริบทของข้อความ และการตอบสนองของบริษัท หรือนักการตลาดต่อความคิดเห็นของลูกค้าหรือ User
  2. องค์ประกอบสำคัญของ Generative AI และเทคนิคการประมวลผลข้อมูล เช่น การตัดคำ และการกรองคุณภาพข้อมูล เป็นต้น
  3. Life cycle ของ Generative AI (และหากเราเป็น User ก็จะมีอธิบายเรื่อง Prompt Engineer ในพาร์ทนี้ค่ะ😊) และการตั้งค่าพารามิเตอร์เพื่อการวิเคราะห์อารมณ์ได้อย่างมีประสิทธิภาพ
  4. มาลอง Setting Environment ในการและการสร้าง API Keys ซึ่งในบทความนี้จะใช้เป็น GPT-3.5 Turbo (นั่นหมายความว่าในบทความนี้เราจะมาลอง Create model แบบง่ายๆ กันค่ะ)

ในปัจจุบันซึ่งเป็นยุคของการตลาดออนไลน์ ความคิดเห็นของลูกค้าบน Social network platform ต่างๆ มีความหลากหลายและมากมายยิ่งขึ้นกว่าเดิมมากๆ ค่ะ โดยเฉพาะช่วงปีใกล้ๆ นี้ที่การรีวิวสินค้าและแอปพลิเคชันเป็นรูปแบบทั่วไปที่เราจะได้รับความคิดเห็นจากลูกค้า แต่อย่างไรก็ตามค่ะ เนื่องจากลูกค้าที่เข้ามารีวิวต่างก็มี Background ด้านภาษา บริบทของสิ่งแวดล้อม อายุ หรืออาชีพที่แตกต่างกัน ทำให้รีวิวเหล่านี้มีความหลากหลายทั้งในภาษาที่ใช้ การผสมผสานอิโมจิ😤😁😂😱 เข้ามาในข้อความด้วย และแม้แต่ในบางครั้งเป็นการใช้หลายภาษาในรีวิวเดียว

สิ่งนี้เองที่ทำให้การทำ Standardize ของข้อความ หรือการทำให้เป็นรูปแบบเดียวกันเป็นสิ่งที่จำเป็นและสำคัญมากๆ เพื่อการเข้าใจบริบทค่ะ หนึ่งในขั้นตอนการทำนั้นก็คือการแปลภาษา ที่นับว่าเป็นวิธีที่ใช้กันอย่างแพร่หลาย เพื่อเปลี่ยนความคิดเห็นที่หลากหลายเหล่านี้ให้เป็นภาษาเดียวกันสำหรับการวิเคราะห์ (ซึ่งถ้ามีเพื่อนๆ สนใจกันเข้ามาเยอะ คาดว่าจะมีบทความเรื่อง Language Translator โดยการใช้ OpenAI API บน Django Framework มาเล่าในอ่านกันต่อค่ะ^^–> แต่จะไม่กล่าวถึงในบทความนี้นะคะ เดี๋ยวจะยาวเกิน และหลุดประเด็นหลักบทความไป )

Generative AI Model เช่น GPT-3.5 เข้ามามีบทบาทสำคัญในการทำ Sentiment Analysis จากความสามารถของโมเดลเองที่ถูกสร้างขึ้นจาก Deep Learning Neural Networks และได้ Training Dataset ที่เป็น Bigdata ที่มีข้อความจากแหล่งที่มาหลายแห่ง เช่น อินเทอร์เน็ต, หนังสือ, และการเก็บข้อมูลจากเว็บไซต์ ซึ่งหน้าที่ของ Model นี้คือการแปลงข้อมูลข้อความเป็นรูปแบบตัวเลขผ่านกระบวนการตัดคำ และการทำ Tokenization ซึ่งมีความสำคัญมากสำหรับการประมวลผลต่อไป

2.1 การทำ Tokenization และการ Filtering

โดยหลังจากตัดคำ (Tokenized) ซึ่งงแต่ละคำที่ถูกตัดออกมาจะถูกเรียกว่า Token แล้วก็จะเข้าสู่กระบวนการที่ช่วยเพิ่มคุณภาพของข้อมูลด้วยการลบข้อมูลรบกวน (Noise) และข้อมูลที่ไม่เกี่ยวข้องออก แต่โมเดลนี้จะใช้เพียงส่วนเล็กๆ ของ Original Token หรือคือประมาณ 1-3% เท่านั้นค่ะ ซึ่งข้อความที่ได้รับการตัดคำแล้วจะถูกแปลงเป็นข้อมูลประเภทเวกเตอร์ (คือมีทั้งขนาดและทิศทาง) เพื่อให้สามารถดำเนินการทางคณิตศาสตร์ (เช่น การคูณเมทริกซ์) ได้อย่างมีประสิทธิภาพภายใน Neural Networks เอง

จากภาพทุกท่านจะเห็นว่าประโยค “Let’s go to N.Y.!” แบบยาวๆ ค่อยๆ ถูกตัดคำออกมาเป็น ” Let, ‘s, go, to, N.Y, ! และ

2.2 องค์ประกอบโดยรวมของการ Extract Data

โดยกระบวนการเหล่านี้อาจถูกเรียกรวมๆ ว่าการทำ Extraction ได้ดังภาพด้านล่างนี้ค่ะ

*Notation: คำอธิบายด้านล่างนี้ค่อนข้าง Technical นะคะ ถ้าอ่านแล้วงงๆ ให้สามารถดูแต่ภาพด้านบนได้เลยค่ะ ไม่ต้องซีเรียส 😊🔎
โดยเราจะมาเริ่มต้นที่ Text Rules ที่ใช้กับข้อความดิบและจับคู่กับนิพจน์ปกติบน String ( Pattern Filed ควรมีรูปแบบ /abc/ ซึ่ง abc เป็นนิพจน์ปกติของ Java และ Token Rules ซึ่งถูกใช้กับ Tokens และจับคู่กับนิพจน์ปกติบนโทเค็น โดย Pattern Filed ควรมีรูปแบบ ( abc ) ซึ่ง abc เป็นนิพจน์ TokensRegex ประเภทนี้เป็นค่าเริ่มต้น

Composite Rules ถูกใช้กับนิพจน์ที่จับคู่ได้ก่อนหน้านี้ (กล่าวคือ นิพจน์ที่จับคู่โดย Text Rules, Token Rules , หรือ Composite Rules ก่อนหน้า) และถูกใช้ซ้ำๆ จนกว่าจะไม่มีการจับคู่ใหม่ ซึ่งนิพจน์เหล่านี้ก็ถูกกำหนดเป็นนิพจน์ TokensRegex เช่นกัน

Filter Rules ก็ถูกใช้กับนิพจน์ที่จับคู่ได้ก่อนหน้านี้ โดยจะถูกใช้ในตอนท้ายของแต่ละขั้นตอนและใช้เพื่อกรองนิพจน์ออก (กล่าวคือ นิพจน์ที่จับคู่กับรูปแบบกรองจะถูกทิ้งออกจากรายการของการจับคู่) และนิพจน์เหล่านี้ก็ถูกกำหนดเป็นนิพจน์ TokensRegex ด้วยเช่นกัน

Q: จากคำอธิบายใน #1 และ #2 ทุกท่านพอจะเห็นภาพชัดเจนกันขึ้นไหมคะว่า Generative AI เข้ามามีบทบาทในส่วนไหนของการวิเคราะห์และบ่งบอกอารมณ์ของลูกค้า (^∀^●)ノシ

A: คำตอบก็คือ,, เอามาใช้ช่วยให้ Classification Model ที่เราจะเอา Results ไปใช้ต่อสามารถเข้าใจบริบทของคำได้มากยิ่งขึ้น ส่งผลให้การจำแนกประเภทของความรู้สึกมีความแม่นยำมากยิ่งขึ้นนั่นเองค่ะ

ซึ่ง Life Cycle ของ Generative AI จะประกอบด้วยการกำหนดขอบเขตของปัญหา การเลือกโมเดลฐานที่เหมาะสม (เช่นในที่นี้ใช้เป็น GPT-3.5) และการเลือกต่อว่าจะใช้โมเดลนี้อย่างไรกับข้อมูลที่เฉพาะเจาะจงของเรา โดย Life Cycle นี้รวมถึงการเขียน Prompt, การทำ Fine-tune, การเก็บ User Feedback, การทำ Model evaluation, การ Deploy/Scalable และการอินทิเกรตเป็น Application ซึ่งมีรายละเอียดดังนี้ค่ะ

ปฏิวัติการทำ Sentiment Analysis วิเคราะห์อารมณ์ลูกค้าด้วย Generative AI
credit: deeplearning.ai
  1. การกำหนดขอบเขต (Define & Scope): การแยกปัญหาออกเป็นปัญหาย่อยๆ เช่นเราต้องการผลลัพธ์เป็นการแปลภาษา, การสรุปข้อความ, และการวิเคราะห์อารมณ์ โดยส่วนนี้จะเป็นประโยชน์จากการที่ในกรณีข้อความที่เราได้รับมามีหลายภาษาปนกัน ตลอดจนมี emoji ปะปนอยู่ด้วย
  2. การเลือกโมเดลฐาน: เป็นการตัดสินใจว่าจะทำงานกับ Base model ที่มีอยู่แล้วหรือจะ Training model มาใช้เอง (ป.ล. ในที่นี้นิกแนะนำให้ใช้เป็นโมเดลที่ถูกปล่อยออกมาแล้วจะคุ้มค่ากว่าค่ะ)
  3. การใช้โมเดลฐาน: เป็นการตัดสินใจว่าจะใช้ประโยชน์จาก Base model ในแง่ไหน (หรือพูดง่ายๆ ค่ะว่าจะใช้ความสามารถไหนของ Generative AI model ที่เราเลือกใช้) กับข้อมูลเฉพาะของเรา ซึ่งเอาจริงๆ โดยส่วนมากเรามักจะใช้ร่วมกับการ Prompting และ Fine Tuning บางส่วน
  4. Get Feedback: ในส่วนนี้จะเป็นการรับ Feedback จากลูกค้าหรือ User ค่ะว่าผลลัพธ์จาก Model ของเรา มีความแม่นยำหรือไม่
  5. Model Evaluation: การประเมินประสิทธิภาพของโมเดล (ซึ่งเพื่อนๆ สามารถเพิ่มเติมจาก Link ที่นิกจะแปะไว้ด้านล่างของบทความนี้ค่ะ)
  6. การ Deploy & Scalable: เป็นการปรับใช้โมเดลในสภาพแวดล้อมจริง และการขยายผลร่วมกับแพลตฟอร์มเดิมที่เรามีอยู่ (แต่ถ้าเราแค่ทำ Web scraping ข้อมูลออกมาก็ข้ามส่วนนี้ไปได้ค่ะ)

3.1 การทำ Fine Tune สำหรับ Sentiment Analysis

ทีนี้ก็มาถึงส่วนที่น่าตื่นเต้นกันแล้วค่ะ นั่นก็คือการตอบคำถามที่ว่า =>>

จากทฤษฎีที่เรากล่าวมาก่อนหน้าทั้งหมดทั้งมวล แล้วเราจะนำไปใช้อย่างไรล่ะ ในการใช้ความสามารถของ Generative AI ในการวิเคราะห์อารมณ์ของลูกค้า \(@^0^@)/

ซึ่งนิกขออนุญาตเริ่มต้นที่สิ่งนี้,, นั่นคือการเขียน Prompt เพื่อ Fine Tuning ตัวโมเดลค่ะ (ซึ่งจะต่างจากบทความก่อนหน้าที่นิกเขียนไว้เรื่องการ Prompt บน Google Sheet นะคะ)

โดยนิกขอเล่าคร่าวๆ ว่า Prompt Engineer เนี่ยสามารถเข้ามาเป็นส่วนสำคัญในการใช้ Generative AI สำหรับการวิเคราะห์อารมณ์ของลูกค้าได้ โดยการที่เรา Prompting คำสั่งเริ่มต้นให้กับโมเดล AI เพื่อสร้างคำตอบที่ต้องการ ซึ่งการ Prompt มี 3 ประเภทหลัก (บางค่ายแบ่งเป็น 4-6 ประเภทก็ไม่ต้องตกใจนะคะ เพราะแต่ละค่ายอาจใช้หลักเกณฑ์การแบ่งประเภทไม่เหมือนกัน) ดังนี้:

  • Zero-Shot: คือการใส่ Prompt ที่ไม่ได้เป็นส่วนหนึ่งของ Traning data แต่ตัวโมเดลก็สามารถให้ Results ที่เราต้องการได้ เช่น การทำเราพิมพ์ถามหรือสนทนาเข้าไปดื้อๆ เลยนั่นเองค่ะ
  • One-Shot: เป็นการให้ข้อมูลเพิ่มเติมเข้าไปด้วยในการ Train Model
  • Few-Shot: คือการใส่รูปแบบตัวอย่างที่เราต้องการให้คำตอบอยู่ในรูปแบบนี้ให้กับโมเดลเข้าไป

โดยการ Fine-tuning เป็นขั้นตอนสำคัญอีกขั้นตอนหนึ่ง เพื่อปรับปรุงให้ได้โมเดลที่เหมาะสม (เพื่อนๆ ที่สนในสามารถเอา Keywords: Weight bias, hyperparameter tuning ไป google เพื่ออ่านต่อได้นะคะ นิกจะไม่ลงรายละเอียดในบทความนี้^^) ซึ่งขั้นตอนนี้รวมถึงการสร้างชุดข้อมูลสำหรับการ Train ด้วย ในกรณีที่ข้อมูลเราไม่เพียงพอ, การทำ Train Test split, การ Evaluate โดยมี Objective เพื่อ minimize loss (หรือพูดง่ายๆ ว่าเป็นการทำให้ Loss มีค่าน้อยที่สุดค่ะ)

3.2 การ Prompt เพื่อทำ Sentiment Analysis

ในบทความนี้เราจะใช้แค่ของฟรีจาก ChatGPT คือโมเดล GPT-3.5 Turbo เพื่อให้ทำการวิเคราะห์อารมณ์จากบริบทของข้อความโดยจะใช้ทั้ง Zero-Shot, One-Shot และ Few-Shot ค่ะ

Zero-Shot: ในวิธีนี้เราจะให้คำสั่งเริ่มต้นแก่ ChatGPT ยกตัวอย่างเช่น Prompt ด้านล่าง (ซึ่งหากเราใช้เป็น Version Data Analyst ก็จะสามารถโยนไฟล์ขึ้นไปใช้ในการ Sentiment ได้เลยค่ะ)

“Understand the sentiment of the sentence for tablet Shopee reviews by the user and return the overall sentiment (positive, negative, nutral).”

One-Shot: วิธีนี้เราจะให้ตัวอย่างสำหรับโมเดลหนึ่งตัวอย่างในแต่ละหมวดของอารมณ์เช่น – บวก, ลบ, และกลางๆ ซึ่งโมเดลจะเรียนรู้จากตัวอย่างเหล่านี้และจากนั้นทำการ Classify ข้อความที่ไม่รู้จักเข้าหมวดหมู่เหล่านี้ได้อีกที

Few-Shot: จะคล้ายกับ One-Shot แต่เราจะให้ตัวอย่างหลายอย่างมากยิ่งขึ้น หรือกล่าวคือการให้ Data เพิ่มเติม สำหรับแต่ละหมวดของอารมณ์ โดยข้อมูลเพิ่มเติมนี้ช่วยให้โมเดลทำการจำแนกได้อย่างมีประสิทธิภาพ เพราะมีจำนวนข้อมูลมากขึ้น

4.1 เริ่มต้นการใช้งาน API Key

ทุกท่านสามารถการใช้งานโดยเข้าไปที่ link: https://openai.com เพื่อลงทะเบียนการใช้งาน โดยเลือกไปที่เมนู Product แล้วเข้าไปที่ Overview แล้วเพื่อนๆ สามารถ Get Start โดยเชื่อมต่อกับ Account ที่เรามีอยู่แล้ว หรือสร้าง account ใหม่ (ในกรณีที่ยังไม่มี OpenAI account ค่ะ)

การใช้ ChatGPT ทำ Sentiment Analysis วิเคราะห์ความรู้สึกของลูกค้า

4.2 Get API keys ของ OpenAI: https://platform.openai.com/account/api-keys

ซึ่งเราจะนำ API keys จาก Open AI มาใช้งานกันค่ะ โดยเราจะสามารถเข้าไป get API keys มุมขวาบนใต้ชื่อของเรา กดเมนู Personal แล้วเลือก View API keys และทำการ + Create new secret key หรือสำหรับท่านไหนที่มี account อยู่แล้วสามารถเข้าไปที่ link: https://platform.openai.com/account/api-keys แล้ว login เพื่อ +Create new seret key ได้เลยค่ะ)

การใช้ ChatGPT ทำ Sentiment Analysis วิเคราะห์ความรู้สึกของลูกค้า

ซึ่งส่วนนี้สำคัญมากค่ะ คือ API secret key จะถูก Generate ออกมาเพียงครั้งแรกครั้งเดียว ซึ่งให้เราทำการ Copy เก็บไว้ดีๆ และตั้งชื่อแยกแต่ละ API เก็บไว้ต่างหากด้วย เพื่อง่ายต่อการนำมาใช้งานในอนาคตนะคะ!!

โดยการใช้งาน API Key นี้จะมาอยู่ใน Code ของเราโดยตรงผ่านการเรียกให้โค้ดเลย เช่น

[openai.api_key = “ใส่ API Key ของเรา”]

ซึ่งในส่วนต่อจากนี้จะเป็นเรื่องของการ Coding แล้ว และนิกจะขออนุญาตกล่าวถึงในส่วนของบทความต่อไปค่ะ 🤗😎

Last but not Least…

เพื่อนๆ จะเห็นว่าการเข้ามาของ Generative AI เป็นการเพิ่มขีดความสามารถของการแข่งขันในด้านการตลาดให้กับผู้ที่มีความเข้าใจและสามารถใช้งานความสามารถเหล่านั้นได้อย่างสัมฤทธิ์ผล

ซึ่งในบทความนี้อาจค่อนข้าง Technical นิดหน่อยเพื่ออยากให้เพื่อนๆ เห็นภาพได้ชัดเจนขึ้นนะคะ โดยสายเทคฯ สามารถตามอ่านได้จากงานวิจัยของ ScienceDirect ได้โดยตรง

และสำหรับสายนักการตลาด นิกขอแนะนะเป็นบทความตาม Link ด้านล่างที่ไม่ต้อง Code แม้บรรทัดเดียวก็สามารถทำ Sentiment Analysis บน Google Sheet ได้ง่ายๆ ค่ะ 😎😁
(ป.ล. ใครใส่คำสั่งใน Sheet แล้ว error ทักมาบอกนิกได้นะคะ เพราะบางที OpenAI มี update model)

Panaya Sudta

Hi, I am Nick,,,,Panaya Sudta (●'◡'●) Engineer during the daytime. Researcher at night. Reader in spare time. (❁´◡`❁) วิศวกร/นักวิจัย และเป็นน้องใหม่ของการตลาดวันละตอน ในการทำ Market research ค่ะ หวังเป็นอย่างยิ่งว่าจะได้แชร์มุมมองกันนะคะ

Leave a Reply

Your email address will not be published. Required fields are marked *