หลังจากที่ผมได้ทำ PyThaiNLP ช่วงสองสามวันนี้ ผมได้ทำไฟล์ royin.py https://goo.gl/SNzkqf โดยผมได้ลองเพิ่มสระดูแต่ผมพบว่า โค้ดที่ผมเขียนขาดเงื่อนไขในการถอดเสียงภาษาไทยเป็นอักษรโรมัน ตามหลักราชบัณฑิตยสถาน คือ ต้องถอดตามคำอ่านและมีเงื่อนไขคำควบกล้ำอีก ผมเลยตัดสินใจลบไฟล์ royin.py หลังจากพยายามเขียนมาเป็นเดือนและ Test หลายร้อยครั้ง T_T
ผมจึงลองวิธีใหม่ ผมได้ไปเจอ ISO 11940-2 เป็นมาตรฐาน ISO ระดับโลกสำหรับการถอดเสียงภาษาไทยเป็น Latin และผมพบว่า ICU (International Components for Unicode) ได้รองรับการถอดเสียงภาษาไทยเป็น Latin ตามมาตรฐาน ISO 11940-2 มานานแล้ว ผมเลยกลับมามอง pyicu พบว่ารองรับความสามารถนี้เหมือนกัน มาลองเขียนโปรแกรมถอดเสียงภาษาไทยเป็น Latin กันเลยครับ :D
import icu
thai2latin = icu.Transliterator.createInstance('Thai-Latin')
latin = thai2latin.transliterate("แมว")
print(latin
ผลลัพธ์
mæw
นอกจากนั้น ยังสามารถแปลง Latin กลับมาเป็นภาษาไทยได้
latin2thai = icu.Transliterator.createInstance('Thai-Latin', icu.UTransDirection.REVERSE)
print(latin2thai.transliterate('mæw'))
หรือ
latin2thai = thai2latin.createInverse()
print(latin2thai.transliterate('mæw'))
ผลลัพธ์
แมว
เข้าไปช่วยกันพัฒนา PyThaiNLP ได้ที่ https://github.com/pythainlp/pythainlp ครับ
แหล่งอ้างอิง
- หลักเกณฑ์การถอดเสียงภาษาไทยเป็นอักษรโรมัน - http://www.arts.chula.ac.th/~ling/tts/ThaiRoman.pdf
- ISO 11940-2 - https://en.wikipedia.org/wiki/ISO_11940-2
- ISO กับภาษาไทย (2) - http://app.tisi.go.th/clip_news/news042.html
- International Components for Unicode - http://icu-project.org
ติดตามบทความต่อไปนะครับ
ขอบคุณครับ :D
0 ความคิดเห็น:
แสดงความคิดเห็น
แสดงความคิดเห็นได้ครับ :)