FUTO Swipe: โมเดลการป้อนแบบสไวป์แบบเปิด
(swipe.futo.tech)- ความพยายามสร้าง วิธีป้อนข้อมูลแบบสไวป์ บนคีย์บอร์ดมือถือด้วยโมเดลและอัลกอริทึมแบบเปิด
- ที่ผ่านมาระบบป้อนแบบสไวป์คุณภาพสูงมักผูกอยู่กับ แอปคีย์บอร์ดที่ละเมิดความเป็นส่วนตัว หรือ ไลบรารีปิด ที่ไม่มีไลเซนส์ จึงมีความต้องการทางเลือกทดแทน
- ถูกนำไปใช้ในแอป Android แบบออฟไลน์เต็มรูปแบบ FUTO Keyboard และสามารถดาวน์โหลดโมเดลไปคอมไพล์เองได้
- ตั้งแต่เดือนสิงหาคม 2024 ได้เก็บข้อมูลการสไวป์ภาษาอังกฤษแบบ QWERTY จนมีมากกว่า 1 ล้านรายการ และเปิดเผยบน HuggingFace ในเดือนมีนาคม 2025 เป็น ชุดข้อมูลภายใต้ไลเซนส์ MIT
- โครงสร้างแบ่งเป็น Encoder ทั่วไป, ContextLM ตามภาษา, และ Decoder ตามภาษาและเลย์เอาต์ โดยในชุดทดสอบมีอัตราพลาด top-4 ราว 4% และอัตราความผิดพลาดต่ำกว่า 1% เมื่อไม่รวม OOV
- โมเดลทั้งหมดมีพารามิเตอร์ราว 2.5 ล้านตัว และเป็นโมเดลขนาดเล็กที่มีพารามิเตอร์ใช้งานจริงราว 1.36 ล้านตัว โดยตั้งเป้าให้ทำงานระดับมิลลิวินาทีแม้บนอุปกรณ์สเปกต่ำผ่านไลบรารี C++ swipe-library
ปัญหาที่ต้องการแก้ด้วยโมเดลการป้อนแบบสไวป์แบบเปิด
- FUTO Swipe คือชุดโมเดลและอัลกอริทึมที่ แปลงเส้นทางการสไวป์เป็นการคาดเดาคำ
- ตอนนี้สามารถใช้งานได้ในแอปคีย์บอร์ด Android แบบออฟไลน์เต็มรูปแบบ FUTO Keyboard
- เดโมบนเว็บรันฝั่งเซิร์ฟเวอร์เพื่อลดขนาดหน้าเว็บ แต่ในสภาพแวดล้อมการใช้งานจริงจะ ทำงานบนอุปกรณ์ จึงมีความหน่วงต่ำกว่า
- FUTO พัฒนาระบบนี้เพื่อใช้กับ FUTO Keyboard เป็นหลัก แต่ก็ ยินดีให้ชุมชนวงกว้างนำโมเดลไปใช้
- เนื่องจากเป็นผลลัพธ์จากการลงทุนระยะยาว จึงขอ การระบุเครดิตผู้สร้าง ในรูปแบบที่ผู้ใช้ปลายทางมองเห็นได้ และไลเซนส์ของโมเดลใช้ตาม FUTO Model License
ชุดข้อมูลและองค์ประกอบของโมเดล
- เริ่มเก็บข้อมูล การสไวป์ภาษาอังกฤษแบบ QWERTY ที่ swipe.futo.org ตั้งแต่เดือนสิงหาคม 2024
- ผู้ใช้เข้ามายังหน้าเว็บบนมือถือด้วยความสมัครใจ เพื่อดูคำอธิบายและข้อมูลเกี่ยวกับชุดข้อมูล
- หลังให้ความยินยอม ผู้ใช้จะสไวป์คำทีละคำจากประโยคที่ส่วนใหญ่มาจาก Wikipedia
- ผลลัพธ์คือมี ข้อมูลสไวป์มากกว่า 1 ล้านรายการ และมีการกรองข้อมูลสไวป์คุณภาพต่ำบางส่วนออก
- ในเดือนมีนาคม 2025 ได้ เปิดเผยบน HuggingFace ชุดข้อมูล 1 ล้านสไวป์ภายใต้ไลเซนส์ MIT
- สถาปัตยกรรมโมเดลแบ่งเป็น 3 โมเดลที่ทำหน้าที่ต่างกัน
- Encoder: โมเดลทั่วไป ที่ไม่ขึ้นกับเลย์เอาต์หรือภาษา ใช้สำหรับการคาดเดาการป้อนแบบสไวป์ทั่วไป แต่ยังไม่ถึงระดับความแม่นยำสูงสุด
- ContextLM: โมเดลภาษาขนาดเล็กมาก สำหรับภาษาเดียว ใช้ตัดตัวเลือกที่ไม่สมเหตุสมผลออกโดยอิงจากคำก่อนหน้าเพื่อเพิ่มคุณภาพการคาดเดา การฝึกต้องใช้เพียง ข้อมูลข้อความเท่านั้น
- Decoder: โมเดลที่ปรับเฉพาะกับภาษาและเลย์เอาต์ เรียนรู้ลักษณะเฉพาะของเลย์เอาต์เพื่อให้ได้ ความแม่นยำระดับสูงสุด โดยตอนนี้มีเฉพาะ Decoder สำหรับภาษาอังกฤษแบบ QWERTY
ประสิทธิภาพและขนาดการรัน
- ตัวเลขประสิทธิภาพขึ้นอยู่กับเบนช์มาร์กอย่างมาก ดังนั้นผลลัพธ์ในการใช้งานจริงอาจแตกต่างกัน
- เมื่อใช้ทั้ง 3 โมเดลร่วมกับ beam width 300 ค่า อัตราพลาด top-4 ของชุดทดสอบอยู่ที่ราว 4%
- หากไม่นับคำที่ไม่อยู่ในพจนานุกรม อัตราความผิดพลาดต่ำกว่า 1%
- FUTO ประเมินว่าอยู่ในระดับ เทียบเคียงคีย์บอร์ดของบริษัทเทคขนาดใหญ่
- โมเดลมีขนาดเล็กโดยคำนึงถึงการรันบนมือถือ
- Encoder มีพารามิเตอร์ 635,140 ตัว
- Decoder เพิ่มอีก 304,155 พารามิเตอร์
- ContextLM มีพารามิเตอร์ 1.5 ล้านตัว โดยในนี้ 1.1 ล้านตัวเป็น embedding
- พารามิเตอร์ที่ใช้งานจริงมี 1,364,271 ตัว และพารามิเตอร์รวมมี 2,494,767 ตัว
- สามารถ รันได้ในระดับมิลลิวินาที แม้บนอุปกรณ์สเปกต่ำ และการฝึกก็ไม่ต้องใช้เกิน GPU เวิร์กสเตชัน 1 ตัว
ไลบรารีสำหรับอนุมานผลและไลเซนส์
- การทำนายจากโมเดลเพียงอย่างเดียวไม่เพียงพอ จึงต้องมี beam search ที่มีข้อจำกัดจากพจนานุกรม เพื่อให้คะแนนตัวเลือกคำและหาคำที่เป็นไปได้มากที่สุด
- เพื่อจุดนี้จึงได้เปิดเผยไลบรารี C++ swipe-library
- swipe-library จัดการทั้งการอนุมานผล การถอดรหัส และ beam search เพื่อเชื่อมจากเส้นทางการสไวป์ไปสู่การคาดเดาคำ
- โมเดลใช้ FUTO Model License ส่วน ไลบรารีสำหรับอนุมานผล เผยแพร่ภายใต้ GPL
- FUTO กำลังเตรียมเผยแพร่งานวิจัยที่อธิบายการฝึกและสถาปัตยกรรมอย่างละเอียดมากขึ้น
2 ความคิดเห็น
ผมกำลังใช้คีย์บอร์ดสั่งงานด้วยเสียงของบริษัทนี้อยู่ และมันดีมากครับ
ความคิดเห็นจาก Hacker News
ชอบการพิมพ์แบบปาดเพราะความเร็ว โดยทั่วไปเร็วกว่าการแตะและใช้งานมือเดียวได้ง่าย แต่ก็มักพิมพ์คำที่คล้ายกันผิดซ้ำ ๆ และแยกตัวอักษรเดี่ยว/ตัวอักษรซ้ำได้ไม่เก่ง
อยากได้ผังคีย์บอร์ดใหม่สำหรับการปาดโดยเฉพาะมานานแล้ว เหมือนที่ Dvorak ปรับสรีรศาสตร์ของการพิมพ์ภาษาอังกฤษให้เหมาะที่สุด ถ้ามีผังที่ลดการทับซ้อนของคำและความกำกวมเวลาปาดได้ก็น่าจะดี
ไม่จำเป็นต้องมี 26 ปุ่มเสมอไป อาจรวม v/w/x/z ไว้ในปุ่มเดียว แล้วใช้การกดค้างเพื่อป้อนตัวอักษรเดี่ยวก็ได้ หรือในทางกลับกันอาจต้องแยก
eกับeeออกจากกัน หรือมีปุ่มพิเศษสำหรับ “ทำตัวอักษรก่อนหน้าซ้ำ”ปัญหาส่วนใหญ่เกิดจากการที่ QWERTY ไม่เหมาะกับการปาดเอาเสียเลย ดังนั้นถ้ามีผังที่เหมาะที่สุดซึ่งทำให้ความแม่นยำในภาษาอังกฤษเพิ่มจากที่ตอนนี้รู้สึกได้ราว 90~95% ไปถึง 99.9% ก็ยินดีเรียนรู้ผังใหม่เต็มที่
https://github.com/futo-org/futo-keyboard-layouts/issues/163
ด้วยโครงสร้างของโมเดล จึงสามารถสร้างสไวป์สังเคราะห์ประมาณ 50,000 คำสำหรับแต่ละผัง แล้วส่งผ่านโมเดลเพื่อปรับความแม่นยำในการรู้จำให้เหมาะที่สุดได้โดยตรง และด้วยวิธีนี้จึงทดสอบผังไปประมาณ 800,000 แบบ
ปัญหาใหญ่ที่สุดของ QWERTY คือมีคำจำนวนมากเกินไปที่ถูกปาดเป็นรูปแบบตัวอักษร 3 ตัวติดกันในแนวเส้นตรงหรือมุมป้าน รูปแบบแบบนี้ทั้งรู้จำยาก และผู้ใช้ก็แสดงเจตนาว่าต้องการตัวอักษรไหนผ่านท่าทางได้ไม่ชัดเจน
โมเดลปาดแบบโครงข่ายประสาทไม่ได้พยายามจับคู่รูปร่างของท่าทางเหมือนการจับคู่รูปทรงเชิงอัลกอริทึม แต่จะมองหาสัญญาณจากรูปแบบท่าทางว่าผู้ใช้เล็งตัวอักษรใด
ถ้าเปลี่ยนรูปทรงของคีย์บอร์ด ท่าทางอาจก่อตัวได้ดีขึ้นจนสัญญาณของตัวอักษรชัดขึ้น โมเดลนี้ต่างจากการจับคู่รูปร่างตรงที่ใช้ข้อมูลเวลาได้ด้วย จึงตอบสนองต่อเวลาที่หยุดค้างได้ แต่การค้างจะทำให้การไหลลื่นสะดุด จึงคิดว่าควรลดให้น้อยที่สุดในผังสำหรับการปาด
ดูเหมือนจะมีภาคต่อสมัยใหม่ด้วย: https://play.google.com/store/apps/details?id=inc.flide.vi8
ใช้คีย์บอร์ดนี้แบบเป็นพัก ๆ มาระยะหนึ่ง แต่ก็มักกลับไปใช้ gboard ตลอด ทว่าหลังอัปเดตครั้งนี้ก็ย้ายมาใช้เต็มตัวแล้ว ดีมากจริง ๆ
ยังมีปัญหาที่มันสุ่มทำคำกลางประโยคให้เป็นตัวพิมพ์ใหญ่ และดูเหมือนจะยังพิจารณาบริบทในการแนะนำคำได้ไม่ดีนัก เลยชอบเสนอคำที่ไม่มีทางตามหลังคำก่อนหน้าได้บ่อย ๆ
ยังไม่ถึงระดับ gboard แต่ก็ใกล้พอที่จะใช้ต่อได้
ถ้าใช้อุปกรณ์ที่แรงกว่า ก็สามารถดาวน์โหลดโมเดลเสียงขนาดใหญ่กว่าและพจนานุกรมที่ใหญ่กว่าจากเว็บไซต์ได้ และความต่างที่รู้สึกได้นั้นค่อนข้างชัด
สิ่งที่เสียดายแบบพื้นฐานคือดูเหมือนจะคัดค้านการเพิ่มการค้นหา GIF ด้วยเหตุผลเชิงอุดมการณ์ ซึ่งบางทีก็คิดถึงฟีเจอร์นั้นอยู่: https://github.com/futo-org/android-keyboard/issues/293#issu...
เจ๋งมาก ใช้คีย์บอร์ด FUTO มา 2 ปีแล้ว และมันเป็นคีย์บอร์ดฟรีที่เป็นมิตรต่อความเป็นส่วนตัวที่ดีที่สุดเท่าที่เคยเจอ แต่การปาดของคีย์บอร์ดแบบนี้แย่มากมาตลอด เลยทรมานสำหรับคนที่ใช้การปาดบ่อย
ดีใจที่การช่วยปาดอยู่ประมาณชั่วโมงหนึ่งเพื่อเสริมข้อมูลให้ชุดข้อมูลนั้น ดูเหมือนจะช่วยได้จริง ตอนนี้ลองใช้แล้วรู้สึกว่าดีพอ ๆ กับ Google keyboard
แค่ขำที่มันยังชอบปาดเป็น
whatsแทนwhat'sอยู่เรื่อย ๆ หวังว่าคงแก้ได้ทีหลังเผื่อใครสงสัยเรื่องไลเซนส์ ตัวไลบรารีเป็น GPLv3 ซึ่งดี แต่คีย์บอร์ด Android เป็น Futo License ซึ่งไม่ค่อยดีนัก
https://gitlab.futo.org/keyboard/swipe-library/-/blob/master...
https://github.com/futo-org/android-keyboard/blob/master/LIC...
หรือว่าเป็นข้อนี้: ห้ามลบหรือซ่อนความสามารถในการจ่ายเงินให้ผู้ให้ไลเซนส์ออกจากสำเนาที่แจกจ่าย
หลังจากได้ลอง Nintype บน iOS เมื่อหลายปีก่อน ก็รู้สึกว่าใช้คีย์บอร์ดแบบปัดอื่นไม่ได้อีกเลย ตอนนี้พิมพ์ด้วยคีย์บอร์ดปกติเป็นหลัก และจะปัดแค่คำสองคำเป็นครั้งคราวเวลาที่ใช้สองมือไม่ได้
การปัดด้วยนิ้วเดียวตอนถือโทรศัพท์ด้วยสองมือมันรู้สึกไม่เป็นธรรมชาติและช้า ๆ อยากให้ Apple ซื้อ Nintype หรือเชอร์ล็อกมันแล้วรวมเข้ากับคีย์บอร์ดพื้นฐานไปเลย
ใช้มันมาตั้งแต่ก่อนที่ Apple จะอนุญาตคีย์บอร์ด third-party อย่างเป็นทางการเสียอีก
keyboard 69และฉันก็ใช้มันอยู่หลายปีประสบการณ์ใช้งานน่าทึ่งมาก และทุกระบบปัดที่ลองหลังจากนั้นพอเทียบกันแล้วรู้สึกหน่วงไปหมด การปัดด้วยสองนิ้ว ดีที่สุดในเชิงสรีรศาสตร์ แต่น่าเสียดายที่ดูเหมือนจะเป็นนวัตกรรมที่เฉพาะกลุ่มเกินไป
Futo ที่ใส่โมเดลปัดใหม่เข้ามา เป็นคีย์บอร์ด Android ตัวแรกที่ฉันเคยใช้ซึ่งไม่ทำให้รู้สึกว่า ต้องยอมประนีประนอมเมื่อเทียบกับ GBoard
มีทั้งการป้อนข้อมูลด้วยเสียงในตัว การพิมพ์พร้อมแก้อัตโนมัติที่ดี และการปัดพร้อมแก้อัตโนมัติที่ดี
แก้ไข: ไม่ได้การันตีว่าเป็นฟรีและโอเพนแน่นอน โครงสร้างไลเซนส์ค่อนข้างชวนสับสน ถึงอย่างนั้นมันก็ทำงานได้ดี เลยตั้งใจจะใช้แทน Gboard
นี่เป็นเรื่องใหญ่มาก เท่าที่ฉันเห็น นี่ใกล้เคียงกับ โมเดลปัดแบบโอเพนฟรีที่ใช้งานได้จริง ตัวแรก มันเปิดทางให้แพลตฟอร์มนอก iOS และ Android ทำระบบพิมพ์แบบปัดได้ และช่วยลดความเจ็บปวดจุดใหญ่สำหรับผู้เล่นระบบปฏิบัติการหน้าใหม่
พอดีกับที่ Microsoft เริ่มใส่ การรีไดเร็กต์แบบ dark pattern ไปหาโฆษณาและ Bing ใน SwiftKey เลยลบทิ้ง จังหวะมาพอดี
แผงให้ใช้ฟังก์ชันแบ็กอัปเด้งกลับมาตลอด มันหนักข้อเกินไปจนสุดท้ายย้ายไป GBoard ตอนนี้ยังไม่เหมือนเดิมแต่ก็กำลังชิน
อาจเป็นเพราะเงินก็จริง แต่รู้สึกว่าไม่ใช่ทุกอย่างที่ Microsoft ทำจะต้องทำเงินก้อนโตเสมอไป
ดูดีนะ แต่ปัญหาใหญ่ของคีย์บอร์ด Futo คือรองรับได้ ทีละภาษาเดียว เท่านั้น ใน gboard ฉันสามารถปัดพิมพ์ได้ใน 3 ภาษาที่ใช้โดยไม่ต้องสลับไปมาเลย อยากให้ Futo ทำแบบนั้นได้เหมือนกัน
การพิมพ์ตามเสียงพูด ดีกว่า GBoard ที่ฉันใช้ก่อนหน้านี้มาก มันจัดการตัวพิมพ์ใหญ่ต้นประโยคและเครื่องหมายวรรคตอนให้เองโดยที่ฉันไม่ต้องสนใจ จับหลายประโยคได้เป๊ะโดยแทบไม่ต้องมาแก้ทีหลัง และทั้งหมดรันด้วยโมเดลในเครื่อง
ข้อเสียคือมันไม่ได้อัปเดตแบบเรียลไทม์ แต่จะแปลงทีเดียวหลังพูดจบ ดูเหมือนว่าตอนนี้ได้แก้เรื่องแบ็กสเปซแบบปัดกับสเปซบาร์ที่ไวเกินไปแล้วจากครั้งสุดท้ายที่ฉันลองเมื่อ 1-2 ปีก่อน และก็ปรับแต่งได้บางส่วนแล้ว