Logbook#4

Document Sample
Logbook#4 Powered By Docstoc
					COE2008-06                                                          1


                                    Logbook#2

                                   หัวข้อโครงการ
                                Thai Soundex Library



                                 หมายเลขโครงการ
                                   COE2008-06



                                  ผู้ดาเนินโครงการ
             1. นายวิรัตน์           หวาวิสัย    รหัส 483040146-2
             2. นายศิริวัฒน์         บุญดี       รหัส 483040150-1



                                  วันที่บันทึก
                     20 มิถุนายน 2551 – 16 กรกฎาคม 2551



                                ชื่ออาจารย์ที่ปรึกษา
                               อ. ดร. กิตติ์ เธียรธโนปจัย



                             ชื่ออาจารย์ผู้ร่วมประเมิน
                                อ. ดร. วสุ เชาว์พานนท์
                                 ผ.ศ. อนัตต์ เจ่าสกุล
COE2008-06                                                                                                                   2


วัตถุประสงค์ของโครงการ
          1. พัฒนา soundex library สาหรับภาษาไทย

ขอบเขตของโครงการ
          1. พัฒนาบนลินุกซ์
          2. พัฒนาเป็นส่วนขยายของ libthai
          3. มี algorithm ให้เลือกได้

แผนงานที่ได้วางไว้ (ช่วงวันที่ 20 มิถุนายน 2551 – 16 กรกฎาคม 2551)
         1. ออกแบบการทางานของอัลกอริทึมสาหรับการเข้ารหัสคา
         2. เครื่องมือที่ใช้ในการเข้ารหัส (Lex , Yacc)
         3. ออกแบบการทางานโดยภาพรวมทั้งหมดของโครงการ

แผนงานที่ปฏิบัติได้จริง ช่วงวันที่ 20 มิถุนายน 2551 – 16 กรกฎาคม 2551
         1. ออกแบบการทางานของอัลกอริทึม สาหรับการเข้ารหัส
         2. เครื่องมือที่ใช้ในการเข้ารหัส (Lex , Yacc)
         3. ออกแบบการทางานโดยภาพรวมทั้งหมดของโครงการ

รายละเอียดของงานที่ทา
          การศึกษาข้อมูล
           การดาเนินงานในครั้งนี้ ได้ทาการศึกษา ในหัวข้อที่เกี่ยวข้องต่างๆ ดังนี้
1. ออกแบบการทางานของอัลกอริทึมสาหรับการเข้ารหัสคา
           ก า ร เ ข้ า ร หั ส ข อ ง ค า ใ น ภ า ษ า ไ ท ย ไ ป เ ป็ น ร หั ส แ ท น ค า นั้ น มี ง า น วิ จั ย ห ล า ย ผ ล ง า น
ที่เกี่ยวกับการเข้ารหัสคาในภาษาไทย ดังจะกล่าวดังต่อไปนี้
ผลงานของ นวภัทร์ ขันธ์ต้นทอง (2544)
           งานวิจัยนี้มีวัตุประสงค์เพื่อหาคาศัพท์ภาษาอังกฤษที่ถูกต้องจากคาทับศัพท์ภาษาอักกฤษที่อยู่ในรู
ป                  ภ                  า                ษ                 า                 ไ                  ท               ย
โดยพิจารณาจากเสียงของคาศัพท์ภ าษาอังกฤษและเสียงของคาทับศัพท์ภาษาอัง กฤษให้ตรงกันที่สุด
โ ด ย อ า ศั ย วิ ธี ก า ร อิ ง ก ฎ แ ล ะ ส ถิ ติ
โดยเน้นเฉพาะการแปลงคาทับศัพท์ภาษาอังกฤษทางเทคนิคด้านคอมพิวเตอร์และคาทับศัพท์ภาษาอังกฤ
ษทั่วไปจานวน 3,755 คา การแปลงคาทับศัพท์เป็นคาตั้นฉบับแบบอัตโนมัติแบ่งออกเป็น 4 ส่วน คือ
COE2008-06                                                                                                                     3


1. ส่วนของการตัดพยางค์ย่อยในคาทับศัพท์ภาษาอังกฤษ (Tokenization)
2. ส่วนของการรวมกลุ่มพยางค์ย่อยในคาทับศัพท์ภาษาอังกฤษ (Syllable combination)
3. ส่วนของการแปลงพยางค์คาทับศัพท์ภาษาอังกฤษเป็นหน่วยเสียง (Phonetic transcription)
4. ส่วนของการเลือกคาศัพท์ภาษาอังกฤษตรงกับคาทับศัพท์โดยใช้โทคนิคของฟัซซ์ (Fuzzymatiching)

