φυβλαςのβλογ
phyblasのブログ



[python] แปลงอักษรไปมาระหว่างเต็มตัวและครึ่งตัว
เขียนเมื่อ 2017/02/02 16:51
แก้ไขล่าสุด 2018/04/02 14:49
วันก่อนได้แนะนำมอดูลสำหรับแปลงตัวภาษาญี่ปุ่นเป็นโรมาจิไปแล้วนั่นคือ pykakasi https://phyblas.hinaboshi.com/20170124

แต่ว่ามาพบปัญหาว่า pykakasi จะไม่ทำการแปลงอักษรคาตาคานะที่มีขนาดเป็นครึ่งตัว (เช่น アカサタ ゙ แบบนี้) ด้วย ก็เลยไปลองหาวิธีที่สามารถแปลงอักษรแบบครึ่งตัวเป็นเต็มตัวได้

ที่จริงจะเขียนเองก็พอทำได้ วิธีการไม่ได้ยากซับซ้อนอะไรขนาดนั้น แต่เนื่องจากพอค้นไปแล้วก็มีมอดูลที่คนทำเอาไว้อยู่แล้วก็เลยเอามาใช้ดีกว่า

มอดูลที่ทำหน้าที่นี้ตอนนี้พบทั้งหมด ๓ ตัว ได้แก่ mojimoji, zenhan และ jaconv

ทั้ง ๓ ตัวนี้สามารถใช้เพื่อแปลงอักษรครึ่งตัวเป็นเต็มตัว หรือเต็มตัวเป็นครึ่งตัวได้เหมือนกัน

การติดตั้งล้วนแล้วแต่สามารถใช้ pip ทำได้ง่ายทั้งสิ้น
pip install mojimoji
pip install zenhan
pip install jaconv

mojimoji นั้นถูกเขียนขึ้นด้วยภาษา C ในขณะที่ zenhan และ jaconv เขียนด้วยภาษาไพธอนเอง ดังนั้น mojimoji จึงทำงานได้เร็วที่สุด ดังนั้นจึงน่าแนะนำมากที่สุด

ตัวอย่างการใช้ เวลาจะแปลงจากครึ่งตัวเป็นเต็มตัวทำได้โดยใช้ฟังก์ชัน han_to_zen
import mojimoji
mojimoji.han_to_zen(u'カサ789awa') # ได้ カサ789awa
mojimoji.han_to_zen(u'ガザ') # ได้ ガザ

จะเห็นว่าอักษร カ และ ゙ ก็ถูกรวมกันเป็น ガ ด้วย ดังนั้นนี่จึงไม่ใช่แค่แทนอักษรตัวหนึ่งด้วยอีกตัวหนึ่งง่ายๆ
(ปกติอักษรครึ่งตัวจะไม่มีการรวมตัว  ゙ เข้าเป็นอักษรเดียวกัน จึงคล้ายกับเป็นวรรณยุกต์หรือสระลอยในภาษาไทย)

เพียงแต่ว่าทำแบบนี้อักษรทั้งหมดจะถูกเปลี่ยนเป็นเต็มตัว หากต้องการเปลี่ยนแค่คาตาคานะก็ให้เพิ่มคีย์เวิร์ด digit=0 และ ascii=0 ลงไป
mojimoji.han_to_zen(u'カサ789awa',digit=0,ascii=0) # ได้ カサ789awa

แต่ถ้าเพิ่มคีย์เวิร์ด kana=0 ลงไป จะเป็นการทำให้ไม่แปลงคาตาคานะ
mojimoji.han_to_zen(u'カサ789awa',kana=0) # ได้ カサ789awa

อนึ่ง ที่ใส่ u นำหน้าเครื่องหมายคำพูดลงไปนั้นเพื่อให้ใช้ได้ในไพธอน 2 ด้วย เพราะจะทำงานต่อเมื่อเป็นสายอักขระแบบยูนิโค้ดเท่านั้น แต่ในไพธอน 3 ไม่จำเป็นต้องใส่ u



และในทางตรงข้าม หากต้องการแปลงอักษรเต็มตัวเป็นครึ่งตัวก็ใช้ฟังก์ชัน zen_to_han ส่วนคีย์เวิร์ดก็ใช้ไดในลักษณะเดียวกัน
mojimoji.zen_to_han(u'カサ789awa') # ได้ カサ789awa
mojimoji.zen_to_han(u'ガザ') # ได้ ガザ
mojimoji.zen_to_han(u'カサ789awa',digit=0,kana=0) # ได้ カサ789awa

