# การแปลและการวิเคราะห์ความรู้สึกด้วย ML ในบทเรียนก่อนหน้านี้ คุณได้เรียนรู้วิธีสร้างบอทพื้นฐานโดยใช้ `TextBlob` ซึ่งเป็นไลบรารีที่มี ML อยู่เบื้องหลังเพื่อทำงาน NLP พื้นฐาน เช่น การดึงวลีคำนาม อีกหนึ่งความท้าทายสำคัญในภาษาศาสตร์เชิงคอมพิวเตอร์คือการแปลประโยคจากภาษาพูดหรือภาษาเขียนหนึ่งไปยังอีกภาษาอย่างแม่นยำ ## [แบบทดสอบก่อนเรียน](https://ff-quizzes.netlify.app/en/ml/) การแปลเป็นปัญหาที่ยากมาก เนื่องจากมีภาษาหลายพันภาษา และแต่ละภาษามีกฎไวยากรณ์ที่แตกต่างกันอย่างมาก วิธีหนึ่งคือการแปลงกฎไวยากรณ์อย่างเป็นทางการของภาษา เช่น ภาษาอังกฤษ ให้เป็นโครงสร้างที่ไม่ขึ้นกับภาษา และจากนั้นแปลงกลับไปเป็นอีกภาษา วิธีนี้หมายความว่าคุณจะต้องทำตามขั้นตอนดังนี้: 1. **การระบุ** ระบุหรือแท็กคำในภาษาต้นทาง เช่น คำนาม คำกริยา เป็นต้น 2. **สร้างการแปล** สร้างการแปลโดยตรงของแต่ละคำในรูปแบบภาษาปลายทาง ### ตัวอย่างประโยค ภาษาอังกฤษเป็นภาษาไอริช ในภาษา 'อังกฤษ' ประโยค _I feel happy_ มีสามคำในลำดับ: - **ประธาน** (I) - **กริยา** (feel) - **คำคุณศัพท์** (happy) อย่างไรก็ตาม ในภาษา 'ไอริช' ประโยคเดียวกันมีโครงสร้างไวยากรณ์ที่แตกต่างกันมาก - อารมณ์เช่น "*happy*" หรือ "*sad*" ถูกแสดงออกว่าเป็น *สิ่งที่อยู่บนตัวคุณ* วลีภาษาอังกฤษ `I feel happy` ในภาษาไอริชจะเป็น `Tá athas orm` การแปลแบบ *ตรงตัว* จะเป็น `Happy is upon me` ผู้พูดภาษาไอริชที่แปลเป็นภาษาอังกฤษจะพูดว่า `I feel happy` ไม่ใช่ `Happy is upon me` เพราะพวกเขาเข้าใจความหมายของประโยค แม้ว่าคำและโครงสร้างประโยคจะแตกต่างกัน ลำดับอย่างเป็นทางการสำหรับประโยคในภาษาไอริชคือ: - **กริยา** (Tá หรือ is) - **คำคุณศัพท์** (athas หรือ happy) - **ประธาน** (orm หรือ upon me) ## การแปล โปรแกรมแปลแบบง่ายอาจแปลคำเท่านั้น โดยไม่สนใจโครงสร้างประโยค ✅ หากคุณเคยเรียนภาษาที่สอง (หรือสามหรือมากกว่า) ในวัยผู้ใหญ่ คุณอาจเริ่มต้นด้วยการคิดในภาษาของคุณเอง แปลแนวคิดคำต่อคำในหัวของคุณเป็นภาษาที่สอง และจากนั้นพูดการแปลออกมา นี่คล้ายกับสิ่งที่โปรแกรมแปลคอมพิวเตอร์แบบง่ายกำลังทำอยู่ สิ่งสำคัญคือต้องก้าวข้ามขั้นตอนนี้เพื่อให้ได้ความคล่องแคล่ว! การแปลแบบง่ายนำไปสู่การแปลที่ไม่ดี (และบางครั้งก็ตลก) เช่น `I feel happy` แปลตรงตัวเป็น `Mise bhraitheann athas` ในภาษาไอริช ซึ่งหมายถึง (ตรงตัว) `me feel happy` และไม่ใช่ประโยคภาษาไอริชที่ถูกต้อง แม้ว่าภาษาอังกฤษและภาษาไอริชจะเป็นภาษาที่พูดบนเกาะที่อยู่ใกล้กันมาก แต่ก็เป็นภาษาที่แตกต่างกันมากโดยมีกฎไวยากรณ์ที่แตกต่างกัน > คุณสามารถดูวิดีโอเกี่ยวกับประเพณีภาษาศาสตร์ของไอริช เช่น [วิดีโอนี้](https://www.youtube.com/watch?v=mRIaLSdRMMs) ### วิธีการใช้ Machine Learning จนถึงตอนนี้ คุณได้เรียนรู้เกี่ยวกับวิธีการใช้กฎอย่างเป็นทางการใน NLP อีกวิธีหนึ่งคือการละเลยความหมายของคำ และ _ใช้ Machine Learning เพื่อค้นหารูปแบบแทน_ วิธีนี้สามารถใช้ได้ในงานแปลหากคุณมีข้อความจำนวนมาก (*corpus*) หรือข้อความ (*corpora*) ในทั้งภาษาต้นทางและภาษาปลายทาง ตัวอย่างเช่น ลองพิจารณากรณีของ *Pride and Prejudice* นวนิยายภาษาอังกฤษที่มีชื่อเสียงซึ่งเขียนโดย Jane Austen ในปี 1813 หากคุณดูหนังสือในภาษาอังกฤษและการแปลหนังสือเป็นภาษาฝรั่งเศสโดยมนุษย์ คุณสามารถตรวจจับวลีในหนึ่งภาษาที่ถูกแปล _ตามสำนวน_ เป็นอีกภาษาได้ คุณจะทำสิ่งนี้ในอีกสักครู่ ตัวอย่างเช่น เมื่อวลีภาษาอังกฤษ `I have no money` ถูกแปลตรงตัวเป็นภาษาฝรั่งเศส อาจกลายเป็น `Je n'ai pas de monnaie` "Monnaie" เป็นคำฝรั่งเศสที่หลอกลวง เนื่องจาก 'money' และ 'monnaie' ไม่ใช่คำพ้องความหมาย การแปลที่ดีกว่าที่มนุษย์อาจทำคือ `Je n'ai pas d'argent` เพราะมันสื่อความหมายได้ดีกว่าที่คุณไม่มีเงิน (แทนที่จะเป็น 'เศษเหรียญ' ซึ่งเป็นความหมายของ 'monnaie') ![monnaie](../../../../6-NLP/3-Translation-Sentiment/images/monnaie.png) > ภาพโดย [Jen Looper](https://twitter.com/jenlooper) หากโมเดล ML มีการแปลโดยมนุษย์เพียงพอที่จะสร้างโมเดลขึ้นมาได้ มันสามารถปรับปรุงความแม่นยำของการแปลโดยการระบุรูปแบบทั่วไปในข้อความที่เคยถูกแปลโดยผู้เชี่ยวชาญที่พูดทั้งสองภาษา ### แบบฝึกหัด - การแปล คุณสามารถใช้ `TextBlob` เพื่อแปลประโยค ลองใช้ประโยคแรกที่มีชื่อเสียงของ **Pride and Prejudice**: ```python from textblob import TextBlob blob = TextBlob( "It is a truth universally acknowledged, that a single man in possession of a good fortune, must be in want of a wife!" ) print(blob.translate(to="fr")) ``` `TextBlob` ทำงานได้ดีในการแปล: "C'est une vérité universellement reconnue, qu'un homme célibataire en possession d'une bonne fortune doit avoir besoin d'une femme!". สามารถกล่าวได้ว่าการแปลของ TextBlob นั้นแม่นยำกว่าการแปลภาษาฝรั่งเศสในปี 1932 โดย V. Leconte และ Ch. Pressoir: "C'est une vérité universelle qu'un célibataire pourvu d'une belle fortune doit avoir envie de se marier, et, si peu que l'on sache de son sentiment à cet egard, lorsqu'il arrive dans une nouvelle résidence, cette idée est si bien fixée dans l'esprit de ses voisins qu'ils le considèrent sur-le-champ comme la propriété légitime de l'une ou l'autre de leurs filles." ในกรณีนี้ การแปลที่ได้รับการสนับสนุนจาก ML ทำงานได้ดีกว่าผู้แปลที่ใส่คำในปากของผู้เขียนต้นฉบับโดยไม่จำเป็นเพื่อความชัดเจน > เกิดอะไรขึ้นที่นี่? และทำไม TextBlob ถึงเก่งเรื่องการแปล? เบื้องหลัง มันใช้ Google Translate ซึ่งเป็น AI ที่ซับซ้อนสามารถวิเคราะห์วลีหลายล้านวลีเพื่อทำนายสตริงที่ดีที่สุดสำหรับงานที่กำลังทำ ไม่มีอะไรที่เป็นการทำงานแบบแมนนวลที่นี่ และคุณต้องมีการเชื่อมต่ออินเทอร์เน็ตเพื่อใช้ `blob.translate` ✅ ลองประโยคอื่น ๆ อีก คุณคิดว่า ML หรือการแปลโดยมนุษย์ดีกว่ากัน? ในกรณีใด? ## การวิเคราะห์ความรู้สึก อีกหนึ่งพื้นที่ที่ Machine Learning สามารถทำงานได้ดีมากคือการวิเคราะห์ความรู้สึก วิธีที่ไม่ใช้ ML ในการวิเคราะห์ความรู้สึกคือการระบุคำและวลีที่ 'บวก' และ 'ลบ' จากนั้น เมื่อมีข้อความใหม่ ให้คำนวณค่ารวมของคำบวก ลบ และเป็นกลางเพื่อระบุความรู้สึกโดยรวม วิธีนี้ถูกหลอกได้ง่ายอย่างที่คุณอาจเห็นในงาน Marvin - ประโยค `Great, that was a wonderful waste of time, I'm glad we are lost on this dark road` เป็นประโยคที่มีความรู้สึกเชิงลบแบบประชดประชัน แต่ขั้นตอนวิธีง่าย ๆ ตรวจพบคำว่า 'great', 'wonderful', 'glad' เป็นบวก และ 'waste', 'lost' และ 'dark' เป็นลบ ความรู้สึกโดยรวมถูกโน้มน้าวโดยคำที่ขัดแย้งกันเหล่านี้ ✅ หยุดสักครู่และคิดเกี่ยวกับวิธีที่เราสื่อประชดประชันในฐานะผู้พูดมนุษย์ น้ำเสียงมีบทบาทสำคัญ ลองพูดวลี "Well, that film was awesome" ในวิธีต่าง ๆ เพื่อค้นพบว่าน้ำเสียงของคุณสื่อความหมายอย่างไร ### วิธีการใช้ ML วิธีการ ML คือการรวบรวมข้อความเชิงลบและบวกด้วยมือ - ทวีต หรือรีวิวภาพยนตร์ หรืออะไรก็ตามที่มนุษย์ให้คะแนน *และ* ความคิดเห็นเป็นลายลักษณ์อักษร จากนั้นสามารถใช้เทคนิค NLP กับความคิดเห็นและคะแนน เพื่อให้รูปแบบปรากฏขึ้น (เช่น รีวิวภาพยนตร์เชิงบวกมักมีวลี 'Oscar worthy' มากกว่าที่รีวิวภาพยนตร์เชิงลบ หรือรีวิวร้านอาหารเชิงบวกพูดว่า 'gourmet' มากกว่า 'disgusting') > ⚖️ **ตัวอย่าง**: หากคุณทำงานในสำนักงานของนักการเมือง และมีการอภิปรายกฎหมายใหม่ ผู้มีสิทธิเลือกตั้งอาจเขียนอีเมลถึงสำนักงานเพื่อสนับสนุนหรือคัดค้านกฎหมายใหม่ คุณได้รับมอบหมายให้อ่านอีเมลและจัดเรียงเป็น 2 กอง *สนับสนุน* และ *คัดค้าน* หากมีอีเมลจำนวนมาก คุณอาจรู้สึกหนักใจในการอ่านทั้งหมด จะดีแค่ไหนถ้าบอทสามารถอ่านทั้งหมดให้คุณ เข้าใจ และบอกคุณว่าอีเมลแต่ละฉบับอยู่ในกองไหน? > > วิธีหนึ่งที่จะทำให้สิ่งนี้สำเร็จคือการใช้ Machine Learning คุณจะฝึกโมเดลด้วยส่วนหนึ่งของอีเมล *คัดค้าน* และส่วนหนึ่งของอีเมล *สนับสนุน* โมเดลจะมีแนวโน้มที่จะเชื่อมโยงวลีและคำกับฝั่งคัดค้านและฝั่งสนับสนุน *แต่จะไม่เข้าใจเนื้อหาใด ๆ* เพียงแค่คำบางคำและรูปแบบมีแนวโน้มที่จะปรากฏในอีเมล *คัดค้าน* หรือ *สนับสนุน* คุณสามารถทดสอบมันด้วยอีเมลบางฉบับที่คุณไม่ได้ใช้ในการฝึกโมเดล และดูว่ามันมาถึงข้อสรุปเดียวกับคุณหรือไม่ จากนั้น เมื่อคุณพอใจกับความแม่นยำของโมเดล คุณสามารถประมวลผลอีเมลในอนาคตโดยไม่ต้องอ่านแต่ละฉบับ ✅ กระบวนการนี้ฟังดูเหมือนกระบวนการที่คุณเคยใช้ในบทเรียนก่อนหน้านี้หรือไม่? ## แบบฝึกหัด - ประโยคที่มีความรู้สึก ความรู้สึกถูกวัดด้วย *ความเป็นขั้ว* ตั้งแต่ -1 ถึง 1 หมายถึง -1 คือความรู้สึกเชิงลบที่สุด และ 1 คือความรู้สึกเชิงบวกที่สุด ความรู้สึกยังถูกวัดด้วยคะแนน 0 - 1 สำหรับความเป็นวัตถุ (0) และความเป็นอัตวิสัย (1) ลองดูอีกครั้งที่ *Pride and Prejudice* ของ Jane Austen ข้อความมีอยู่ที่นี่ที่ [Project Gutenberg](https://www.gutenberg.org/files/1342/1342-h/1342-h.htm) ตัวอย่างด้านล่างแสดงโปรแกรมสั้น ๆ ที่วิเคราะห์ความรู้สึกของประโยคแรกและประโยคสุดท้ายจากหนังสือและแสดงคะแนนความเป็นขั้วและคะแนนความเป็นวัตถุ/อัตวิสัย คุณควรใช้ไลบรารี `TextBlob` (ที่อธิบายไว้ข้างต้น) เพื่อกำหนด `sentiment` (คุณไม่จำเป็นต้องเขียนเครื่องคำนวณความรู้สึกของคุณเอง) ในงานต่อไปนี้ ```python from textblob import TextBlob quote1 = """It is a truth universally acknowledged, that a single man in possession of a good fortune, must be in want of a wife.""" quote2 = """Darcy, as well as Elizabeth, really loved them; and they were both ever sensible of the warmest gratitude towards the persons who, by bringing her into Derbyshire, had been the means of uniting them.""" sentiment1 = TextBlob(quote1).sentiment sentiment2 = TextBlob(quote2).sentiment print(quote1 + " has a sentiment of " + str(sentiment1)) print(quote2 + " has a sentiment of " + str(sentiment2)) ``` คุณจะเห็นผลลัพธ์ดังนี้: ```output It is a truth universally acknowledged, that a single man in possession of a good fortune, must be in want # of a wife. has a sentiment of Sentiment(polarity=0.20952380952380953, subjectivity=0.27142857142857146) Darcy, as well as Elizabeth, really loved them; and they were both ever sensible of the warmest gratitude towards the persons who, by bringing her into Derbyshire, had been the means of uniting them. has a sentiment of Sentiment(polarity=0.7, subjectivity=0.8) ``` ## ความท้าทาย - ตรวจสอบความเป็นขั้วของความรู้สึก งานของคุณคือการกำหนด โดยใช้ความเป็นขั้วของความรู้สึกว่า *Pride and Prejudice* มีประโยคที่เป็นบวกอย่างแน่นอนมากกว่าประโยคที่เป็นลบอย่างแน่นอนหรือไม่ สำหรับงานนี้ คุณสามารถสมมติว่าคะแนนความเป็นขั้ว 1 หรือ -1 เป็นบวกหรือเป็นลบอย่างแน่นอนตามลำดับ **ขั้นตอน:** 1. ดาวน์โหลด [สำเนา Pride and Prejudice](https://www.gutenberg.org/files/1342/1342-h/1342-h.htm) จาก Project Gutenberg เป็นไฟล์ .txt ลบข้อมูลเมตาที่จุดเริ่มต้นและจุดสิ้นสุดของไฟล์ เหลือเพียงข้อความต้นฉบับ 2. เปิดไฟล์ใน Python และดึงเนื้อหาเป็นสตริง 3. สร้าง TextBlob โดยใช้สตริงของหนังสือ 4. วิเคราะห์แต่ละประโยคในหนังสือในลูป 1. หากความเป็นขั้วคือ 1 หรือ -1 ให้เก็บประโยคไว้ในอาร์เรย์หรือรายการของข้อความบวกหรือลบ 5. ในตอนท้าย พิมพ์ประโยคบวกและประโยคลบทั้งหมด (แยกกัน) และจำนวนของแต่ละประเภท นี่คือตัวอย่าง [วิธีแก้ปัญหา](https://github.com/microsoft/ML-For-Beginners/blob/main/6-NLP/3-Translation-Sentiment/solution/notebook.ipynb) ✅ ตรวจสอบความรู้ 1. ความรู้สึกขึ้นอยู่กับคำที่ใช้ในประโยค แต่โค้ด *เข้าใจ* คำหรือไม่? 2. คุณคิดว่าความเป็นขั้วของความรู้สึกนั้นแม่นยำหรือไม่ หรือพูดอีกอย่าง คุณ *เห็นด้วย* กับคะแนนหรือไม่? 1. โดยเฉพาะ คุณเห็นด้วยหรือไม่เห็นด้วยกับความเป็นขั้ว **บวก** อย่างแน่นอนของประโยคต่อไปนี้: * “What an excellent father you have, girls!” said she, when the door was shut. * “Your examination of Mr. Darcy is over, I presume,” said Miss Bingley; “and pray what is the result?” “I am perfectly convinced by it that Mr. Darcy has no defect. * How wonderfully these sort of things occur! * I have the greatest dislike in the world to that sort of thing. * Charlotte is an excellent manager, I dare say. * “This is delightful indeed! * I am so happy! * Your idea of the ponies is delightful. 2. ประโยค 3 ประโยคถัดไปถูกให้คะแนนด้วยความเป็นขั้วบวกอย่างแน่นอน แต่เมื่ออ่านอย่างละเอียด พวกมันไม่ใช่ประโยคบวก ทำไมการวิเคราะห์ความรู้สึกถึงคิดว่าพวกมันเป็นประโยคบวก? * Happy shall I be, when his stay at Netherfield is over!” “I wish I could say anything to comfort you,” replied Elizabeth; “but it is wholly out of my power. * If I could but see you as happy! * Our distress, my dear Lizzy, is very great. 3. คุณเห็นด้วยหรือไม่เห็นด้วยกับความเป็นขั้ว **ลบ** อย่างแน่นอนของประโยคต่อไปนี้? - Everybody is disgusted with his pride. - “I should like to know how he behaves among strangers.” “You shall hear then—but prepare yourself for something very dreadful. - The pause was to Elizabeth’s feelings dreadful. - It would be dreadful! ✅ ผู้ที่ชื่นชอบ Jane Austen จะเข้าใจว่าเธอมักใช้หนังสือของเธอเพื่อวิจารณ์แง่มุมที่ไร้สาระของสังคมยุครีเจนซี่ของอังกฤษ Elizabeth Bennett ตัวละครหลักใน *Pride and Prejudice* เป็นผู้สังเกตการณ์ทางสังคมที่เฉียบแหลม (เหมือนผู้เขียน) และภาษาของเธอมักมีความหมายที่ลึกซึ้ง แม้แต่ Mr. Darcy (ตัวละครที่เป็นคู่รักในเรื่อง) ยังสังเกตเห็นการใช้ภาษาที่ขี้เล่นและล้อเลียนของ Elizabeth: "I have had the pleasure of your acquaintance long enough to know that you find great enjoyment in occasionally professing opinions which in fact are not your own." --- ## 🚀ความท้าทาย คุณสามารถทำให้ Marvin ดียิ่งขึ้นได้โดยการดึงคุณสมบัติอื่น ๆ จากข้อมูลที่ผู้ใช้ป้อนหรือไม่? ## [แบบทดสอบหลังเรียน](https://ff-quizzes.netlify.app/en/ml/) ## ทบทวนและศึกษาด้วยตนเอง มีหลายวิธีในการวิเคราะห์อารมณ์จากข้อความ ลองคิดถึงการใช้งานในธุรกิจที่อาจนำเทคนิคนี้ไปใช้ และลองคิดถึงวิธีที่มันอาจผิดพลาดได้ อ่านเพิ่มเติมเกี่ยวกับระบบวิเคราะห์อารมณ์ที่ซับซ้อนและพร้อมใช้งานในองค์กร เช่น [Azure Text Analysis](https://docs.microsoft.com/azure/cognitive-services/Text-Analytics/how-tos/text-analytics-how-to-sentiment-analysis?tabs=version-3-1?WT.mc_id=academic-77952-leestott) ทดสอบประโยคจากเรื่อง Pride and Prejudice ด้านบนและดูว่ามันสามารถตรวจจับความละเอียดอ่อนของอารมณ์ได้หรือไม่ ## งานที่ได้รับมอบหมาย [Poetic license](assignment.md) --- **ข้อจำกัดความรับผิดชอบ**: เอกสารนี้ได้รับการแปลโดยใช้บริการแปลภาษา AI [Co-op Translator](https://github.com/Azure/co-op-translator) แม้ว่าเราจะพยายามให้การแปลมีความถูกต้อง แต่โปรดทราบว่าการแปลอัตโนมัติอาจมีข้อผิดพลาดหรือความไม่แม่นยำ เอกสารต้นฉบับในภาษาต้นทางควรถือเป็นแหล่งข้อมูลที่เชื่อถือได้ สำหรับข้อมูลที่สำคัญ ขอแนะนำให้ใช้บริการแปลภาษาจากผู้เชี่ยวชาญ เราไม่รับผิดชอบต่อความเข้าใจผิดหรือการตีความที่ผิดพลาดซึ่งเกิดจากการใช้การแปลนี้