ผลงานของพัชรวรรณ คล่องอาวุธ (2545)
         โครงงานนี้มีวัตถุประสงค์ในการสร้างสัญลักษณ์แทนเสียงสาหรับกากับข้อความภาษาไทยโดยการ
แปลงข้อความภาษาไทยเป็นสัญลักษณ์แทนเสียงประกอบด้วย 2 ส่วนหลัก คือ
1. การสร้างคาอ่านจากข้อความแบ่งได้เป็น 3 ส่วน
         - ส่วนการแยกพยางค์
         - ส่วนสร้างความถูกต้องของเสียงอ่านให้พยางค์
         - ส่วนเปลี่ยนรูปตัวสะกด
2. การสร้างสัญลักษณ์แทนเสียง แบ่งได้เป็น 2 ส่วน
 -         ส่วนการหาเสียงวรรณยุกต์และความยาวเสียงจริง
 -         ส่วนการแปลงสัญลักษณ์แทนเสียง
         ในส่ ว นของโครงแรกนั้ น เป็ น การค้ น หาค าศั พ ท์ ภ าษาอั ง กฤษจากค าทั บ ศั พ ท์ หลั ก การ คื อ
พิจารณาเสียงจองคาศัพท์ภาษาอังกฤษกับคาทับศัพท์ภาษาอังกฤษ โดยเปรียบเทียบให้ตรงกันมากที่สุด
จ ะ เ ห็ น ไ ด้ ว่ า ไ ด้ ผ ล ลั พ ธ์ เ ป็ น ค า ศั พ ท์ ภ า ษ า อั ง ก ฤ ษ
ซึ่งแตกต่างจากโครงงานนี้ที่ได้ผลลัพธ์เป็นคาพ้องเสียงภาษาไทย
         ส่ ว น โ ค ร ง ง า น ที่ ส อ ง เ น้ น ไ ป ที่ ก า ร ส ร้ า ง สั ญ ลั ก ษ ณ์ แ ท น เ สี ย ง
ซึ่ ง ไ ด้ ผ ล ลั พ ธ์ เ ป็ น สั ญ ลั ก ษ ณ์ แ ท น เ สี ย ง กั บ ค า อ่ า น
ซึ่งผลลัพธ์เป็นคาอ่านนั้นยังขาดความถูกต้องอยู่หลายอย่าง ดังนี้
         - คาสมาสหรือคาที่ไม่มีรูป อะ เช่น คมนาคม อ่านผิดเป็น คม-นา-รม
         - คาแผลง เช่น ดาริ อ่านผิดเป็น ดา-ริ , อามาตย์ อ่านผิดเป็น อา-มาด

บริษัทดาต้าแมทจากัด (2521)
           ใ น ร ะ บ บ ติ ด ต า ม เ ร่ ง รั ด ภ า ษ า บ า รุ ง ท้ อ ง ที่ ซึ่ ง พั ฒ น า โ ด ย บ ริ ษั ท ด า ต้ า แ ม ท จ า กั ด
ร่ ว มกั บ ส านั ก นโยบายและแผนกรุ ง เทพมหานคร ได้ ใ ช้ ร หั ส ซาวด์ เ ด็ ก ซ์ ส าหรั บ ชื่ อและนามสกุ ล
โ ด ย ร หั ส ป ร ะ ก อ บ ด้ ว ย อั ก ษ ร ห นึ่ ง ตั ว ต า ม ด้ ว ย ตั ว เ ล ข เ จ็ ด ตั ว
ตั ว อั ก ษ ร แ ร ก ข อ ง ร หั ส เ อ า ม า จ า ก ตั ว อั ก ษ ร แ ร ก ข อ ง ชื่ อ
COE2008-06                                                                                                       4


ตั ว เ ล ข ส า ม ตั ว แ ร ก ส ร้ า ง ขึ้ น ม า จ า ก ตั ว อั ก ษ ร ตั้ ง แ ต่ ตั ว ที่ ส อ ง ขึ้ น ไ ป ข อ ง ชื่ อ
ตัวเขลสี่ตัวที่เหลือสร้างขึ้นจากนามสกุล โดยการลงเลขรหัสทาตามกฎ ดังนี้
1. ตัวสระ วรรณยุกต์ และเครื่องหมายกากับเสียงทั้งหมด
                ่
