Compress - मेरी टाइपिंग का 1/2 ऑटोमेट किया
(github.com/eschluntz)- अपने लेखन corpus से अपने-आप typing shortcuts बनाने और email व Slack में इस्तेमाल होने वाले input shortcuts जेनरेट करने वाला tool
- text corpus को parse करके typing के समय सबसे ज़्यादा अक्षर बचा सकने वाले shortcuts सुझाता है, और Linux keyboard shortcut program Autokey की config file जेनरेट करता है
- corpus में अक्सर आने वाले n-gram खोजकर उन्हें छोटे expressions से बदलने के candidates बनाता है, और suggestion ranking
[बचाए गए अक्षरों की संख्या] * [phrase frequency]से calculate करता है - shortcut selection का लक्ष्य याद रखने में आसान abbreviations चुनना है; जिन abbreviations को आप word के रूप में type करना चाहते हैं उन्हें blacklist से exclude किया जाता है, और ज़्यादा इस्तेमाल होने वाले phrases को याद रखने में आसान abbreviations पहले allocate किए जाते हैं
- Slack messages को corpus के रूप में इस्तेमाल करने के लिए Slack Data Export parsing tool भी देता है
- सिर्फ Slack workspace admin ही export कर सकते हैं
- केवल public channels export होते हैं
USERNAME_TO_EXPORTको Slack username से बदलने के बादparse_slack.pyचलाना ज़रूरी है- Slack export को
srmसे delete करने की प्रक्रिया भी शामिल है
- basic usage flow:
data/corpus/*.txtमें corpus डालें,find_suggested_phrases.pyसे top 200 candidates कोoutput/suggested_shortcuts.yamlमें बनाएं, फिर मनचाहे items कोshortcuts.yamlमें move करें औरgenerate_autokeys.pyसे Autokey config file जेनरेट करें install.shसे dependencies install होती हैं, और फिलहाल Python3.10.12पर test किया गया है- Autokey फिलहाल Linux पर केवल X11 support करता है, Wayland support नहीं करता
- जेनरेट की गई Autokey config इस तरह configure है कि वह केवल Chrome focus में होने पर apply हो; इसमें यह user experience भी शामिल है कि terminal और vscode में छोटे Linux commands या variable names के साथ abbreviations overlap होने से ज़्यादा समस्याएँ आईं
1 टिप्पणियां
Hacker News की टिप्पणियां
प्रोजेक्ट पर एक वीडियो वाला ब्लॉग पोस्ट भी लिखा है: https://erikschluntz.com/software/2023/08/26/compressing-my-...
यह उन दुर्लभ side projects में से था जिसने लगाए गए समय से ज्यादा समय सच में बचाया :)
आइडिया बहुत चतुर है, लेकिन अगर यह समय के साथ बदलता रहे तो शायद मैं इसे इस्तेमाल नहीं करना चाहूंगा
मसलन, अगर इसे हर 6 महीने में चलाया और पिछले साल
dbका मतलबdebugथा लेकिन इस साल वहdatabaseहो गया, तो यह muscle memory और आदतों को बिगाड़ सकता हैइसलिए मुझे एक general-purpose version में ज्यादा दिलचस्पी है, जिसे अलग-अलग पृष्ठभूमि और संदर्भों के हजारों लोगों की किताबों, ईमेल और टेक्स्ट पर चलाने पर सभी के लिए भरोसेमंद तरीके से मदद मिले
tकोtheमें,stकोsomethingमें expand करना तो स्वाभाविक लगता है, लेकिन सोचता हूं कि क्या 200~500 के आसपास का कोई न्यूनतम सेट बनाकर उसे एक “standard keyboard” बनाया जा सकता है जिसे सभी सीख सकेंhttps://archive.org/details/evansbasicenglis00evan
PDF इस्तेमाल करना बेहतर है; TXT फाइल का OCR quality खराब है, इसलिए वह लगभग इस्तेमाल लायक नहीं है
यह भी उपयोगी है: https://en.m.wikipedia.org/wiki/Most_common_words_in_English
suggested_shortcuts.yamloutput करता है, और वहां सेshortcuts.yamlमें copy करके डालने का तरीका है, इसलिए वास्तव में activate होने वाले shortcuts को आप manually control कर सकते हैं :)और जाहिर है
the -> tलिस्ट में सबसे ऊपर है: https://jonaquino.blogspot.com/2007/06/yublin-shorthand-for-...कोई chemist
dropperअक्सर टाइप करता हो तोdpचाह सकता है, लेकिन कोई bureaucrat शायदdepartmentको ज्यादा पसंद करेअगर आप Chinese native speaker नहीं हैं तो शायद न जानते हों, लेकिन चीनी में ऐसा feature built-in है
आधिकारिक तौर पर इसे 双拼(Shuangpin) कहा जाता है, और इसमें हर शब्द के लिए 2 English letters डालकर पूरा शब्द input किया जाता है: https://zh.wikipedia.org/zh-sg/%E5%8F%8C%E6%8B%BC
Shuangpin को formal तरीके से इस्तेमाल न करें तब भी ज्यादातर Chinese input methods लोकप्रिय phrases के लिए इसी तरह का 简拼 feature support करते हैं, जिससे हर शब्द का सिर्फ पहला English letter डालकर कई शब्दों वाला phrase input किया जा सकता है
उदाहरण के लिए Chinese में “thank you” यानी
xiexieinput करना हो, तो आम तौर पर सिर्फxxटाइप करने पर ज्यादातर Chinese input methods अपने-आप संबंधित Chinese characters suggest कर देते हैंउदाहरण के लिए “what do you want to eat” यानी 「你想吃什麼」 को
n x c s mसे input किया जाता हैXLBसेXiao long baoलिखना भी क्या इसी का उदाहरण है। नहीं पता था कि यह कोई ज्यादा व्यापक system है, बढ़िया हैऐसे projects देखना वाकई अच्छा लगता है
weekend में मैंने मिलती-जुलती समस्या पर काम किया था, लेकिन खुद बनाए dictionary के abbreviations के बजाय पूरे शब्दों पर, और सामान्य case में उसे दिए गए text corpus के हिसाब से tune करने का तरीका था
सवाल यह था कि “क्या दिए गए text corpus के मुताबिक tune किया गया autocorrector बनाया जा सकता है?” मसलन, अगर document में
data augmentationजैसी लंबी expression बहुत आती है, तो देखना था कि क्या इसे automate किया जा सकता हैapproach यह था कि generic dataset यानी NYT corpus में single words और 2-grams की surprisal calculate की जाए, tuning target index में मौजूद शब्दों पर weight जोड़ा जाए, फिर surprisal से weighted trie data structure बनाकर advanced autocomplete की तरह इस्तेमाल किया जाए
काम करने वाला solution यहां है: https://github.com/capjamesg/autowrite/blob/main/autocomplet...
अभी documentation नहीं है और कुछ दिनों में add करूंगा; बात करना चाहें तो GitHub Issue छोड़ सकते हैं
हो सकता है मैं भ्रमित हूं कि क्या मकसद उसी expression को ज्यादा creative तरीके से कहने का तरीका ढूंढना है
विस्तार के आइडिया के तौर पर, इनपुट पर नज़र रखने वाला keylogger जोड़ा जा सकता है। बेशक, यह अपने-आप में एक कमी भी है
तरीका यह होगा कि यूज़र के अक्सर इस्तेमाल होने वाले वाक्यांश सीखे जाएँ, आम वाक्यांशों को ढूँढकर shortcuts सुझाए जाएँ, और फिर जब भी यूज़र पूरा वाक्यांश टाइप करे तो shortcut को सहज तरीके से बता दिया जाए
तब इसे कोई भी install कर सकेगा, entry barrier भी कम रहेगा, और समय के साथ productivity धीरे-धीरे बढ़ सकती है
विचार यह था कि डेटा device के अंदर secure storage में रखा जाए ताकि यह security risk न बने
desktop पर phone जैसा English autocomplete देने वाला input method, या
fcitx5जैसे input method framework से shortcuts देने वाला input method, एक दिलचस्प concept लग सकता हैक्या यह हर हफ्ते Slack history को automatically export करके word frequency निकालेगा, और फिर दिखने वाले results के आधार पर manually कई expansions set करने जैसा होगा?
structure यह था कि
Bluetooth Keyboard -> ESP32को keyboard host की तरह इस्तेमाल किया जाए, और key inputs को USB और file में भेजा जाएपैसे हों तो ऐसे USB/PS2 keyboard loggers भी हैं जो data को disk पर store करते हैं
अगर चीज़ों को उस दिशा में converge कराया जाए, तो कई computers के बीच consistency में भी मदद मिलेगी, और कई computers इस्तेमाल करने वालों के लिए भी अच्छा होगा
मुझे लगता है कि कुछ chat situations को छोड़कर typing मेरे लिए शायद ही कभी bottleneck रही है
बल्कि ऐसे interactions रहे हैं जहाँ video या voice की extra bandwidth मददगार होती। मुझे यह जानने की उत्सुकता है कि ऐसे shortcuts सच में काम के समय की बचत में बदलते हैं या नहीं
उदाहरण के लिए “क्या आप screenshot upload कर सकते हैं?” जैसी बातचीत, या Calendly link भेजने जैसे responses
लंबा लिखते समय भी अक्सर यह खीझ होती है कि विचार typing से तेज़ चलते हैं, इसलिए उस हिस्से में भी मदद मिलती है
typing एक manual काम है जो सोचने में बाधा डालता है, इसलिए typing में जाने और उससे बाहर आने में लगने वाला समय जितना घटेगा, उतनी जल्दी आप वापस सोचने पर लौट सकते हैं
मैंने अपने इस्तेमाल के लिए text expansion बनाने में काफ़ी समय लगाया
यह उम्मीद से कहीं ज़्यादा कठिन था, और ऐसे aliases ढूँढना मुश्किल है जो बहुत बार गलत trigger न हों और फिर भी पर्याप्त value दें
रोज़ कई भाषाओं में communicate करने से यह और जटिल हो गया, इसलिए अब मैंने aliases को application के हिसाब से अलग कर दिया है
फिर भी misfires बचे हुए हैं, और कुल मिलाकर मैं इस निष्कर्ष के करीब हूँ कि delimiter की ज़रूरत होती है
kk,zz,qqजैसे character combinations लगाता हूँ जो किसी word या variable name के पहले अक्षरों के रूप में आम तौर पर नहीं आतेउदाहरण के लिए
qqmeमेरा email signature हैअच्छा होगा अगर original post का tool README में मैंने जो देखा उससे लंबे phrases के लिए भी aliases suggest करे। सुना है कि MacOS के लिए TextExpander ऐसा करता है, लेकिन मैं Mac user नहीं हूँ
TODO में से एक यह भी है कि analyze किए गए real text corpus का उपयोग करके उन aliases की block list भी बनाई जाए जिनसे बचना चाहिए
निजी तौर पर कहूँ तो, iPhone से पहले के phones में इस्तेमाल होने वाली SMS-style abbreviations मुझे कभी पसंद नहीं थीं
यह उन कारणों में से एक था कि बहुत ज़रूरी न हो तो मैं SMS या text messages शायद ही इस्तेमाल करता था
iOS और macOS पर चलने वाले TextExpander के शुरुआती दिनों से ही मैं text expansion इस्तेमाल कर रहा हूँ, और iPhone keyboard कितना भी अच्छा हो, घर का पता, घर/office maps, work और personal information जैसी चीज़ों को बार-बार type करना असुविधाजनक था। TextExpander ने बहुत मदद की
बाद में TextExpander subscription model पर चला गया तो मैंने alternatives ढूँढने शुरू किए, क्योंकि निजी तौर पर मुझे ऐसे tools के लिए subscription model ठीक नहीं लगा। Alfred के Powerpack में शामिल Snippets बेहतर alternative था
macOS/iOS में built-in “Text Replacements” भी हैं, लेकिन Apple apps के अलावा जगहों पर वे अक्सर fail हो जाते हैं। यहाँ वाली चीज़ Apple के Text Replacement जैसी है, और मैं उस feature को रहने देता हूँ लेकिन बाकी Alfred से manage करता हूँ। सच कहूँ तो अगर मैं Alfred से पूरी तरह मुक्त हो सकूँ, तो शायद इस तरफ़ migrate कर सकता हूँ
हालांकि मैं expansions के लिए delimiter इस्तेमाल करना चाहूँगा ताकि वे normal typing में बाधा न डालें। अभी मैं
,को delimiter की तरह इस्तेमाल करता हूँ, क्योंकि English में comma के बाद हमेशा space आता है, और मेरे expansions तभी होते हैं जब बिना space के comma और short text type किया जाए। Touch typing करते समय comma key की position भी सुविधाजनक हैभले ही मैं OS के Text Replacement में रहूँ, unintended situations में words के auto-expand होने से बचने के लिए शायद delimiter introduce करूँगा
https://textexpander.com
https://www.alfredapp.com
सबसे बारीक exception handling
.pyहै। आम तौर पर.delimiter है, लेकिनpyसे पहले इसे exception रखा ताकि Python filenames type करते समय यह बाधा न बनेवर्षों के autocomplete की वजह से मेरी दूसरी भाषा English proficiency पहले ही खराब हो गई है
अक्सर ऐसा होता है कि word पता है लेकिन spelling याद नहीं रहती, इसलिए pronunciation भूल जाता हूँ, और लगता है कि ऐसे tools बची-खुची proficiency भी पूरी तरह खत्म कर देंगे
keywords याद रखने के बजाय पहले अक्षर लिखना काम नहीं करेगा क्या, ऐसा लगा
कुछ हफ्ते पहले ChatGPT के साथ experiment किया था, लेकिन ऐसी functionality वाला कोई मौजूदा software नहीं दिखा
programming में बहुत अच्छा नहीं हूं, लेकिन अच्छा होगा अगर कोई इसे बना दे: https://imgur.com/a/0o4zLwT
accuracy काफी ठीक है, लेकिन जब गलत निकलता है तो बहुत झुंझलाहट होती है
पूरी तरह काम करे तब भी, असल में इस्तेमाल करने पर सामान्य typing की तुलना में cognitive load कहीं ज्यादा था
बहुत focus करने पर abbreviations का इस्तेमाल करते हुए अपनी आम आरामदायक typing speed के आसपास पहुंच सकता था, लेकिन उससे आगे नहीं जा पाया, और आखिर में naturally वापस normal typing पर लौट आया
हालांकि मैं तेज typing करता हूं और काफी लिखता हूं, इसलिए यह prototype करीब 30 साल से बहुत optimize हो चुकी मेरे दिमाग की process को मात देने की कोशिश कर रहा था। जो लोग पहले से fast typist नहीं हैं, उनके लिए शायद यह ज्यादा fit हो सकता है