ข้ามไปที่เนื้อหาหลัก

บทความ

spaCy ภาษาไทยมาแล้ว!!!

หลังจากที่ผมส่งภาษาไทยแบบ blank (ไม่มี model อะไร) เข้าไป spaCy เมื่อ 5 ปีก่อน แต่การใช้งานไม่สามารถใช้งานได้แบบ spacy.load(___) กับภาษาไทยได้ เพราะยังไม่มีโมเดลให้รัน มาวันนี้ผมได้พอร์ตส่วน word2vec จากโมเดล thai2fit (หรือ thai2vec) ของ Charin Polpanumas ในตำนาน ให้ใช้งานกับ spaCy ผ่าน spacy.load ได้สำเร็จ (เพิ่งทำได้เมื่อ 1 ชั่วโมงก่อนของเวลาโพสต์) จึงทำให้ตอนนี้รองรับเฉพาะส่วน token2vec เท่านั้น และโมเดลอื่น ๆ ที่จะตามมาในอนาคต การใช้งาน ตอนนี้ต้องโหลดโมเดลมาก่อน ในอนาคตผมจะส่งโมเดลเข้าต้นน้ำ spaCy ต่อไป เพื่อให้สามารถใช้งานได้เพียงแค่ spacy.load("th") เหมือนภาษาอังกฤษ (ถ้ามีเวลาว่าง) สามารถลองเล่นผ่าน Colab ได้ลิงก์นี้ https://colab.research.google.com/drive/1b_gZ34zZHVFeMBlz16F2cmjE7vKGqbGW?usp=sharing GitHub: https://github.com/PyThaiNLP/thai_spacy_model   ช่วงโฆษณา ส่ง GitHub sponsors ได้ที่ https://github.com/sponsors/wannaphong/ ครับ 🙏

PyThaiNLP ยอดโหลดทั้งหมดกว่า 1 ล้าน 8 แปด

PyThaiNLP ปัจจุบันมียอดโหลดจำนวน 1 แสนดาวน์โหลดต่อเดือน และจำนวนยอดโหลดทั้งหมดกว่า 1 ล้าน 8 แปด กว่า ๆ ถือเป็นยอดที่ค่อนข้างสูงสำหรับซอฟต์แวร์ open source เฉพาะทาง โดยเฉพาะการประมวลผลภาษาไทย . ด้วยยอดที่สูงขึ้นจากเมื่อ 2 - 3 ปีก่อน ทำให้เราต้องปรับปรุง PyThaiNLP ให้ดียิ่งขึ้น ทั้งเรื่องปรับปรุงโค้ด ปรับปรุงโมเดล พัฒนาเทคนิคการเรียกใช้งานให้มีประสิทธิภาพ รวมถึงยังสามารถใช้งานได้ง่าย ติดตั้งได้ง่ายอยู่ เพื่อให้นักเรียน นักศึกษา บุคคลทั่วไปที่เพิ่งเข้ามาในด้านนี้สามารถใช้งานได้สะดวก . เรื่องโมเดล เราได้ปรับนโยบายการนำชุดข้อมูล/โมเดลมาใช้งานกับ PyThaiNLP โดยชุดข้อมูล/โมเดลต้องมาจากแหล่งที่เป็นมิตรกับ open source ทั้งเรื่องแหล่งให้โหลดกับใบอนุญาตของชุดข้อมูล/โมเดลนั้น ๆ ทำให้ PyThaiNLP รุ่นถัดไป ทุกชุดข้อมูล/โมเดลจะเป็นมิตรกับ open source ทั้งหมด ทุกคนสามารถใช้งานได้ทุกวัตถุประสงค์ . ส่วนเรื่องโค้ด เราได้ปรับปรุงการตัดคำ newmm ความท้าทายในการปรับปรุงครั้งนี้คือกฎของ TCC ที่มีตัวอย่างในตัว paper จำนวนน้อย ทำให้เราต้องปรับปรุงโดยอ้างอิงตัวอย่างจาก paper อื่น ๆ ที่ใช้งาน TCC และปรับโค้ดให้ตรงก

มาร่วมกันบริจาคประโยคภาษาลาวสำหรับ Commonvoice ภาษาลาวกัน

ขอเชิญชวนทุกท่านที่ใช้หรือรู้ภาษาลาว มาร่วมกันบริจาคประโยคภาษาลาว สำหรับ Commonvoice ภาษาลาวกัน

เมื่อ Zotero เนื้อที่ไม่พอ

เรื่องเล่าจากเรื่องจริง ผมถนัดใช้ Zotero มาก แถมตอนนี้ใช้ใน iPad ได้แล้วผ่านแอป Zotero (รุ่นทดสอบ) แต่ตอนนี้ผมใช้เนื้อที่เต็ม เลยต้องหาที่เก็บไฟล์ จะให้ใช้ซื้อ Storage ของ Zotero เพิ่มก็ไม่เพียงพอ เพราะต้องซื้อเหมาทีเดียวเป็นรายปี เลยตัดสินใจไปเช่า VPS ที่ DigitalOcean ราคาถูก ๆ และดึง docker webdav ขึ้นมา ใช้ docker แป๊ปเดียว แต่ไม่จบ เพราะ Zotero ใน iOS มันซิงค์กับ webdav ที่เป็น http ปกติไม่ได้ เลยต้องไปปรับ docker ใช้ letsencrypt กับปรับแต่ง Dockerfile จนตอนนี้ใช้งานได้วงจร ทั้งบนคอมกับ iPad แล้ว GitHub docker webdav ssl: https://github.com/wannaphong/docker-webdav