2. ตัวอักษรทีเหลือให้ลงรหัสแสดงใสตารางที่ 1.1
3. เมื่อตัวอักษรในชื่อหรือนามสกุลหมดก่อนที่รหัสจะเต็ม ให้เติมศูนย์ในรหัสที่เหลือจนเต็ม
4. ถ้าเลขรหัสในรหัสเต็มแล้ว แต่ตัวอักษรในชื่อหรือนามสกุลยังเหลือหให้ทิ้งอักษรที่เหลือทั้งหมด

ตารางที่ 1.1 รหัสของรหัสอักขระภาษาไทย ตามวิธีการสร้างรหัสซาวด์เด็กของบริษัทดาต้าแมทจากัด
                      อักขระ                                          รหัส
                   กขฃคฅฆง                                              1
                   จฉชซฌญ                                               2
                   ฎฏฐฑฒณ                                               3
                    ด ต ถ ทธ น                                          4
                   บปผฝพฟ                                               5
                  ภมยรลวฤฦ                                              6
                  ศษสหฬอฮ                                               7

วรรณี อุดมพาณิชย์ (2526)
          วรรณี อุ ด มพาณิ ช ย์ ได้ ศึ ก ษาวิ ธี ซ าวเด็ ก ซ์ โดยก าหนดรหั ส ประกอบด้ ว ยตั ว เลขหนึ่ ง ตั ว
ตามด้วยตัวเลขหกตัว ซึ่งมีหลักเกณฑ์และข้อกาหนดต่าง ๆ ดังนี้
1. พยัญชนิตัวแรกที่ปรากฎในชื่อจะเป็นพยัญชนะตัวแรกของรหัสโดยมีการจัดกลุ่มพยัญชนะต้นที่ออกเสีย
ง เ ห มื อ น กั น ห ล า ย ก ลุ่ ม ถ้ า ใ ช้ ต่ า ง กั น ก็ จ ะ ท า ใ ห้ ไ ด้ ร หั ส ผิ ด พ ล า ด ไ ด้
ดังนี้จึงได้เสียงของพยัญชนะมาจัดกลุ่มเป็นพยัญชนะตั้นดังตารางที่ 1.2
ตารางที่ 1.2 ตารางพยัญชนะตัวแรกโดยวิธีการซาวด์เด็กของ วรรณี อุดมพาณิชย์
                    กลุ่มพยัญชนะ                                     พยัญชนะต้นที่ใช้แทนกลุ่ม
                          ก                                                     ก
                      ขฃคฅฆ                                                     ข
                          ง                                                     ง
                          จ                                                     จ
                         ชฌฉ                                                    ช
COE2008-06                                                                       5

                   ซศษส                                              ส
                     ดฎ                                              ด
                     ตฏ                                              ต
                 ฐฑฒถทธ                                              ท
                    ณน                                               น
                      บ                                              บ
                      ป                                              ป
                    พภผ                                              พ
                     ฝฟ                                              ฟ
                      ม                                              ม
                    ญย                                               ย
                  รลฬฤฦ                                              ร
                      ว                                              ว
                      อ                                              อ
                     หฮ                                              ฮ

ตารางที่ 1.3 เลขรหัสแทนพยัญชนะตัวต่อมาโดยวิธีการซาวด์เด็กของ วรรณี อุดมพาณิชย์
                 กลุ่มพยัญชนะ                                      เลขรหัส
                       มวำ                                            0
                   กขฃคฅฆ                                             1
                       งย                                             2
                      ญณน                                             3
                 ฎฏดตศษส                                              4
                     บปพภ                                             5
                   ผฝฟหอฮ                                             6
                    จฉชซฌ                                             7
                  ฐฑฒถทธ                                              8
                      รฤลฝ                                            9
COE2008-06                                                                                                                6


2. พ        ยั      ญ       ช          น        ะ      ตั      ว       ต่      อ                ๆ
มาให้ยึดหลักการให้รหัสตามการจัดกลุ่มที่จัดไว้โดยนาตัวเลขแต่ละตัวเข้าแทนที่พยัญชนะต่าง ๆ ของชื่อ ๆ
                     ่
โดยพยัญชนะตัวตามอืน ๆ จัดกลุ่มได้ดังตารางที่ 1.3
3. ให้ตัดพยัญชนะและสระที่มีตัวการรันต์กากับทิ้ง
4. หากมีพยัญชนะไม่พอให้ใช้ 0 เต็มท้ายรหัสจนได้ความยาวรหัสตามที่ต้องการ
5. ตัดวรรณยุกต์ทุกตัว และสระทุกตัวทิ้ง

