cetdict
cetdict คืออะไร
cetdict คือโปรแกรมพจนานุกรม อังกฤษ-ไทย โดยมีอินเทอร์เฟสเป็นบรรทัดคำสั่ง. สามารถหาคำศัพท์ภาษาอังกฤษได้ 2 แบบคือแบบ command line mode และ interactive mode. อ่านเบื้องหลังและความคิด, ถ้าคุณสนใจ.
คุณสมบัติ
- แปลคำศัพท์ต่อเนื่องหลายคำในทีเดียว
- ใช้ได้ทั้งเป็นคำสั่งในเชลล์และเชิงโต้ตอบ
- ใช้สะดวกและรวดเร็วในเชลล์
- ใช้คุณสมบัติของไลบรารี readline สามารถทำ word completion, history และแก้ไขบรรทัดคำสั่งได้แบบ bash.
- ตรวจและแสดงคำที่น่าจะเป็นไปได้ (spell check) ถ้าหาคำไม่เจอ.
- แสดงผลประกอบด้วยสี (ANSI color terminal)
ความต้องการพื้นฐาน
- เทอร์มินอลเอมิวเลเตอร์ที่สามารถแสดงภาษาไทยได้
- Perl และ Perl module ต่อไปนี้
- DB_File
- Term::ReadLine
- Term::ReadLine::Gnu
- Term::ANSIColor
ดาว์นโหลด
- cetdict-0.01.tar.gz (27 May 2004)
วิธีการติดตั้ง
การติดตั้งแบบอัตโนมัติ
$ tar xzvf cetdict-0.01.tar.gz $ su # cd cetdict-0.01 # ./install.shเชลล์สคริปต์ install.sh จะตรวจสอบ perl module ถ้าไม่มีก็จะอินสตอลล์ให้โดยอัตโนมัติ.
การติดตั้งด้วยมือ
- กระจายไฟล์ที่ดาว์นโหลดมา
$ tar xzvf cetdict-0.01.tar.gz
- เป็น root
$ su #
- Perl module
การติดตั้ง perl module ทำได้โดยใช้โปรแกรม perl ดังนี้.# perl -MCPAN -e shell
โปรแกรมจะถามคำถามเพื่อตั้งค่าต่างๆ. ตอบคำถามด้วยค่าปริยายโดยการกด Enter คีย์เฉยๆก็ได้.เมื่อตอบคำถามหมดแล้วก็จะมีพรอมต์ "cpan>" ปรากฏให้. ตัวอย่างถ้าต้องการติดตั้ง perl module Term::ReadLine::Gnu ก็สั่งคำสั่ง.
cpan> install Term::ReadLine::Gnu
Perl จะดาว์นโหลด, คอมไพล์ และติดตั้ง module ให้โดยอัตโนมัติ. - ก็อปปี้ข้อมูลพจนานุกรม
ข้อมูลพจนานุกรมอยู่ในไฟล์ dictdata.db ซึ่งไฟล์นี้เป็นไฟล์ฐานข้อมูลแบบ Berkley DB. ไฟล์นี้เอามาจากโครงการ KDictThai. เนื้อหาของข้อมูลมาจากโครงการ HopeDictให้สร้างไดเรกทอรี /usr/share/dict/th และก็อปปี้ไฟล์นี้ไปไว้ที่นั่น.
# mkdir -p /usr/share/dict/th # cp dictdata.db /usr/share/dict/th
- สร้าง man page
# pod2man cetdict | gzip > /usr/share/man/man1/cetdict.1.gz
- ก็อปปี้ตัวโปรแกรม
# cp cetdict /usr/bin
ตัวอย่างการใช้
แบบบรรทัดคำสั่ง
ถ้าเป็นคำที่มีช่องไฟคั่นเช่น "red hat". ให้หาคำศัพท์ดังนี้.
$ cetdict "red hat"การจับกลุ่มโดยใช้เครื่องหมาย double quote นี้ใช้ในโหมดเชิงโต้ตอบไม่ได้ (บั๊ก).
แบบเชิงโต้ตอบ
- คำสั่ง "\help".
- หาคำแปล
- เติมเต็มคำ (word completion)
ตัวอย่างเช่นป้อนคำ "dic" แล้วกดคีย์ Tab Tab (สองครั้ง) ก็จะเติมเต็มคำที่เป็นไปได้ให้. ถ้าไม่มีคำซ้ำแล้วก็จะเติมเต็มคำให้จนหมด. เช่นพิมพ์ "dictiona" แล้วกด Tab ก็จะได้ "dictionary" โดยอัตโนมัติ.
- แสดงคำที่ถูกต้องถ้าไม่เจอคำที่ต้องการหา
- ดูคำรายการคำที่มีอยู่ในพจนานุกรมทั้งหมด (M-? หรือ Tab Tab)