layout คีย์บอร์ดภาษาไทยกับ Phosh

เมื่อปีก่อน หลังผมได้ PinePhone มา ผมพบว่า postmarketos ไม่มี layout คีย์บอร์ดภาษาไทย ทำให้ไม่สามารถพิมพ์ภาษาไทยได้เลย ผมเลยไปถาม postmarketOS สรุปผมเลยต้องไปไล่ดู จนส่ง pull request layout คีย์บอร์ดภาษาไทยไปได้ทาง https://source.puri.sm/Librem5/squeekboard/-/merge_requests/402/ จนได้เข้ารวมกับต้นน้ำ เย้ ผ่านมา 1 ปี ผมไม่ได้ใช้ postmarketOS แล้ว เปลี่ยนไปใช้ mobian แทน แต่ก็ยังได้ใช้ layout คีย์บอร์ดภาษาไทยของตัวเองที่ได้ส่งไปให้ต้นน้ำ :D เอาตามตรงนะ ตอนสร้างไม่ได้ทดสอบอะไรเลย เพราะ sim ที่เขามีให้มันใช้ไม่ได้ เลยมั่วส่งไป กับอ่านโค้ด layout คีย์บอร์ดภาษาอื่น ๆ ที่มีอยู่แล้ว ประกอบ

เรื่องเล่าโปรเจค 1: จะรันโค้ดโปรแกรมยังไง

หลังจากที่เสนอหัวข้อกับอาจารย์ที่ปรึกษาผ่าน แต่ก็ยังมีปัญหา คือ จะรันโค้ดโปรแกรมที่รับมาจาก user แล้วตรวจกับเก็บผลลัพธ์ยังไง ก่อนหน้านี้ ผมบังเอิญไปเจอไลบรารีตัวหนึ่งใน python ที่สามารถยิงคำสั่งโค้ดเข้าไปรันใน docker โดยจำกัดเวลา แรม CPU เครือข่าย ในการทำงานได้ แถมส่งออกมาเป็นผลลัพธ์ได้ ผมจึงเขียนระบบตรวจสอบโค้ดในภาษา python แต่ปัญหายังไม่จบลงแค่นั้น ส่วนหน้าบ้านผมกับเพื่อน ตกลงกันว่าจะใช้ PHP ด้วย laravel ในการเขียนส่วนหน้าบ้านทั้งหมด ต่างภาษากัน จึงต้องเขียน API ให้หน้าบ้านยิงคำสั่งตรวจกับข้อมูลไปหาระบบตรวจที่เป็น python ใช้รูปแบบข้อมูล json ในการยิงและส่ง ปัญหายังไม่จบ คือ จะเก็บข้อมูลยังไง ผมเลยตัดจบปัญหา โดยให้ทั้งระบบหน้าบ้านและระบบตรวจสอบโค้ดใช้ฐานข้อมูลตัวเดียวกันเลย เวลาหน้าบ้านยิงไป จะได้ยิงแค่ไอดีและข้อมูลที่จำเป็นเท่านั้น แล้วผลลัพธ์ลงฐานข้อมูลเลย  

ความหลงใหลจากความสนใจ

จะว่าไปความหลงใหลหลาย ๆ เรื่องมันมาจากบล็อกที่ผมเขียน python3.wannaphong.com มันเป็นบล็อกเดียว ที่ผมเคยคิดจะแยกโดเมนให้มัน แต่ไม่ได้แยกโดเมนสักที ด้วยเหตุผล คิดชื่อมันไม่ออก ความสนใจด้าน NLP AI อะไรต่าง ๆ ก็เริ่มมาจากการเขียนบล็อกนี้ ซึ่งบล็อกนั้นเกิดจากความสนใจในเรื่องต่าง ๆ ณ เวลานั้น ๆ ไปลองเล่น แล้วเขียนบทความ หรือเจออะไรที่น่าสนใจก็เอามาเขียน จึงอาจไม่ต้องแปลกใจ ถ้าไปอ่านบทความเก่า ๆ เจอพวกคำนวณระยะห่างระหว่างดวงดาวในอวกาศ คำนวณแรงโน้มถ่วงของโลก หาข้อมูลธาตุในตารางธาตุ อะไรประมาณนี้ ซึ่งย้อนกลับไปตอนนั้นมันสนุกมาก ๆ แม้จะผ่านมากว่า 7 ปีแล้ว พอไปอ่านบทความเก่า ๆ ก็ยังคงนึกความสนุกตอนนั้นออก การเขียนบทความ chatbot ของผมตอนนั้น กลายมาเป็นจุดเริ่มต้นของโปรเจคที่ยาวนาน (มาก) อีกโปรเจคหนึ่ง คือ PyThaiNLP ซึ่งเกิดจากความสนใจตอนนั้นเหมือนกัน ได้รับรู้ปัญหาหลายอย่าง และลองทำดู กลับกันมีหลายบทความที่ว่าจะต่อ แต่ดองทิ้งไว้ (จำนวนมาก) ซึ่งด้วยเหตุผลเพราะความสนใจเปลี่ยน หรือ ไปต่อไม่ถูก หรือ ไม่มีเวลา อย่าไปถืออะไรกับมันมากเท่าไร เพราะตอนนั้นเป็นแค่เด็กม.ปลายที่เขียนไปตามสนุก ความเป็นวิชาการอา