วิชิต หล่อจีรชุณห์กุล และเจริญ คุวินทร์พันธ์ (2523)
         รหัสประกอบด้วยตัวอักษรหนึ่งตัว ตามด้วยตัวเลขฐานสิงหกอีกสี่ตัว ซึ่งมีหลักเกณฑ์ต่าง ๆ ดังนี้
1. ตัว อัก ษรแรกของรหั ส เอามาจากตัว อัก ษรแรกของชื่ อ ตามตารางที่ 1.4 รหัส ส าหรับ อั กษรแรก
ยกเว้นเมื่ออักษรแรกของเป็นสระหน้า ให้สลับพย้ญชนะกับสระหน้า
2. ตัดวรรณยุกต์ ็ (นิคหัต) ฺ (พินธุ) ๆ ฯ
3. ถ้าพบ ์ ให้ตัดทิ้งพยัญชนะและสระนั้น
4. สระ ะ ถือเป็นตัวคั่นไม่ลงรหัส
5. สระ า ๅ ึ ื ู เ เป็นตัวคั่นและลงรหัส
6. ส ร ะ            ุ เ ป็ น ตั ว คั่ น แ ล ะ ล ง ร หั ส เ ส ม อ ถ้ า อ ยู่ ใ น ต า แ ห น่ ง ที่ 1
แต่ถ้าอยู่ในตาแหน่งอื่นจะลงรหัสต่อเมื่อมิได้อยู่ต็พยัญชนะ ต และ ธ
7. ตั ด พยั ญ ชนะ ห อ โดยไม่ ต้ อ งลงรหั ส นอกจากเป็ น พยั ญ ชนะตั ว แรกของชื่ อ หรื อ นามสกุ ล
หรือมีสระ ึ ุ ู อยู่ในตาแหน่งเดียวกัน
8. ตั ด พ ยั ญ ช น ะ ร ล ว ย ฤ ฦ โ ด ย ไ ม่ ต้ อ ง ล ง ร หั ส
นอกจากเป็นพยัญชนะตัวแรกของนามสกุลหรือมีตัวคั่นนาหน้า หรือมีสระ ึ อยู่ในตาแหน่งเดียวกัน
9. การลงรหัสทาตามตามรางรหัสสาหรับตัวอักษรที่เหลือดังตารางที่ 1.5
10. ถ้ า อั ก ษรติ ด กั น ในชื่ อ ให้ เ ลขรหั ส เหมื อ นกั น ให้ ทิ้ ง เลขรหั ส ที่ ซ้ าไปเก็ บ ไว้ เ ฉพาะเลขรหั ส ตั ว แรก
นอกจากจะถูกคั่นโดยตัวคั่น
11. เมื่อตัวอักษรในชื่อหมดก่อนที่เลขในรหัสจะเต็ม ให้เติมศูนย์ในเลขรหัสที่เหลือจนเต็ม
12. ถ้าเลขรหัสในรหัสเต็มแล้ว แต่ตัวอักษรในชื่อยังเหลือ ให้ทิ้งตัวอักษรที่เหลือทั้งหมด
ตารางที่ 1.4 ตัวอักษรแรกของรหัสโดยวิธีการซาวด์เด็กซ์ของวิชิต หล่อจีรชุณห์กุล และเจริญ คุวินทร์พันธ์
                     กลุ่มพยัญชนะ                                                   อักษรที่ใช้แทนกลุ่ม
                      กขฅคฅฆ                                                                    ก
                             ง                                                                  ง
                             จ                                                                  จ
COE2008-06                                                                            7


                   ฉชฌ                                                  ช
                   ซศษส                                                 ซ
                    ดฎ                                                  ด
                    ตฏ                                                  ต
                 ฐฑฒถทธ                                                 ท
                    ณน                                                  น
                     บ                                                  บ
                     ป                                                  ป
                   พภผ                                                  พ
                    ฝฟ                                                  ฟ
                     ม                                                  ม
                    ญย                                                  ย
                  รลฬฤฦ                                                 ร
                     ว                                                  ว
                    หฮ                                                  ห
                     อ                                                  อ

