2 पॉइंट द्वारा GN⁺ 4 시간 전 | 2 टिप्पणियां | WhatsApp पर शेयर करें
  • मोबाइल कीबोर्ड की swipe input method को ओपन मॉडल + algorithm के रूप में लागू करने की कोशिश
  • अब तक उच्च-गुणवत्ता वाला swipe input या तो privacy का उल्लंघन करने वाले keyboard apps में बंधा रहा है या बिना लाइसेंस वाली closed-source libraries में, इसलिए एक विकल्प की ज़रूरत थी
  • इसे पूरी तरह offline Android app FUTO Keyboard में शामिल किया जा रहा है, और मॉडल डाउनलोड करके खुद build भी किया जा सकता है
  • अगस्त 2024 से QWERTY English swipe डेटा इकट्ठा किया गया, 10 लाख से अधिक नमूने जुटाए गए, और मार्च 2025 में इसे MIT license dataset के रूप में HuggingFace पर जारी किया गया
  • इसकी संरचना general Encoder, language-specific ContextLM, और language/layout-specific Decoder में बंटी है; test set में top-4 failure rate लगभग 4% रहा, और OOV को छोड़कर error rate 1% से कम दर्ज किया गया
  • पूरा मॉडल लगभग 25 लाख parameters का है, जिसमें लगभग 13.6 लाख active parameters वाला छोटा मॉडल C++ inference library swipe-library के जरिए low-end devices पर भी millisecond स्तर पर चलाने का लक्ष्य रखता है

ओपन swipe input मॉडल से हल की जाने वाली समस्या

  • FUTO Swipe ऐसे मॉडल और algorithms का परिवार है जो swipe path को word prediction में बदलता है
  • इसे अभी पूरी तरह offline Android keyboard app FUTO Keyboard में इस्तेमाल किया जा सकता है
  • वेबपेज demo पेज का आकार कम रखने के लिए server side पर चलता है, लेकिन वास्तविक product environment में यह on-device चलता है, इसलिए latency और कम होती है
  • FUTO ने इस सिस्टम को मुख्य रूप से FUTO Keyboard के लिए विकसित किया है, लेकिन विस्तृत community द्वारा मॉडल के उपयोग का स्वागत करता है
  • यह लंबे समय के निवेश का नतीजा है, इसलिए FUTO end user को दिखने वाले रूप में attribution का अनुरोध करता है, और मॉडल license FUTO Model License का पालन करता है

dataset और मॉडल संरचना

  • अगस्त 2024 में swipe.futo.org पर QWERTY English swipe डेटा संग्रह शुरू किया गया
    • उपयोगकर्ता स्वेच्छा से मोबाइल वेबपेज पर आते थे और निर्देशों व dataset जानकारी को देखते थे
    • सहमति के बाद वे मुख्य रूप से Wikipedia से लिए गए वाक्यों को शब्द-दर-शब्द swipe करते थे
    • नतीजे में 10 लाख से अधिक swipes तैयार हुए, और कुछ low-quality swipes को filter किया गया
    • मार्च 2025 में 10 लाख swipe dataset को MIT license के तहत HuggingFace पर जारी किया गया
  • मॉडल architecture अलग-अलग भूमिकाओं वाले तीन मॉडलों में बंटी है
    • Encoder: layout और language से स्वतंत्र general model, जो सामान्य swipe input prediction में उपयोगी है, लेकिन यह state-of-the-art accuracy नहीं देता
    • ContextLM: एक भाषा के लिए बना बहुत छोटा language model, जो पिछले शब्दों के आधार पर निरर्थक candidates को हटाकर prediction quality बढ़ाता है। इसकी training के लिए सिर्फ text data चाहिए
    • Decoder: language और layout के लिए विशेषीकृत मॉडल, जो layout की विशेषताएँ सीखकर उच्चतम स्तर की accuracy देता है; अभी केवल QWERTY English Decoder उपलब्ध है

