โปรแกรมตัดคำภาษาไทยอย่างง่าย สำหรับใช้กับ Python 3

#! -*- coding: UTF8 -*-
from wordcut import Wordcut
if __name__ == '__main__':
    with open('bigthai.txt') as dict_file:
        word_list = [w.rstrip() for w in dict_file.readlines()]
        word_list.sort()
        wordcut = Wordcut(word_list)
        print(wordcut.tokenize("กากา cat หมา"))

ใช้แบบข้างบนเลยครับ โปรแกรมโหลดได้จาก https://gitlab.com/veer66/wordcutpy บน github ก็มีครับชื่อเดียวกันถ้าทนใช้ gitlab ไม่ไหว

ตัวนี้พยายามจะให้มันง่ายนะครับไฟล์เดียวเสร็จเลย ยังไม่ได้ test เยอะ ถ้าเจอปัญหาอะไรแจ้งใน gitlab ได้เลยครับ ถ้ามี testcase ให้เลยจะดีมาก ถ้ามี testcase ด้วย pull request มาด้วยเลยก็จะดีมาก ๆ ครับ🙂

ป.ล. ใช้ได้กับ Python 3 ขึ้นไปเท่านั้นครับ เพราะว่าพี่ bact ใช้ Python 3😛

zip กับชื่อ path ภาษาไทย โดยใช้ rubyzip

ผมได้รับไฟล์ .zip มา ก็ดีใจว่าอย่างน้อย ๆ ก็ใช่ไม่ .rar ที่เวลาเปิดจะลำบากขึ้นไปอีก

สมัยผมหนุ่ม ๆ เขาตั้งเชื่อไฟล์กันได้ 8 ตัวอักษาและ extension อีก 3 ตัว นอกจากนั้นก็ยังใส่ภาษาไทยไม่ได้ เดี๋ยวนี้ไม่ ใส่ภาษาไทย ใส่ช่องว่างได้หมด งานก็เข้าอีก

โปรแกรมแตกไฟล์ zip บางตัวมันก็ไม่สนใจภาษาไทยเลย อ่านแบบคิดว่าเป็น ASCII แบบ 8 bit ตลอด ๆ  ผมก็เลยลองเอา rubyzip มาเล่นดู แล้ว encode ชื่อไฟล์ใหม่เป็น UTF-8 ก็พบว่าเจ้ง เพราะว่าบางทีชื่อไฟล์ก็ไม่ใช่ UTF-8

เลยเปลี่ยนมาใช้ TIS-620 ก่อนแล้วแปลงเป็น UTF-8 อีกที ก็อ่านได้เพิ่มขึ้น แต่ก็ยังมีตัวอักษรบางตัวแปลงไม่ได้

จึงเปลี่ยนจาก TIS-620 มาใช้ Windows 874 แทน ก็ยังมีปัญหาเหลืออีกคือบางทีชื่อไฟล์เป็น UTF-8 อยู่แล้ว ก็เลยต้องมาเขียน check ก่อน


require 'zip'

def decode_path_name(name)
  if name.force_encoding("UTF-8").valid_encoding?
    name.force_encoding("UTF-8")
  else
    name.force_encoding("WINDOWS-874").encode("UTF-8")
  end
end

Zip::File.open(ARGV[0]) do |zip_file|  
  zip_file.each do |entry|
    name = decode_path_name(entry.name)
    entry.extract(name)
  end
end

พอจัดไปครบตามนี้ก็พบว่าแตกได้ทุกไฟล์แล้ว

 

Apertium ภาษาไทย

Apertium เป็นระบบแปลภาษาแบบใช้กฎการถ่ายโอน (โดยเฉพาะแบบตื้น) ที่สำคัญมันเป็นซอฟต์แวร์เสรี (Free software; ~ Open source software)

Apertium กับภาษาไทยอยู่ในระยะเริ่มต้น แต่ก็เอาลงติดตั้งเพื่อช่วยกันพัฒนาได้ เอาไปใช้คงยังไม่ไหว

  1. เบื้องต้นดูตามนี้ได้เลย
  2. ใน svn ที่ sf.net/projects/apertium ใน trunk ลง lttoolbox apertium apertium-lex-tools
  3. ลง vislcg3
  4. ใน incubator ใน svn ที่ sf.net/projects/apertium ลง apertium-tha
  5. ใน incubator ใน svn ที่ sf.net/projects/apertium ลง apertium-tha-eng อันนี้จะท่ายากหน่อยเพราะต้องสั่งทำนอง ./autogen.sh –with-lang1=(ชี้ไปที่ path ของ apertium-tha) ที่ลงไปก่อนหน้านี

เสร็จแล้ว ใน folder ของ apertium-tha-eng ลองสั่ง apertium -d . eng-tha ก็จะเริ่มแปลได้นิดหน่อย

ตอนนี้มันก็จะออกมาฮาฮาประมาณนี้

$ apertium -d . eng-tha
I am a cat.
#ฉัน #คือ *a #แมว.

ป.ล. ไม่เข้าใจถามไดใน IRC ที่ irc.freenode.org ห้อง #apertium

wordcut 0.7.0 เรียกใช้จาก command line ได้แล้วครับ

wordcut คือโปรแกรมตัดคำ (word segmentation)

วิธีติดตั้ง

npm install -g wordcut

เวลาใช้ก็จะประมาณนี้อะครับ

$ wordcut
กากากา
กา กา กา

คือพิมพ์ กากากา เข้าไปมันก็ตัดได้ กา กา กา ออกมา

More info: http://github.com/veer66/wordcut

Keon + Thai keyboard

Keon + Thai keyboard

 

ขอบคุณ patch โดย @pittaya และวิธี install จาก https://hacks.mozilla.org/2013/06/updating-and-tweaking-your-firefox-os-developer-preview-phonegeeksphone/

สิ่งที่ผมลงไปคือ สิ่งนี้ วิธีคร่าว ๆ ก็คือลง rom nightly แบบวิธีตาม link ข้างบนแล้วก็ clone Gaia มา build แต่ว่าใช้ branch master เลย แล้วก็ merge กับ patch ของ @pittaya