ตารางที่ 1.5 เลขรหัสแทนพยัญชนะตัวต่อ ๆ มาโดยวิธีซาวด์เด็กซ์ของวิชิต หล่อจีรชุณห์กุล
                กลุ่มพยัญชนะ                                        เลขรหัส
                   กขคฅฆ                                                1
                       ง                                                2
     จฉชซฌฎฏฐฑดตถทธศษส                                                  3
               นญณรลฬฤฦ                                                 4
                 บปผฝพฟภ                                                5
                     ม ำ                                                6
                     ยวไใ                                               7
                      หฮ                                                8
                       า                                                9
                     ๅ ึ                                                A
                       เ                                                B
COE2008-06                                                                                                  8


                         แ                                                       C
                         โ                                                       C
                          ุ                                                      E
                         อ                                                       F


เทพพิทักษ์ การุญบุญญานันท์ และคณะ
         ก า ร เ ข้ า ร หั ส ข อ ง เ ท พ พิ ทั ก ษ์ ก า รุ ญ ญุ ญ ญ า นั น ท์ แ ล ะ ค ณ ะ
ได้เสนวิธีการแก้ไขปัญหาซาวน์เด็กซ์ภาษาไทยโดยใช้หลักการของ Nondeterministic Finite Automatio
n                         ใ น ก า ร เ ข้ า ร หั ส                ท า ใ ห้ ก ฎ อ ยู่ ใ น รู ป ที่ ง่ า ย ขึ้ น
มีรูปแบบตายตัว และมีความเป็นไปได้ที่จะเขียนกฎให้ครอบคลุมหลักอักขรวิธีทุกข้อการแยกพยางค์และล
งรหัสคาอ่านจึงมีความถูกต้องและละเอียดมากขึ้น แบบจาลองดังกล่าวจะค้นหาและลงรหัสคาอ่านที่สาม
ารถเป็นไปได้ทั้งหมด ซึ่งจะมีทั้งคาที่อ่านถูกและผิด แต่คาอ่านทุกคาถูกต้องตามหลักอักขรวิธี เช่น กมล
จะอ่ า น        ได้ ทั้ ง       กะ มน , กะ - มะ - ละ         กะ - มน -          ละ ,          กอ - มอ -
ลอฯลฯ คาอ่านทั้งหมดจะถูกกาจัดรายละเอียดเล็กน้อย เช่นตัวควบกล้า เสียงวรรณยุกต์ ความสั้นยาวข
องเสียงสระ ก่อนที่จะถูกลงรหัส รหัสจะถูกค้นหาระหว่างแปลงอย่ างรวดเร็วในฐานข้อมูลด้วยโครงสร้างดั
ชนีแบบต้นไม้ คาอ่านที่พบว่าไม่มีกิ่งในต้นไม้ (กล่าวคือ ไม่มีคาที่ออกเสียงเช่นนั้นในฐานข้อมูล ) จะถูกห
ยุดแปลงแต่เนิ่นๆ อย่างไรก็ตาม ระบบนี้ถูกออกแบบมาเพื่อการใช้ซาวน์เด็กซ์ในการแก้ไขตัวสะกดเท่านั้น
 ยังไม่เหมาะที่จะใช้กับฐานข้อมูลทั่วไป
COE2008-06                                                                          9




        รูปที่ 1 เครื่องจักรจาลองการเข้ารหัสของ เทพพิทักษ์ การุญบุญญานันท์ และคณะ




        รูปที่ 2 เครื่องจักรจาลองการเข้ารหัสของ เทพพิทักษ์ การุญบุญญานันท์ และคณะ
COE2008-06                                                                                                               10


จากผลงานกล่าวมานั้น มีข้อบกพร่องอยู่มาก ข้อบกพร่องที่สาคัญมีดังนี้
- การตัดสระและวรรณยุกต์ทิ้ง
      สระและวรรณยุ ก ต์ ใ นภาษาไทยนั้ น จะสร้ า งความแต่ ก ต่ า งให้ กั บ เสี ย งพยางค์ ไ ด้ ม ากมาย
เมื่ อ ตั ด สระและวรรณยุ ก ต์ อ อกไปนั้ น จะท าให้ พ ยางค์ มี จ านวนเสี ย งที่ แ ตกต่ า งกั น น้ อ งลง
ท าให้ เ กิ ด ความผิ ด พลาดมาก ตั ว อย่ า งเช่ น ๆ ค าว่ า “คั น ” เมื่ อ ตั ด สระออกจะเป็ น ค าว่ า “คน”
ซึ่งออกเสียงไม่เหมือนกัน หรือคาว่า “สิ้น” เมื่อตัดวรรณยุกต์ออกจะเป็นควาว่า “สิน” ซึ่งออกกเสียงต่างกัน
- การแบ่งกลุ่มพยัญชนะแรกของคา
      พยั ญ ชนะแรกของค านั้ น มี ผ ลต่อ เสี ย งอ่ า น เช่ น ๆ ชื่ อ บุ คคล ว่ า “ขนิ ษ ฐา” กั บ “กนิ ษ ฐา” อั ก ษร ก