प्रदर्शन और रनटाइम स्केल

  • performance metrics benchmark पर काफी निर्भर करते हैं, इसलिए वास्तविक उपयोग के परिणाम अलग हो सकते हैं
    • 3 मॉडलों और beam width 300 के संयोजन में test set पर top-4 failure rate लगभग 4% रहा
    • dictionary में न होने वाले शब्दों को हटाने पर error rate 1% से कम है
    • FUTO के अनुसार यह बड़ी tech कंपनियों के keyboard के बराबर है
  • मॉडल मोबाइल execution को ध्यान में रखकर छोटा रखा गया है
    • Encoder में 635,140 parameters हैं
    • Decoder में अतिरिक्त 304,155 parameters हैं
    • ContextLM में 15 लाख parameters हैं, जिनमें 11 लाख embeddings हैं
    • active parameters 1,364,271 हैं, और total parameters 2,494,767 हैं
    • यह low-end devices पर भी millisecond स्तर पर चल सकता है, और training के लिए एक workstation GPU से अधिक की ज़रूरत नहीं पड़ी

inference library और license

  • केवल मॉडल prediction पर्याप्त नहीं है; word candidates को score करने और सबसे संभावित विकल्प खोजने के लिए dictionary-constrained beam search की ज़रूरत होती है
    • इसके लिए C++ library swipe-library जारी की गई है
    • swipe-library पूरा inference, decoding, और beam search संभालती है, ताकि swipe path से word prediction तक की प्रक्रिया जुड़ सके
    • मॉडल FUTO Model License के तहत है, जबकि inference library GPL के तहत उपलब्ध है
  • FUTO training और architecture पर अधिक विस्तार से चर्चा करने वाला एक paper तैयार कर रहा है

2 टिप्पणियां

 
wedding 3 시간 전