ส่วน jaconv กับ zenhan ก็มีลักษณะการใช้คล้ายๆกัน



อ้างอิง
http://qiita.com/ikuyamada/items/fea6c8f81e7cac7cf318


-----------------------------------------

囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧

ดูสถิติของหน้านี้

หมวดหมู่

-- คอมพิวเตอร์ >> เขียนโปรแกรม >> python

ไม่อนุญาตให้นำเนื้อหาของบทความไปลงที่อื่นโดยไม่ได้ขออนุญาตโดยเด็ดขาด หากต้องการนำบางส่วนไปลงสามารถทำได้โดยต้องไม่ใช่การก๊อปแปะแต่ให้เปลี่ยนคำพูดเป็นของตัวเอง หรือไม่ก็เขียนในลักษณะการยกข้อความอ้างอิง และไม่ว่ากรณีไหนก็ตาม ต้องให้เครดิตพร้อมใส่ลิงก์ของทุกบทความที่มีการใช้เนื้อหาเสมอ

目次

日本による名言集
モジュール
-- numpy
-- matplotlib

-- pandas
-- opencv
-- pytorch
機械学習
-- ニューラル
     ネットワーク
maya
javascript
確率論
日本での日記
中国での日記
-- 北京での日記
-- 香港での日記
-- 澳門での日記
台灣での日記
北欧での日記
他の国での日記
qiita
その他の記事

記事の類別



ติดตามอัปเดตของบล็อกได้ที่แฟนเพจ

  記事を検索

  おすすめの記事

ภาษาจีนแบ่งเป็นสำเนียงอะไรบ้าง มีความแตกต่างกันมากแค่ไหน
ทำความเข้าใจระบอบประชาธิปไตยจากประวัติศาสตร์ความเป็นมา
เรียนรู้วิธีการใช้ regular expression (regex)
หลักการเขียนทับศัพท์ภาษาจีนกวางตุ้ง
การใช้ unix shell เบื้องต้น ใน linux และ mac
หลักการเขียนทับศัพท์ภาษาจีนกลาง
g ในภาษาญี่ปุ่นออกเสียง "ก" หรือ "ง" กันแน่
ทำความรู้จักกับปัญญาประดิษฐ์และการเรียนรู้ของเครื่อง
ค้นพบระบบดาวเคราะห์ ๘ ดวง เบื้องหลังความสำเร็จคือปัญญาประดิษฐ์ (AI)
หอดูดาวโบราณปักกิ่ง ตอนที่ ๑: แท่นสังเกตการณ์และสวนดอกไม้
พิพิธภัณฑ์สถาปัตยกรรมโบราณปักกิ่ง
เที่ยวเมืองตานตง ล่องเรือในน่านน้ำเกาหลีเหนือ
บันทึกการเที่ยวสวีเดน 1-12 พ.ค. 2014
แนะนำองค์การวิจัยและพัฒนาการสำรวจอวกาศญี่ปุ่น (JAXA)
เล่าประสบการณ์ค่ายอบรมวิชาการทางดาราศาสตร์โดยโซวเคนได 10 - 16 พ.ย. 2013
ตระเวนเที่ยวตามรอยฉากของอนิเมะในญี่ปุ่น
เที่ยวชมหอดูดาวที่ฐานสังเกตการณ์ซิงหลง
บันทึกการเที่ยวญี่ปุ่นครั้งแรกในชีวิต - ทุกอย่างเริ่มต้นที่สนามบินนานาชาติคันไซ
หลักการเขียนทับศัพท์ภาษาญี่ปุ่น
ทำไมจึงไม่ควรเขียนวรรณยุกต์เวลาทับศัพท์ภาษาต่างประเทศ
ทำไมถึงอยากมาเรียนต่อนอก
เหตุผลอะไรที่ต้องใช้ภาษาวิบัติ?

月別記事

2021年

1月 2月 3月 4月
5月 6月 7月 8月
9月 10月 11月 12月

2020年

1月 2月 3月 4月
5月 6月 7月 8月
9月 10月 11月 12月

2019年

1月 2月 3月 4月
5月 6月 7月 8月
9月 10月 11月 12月

2018年

1月 2月 3月 4月
5月 6月 7月 8月
9月 10月 11月 12月

2017年

1月 2月 3月 4月
5月 6月 7月 8月
9月 10月 11月 12月

もっと前の記事

ไทย

日本語

中文