กั บ อั ก ษร ข นั้ น ออกเสี ย งต่ า ง กั น ดั ง นั้ น จึ ง เป็ น สิ่ งส าคั ญ ในการแบ่ ง กลุ่ ม พ ยั ญ ชนิ ตั ว แรก
ซึ่ ง สามผลวานหลั ง ยั ง แบ่ ง ไม่ ไ ด้ ไ ม่ ถู ก ต้ อ งเท่ า ที่ ค วร นอกจากนี้ ในสามผลงานหลั ง นั้ น น า
“พยัญชนะตัวแรกของคา” มาสร้างรหัส ซึ่งทาให้เกิดข้อผิดพลาดมาก สิ่งที่ถูกต้องของการสร้างรหัสคานั้น
ควรคา “พยัญชนะตัวแรกของพยางค์มาสร้างรหัส”


2. เครื่องมือที่ใช้ในการเข้ารหัส (Lex ,Bison, Yacc)
2.1 การวิเคราะห์แบบเลกซิคอล (Lexical analysis)
         ใ น วิ ท ย า ก า ร ค อ ม พิ ว เ ต อ ร์
การวิเคราะห์แบบเลกซิคอลเป็นการประมวลผลของการแปลงลาดับของตัวอักษรไปเป็นลาดับของสัญลักษ
ณ์ โปรแกรมที่กระทาการวิเคราะห์แบบเลกซิคอลนี้จะถูกเรีย กว่า เครื่องวิเคราะห์แบบเลกซิคอล(Lexical
analyzers)หรือ เลกเซอร์ (Lexers) เลกเซอร์เป็นการจัดและแยกออกจากกันโดยการสแกน(Scanner)
และฟังก์ชันของเครื่องหมาย(Tokenizer function) หากว่าไม่สามารถแบ่งคาจากัดความให้ได้อย่างแน่ชัด

ไวยากรณ์ของเลกซิคอล (Lexical Grammar)
       ห ลั ก เ ก ณ ฑ์ ข อ ง ภ า ษ า ค อ ม พิ ว เ ต อ ร์ จ ะ ป ร ะ ก อ บ ไ ป ด้ ว ย เ ซ ต ข อ ง ก ฎ
ก า ร แ ส ด ง รู ป แ บ บ ห รื อ โ ค ร ง ส ร้ า ง ข อ ง ว ลี
การกาหนดเซตของลาดับตัวอักขระที่มีความเป็นไปได้ให้สามารถกาหนดเป็นรูปแบบของเครื่องหมายหรือเ
ลกซิม(Lexeme) ส่วนช่องว่างระหว่างคานั้นจะไม่นามาคิดในการประมวลผลแบบเลกซิคอลนี้

สัญลักษณ์ (Token)
         สั ญ ลั ก ษณ์ (Token)              ในที่ นี้ ห มายถึ ง การจั ด แบ่ ง ประเภทให้ เ ป็ น กลุ่ ม ของข้ อ ความ
โ ด ย ก ลุ่ ม ข อ ง ข้ อ ค ว า ม นี้ จ ะ ถู ก จั ด ใ ห้ ต ร ง กั น กั บ สั ญ ลั ก ษ ณ์ ที่ เ รี ย ก ว่ า เ ล ก ซิ ม (lexeme)
COE2008-06                                                                                                              11


โดยตัววิเคราะห์แบบเลกซิคอลจะทาการประมวลผลเลกซิมจะทาการจัดแบ่งหมวดหมู่ให้สอดคล้องกับฟังก์
ชั น ก า ร ใ ห้ ค ว า ม ห ม า ย ก า ร ก า ห น ด ค ว า ม ห ม า ย นี้ จ ะ ถู ก เ รี ย ก ว่ า tokenization
สัญลักษณ์นี้จะสามารถมองได้คล้าย ๆ กับหลาย ๆ สิ่ง เช่น ภาษาอังกฤษ สัญลักษณ์ที่ไม่มีความหมาย
อย่างไรก็ตาม มั นก็ยัง ต้องการถูกใช้เ ป็นส่วนหนึ่ง ของโครงสร้างของข้อความ พิจ ารณา expression
ในโปรแกรมภาษาซี Sum=3+2 Tokenized จะเป็นไปตามตารางที่ 2.1
ตารางที่ 2.1 แสดง Tokenized ของเลกซิคอล
                       lexeme                                                      Token type
                         Sum                                                         IDENT
                           =                                                      ASSIGN_OP
                           3                                                        NUMBER
                           +                                                        ADD_OP
                           2                                                        NUMBER
                           ;                                                     SEMICOLON
          สัญลักษณ์นี้จะถูกจากัดความโดย regular expression และทาให้เป็นที่เข้าใจโดย lexical
