วิธีการแปลภาษาด้วย TranslateAPI แบบไม่ให้ภาษาไทยมันเพี้ยน : Serverless Web App บน AWS : Part 4

วิธีการแปลภาษาด้วย TranslateAPI แบบไม่ให้ภาษาไทยมันเพี้ยน : Serverless Web App บน AWS : Part 4

ถ้าแปลภาษาเป็นภาษาไทย แล้วตัวอักษรเพี้ยน บทความนี้มีคำตอบครับ
Clock Icon2024.11.11

บทความนี้ดัดแปลงเนื้อหาบางส่วนมาจาก Hands-on Training ของ Website AWS Official ของญี่ปุ่น สามารถอ่านเนื้อหาต้นฉบับได้ที่ AWS Hands-on for Beginners Serverless #1 サーバーレスアーキテクチャで翻訳 Web API を構築する | AWS Webinar

บทความนี้เป็นส่วนนึงของเนื้อหาในบทเรียนเกี่ยวกับ AWS API Gateway ที่ผมสร้างขึ้นมา คุณผู้อ่านสามารถตรวจสอบเนื้อหาทั้งหมดได้โดยการคลิกที่ชื่อของผม

เป้าหมายใหญ่สุดของบทเรียนนี้คือ การทำ Web app แปลภาษาที่เป็น serverless ครับ

สวัสดีครับ ต้า ครับ

บทความนี้เป็นส่วนนึงของเนื้อหาในบทเรียนเกี่ยวกับ AWS API Gateway ที่ผมสร้างขึ้นมา
ซึ่งผมทำการแยกย่อยๆออกมาโดยเนื้อหาในบทความพวกนี้สามารถจบได้ในตัวของมันเอง

สำหรับหัวข้ออื่นๆ ของบทความนี้ สามารถตรวจสอบได้ที่ช่วงท้ายของบทความครับ

สำหรับบทความนี้เราจะมาทำกันในส่วนนี้ครับ

Hands-On-for-Beginners_2022_Serverless1_0819_v1_Part4

จะเป็นการแก้ไขโค้ดใน Lambda เพื่อให้สามารถแปลเป็นภาษาไทยได้โดยตัวอักษรไม่เพี้ยน

บทความนี้เราจะมาทำกันใน Singapore Region กันครับ

เริ่มลงมือทำ

ปัญหาการแปลภาษาจากอังกฤษเป็นไทย และ วิธีแก้

ในหัวข้อที่ผ่านมา เราได้ทำการแปล ภาษาอังกฤษ เป็น ภาษาไทย กันไปแล้ว

หัวข้อนี้เราจะมาลองทำการแปลภาษาจาก ไทย เป็น อังกฤษ กันบ้างครับ

โดยเมื่อเราทำการเปลี่ยนโค้ดใน Lambda จาก

SourceLanguageCode="th",  >>> Change to >>>  SourceLanguageCode="en",
TargetLanguageCode="en"  >>> Change to >>>   TargetLanguageCode="th"

แล้วเปลี่ยน ตัว Test ใน Event JSON ให้เป็นต้องการแปลจากภาษาอังกฤษ เช่น

"input_text": "อยากกินกล้วย"    >>> Change to >>>   "input_text": "I wanna eat bananas"

แล้วเมื่อเราลองแปลภาษาตอนนี้ จะเกิดปัญหาอยู่อย่างนึงคือเมื่อเราลองให้แปลภาษาเป็นไทย หรือภาษาที่ใช้ตัวอักษรพิเศษ เราจะเห็นได้ว่า เมื่อแปลแล้ว จะได้ภาษาที่เพี้ยนๆ

translate9

สาเหตุเนื่องมาจาก json.dumps ของ python จะถูกตั้งว่าไว้ให้ ASCII เป็น True

โดยวิธีแก้นั้น เราสามารถทำได้ เข้าไปแก้โค้ดใน Lambda ได้ ดังต่อไปนี้

เพิ่ม ensure_ascii=Falseลงใน output_text ของ return ของคุณ

โดยทำการแก้ตามด้านล่างนี้

[อันเดิม]
    return {
        'statusCode': 200,
        'body': json.dumps({
            'output_text': output_text
        }),
        'isBase64Encoded': False,
        'headers': {}
    }

[อันใหม่]
    return {
        'statusCode': 200,
        'body': json.dumps({
            'output_text': output_text
        }, ensure_ascii=False), # บรรทัดที่ถูกเพิ่มเข้ามา
        'isBase64Encoded': False,
        'headers': {}
    }

เมื่อเราทำการทดสอบอีกรอบจะเห็นได้ว่าแปลได้เป็นภาษาไทยแล้ว

translate10

บทความ Part อื่นๆ

บทความอ้างอิง

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.