อยากทราบการนับคำไทย (Word count) เช่นพวก microsoft word ว่าเค้าทำกันยังไงครับ
ตัดคำก่อนครับ แล้วก็นับ โครงการโอเพนซอร์สที่เกี่ยวข้องลองดู SWATH ครับ
คีย์เวิร์ดที่เกี่ยวข้องคือ thai word breaking
ตาม comment บนครับ ถ้าไม่อยากเขียนอัลกอริทึมตัดคำเอง ก็หยิบ library มาใช้ได้ เช่นใช้ class BreakIterator ใน IBM ICU (http://icu-project.org/apiref/icu4j/com/ibm/icu/text/BreakIterator.html) ถ้าใช้ Java ก็ reference class BreakIterator ได้เลย (ไม่ต้อง reference ICU เพิ่มเพราะมันรวมมาแล้ว) ถ้าเป็น C#/.NET ผมเคยเขียนตัวหุ้มให้เรียกใช้ BreakIterator จาก C# ได้ แต่ไม่ได้ทำต่อแล้ว (https://code.google.com/p/icu4net/) หรือถ้าเป็น Javascript ก็เคยเห็นตัวหุ้มอันนี้ https://github.com/chakrit/node-icu-wordsplit ตัวเลือกอื่นที่เห็นบ่อยก็มี libthai (http://linux.thai.net/projects/libthai) ที่ผมเข้าใจว่า Firefox ใช้อยู่ ส่วน Chrome ใช้ ICU
เกือบจะทั้งหมดของ library ตัดคำใช้ dictionary ตัด ดังนั้นถ้ามีคำใหม่ที่ไม่มีใน dictionary มาก่อนมันก็จะตัดคำผิดๆถูกๆ
เพราะตัวนี้แหละคับ ทำให้ชีวิตผมดีขึ้น ><
สงสัยมานานแล้วว่ามีวิธีการที่ใช้อัลกอริทึมเพียวๆ โดยไม่ต้องมีฐานข้อมูลคำศัพท์ไหมครับ
May the Force Close be with you. || @nuttyi
ถ้าเป็นภาษาอังกฤษ (หรือภาษาอื่นที่มีตัวแบ่งคำชัดเจน) ก็ดูที่ whitespace / punctuation ได้เลยครับ
ถ้าเป็นภาษาไทย (จีน, ญี่ปุ่น) คงยากหน่อยที่จะกำหนดว่าตรงไหนเป็นจุดหมดคำ เช่นสระ อา สามารถมีตัวอักษรตามหลังหรือไม่ก็ได้ นอกจากนี้ยังมีพวกที่ต้องแบ่งคำตาม context อีกด้วย เช่น ตากลม ตามหา
รอท่านอื่นมาตอบครับ
ผมเห็นงานวิจัยสายภาษาเค้าก็พยายามเอาพวก machine learning มาช่วยเรื่องการตัดคำนะครับ (อย่างเช่นอันนี้ที่ผมเคยอ่าน http://www.cs.cmu.edu/~paisarn/papers/thesis99.pdf) ซึ่งมันก็คงลดการพึ่ง dictionary ไปได้ แต่ว่า library ตัดคำไทยที่เราดาวน์โหลดมาใช้ได้เลยตอนนี้ใช้ dictionary ทั้งหมด (หรือถ้ามีตัวไหนไม่ใช้ dict ผมก็อยากทราบด้วย จะเอาไปลองใช้บ้าง)
ถ้่าเปลี่ยนโจทย์จากตัดคำเป็นตัดพยางค์อาจจะดูเป็นอะไรที่สร้างกฎได้ง่ายกว่า เช่นใน PDF ที่ลิงค์ไปก็มีกฎตัดพยางค์อยู่หน้า 63
ขอบคุณครับ อันตีดพยางค์นี่น่าสนใจ
เท่าที่ทราบในภาพรวม การตัดโดยใช้อัลกอเพียวๆ ความแม่นยำยังแพ้ dictionary ในกรณีส่วนใหญ่อยู่ แถมเปลือง cpu มากกว่าเยอะเลยครับ
ส่วนมากจะเป็นการพัฒนา on top ตัวอัลกอ dictionary กันมากกว่า อย่างเช่นเอาสถิติคำที่อยู่ในบทความทั่วๆไปมาช่วยในการตัดอะไรแบบนี้ครับ
ย้ำอีกทีว่าทราบแค่ในภาพรวมครับ ไม่ได้ลงลึกอะไร
สำหรับผมเอาง่ายๆ คือ นับ 4ตัวอักษร เป็น 1 คำครับ ฮ่าๆ
อันนั้นพิมพ์ดีด ฟิ้วววว...
ตัดคำก่อนครับ แล้วก็นับ โครงการโอเพนซอร์สที่เกี่ยวข้องลองดู SWATH ครับ
คีย์เวิร์ดที่เกี่ยวข้องคือ thai word breaking
ตาม comment บนครับ ถ้าไม่อยากเขียนอัลกอริทึมตัดคำเอง ก็หยิบ library มาใช้ได้ เช่นใช้ class BreakIterator ใน IBM ICU (http://icu-project.org/apiref/icu4j/com/ibm/icu/text/BreakIterator.html) ถ้าใช้ Java ก็ reference class BreakIterator ได้เลย (ไม่ต้อง reference ICU เพิ่มเพราะมันรวมมาแล้ว) ถ้าเป็น C#/.NET ผมเคยเขียนตัวหุ้มให้เรียกใช้ BreakIterator จาก C# ได้ แต่ไม่ได้ทำต่อแล้ว (https://code.google.com/p/icu4net/) หรือถ้าเป็น Javascript ก็เคยเห็นตัวหุ้มอันนี้ https://github.com/chakrit/node-icu-wordsplit ตัวเลือกอื่นที่เห็นบ่อยก็มี libthai (http://linux.thai.net/projects/libthai) ที่ผมเข้าใจว่า Firefox ใช้อยู่ ส่วน Chrome ใช้ ICU
เกือบจะทั้งหมดของ library ตัดคำใช้ dictionary ตัด ดังนั้นถ้ามีคำใหม่ที่ไม่มีใน dictionary มาก่อนมันก็จะตัดคำผิดๆถูกๆ
เพราะตัวนี้แหละคับ ทำให้ชีวิตผมดีขึ้น ><
สงสัยมานานแล้วว่ามีวิธีการที่ใช้อัลกอริทึมเพียวๆ โดยไม่ต้องมีฐานข้อมูลคำศัพท์ไหมครับ
May the Force Close be with you. || @nuttyi
ถ้าเป็นภาษาอังกฤษ (หรือภาษาอื่นที่มีตัวแบ่งคำชัดเจน) ก็ดูที่ whitespace / punctuation ได้เลยครับ
ถ้าเป็นภาษาไทย (จีน, ญี่ปุ่น) คงยากหน่อยที่จะกำหนดว่าตรงไหนเป็นจุดหมดคำ เช่นสระ อา สามารถมีตัวอักษรตามหลังหรือไม่ก็ได้ นอกจากนี้ยังมีพวกที่ต้องแบ่งคำตาม context อีกด้วย เช่น ตากลม ตามหา
รอท่านอื่นมาตอบครับ
ผมเห็นงานวิจัยสายภาษาเค้าก็พยายามเอาพวก machine learning มาช่วยเรื่องการตัดคำนะครับ (อย่างเช่นอันนี้ที่ผมเคยอ่าน http://www.cs.cmu.edu/~paisarn/papers/thesis99.pdf) ซึ่งมันก็คงลดการพึ่ง dictionary ไปได้ แต่ว่า library ตัดคำไทยที่เราดาวน์โหลดมาใช้ได้เลยตอนนี้ใช้ dictionary ทั้งหมด (หรือถ้ามีตัวไหนไม่ใช้ dict ผมก็อยากทราบด้วย จะเอาไปลองใช้บ้าง)
ถ้่าเปลี่ยนโจทย์จากตัดคำเป็นตัดพยางค์อาจจะดูเป็นอะไรที่สร้างกฎได้ง่ายกว่า เช่นใน PDF ที่ลิงค์ไปก็มีกฎตัดพยางค์อยู่หน้า 63
ขอบคุณครับ อันตีดพยางค์นี่น่าสนใจ
May the Force Close be with you. || @nuttyi
เท่าที่ทราบในภาพรวม การตัดโดยใช้อัลกอเพียวๆ ความแม่นยำยังแพ้ dictionary ในกรณีส่วนใหญ่อยู่ แถมเปลือง cpu มากกว่าเยอะเลยครับ
ส่วนมากจะเป็นการพัฒนา on top ตัวอัลกอ dictionary กันมากกว่า อย่างเช่นเอาสถิติคำที่อยู่ในบทความทั่วๆไปมาช่วยในการตัดอะไรแบบนี้ครับ
ย้ำอีกทีว่าทราบแค่ในภาพรวมครับ ไม่ได้ลงลึกอะไร
สำหรับผมเอาง่ายๆ คือ นับ 4ตัวอักษร เป็น 1 คำครับ ฮ่าๆ
อันนั้นพิมพ์ดีด ฟิ้วววว...