analyzer generator อย่างเช่น lex โดย Lexical analyzer จะทาการอ่านสตรีมของอักขระ
แ ล้ ว ท า ก า ร แ ย ก แ ย ะ เ ป็ น เ ล ก ซิ ม ใ น ส ต รี ม แ ล้ ว ท า ก า ร จั ด แ บ่ ง แ ย ก อ อ ก ไ ป ที่ สั ญ ลั ก ษ ณ์
ถ้าตัวเลกเซอร์หาสัญลักษณ์ที่ที่ไม่ถูกต้อง มันก็จะรายงานข้อผิดพลาดออกมา
         พิจารณาข้อความที่บรรยายการทางาน
        46 - number_of(cows);
        ในข้อความนี้ เลกซิมจะแบ่งออกเป็น "46", "-", "number_of", "(", "cows", ")" and ";". โดย lexical
analyzer จะจัดแบ่งเลกซิม "46" เป็นตัวเลข, "-" as ตัวอักขระ and "number_of" สัญลักษณ์ที่ถูกแยกออก.
เลกซิม ";" ในบางภาษา (เช่น ภาษา C) จะถูกกาหนดความหมายเป็นแบบพิเศษ

2.2 Bison
         Bison เป็น parser generator ชนิดหนึ่ง Bison จะทาการเปลี่ยนการอธิบาย grammar ไปเป็น
"Look Ahead Left-to-right Rightmost" (LALR) context-free grammar ให้อยู่ในภาษา C or C++
program         โดยสามารถวิ เ คราะห์ ล าดั บ ของ tokens       ให้ เ ข้ า กั บ grammarนั้ น ๆ.
มันสามารถสร้างการวิเคราะห์แบบ "Generalized Left-to-right Rightmost" (GLR)สาหรับ grammars
ที่มีความกากวมได้.
COE2008-06                                                                                                         12


Bison สามารถทางานเข้ากันได้ดีกับ Yacc, และสามารถให้การปรับปรุงให้มีประสิทธิภาพเพิ่มขึ้นได้
ในบางครั้งมักจะใช้งานร่วมกันกับ flex, และ lexical analyser.

2.3 Yacc
       โปรแกรมคอมพิวเตอร์ yacc เป็น parser generator ที่สร้างโดย Stephen C. Johnson ที่ AT&T
สาหรับระบบปฏิบัติการ Unix โดยชื่อนี้เป็นอักษรย่อของ "Yet Another Compiler Compiler."
Iมันจะทาการประมวลผล parser (เป็นส่วนหนึ่งของ compiler เพื่อที่จะพิสูจน์ความหมายของประโยคของ
source code) ตั้ง อยู่บน analytic grammar โดยจะถูกเขียนลงในบันทึกของ BNF. Yacc
จะทาการประมวลผล code สาหรับ parser ในโปรแกรมภาษา C
            Yacc ถู ก ใช้ ง านเป็ น               parser            generator หลั ก ในระบบ   Unix         หลาย ๆ ตั ว
มั น เพิ่ ง จะเข้ า มาถู ก ใช้ เ ป็ น ค่ า เบื้ อ งต้ น เมื่ อ ไม่ น านมานี้ ,และสามารถท างานร่ ว มกั บ โปรแกรมอื่ น ๆ
เช่ น ,Berkeley Yacc, GNU bison, MKS yacc and Abraxas pcyaccได้เป็นอย่างดี
และการอับเดทเวอร์ชันของ AT&T ได้เพิ่มเข้าไปในส่วนของระบบ Sun's OpenSolaris ได้ทาการปรับปรุง
และได้เพิ่มฟีเจอร์การทางานเข้าไปในส่วนของ Yacc เล็กน้อย, แต่ก็ยังคงไว้ซึ่งแนวความคิดเดิมอยู่
และYacc ยังถูกนาเอาไปเขียนใหม่ในภาษาอื่น ๆ เช่น , including Ratfor, EFL, ML, Ada, Java, and
Limbo
3. ออกแบบการทางานโดยภาพรวมทั้งหมดของโครงการ
      การทางานของโดยภาพรวมของระบบทั้งหมดดังแสดงในรูปภาพที่ 3
