Announcement

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

  • ภาพนกกรกนกบนพรมตรงถนนหน้าพระพรหมณ์
  • ปลามีตากลมถูกตากลมในที่ร่ม

การสร้างระบบแบ่งคำอัตโนมัติที่มีความถูกต้องสูงถือเป็นองค์ประกอบสำคัญอันดับแรกของการประมวลผลภาษาไทยซึ่งต้องอาศัยฐานข้อมูลขนาดใหญ่ที่ผ่านการแบ่งคำด้วยหลักทางภาษาศาสตร์
ในหลายปีที่ผ่านมาถึงแม้จะมีบทความที่นำเสนออัลกอริธึมในการแบ่งคำแล้วจำนวนมาก
แต่เราก็ไม่สามารถทราบได้ว่าวิธีใดที่เหมาะสมที่สุดสำหรับระบบประยุกต์ที่แตกต่างกัน
สาเหตุหลักเนื่องจากเราไม่มีฐานข้อมูลกลางขนาดใหญ่สำหรับวัดเปรียบเทียบคณะทำงานฯ
ตระหนักถึงปัญหาดังกล่าว จึงได้ร่วมมือกับหลายหน่วยงานวิจัย
ช่วยกันกำหนดหลักเกณฑ์การแบ่งคำโดยใช้เวลาหลายเดือนในการร่าง
และได้พัฒนาฐานข้อมูลขนาดใหญ่ที่แบ่งคำด้วยหลักเกณฑ์ดังกล่าว โดยใช้คนมากกว่า
30 คน และเวลามากกว่า 1 ปี ได้เป็นฐานข้อมูลขนาดประมาณ 5 ล้านคำ
พร้อมเปิดให้นักวิจัยและพัฒนาที่สนใจ นำไปใช้ได้โดยไม่มีค่าใช้จ่าย
ตามเงื่อนไขเพื่อการศึกษาวิจัยที่ไม่มีวัตถุประสงค์ในเชิงพาณิชย์
และขอประชาสัมพันธ์ เชิญชวนอาจารย์สถาบันการศึกษา นิสิต
นักศึกษาที่กำลังมองหาหัวข้อวิจัยที่เหมาะสม
ตลอดจนนักวิจัยและพัฒนาจากภาคเอกชน บุคคลทั่วไปที่สนใจ
เข้าร่วมการแข่งขันวัดเปรียบเทียบสมรรถนะของการแบ่งคำภาษาไทย ซึ่งเราจัดเป็นหัวข้อแข่งขันพิเศษในการแข่งขันพัฒนาโปรแกรมคอมพิวเตอร์แห่งประเทศไทย
ครั้งที่ 11 หรือ NSC 2009 (http://www.nsc.in.th)

ผู้ที่สนใจ ขอเชิญแวะไปเยี่ยมชมเราได้ที่ http://www.hlt.nectec.or.th/best

Hiring! บริษัทที่น่าสนใจ

Carmen Software company cover
Carmen Software
Hotel Financial Solutions
Next Innovation (Thailand) Co., Ltd. company cover
Next Innovation (Thailand) Co., Ltd.
We are web design with consulting & engineering services driven the future stronger and flexibility.
KKP Dime company cover
KKP Dime
KKP Dime บริษัทในเครือเกียรตินาคินภัทร
Kiatnakin Phatra Financial Group company cover
Kiatnakin Phatra Financial Group
Financial Service
Fastwork Technologies company cover
Fastwork Technologies
Fastwork.co เว็บไซต์ที่รวบรวม ฟรีแลนซ์ มืออาชีพจากหลากหลายสายงานไว้ในที่เดียวกัน
Thoughtworks Thailand company cover
Thoughtworks Thailand
Thoughtworks เป็นบริษัทที่ปรึกษาด้านเทคโนโยลีระดับโลกที่คว้า Great Place to Work 3 ปีซ้อน
Iron Software company cover
Iron Software
Iron Software is an American company providing a suite of .NET libraries by engineer for engineers.
CLEVERSE company cover
CLEVERSE
Cleverse is a Venture Builder. Our team builds several tech companies.
Nipa Cloud company cover
Nipa Cloud
#1 OpenStack cloud provider in Thailand with our own data center and software platform.
Bangmod Enterprise company cover
Bangmod Enterprise
The leader in Cloud Server and Hosting in Thailand.
CIMB THAI Bank company cover
CIMB THAI Bank
MOVING FORWARD WITH YOU - CIMB is the leading ASEAN Bank
Bangkok Bank company cover
Bangkok Bank
Bangkok Bank is one of Southeast Asia's largest regional banks, a market leader in business banking
MuvMi (Urban Mobility Tech Co.,Ltd.) company cover
MuvMi (Urban Mobility Tech Co.,Ltd.)
Shape the future of urban mobility towards affordable, clean, and safe solutions
T.N. Digital Solution Co., Ltd. company cover
T.N. Digital Solution Co., Ltd.
TNDS has been involving in every first move of banking’s major digital transformation.
KBTG - KASIKORN Business-Technology Group company cover
KBTG - KASIKORN Business-Technology Group
KBTG - "The Technology Company for Digital Business Innovation"
Siam Commercial Bank Public Company Limited company cover
Siam Commercial Bank Public Company Limited
"Let's start a brighter career future together"
Icon Framework co.,Ltd. company cover
Icon Framework co.,Ltd.
Global Standard Platform for Real Estate แพลตฟอร์มสำหรับธุรกิจอสังหาริมทรัพย์ครบวงจร มาตรฐานระดับโลก
REFINITIV company cover
REFINITIV
The Financial and Risk business of Thomson Reuters is now Refinitiv
H LAB company cover
H LAB
Re-engineering healthcare systems through intelligent platforms and system design.
The Gang Technology Co., Ltd. company cover
The Gang Technology Co., Ltd.
We're a Digital Agency that helps our customers transform their business into digital with ease.
LTMH company cover
LTMH
LTMH มุ่งเน้นการพัฒนาผลิตภัณฑ์ที่สามารถช่วยพันธมิตรของเราให้บรรลุเป้าหมาย
Seven Peaks company cover
Seven Peaks
We Drive Digital Transformation
Wisesight (Thailand) Co., Ltd. company cover
Wisesight (Thailand) Co., Ltd.
The Best Choice For Handling Social Media · High Expertise in Social Data · Most Advanced and Secure
MOLOG Tech company cover
MOLOG Tech
We are Modern Logistic Platform, Specialize in WMS, OMS and TMS.
Data Wow Co.,Ltd company cover
Data Wow Co.,Ltd
We enable our clients to realize increased productivity by solving their most complex issues by Data
LINE Company Thailand company cover
LINE Company Thailand
LINE, the world's hottest mobile messaging platform, offers free text and voice messaging + Call
LINE MAN Wongnai company cover
LINE MAN Wongnai
Join our journey to becoming No.1 food platform in Thailand

KavkaZ Fri, 25/07/2008 - 16:54

อ่านว่า ภาพ นก-กร-กนก หรือว่า ภาพ-นก-กรก-นก ครับ

kohsija Fri, 25/07/2008 - 18:57

เคยเขียนโปรแกรมตัดคำไทยส่งอาจารย์ตอนมหาวิทยาลัย
แต่ทำงานช้ามาก ส่งไปก็อายเขา -_-"

[Kohsija](http://kohsija.exteen.com "จุ๊กกรู...")

เขียนยังไงหรอคับ ส่งๆไปเหอะผมว่า ผมเองยังคิดไม่ออกเลย

เท่าที่คิดได้ คือ
เก็บคำลง database ให้หมด ซึ่งยากมากมาย
แล้วก็ อ่านที่ละ char เอา char 1 ตัวไปหาในดาต้าเบส เช่นว่า 'ก' ดูว่าในดาต้าเบส มีคำที่ขึ้นว่า 'ก' กี่ตัว แล้วก็เอาไปเทียบ ตัวที่ 2 ต่อไปเรื่อยๆ

คิดเล่นๆ ได้แค่นี้อ่ะคับ แต่คิดว่า มัน - -* น่าจะนานกว่าของคุณอีกน่ะ

คงต้อง optimize loop กับ การคิวรี ดาต้าเบส ดีๆ ถ้าจะใช้ วิธีนี้

^^

Jonix Fri, 25/07/2008 - 19:00

เว็บที่รับสมัครยังไม่เปิดหรือครับ www.nsc.in.th

whois nsc.in.th -h whois.thnic.net

Whois Server Version 1.5

% No entries found for the selected source(s).

DuRiAn Fri, 25/07/2008 - 19:06

สงสัยว่าจะใช้อัลกอริทั่มอะไรในการคิด
เพราะแม้แต่คนยังแยกไม่ถูกเลย...เหอๆ

ที่คนคิดแล้วแยกไม่ถูกก็เำพราะคนคนนั้นมีความรู้ (knowledge) จำกัดครับ
ที่เรามีความรู้จำกัดก็เหมือนว่าข้อมูลของคำที่เรารู้จักในสมอง (database) มีไม่พอ

แต่หากเรารู้จักคำมากพอแล้ว สิ่งที่จะบอกว่าตัดคำถูกได้อย่างไรก็คืออัลกอริทึ่มในการตัดนั่นล่ะครับ
ถ้าเทียบเป็นคนก็คือความฉลาดนั่นล่ะครับ

อย่างผมเองก็ตัดคำในตัวอย่างแรกไม่ถูกหรอกครับ เพราะผมไม่รู้จักคำที่ให้มา แต่ "ปลา ตา กลม" เอามา "ตาก ลม" นั้น เราตัดคำได้ถูกเพราะเรารู้จักทั้ง 2 คำคือ ตา กลม และ ตาก ลม แุถมเรารู้บริบทของคำคำนั้นในประโยค

ครับผม

jiramot Fri, 25/07/2008 - 20:15

In reply to by lawender

อืมม พึ่งอ่าน reply นี้

งั้นวิธีผม ก็ท่าจะไม่ ได้ซะแล้ว

เพราะถ้าใน ดาต้าเบส มีทั้งคำว่า ตา, ตาก, กลม, ลม เนี่ย ก็จะเจอทั้งหมด

ต้องมี priority อีก แต่ทำไงว่ะเนี่ยยยย

ใครมีไอเดียร์ไรดีๆ แนะนำบ้างคับ

p-joy Fri, 25/07/2008 - 21:55

In reply to by jiramot

ตอนนั้นเคยเขียน โดยใช้หลักคำสมบูรณ์ที่ยาวที่สุดมาก่อน กล่าวคือในฐานข้อมูล
จะต้องมีทั้งคำว่า ตา, ตาก, กลม, ลม, ตากลม เก็บไว้ในฐานข้อมูลถ้าเจอคำยาวกว่า
ก็คงคำยาวนั้นไว้ (ให้คะแนนสูงสุด และให้รูปแบบที่อื่น ๆ มีคะแนนลดหลั่นลงไป)
เก็บคำที่เป็นไปได้ไว้ในดีเบต 3 plus และใช้้ bisection ในการค้นหาคำ แต่นั้นมัน
สิบห้าปีที่แล้ว

latesleeper Sat, 26/07/2008 - 01:25

In reply to by jiramot

ตามรูปประโยคที่ให้มายังง่าย มี "มี" และ "ถูก" มาช่วยแยกประเภทถ้างั้น อัลกอริทึมของผมอาจจะวิ่งกลับไปเช็คคำที่เกี่ยวข้องด้านหน้า (และ/หรือหลัง)มาพอช่วยแบ่ง ตา และ ตาก ออกจากกันได้

แต่...ถ้าทอนประโยคให้สั้นลงอีกหน่อยล่ะ กลายเป็นปลาตากลมตากลมในที่ร่ม...

งานนี้ก็ตัวใครตัวมันละคับพี่น้องงง

joecole Sat, 26/07/2008 - 03:33

ขออนุญาตแสดงความเห็น
ผมว่าตัวอย่างที่ยกมามัน extreme เกินไป
หมายความว่า ในภาษาที่เราใช้สื่อสารกันอยู่
จะตกในกรณีอย่างนี้น้อยมาก (หมายถึงการแยกคำได้ 2 แบบโดยที่ยังมี "ความหมาย" ทั้งสองแบบ)
เท่าที่ผมนึกออก ก็มีแค่
"ตา" "กลม" & "ตาก" "ลม"
แล้วก็
"แบ" "บน" "อก" & "แบบ" "นอก"
ดังนั้น ถ้าจะออกแบบ algorithm สำหรับ case แบบนี้โดยเฉพาะ
ผมว่ามันขี่ช้างจับตั๊กแตนเกินไปครับ
(หรือถ้าใครจะทำ ช่วยเอาคำนี้ไปพิจารณาด้วย
"รรรรรร" - อ่านได้ว่า ระ-รัน-รอน หรือ รอน-ระ-รัน หรือ ฯลฯ ... เห็นบอกเป็นชื่อคน)

lew Sat, 26/07/2008 - 09:08

In reply to by joecole

กรณีธรรมดาก็มี Algorithm ใช้งานกันอยู่แล้วนี่ครับ ก็ไม่น่าแปลกอะไรถ้าตอนนี้จะพยายามหากรณีพิเศษเพื่อให้มันดีขึ้นเรื่อยๆ

LewCPE

thep Mon, 28/07/2008 - 10:06

In reply to by joecole

กรณี extreme แบบนี้ ไม่พบบ่อยในชีวิตประจำวันก็จริง แต่พอพบแล้ว ผู้ใช้จะสะดุดทันที.. คือในส่วนที่ตัดถูกนั้น ผู้ใช้ไม่มานั่งชื่นชมว่าตัดเก่งจัง จนกระทั่งเจอจุดที่ตัดบรรทัดผิดนั่นแหละ ถึงเริ่มรู้สึกถึงการมีอยู่ของรูทีนตัดคำ

คนอ่านหนังสือพิมพ์บ่อยจะเจอหลายตัวอย่างครับ ผมเคยจดไว้ได้เป็นหน้า ตอนนี้นึกออกไม่กี่ตัวอย่าง เช่น "ผู้ที่หนุ่มสาวกว่า" (ผู้ที่หนุ่มสาวก-ว่า), "การกลับมา" (การก-ลับมา), "ยานอกแพง ๆ" (ยาน-อกแพง ๆ)

อีกกรณีหนึ่งคือเวลาเจอคำทับศัพท์ใหม่ ๆ หรือชื่อคน/ชื่อเมืองต่างประเทศ โปรแกรมจะงง เพราะไม่มีในพจนานุกรม เช่น "ไอพอดกลับมาฮิต" (ไอ-พอ-ดก-ลับ-มา-ฮิต), "สตานิสลาฟ คันนิซซาโร" (ชื่อนักวิทยาศาสตร์ชาวอิตาลี) หรือแม้กระทั่งคำไทยเองที่เกิดใหม่ เช่น "อมาตยาธิปไตย" ซึ่งกรณีนี้ การปรับข้อมูลพจนานุกรมให้ทันสมัยอยู่เสมอก็พอช่วยได้ แต่การสะกดชื่อเฉพาะที่ไม่ค่อยเหมือนกัน เช่น "ริชาร์ด ไฟยน์แมน" หรือ "ริชาร์ด เฟย์นแมน", "อัลเบิร์ต" หรือ "แอลเบิร์ต" ฯลฯ หรือชื่อที่พบไม่บ่อย ก็ทำให้ยุ่งยากเพิ่มขึ้น

แล้วก็ ปัญหาที่เกิดใหม่ล่าสุด คือภาษาวัยรุ่นในอินเทอร์เน็ต อันนี้ตัดยากมากครับ

czynet Sat, 26/07/2008 - 10:29

ภาษาไทยผูกเข้ากับ ความคิด วัฒนธรรม สถานการณ์ เจตนา ฯลฯ

มันไม่ได้มีแค่เหตุผล ซึ่งถ้าเราจะตัดคำโดยใช้ algorithm (ซึ่งมีแต่ตรรกะ)

ผมก็ว่ายังไงก็ยากอยู่ดี

ตราบใดที่ ปัจจัยอื่นๆ ยังไม่มีกฏเกณฑ์ตายตัว

อีกทั้งภาษาก็ยังไม่ตาย

(ถ้าตัดปัจจัยอื่น ๆ แล้วเหลือแต่การใ้ช้เหตุผล)

มันก็พอจะง่ายละครับ

อีกประเด็นคือ (คนที่เขียนได้ เนี้ยะ ต้องเชียวชาญภาษาไทยมากๆ)

คนส่วนใหญ่ใช้ภาษาไทยเพราะความเคยชินจนลืมหลักภาษาไปหมด

โปรแกรมเมอร์ไม่ได้สอนภาษาไทย และคนสอนภาษาไทยก็ไม่ได้เป็นโปรแกรมเมอร์

เพราะถ้าเราแบ่งแยก ประเภทคำ และหน้าที่ของคำต่าง ๆได้แล้ว

เราก็พอจะรู้ว่า คำนี้ควรเป็นนามหรือกิริยาได้บ้าง (มันก็คงจะดูดีขึ้น)

อย่างน้อยก็รู้หละว่า เป็นคำขยายคำนาม ถ้าหลังนี้ไม่มีกิริยาตาม ก็ให้เป็นกิริยาซะ

ประมาณนั้น.. (หรือเปล่า)

ลองเล่นๆ นะครับ

จากคำว่า "ปลาตากลมตากลมในที่ร่ม"

ถ้าเราจับคำได้หมดแล้วจะเปงไปได้...

นาม + กริยา + กริยา + ขยาย F

นาม + ขยายนาม + ขยายนาม + ขยาย F

นาม + กริยา + ขยายนาม + ขยาย T/F

นาม + ขยายนาม + กริยา + ขยาย T

คำไทยมีเยอะมาก
สรรพนาม คำคุณศัพท์ ฯลฯ ไรไม่รู้ ผมเชื่อว่าถ้าคนแยกได้ ผมว่ามันน่าจะ work นาา..
ลองคิดดูเล่นๆ นะครับ

ถ้าใครเขียนก็ลองคิดดูครับ ส่วนผมไม่มีเวลา = =
งานที่มีอยู่จะแย่เอา = =

ปล. ทางที่ดีชวนคุณครูภาษาไทยมานั่งเขียนคงจะดีนะครับ
ลองถามแกว่า ถ้าใช้หลักภาษาแล้วจะตัดคำได้มั้ย ?

mk Sat, 26/07/2008 - 15:18

In reply to by czynet

ภาษาไทยไม่ได้ใช้ตรรกะอย่างเดียว แต่เราใช้ภาษาไทยบนคอมพิวเตอร์ที่มีแต่ตรรกะเท่านั้น

ภาษาไทยอยู่ในตระกูล complex language มีภาษาอื่นที่ยากกว่าภาษาไทยอีกมากมาย เค้ายังทำกันได้เลยครับ

jiramot Mon, 28/07/2008 - 11:31

In reply to by czynet

ผมว่า ต้องใช้พวก context ของคำเข้าไปด้วย
ถ้าจำไม่ผิด จะแนวตามคอนเซ็ปของเวป 3.0 ป่าวคับ (ถ้าผิิดก็ขอโทษด้วย) ที่จะมีคำ หรือ อะไรที่เอาไว้อธิบาย ความหมายของ สิ่งต่างๆ ที่เขียนด้วย เพื่อ ไม่ให้เกิด การเอา คำมั่วๆๆๆ มาทำเป็น tag ให้ google search เจอ (ผมเคยเจอเวป ที่เป็นพวกโฆษณาสินค้า ที่แบบมีแต่ tag เป็นล้านอัน อยู่ใต้หน้า page)

น่าจะพอช่วยขยายความ ทำให้การอ่าน ใกล้เคียงกับคนขึ้น

เช่น เดินไปทะเลตากลม <-- ก็จะอ่านได้ ว่า ตาก ลม เพราะประมาณว่า ทะเล กับ ตากลม มันมี อะไรเชื่อมกันอยู่

แต่ว่าทางเทคนิคนี้ผมก็ไม่ทราบเหมือนกันคับ

เด๋วจะลองไปหาบทความที่เคยอ่าน มาให้ ไม่แน่ใจว่ามีการทำ reference implementation กันจิงๆแล้วหรือยังคับ (^^ ถ้าผิดพลาดยังไงก็ขอโทษด้วยคับ หรือว่าใครทราบรายละเอียด ก็ลองหามาหน่อยน่ะคับ)

::Jiramot::

anu Sun, 27/07/2008 - 18:34

In reply to by deaw

ให้เดานะ

Word Segmentation การแบ่ง(หรือแยก)คำ มีในภาษาที่เขียนคำติดกัน ไม่มีเว้นวรรคระหว่างคำในประโยค

Word Breaking การตัดคำ น่าจะใช้สำหรับการขึ้นบรรทัดใหม่ หรือการขีดคั่น (-) ระหว่างคำในการขึ้นบรรทัดใหม่ในภาษาอังกฤษ ความซับซ้อนน่าจะน้อยกว่าอันบน

มั้ง...

anu Sun, 27/07/2008 - 18:35

น่าจะใช้ชื่อโครงการเป็น "ตากลมๆ"

เอาให้ งวยงงงงงวย กันไปเลย

HyBRiD Mon, 28/07/2008 - 00:15

ผมกำลังสงสัยว่าภาษาไทยที่เราใช้กันทุกวันนี้มันมีประโยคด้วยหรอ

แล้วถ้าเจอภาษาวิบัติเข้าไป จะใช้ algorithm ไหนล่ะเนี่ย

NERD GOD

noyzilla Mon, 28/07/2008 - 05:44

เปลี่ยน วิธี เขียน ภาษาไทย แบบ นี้ ดี หรือ ป่าว

ภาพ นก (กรกนก <- แยกไม่ถูกครับ :( ) บน พรม ตรง ถนน หน้า พระ พรหมณ์

Noyzi!!a's Blog

sdh Mon, 28/07/2008 - 08:58

สงสัยว่าเขาตัดคำกันก่อน แล้วค่อยตรวจการสะกดคำ เมื่อยังตัดคำที่ต้นประโยคไม่ได้ ตัว spelling checker ก็ยังไม่ทำงาน

"พระพรหม"

oakyman Tue, 29/07/2008 - 16:14

ใช้ Tools ได้ไหมครับ? อย่าง Swath หรือ Tools ที่ใช้ 2-gram, 3-gram
พวกนี้ ผมว่าก็ถือว่าพอใช้ได้เหมือนกัน
ภาษาไทย คงต้องอิงหลักสถิติด้วย
มี Corpus ใหญ่ๆ ก็ดี

Oakyman.com

onenoi Wed, 30/07/2008 - 12:28

ใช้ Tools ช่วยได้ค่ะ มีให้ดาวน์โหลดที่ http://www.hlt.nectec.or.th/best/
หรือนอกเหนือจากนี้ก็ได้ถ้าเจ้าของอนุญาติให้ใช้ได้