ใช้ Python แปลภาษาด้วย googletrans

--

google translate pyrthon api

ช่วงนี้เขียนโมเดลเยอะ แล้วก็ทำเกี่ยวกับ Stat เยอะ จนรู้สึกว่าไม่ได้เขียนแนะนำ Library เท่าไหร่ ดังนั้นวันนี้กลับมาแนะนำ Python library กันบ้าง เหมือนเดิมอย่างทุก ๆ ครั้งที่ผ่านมา ที่มาของเนื้อหาตอนนี้ก็มาจากโจทย์ที่เจอระหว่างการทำงานอีกเช่นเคย ล่าสุดเพิ่งไปเจอข้อมูลที่เก็บไว้เป็นภาษาไทยมา แล้วต้องการใช้ Python จัดการข้อมูลให้เป็นภาษาอังกฤษในรูปแบบของ DataFrame

Library ที่ใช้ในการแก้โจทย์ครั้งนี้คือ googletrans ซึ่งเป็น Library free API ของ Google ที่ออกแบบมาให้ใช้กับ Python ในการแปลภาษา ซึ่งสามารถอ่านเพิ่มเติมได้จาก Link ที่แปะไว้ด้านล่าง

ก่อนเริ่มใช้งาน ให้ทำการติดตั้ง googletrans เสียก่อน สามารถใช้คำสั่ง pip install googletrans ได้ตรง ๆ

Code

ขอเริ่มจากการสร้าง DataFrame ขึ้นมาเพื่อเก็บค่า String ที่ต้องการแปลก่อน เหตุผลที่ต้องทำเป็น DataFrame เพราะต้องการให้เหมือนกับโจทย์ที่ไปเจอมาจากข้อมูลของลูกค้า จากนั้นต้องกำหนด Translator() ที่เป็น Object ใส่ตัวเข้าไปในตัวแปรก่อน ในที่นี้ให้ชื่อว่า translator

ใช้คำสั่ง .map() เพื่อทำการ Apply column function กับ Column ‘Thai’ (Series) โดยที่ต้องใส่ Input คือคำที่ต้องการแปล ในที่นี้คือ x ที่อยู่ภายใต้ lambda ส่วน src คือ Source language หรือภาษาต้นทาง และ dest คือ Destination language หรือภาษาปลายทางนั่นเอง

google translate pyrthon api
ตัวอย่างการเพิ่ม column ใหม่ที่แปลภาษาเสร็จเรียบร้อยแล้ว

ลองเปลี่ยนให้ Column ที่ต้องการทำงาน เก็บค่า String ที่มี 2 ภาษาคือไทยและอังกฤษ​ และต้องการสร้างอีก 1 Column ที่รับค่าแปลเป็นภาษาอังกฤษเท่านั้น เพื่อดูว่าตัว Translator มีเงื่อนไขอะไรเพิ่มเติมหรือไม่

กำหนดให้ Column ที่เป็นภาษาไทยมีคำอังกฤษปะปนมาด้วย นอกเหนือจากนั้นใช้ Code เดิมจากที่ได้อธิบายด้านบนทั้งหมด

google translate pyrthon api
อะไรที่เป็นภาษาอังกฤษอยู่แล้ว จะยังเป็นภาษาอังกฤษอยู่เหมือนเดิม

เห็นได้ว่าเมื่อกำหนดค่า Source language เป็นภาษาใด ๆ ให้กับ Translator ตัว Object module จะทำการ Detect เฉพาะภาษาที่เป็น Source language เท่านั้น ส่วนภาษาอื่น ๆ ไม่ได้รับผลกระทบแต่อย่างใด

จบแล้ว… ถึงว่า Blog ตอนนี้เป็นอีกตอนสั้นมาก ๆ เพราะว่าช่วงนี้มีความยุ่งกับการประจำ จนไม่ได้เขียนอะไรเยอะเหมือนเมื่อก่อน ไว้ถ้าโปรเจคเบาบางลงเมื่อไหร่ คงได้เขียนอะไรยาว ๆ กันอีกที

--

--

Sasiwut Chaiyadecha
Sasiwut Chaiyadecha

No responses yet