- ดูศัพท์และคำแปลทั้งหมด (มีบั๊ก) (M-* Enter)

- ดูจำนวนคำศัพท์ของแต่ละตัวอักษร (เช่น a Tab Tab, b Tab Tab, ...)
- ดูศัพท์และคำแปลของคำที่ขึ้นต้นด้วยอักษร k. (k M-* Enter)
- key binding ทั่วไปที่ใช้บ่อย (readline)
key binding คำสั่ง ความหมาย C-p previous-history หาศัพท์บรรทัดที่แล้ว C-n next-history หาศัพท์บรรทัดต่อไป C-l clear-screen เคลียร์หน้าจอ Tab complete เติมเต็มคำ Tab Tab possible-completions แสดงส่วนเติมเต็มที่เป็นไปได้ M-? possible-completions แสดงส่วนเติมเต็มที่เป็นไปได้ M-* insert-completions เติมส่วนเติมเต็มที่เป็นไปได้ทั้งหมด C-a beginning-of-line ไปต้นบรรทัด C-e end-of-line ไปท้ายบรรทัด C-f forward-char เลื่อนเคอร์เซอร์ไปข้างหน้า C-b backward-char เลื่อนเคอร์เซอร์ไปข้างหลัง C-k kill-line ลบจากเคอร์เซอร์ไปจนสุดบรรทัด C-d delete-char ลบอักขระหนึ่งตัว M-d delete-word ลบคำ M-f forward-word เลื่อนเคอร์เซอร์ไปข้างหน้าหนึ่งคำ M-b backward-char เลื่อนเคอร์เซอร์ไปข้างหลังหนึ่งคำ C-p คือกดคีย์ Control ค้างไว้แล้วกดคีย์ p ตาม. M-f คือกดคีย์ Esc ทีหนึ่ง (ปล่อย) แล้วกดคีย์ f ตาม.
- cetdict ใน gnome-terminal ที่ใช้ฟอนต์ไทย (TlwgMono) และ encoding ไทย (TIS-620).
Credits
ต้องทำ(น่าทำ)
- ใช้ autoconf, automake ในการติดตั้ง
- ติดต่อกับพจนานุกรม Longdo ผ่านทางเน็ตเวิร์ก.
- มีพจนานุกรมเป็นข้อมูลส่วนตัว
- ปรับค่าต่างๆได้เช่นเลือกแหล่งข้อมูล.
- ทำการแสดงผลให้ดีกว่านี้ี้ี้
- ไฟล์ประวัติค้นหาคำ
- ค้นหาด้วย regular expression
- XML
- ทำเป็น Perl module
รายการปรารถนา
- ข้อมูลพจนานุกรม ไทย - อังกฤษ (LEXiTRON data?)
ติดต่อสอบถาม
TLWG Developer channel
แจ๋วครับ :) กะจะแยกส่วน engine กับ interface ออกมามั้ยครับ เผื่อใครอยากทำ front end อื่นในอนาคต เช่น GUI-based, หรือ ให้จาก application ใดๆ เรียกใช้ได้ กำลังคิดว่า ถ้าใช้งาน application เช่น อ่าน mail, ถ้า select text ส่วนที่ไม่เข้าใจ แล้วกดเมาส์ขวา มีแบบ "เปิดพจนานุกรม" ให้เลือกเลยก็คงดี
ถ้าเชื่อมกับลองดูได้ก็เจ๋งเลยครับ :) เช่น โหลด update คำใหม่ๆ จาก server (http://longdo.ex.nii.ac.jp/?download=1) หรือ contribute คำใหม่กลับไปยัง Longdo