COE2008-06                                                                                             13




                                       รูปที่ 3 ภาพรวมของระบบ



จากรูปที่ 3 แบ่งการทางานออกเป็น 2 ส่วน ดังนี้
             1. ส่วนของการสร้างรหัสคา
             2. ส่วนการสืบค้นคาพ้องเสียงจากฐานข้อมูล

ความก้าวหน้าตามแผนการดาเนินการ
                                                                                          2008                     2009


                                                                              . .   . .   . .    . .   . .   . .   . .


      1                                        16/6/2008    3/7/2008    14d

      2           algorithm soundex            19/6/2008   11/7/2008    17d

      3                     libthai            10/7/2008   18/7/2008    7d

      4              conceptual model          15/7/2008   24/7/2008    8d

      5      Implementation                    25/7/2008   28/11/2008   91d

      6                         algorithms     1/9/2008    28/11/2008   65d

      7                                        1/12/2008   15/12/2008   11d




      ส่วนที่ดาเนินการเสร็จแล้ว
      ส่วนที่กำลังดำเนินกำรต่อไป
          ต่อไป
COE2008-06                                                                                                          14



ปัญหาและอุปสรรค
        ขาดความรู้ในเรื่องการพัฒนา libthai
        การสร้างรหัสคายังมีข้อจากัด เช่นคาว่า ตากลม อ่านว่า ตา-กลม หรือ ตาก-ลม

แนวทางการแก้ไข
      ศึกษาการพัฒนา libthai เพิ่มเติม

แผนการดาเนินการต่อไป (ช่วงวันที่ 21 กรกฎาคม 2551 – 21 สิงหาคม 2551)
       1. พัฒนาเรื่องการเข้ารหัสคาสาหรับ libthai
       2. ทดสอบและปรับปรุงการเข้ารหัสคา

แหล่งอ้างอิง
       [1] นวภั ท ร์ ขั น ธ์ ต้ น ธง, การแปลงค าทั บ ศั พ ท์ เ ป็ น ภาษาต้ น ฉบั บ อั ต โนมั ติ , บั ณ ฑิ ต วิ ท ยาลั ย
       มหาวิทยาลัยเกษตรศาสตร์, 2544
       [2] พัชรวรรณ คล่ องอาวุธ , โปรแกรมสร้างสัญลักษณ์แทนเสียงสาหรับข้อความภาษาไทย,
       ภาควิชาคอมพิวเตอร์, มหาวิทยาลัยเกษตรศาสตร์, 2545
       [3] http://linux.thai.net/~thep/soundex/soundex.htm
       [4] http://en.wikipedia.org/wiki/Lexical_analysis
       [5] http://linux.thai.net/projects/libthai
COE2008-06                                                                                                                                             15


                                                                                                                                           เกรด........
ข้อเสนอแนะจากอาจารย์ที่ปรึกษา
..........................................................................................................................................................
..........................................................................................................................................................
..........................................................................................................................................................
..........................................................................................................................................................
..........................................................................................................................................................
                                                                                                        ...................................................
                                                                                                            (อ. ดร. กิตติ์ เธียรธโนปจัย)
                                                                                                        วันที.่ ...........................................
ข้อเสนอแนะจากอาจารย์ร่วมประเมิน
..........................................................................................................................................................
..........................................................................................................................................................
..........................................................................................................................................................
..........................................................................................................................................................
..........................................................................................................................................................
..........................................................................................................................................................
                                                                                                        ...................................................
                                                                                                           (อ. ดร. วสุ เชาว์พานนท์)
                                                                                                        วันที.่ ...........................................
ข้อเสนอแนะจากอาจารย์ร่วมประเมิน
..........................................................................................................................................................
..........................................................................................................................................................
..........................................................................................................................................................
..........................................................................................................................................................
..........................................................................................................................................................
..........................................................................................................................................................
                                                                                                        ...................................................
                                                                                                           (ผ.ศ. อนัตต์ เจ่าสกุล)
                                                                                                        วันที.่ ...........................................

				
DOCUMENT INFO
Shared By:
Categories:
Tags:
Stats:
views:76
posted:12/13/2011
language:Thai
pages:15