मैं इस कंपनी का voice recognition keyboard इस्तेमाल कर रहा हूँ, और यह अच्छा है।

 
GN⁺ 4 시간 전
Hacker News टिप्पणियाँ
  • मुझे swipe input इसकी स्पीड की वजह से पसंद है। यह आम तौर पर tap से तेज़ होता है और एक हाथ से इस्तेमाल करना आसान होता है, लेकिन यह मिलते-जुलते शब्दों को बार-बार गलत कर देता है और single/double letters में फर्क करने में भी कमजोर है
    मैं बहुत समय से swipe के लिए खास एक नया keyboard layout चाहता था। जैसे Dvorak ने English typing की ergonomics को optimize किया, वैसे ही swipe करते समय word overlap और ambiguity को कम करने वाला layout हो तो अच्छा होगा
    ज़रूरी नहीं कि वह 26-key ही हो; v/w/x/z को एक ही key पर रखा जा सकता है और single letter को long-press से input कराया जा सकता है। उल्टा e और ee को अलग करना पड़ सकता है, या “पिछला अक्षर दोहराएँ” जैसी कोई special key चाहिए हो सकती है
    ज़्यादातर समस्या इस वजह से है कि QWERTY swipe के लिए बिल्कुल उपयुक्त नहीं है, इसलिए अगर English में accuracy को अभी महसूस होने वाले 90~95% से बढ़ाकर 99.9% तक ले जाने वाला कोई optimal layout आए, तो मैं नया layout सीखने के लिए पूरी तरह तैयार हूँ

    • FUTO Swipe वास्तव में ऐसे ही swipe-optimized keyboard layout ClearFlow को support करता है: https://clearflowkeyboard.github.io/
      https://github.com/futo-org/futo-keyboard-layouts/issues/163
    • 90~95% वाला अनुमान काफ़ी सटीक है, और test set में भी लगभग उतना ही मापा गया। इस पर एक blog post जल्द आने वाली है
      model architecture की वजह से हम हर layout पर लगभग 50,000 synthetic swipes बनाकर उन्हें model से गुज़ारते हुए recognition accuracy को सीधे optimize कर पाए, और इस तरीके से लगभग 800,000 layouts test किए गए
      QWERTY की सबसे बड़ी समस्या यह है कि बहुत से शब्द swipe करने पर एक सीधी रेखा या obtuse-angle वाले 3-letter sequence बन जाते हैं। ऐसे pattern को पहचानना भी मुश्किल होता है और gesture से यह साफ़ दिखाना भी कठिन होता है कि user ने कौन से अक्षर इरादतन चुने थे
      neural network swipe model algorithmic shape matching की तरह gesture के shape को मिलाने की कोशिश नहीं करता, बल्कि gesture pattern में यह संकेत ढूँढता है कि user ने कौन से specific letters को target किया था
      अगर keyboard की shape बदली जाए, तो gestures बेहतर बन सकते हैं और letter signal अधिक स्पष्ट हो सकता है। यह model shape matching से अलग time information भी इस्तेमाल करता है, इसलिए dwell time पर भी प्रतिक्रिया दे सकता है, लेकिन dwell flow को तोड़ता है, इसलिए swipe layout में इसे कम से कम रखना बेहतर लगता है
    • यह पुरानी चीज़ है इसलिए अब शायद उतनी प्रासंगिक न हो, लेकिन gesture interface को बहुत दिलचस्प तरीके से फिर से कल्पित करने के उदाहरण के तौर पर https://www.the8pen.com/ है
      लगता है इसका एक modern successor भी है: https://play.google.com/store/apps/details?id=inc.flide.vi8
    • मैं भी यह काफ़ी समय से चाहता था। अभी अच्छी input speed के लिए मैं phone को landscape में घुमाने पर मिलने वाले split mode में Dvorak इस्तेमाल कर रहा हूँ
  • मैं इस keyboard को कुछ समय से बीच-बीच में इस्तेमाल करता रहा था, लेकिन हमेशा gboard पर लौट जाता था; इस update के बाद मैंने पूरी तरह switch कर लिया। यह वाकई बहुत अच्छा है
    इसमें अब भी एक समस्या है कि यह sentence के बीच के शब्दों को random तरीके से capitalize कर देता है, और word suggestions में context को ठीक से नहीं देखता, इसलिए अक्सर ऐसे शब्द सुझाता है जो पिछले शब्द के बाद आ ही नहीं सकते
    यह अभी भी gboard जितना अच्छा नहीं है, लेकिन इतना क़रीब आ गया है कि मैं इसे लगातार इस्तेमाल करूँगा
    अगर आप ज़्यादा ताकतवर device इस्तेमाल करते हैं, तो site से बड़ा voice model और बड़ा dictionary डाउनलोड कर सकते हैं, और फर्क काफ़ी महसूस होता है
    मूल रूप से जो बात खलती है, वह यह कि वे शायद GIF search जोड़ने के वैचारिक रूप से खिलाफ़ हैं, लेकिन कभी-कभी वह feature याद आता है: https://github.com/futo-org/android-keyboard/issues/293#issu...

    • लगता है मेरी भी स्थिति ऐसी ही है। speech-to-text कभी-कभी अचानक ढेर सारे emoji उगलने लगता है; क्या आपके साथ भी ऐसा हुआ है?
  • बढ़िया। मैं 2 साल से FUTO keyboard इस्तेमाल कर रहा हूँ और अब तक मिले free, privacy-friendly keyboards में यह सबसे अच्छा था, लेकिन ऐसे keyboards में swipe इतना खराब था कि swipe ज़्यादा इस्तेमाल करने वाले के लिए यह कष्टदायक था
    dataset में योगदान देने के लिए मैंने लगभग एक घंटे तक swipe किया था, इसलिए यह देखकर अच्छा लग रहा है कि उससे सच में मदद हुई। अभी आज़माकर देखा तो यह Google keyboard जितना अच्छा लगा
    हालांकि what's की जगह बार-बार whats swipe होना थोड़ा मज़ेदार है। उम्मीद है बाद में यह ठीक हो जाएगा

  • जिन लोगों को license के बारे में जानना है, उनके लिए: library GPLv3 है, जो अच्छा है, लेकिन Android keyboard Futo License के तहत है, जो उतना अच्छा नहीं है
    https://gitlab.futo.org/keyboard/swipe-library/-/blob/master...
    https://github.com/futo-org/android-keyboard/blob/master/LIC...

    • license की जटिलता में और जोड़ें तो, model एक और license इस्तेमाल करता है जिसे FUTO ने अलग से लिखा है, लेकिन कम से कम वह keyboard license जितना खराब नहीं लगता: https://huggingface.co/futo-org/futo-swipe/blob/main/LICENSE...
    • मैं जानना चाहता हूँ कि Futo License में ख़ास तौर पर समस्या किस हिस्से से है
      क्या यह वही clause है: कि वितरित की जाने वाली copies में आप वह functionality हटा या छिपा नहीं सकते जिसके ज़रिए license provider को भुगतान किया जाता है
    • यह बस बहुत हल्की शर्तों वाला commercial license जैसा ज़्यादा लगता है
  • कुछ साल पहले iOS पर Nintype का अनुभव करने के बाद से मैं कोई दूसरा swipe keyboard इस्तेमाल नहीं कर पाता। अब मैं आम तौर पर default keyboard पर टाइप करता हूँ, और सिर्फ तब कभी-कभी एक-दो शब्द swipe करता हूँ जब दोनों हाथ इस्तेमाल नहीं कर सकता
    जब फोन दोनों हाथों से पकड़ा हो, तब एक उंगली से swipe करना अननेचुरल और धीमा लगता है। काश Apple ने Nintype को खरीद लिया होता या Sherlock करके उसे default keyboard में integrate कर दिया होता

    • मैंने भी उसे इस्तेमाल किया था। मैं सोच रहा था कि क्या FUTO में एक शब्द डालने के लिए कई simultaneous या asynchronous swipes का फीचर है, लेकिन शायद नहीं है। मैं ऐप का नाम भी भूल चुका था, सच में पुरानी यादें ताज़ा हो गईं
      मैं इसे तब से इस्तेमाल कर रहा था जब Apple ने आधिकारिक तौर पर third-party keyboards की अनुमति भी नहीं दी थी
    • पूरी तरह सहमत। निर्माता ने keyboard 69 नाम से Android के लिए Nintype का buggy port बनाया था, और मैंने उसे कई साल तक इस्तेमाल किया
      user experience कमाल का था, और उसके बाद मैंने जितने भी swipe systems आज़माए, वे तुलना में सच में सुस्त लगे। two-finger swipe एर्गोनॉमिक्स के हिसाब से सबसे बढ़िया है, लेकिन अफसोस यह शायद बहुत niche innovation है
  • नए swipe model के साथ Futo पहला Android keyboard है जिसे मैंने इस्तेमाल किया है जिसमें GBoard के मुकाबले समझौता करने जैसा महसूस नहीं होता
    इसमें integrated voice input, अच्छा autocorrect typing, और अच्छा autocorrect swipe है

  • सुधार: यह जरूरी नहीं कि free/open की गारंटी हो। licensing setup उलझाने वाला है। फिर भी यह अच्छा काम करता है, इसलिए मैं Gboard की जगह इसे इस्तेमाल करने का सोच रहा हूँ
    यह बहुत बड़ी बात है। मेरी नज़र में यह पहली सचमुच इस्तेमाल करने लायक free open swipe model के काफी करीब है। यह iOS और Android के बाहर के platforms पर swipe typing संभव करने का रास्ता खोलता है, और नए operating system entrants के लिए एक बड़े दर्द वाले हिस्से को कम करता है

  • ठीक उसी समय Microsoft ने SwiftKey में ads और Bing की ओर भेजने वाले dark pattern redirects डालने शुरू कर दिए, इसलिए मैंने उसे हटा दिया; timing बढ़िया रही

    • अगर आपका मतलब uninstall किया, तो मैंने भी उसी वजह से ऐसा किया
      backup feature इस्तेमाल करने के लिए कहने वाला panel बार-बार वापस आता रहा, और बात इतनी बढ़ गई कि आखिरकार मैं GBoard पर चला गया। यह वैसा नहीं है, लेकिन मैं इसकी आदत डाल रहा हूँ
    • आपका मतलब uninstall किया, सही? दुख की बात है कि Microsoft के अंदर Bing team की ताकत बहुत ज्यादा है। वे Bing की शान और पैसे के लिए products को खराब कर रहे हैं
      शायद यह पैसे की वजह से है, लेकिन मुझे नहीं लगता कि Microsoft जो भी करे उसमें हर बार बहुत पैसा कमाना ही जरूरी है
  • अच्छा लग रहा है, लेकिन Futo keyboard की बड़ी समस्या यह है कि यह एक समय में सिर्फ एक भाषा संभालता है। gboard में मैं अपनी 3 भाषाओं में बिना लगातार switch किए swipe input कर सकता हूँ। काश Futo भी ऐसा कर पाता

  • voice dictation अब तक इस्तेमाल किए गए GBoard से कहीं बेहतर है। यह बिना मेरी परवाह किए sentence capitalization और punctuation संभाल लेता है, कई वाक्यों को बिना बाद में एडिट किए पूरी तरह सही बैठा दिया, और यह सब local model पर चलता है
    कमी यह है कि real-time updates नहीं मिलते, बल्कि बोलना खत्म होने के बाद batch conversion होता है। लगता है कि 1–2 साल पहले जब मैंने इसे आखिरी बार इस्तेमाल किया था, तब की तुलना में backspace swipe और spacebar की over-sensitivity ठीक कर दी गई है, और कुछ customization भी अब संभव है