Compress - ทำให้ 1/2 ของการพิมพ์ของผมเป็นอัตโนมัติ
(github.com/eschluntz)- เครื่องมือที่สร้างคำย่อสำหรับการพิมพ์โดยอัตโนมัติจากคลังข้อความงานเขียนของคุณเอง และสร้าง ทางลัดการป้อนข้อความ สำหรับใช้ในอีเมลและ Slack
- พาร์สคลังข้อความเพื่อเสนอคำย่อที่ช่วยประหยัดจำนวนตัวอักษรได้มากที่สุดขณะพิมพ์ และสร้างไฟล์ตั้งค่าสำหรับ Autokey ซึ่งเป็นโปรแกรมคีย์บอร์ดชอร์ตคัตบน Linux
- ค้นหา n-gram ที่ปรากฏบ่อยในคลังข้อความเพื่อสร้างตัวเลือกสำหรับแทนที่ด้วยนิพจน์ที่สั้นกว่า และคำนวณอันดับคำแนะนำด้วย
[จำนวนตัวอักษรที่ประหยัดได้] * [ความถี่ของวลี] - การเลือกคำย่อมีเป้าหมายให้เป็นคำย่อที่จำง่าย โดยยกเว้นคำย่อที่อยากพิมพ์เป็นคำปกติด้วย blacklist และจัดสรรคำย่อที่จำง่ายกว่าให้กับวลีที่ใช้บ่อยกว่าก่อน
- มีเครื่องมือพาร์ส Slack Data Export สำหรับใช้ข้อความ Slack เป็นคลังข้อความด้วย
- เฉพาะผู้ดูแลระบบ Slack workspace เท่านั้นที่ export ได้
- export ได้เฉพาะ public channel
- ต้องเปลี่ยน
USERNAME_TO_EXPORTเป็นชื่อผู้ใช้ Slack แล้วรันparse_slack.py - ขั้นตอนสำหรับ Slack export รวมถึงให้ลบด้วย
srm
- โฟลว์การใช้งานพื้นฐานคือใส่คลังข้อความไว้ใน
data/corpus/*.txtจากนั้นใช้find_suggested_phrases.pyสร้างตัวเลือก 200 อันดับแรกไว้ในoutput/suggested_shortcuts.yamlแล้วคัดลอกรายการที่ต้องการไปยังshortcuts.yamlและใช้generate_autokeys.pyสร้างไฟล์ตั้งค่า Autokey - ติดตั้ง dependencies ด้วย
install.shและปัจจุบันทดสอบบน Python3.10.12 - Autokey ปัจจุบันรองรับเฉพาะ X11 บน Linux และไม่รองรับ Wayland
- การตั้งค่า Autokey ที่สร้างขึ้นถูกกำหนดให้มีผลเฉพาะเมื่อ Chrome อยู่ในโฟกัส และมีประสบการณ์ใช้งานระบุว่าใน terminal และ vscode มีปัญหามากกว่า เพราะคำสั่ง Linux สั้น ๆ หรือชื่อตัวแปรไปซ้ำกับคำย่อ
1 ความคิดเห็น
ความคิดเห็นบน Hacker News
ผมเขียนบล็อกโพสต์ที่มีวิดีโอเกี่ยวกับโปรเจกต์นี้ไว้ด้วย: https://erikschluntz.com/software/2023/08/26/compressing-my-...
เป็น side project ที่พบได้ไม่บ่อย ซึ่งช่วยประหยัดเวลาได้จริงมากกว่าเวลาที่ลงแรงไป :)
ไอเดียฉลาดมาก แต่ถ้ามันเปลี่ยนวิธีทำงานไปเรื่อย ๆ ตามเวลา ผมคงไม่อยากใช้
เช่น ถ้ารันทุก 6 เดือน แล้วปีที่แล้ว
dbคือdebugแต่ปีนี้กลายเป็นdatabaseก็อาจทำลาย muscle memory และนิสัยการพิมพ์ได้ดังนั้นผมจึงสนใจ เวอร์ชันทั่วไป ที่เมื่อนำไปรันกับหนังสือ อีเมล และข้อความที่เขียนโดยคนหลายพันคนจากพื้นเพและบริบทหลากหลายแล้ว ยังช่วยทุกคนได้อย่างเสถียรมากกว่า
การขยาย
tเป็นtheและstเป็นsomethingดูเป็นเรื่องชัดเจนอยู่แล้ว แต่สงสัยว่าจะสร้างชุดขั้นต่ำสัก 200~500 รายการให้ทุกคนเรียนรู้ได้ แล้วทำให้เป็น “คีย์บอร์ดมาตรฐาน” ได้ไหมhttps://archive.org/details/evansbasicenglis00evan
แนะนำให้ใช้ PDF ส่วนไฟล์ TXT คุณภาพ OCR แย่มากจนแทบใช้ไม่ได้
อันนี้ก็มีประโยชน์: https://en.m.wikipedia.org/wiki/Most_common_words_in_English
suggested_shortcuts.yamlแล้วให้คัดลอกจากตรงนั้นไปใส่shortcuts.yamlดังนั้นสามารถควบคุม shortcut ที่จะเปิดใช้งานจริงได้เองแบบแมนนวล :)และแน่นอนว่า
the -> tอยู่บนสุดของรายการ: https://jonaquino.blogspot.com/2007/06/yublin-shorthand-for-...นักเคมีอาจพิมพ์
dropperบ่อยจนอยากให้dpหมายถึงคำนั้น แต่ข้าราชการอาจชอบdepartmentมากกว่าถ้าไม่ใช่เจ้าของภาษาจีน อาจไม่รู้ว่าในภาษาจีนมีฟีเจอร์แบบนี้ ในตัว อยู่แล้ว
ชื่อทางการคือ 双拼(Shuangpin) เป็นวิธีที่พิมพ์ตัวอักษรอังกฤษ 2 ตัวต่อคำเพื่อป้อนทั้งคำ: https://zh.wikipedia.org/zh-sg/%E5%8F%8C%E6%8B%BC
แม้จะไม่ได้ใช้ Shuangpin อย่างเป็นทางการ IME ภาษาจีนส่วนใหญ่ก็รองรับฟีเจอร์ 简拼 ที่คล้ายกันสำหรับวลียอดนิยม โดยพิมพ์แค่ตัวอักษรอังกฤษตัวแรกของแต่ละคำเพื่อป้อนวลีหลายคำได้
เช่น ถ้าจะพิมพ์
xiexieซึ่งแปลว่า “thank you” ในภาษาจีน ปกติพิมพ์แค่xxแล้ว IME ภาษาจีนส่วนใหญ่ก็จะเสนออักษรจีนที่ตรงกันให้อัตโนมัติเช่น 「你想吃什麼」 ซึ่งแปลว่า “what do you want to eat” พิมพ์เป็น
n x c s mXLBเพื่อเขียนXiao long baoก็เป็นตัวอย่างของสิ่งนี้หรือเปล่า ไม่รู้มาก่อนว่ามีระบบที่กว้างกว่านั้น เจ๋งดีชอบมากที่ได้เห็นโปรเจกต์แบบนี้
ช่วงสุดสัปดาห์ผมก็จัดการปัญหาคล้าย ๆ กัน แต่ทำกับ ทั้งคำ ไม่ใช่ตัวย่อจากพจนานุกรมที่สร้างเอง และในกรณีทั่วไปเป็นการปรับให้เข้ากับคลังข้อความที่กำหนด
สิ่งที่ผมสงสัยคือ “จะสร้างตัวแก้คำอัตโนมัติที่ปรับตามคลังข้อความที่กำหนดได้ไหม?” เช่น ในเอกสารมีการใช้วลียาว ๆ อย่าง
data augmentationบ่อยมาก เลยอยากดูว่าจะทำให้เป็นอัตโนมัติได้หรือไม่แนวทางคือคำนวณ surprisal ของคำเดี่ยวและ 2-gram จากชุดข้อมูลทั่วไปอย่างคลังข้อความ NYT จากนั้นเพิ่มน้ำหนักให้คำที่อยู่ในดัชนีเป้าหมายสำหรับการปรับแต่ง แล้วสร้างโครงสร้างข้อมูล trie ที่ถ่วงน้ำหนักด้วย surprisal เพื่อใช้เป็น autocomplete ขั้นสูง
โซลูชันที่ใช้งานได้อยู่ที่นี่: https://github.com/capjamesg/autowrite/blob/main/autocomplet...
ตอนนี้ยังไม่มีเอกสาร และจะเพิ่มในอีกไม่กี่วัน ถ้าอยากคุยก็ฝาก GitHub Issue ไว้ได้
หรืออาจเป็นผมที่สับสนเองว่าคุณกำลังหาวิธีพูดสำนวนเดียวกันให้สร้างสรรค์ขึ้นหรือเปล่า
ในฐานะแนวคิดต่อยอด อาจเพิ่ม คีย์ล็อกเกอร์ ที่คอยสังเกตการพิมพ์ได้ แน่นอนว่านั่นเองก็เป็นข้อเสียอยู่แล้ว
วิธีคือเรียนรู้วลีที่ผู้ใช้ใช้บ่อย หา phrase ที่พบบ่อยแล้วเสนอคำย่อ จากนั้นค่อย ๆ แจ้งคำย่อให้ผู้ใช้ทราบอย่างเป็นธรรมชาติทุกครั้งที่ผู้ใช้พิมพ์วลีเต็ม
แบบนั้นใคร ๆ ก็ติดตั้งได้ มีอุปสรรคในการเริ่มใช้งานต่ำ และเมื่อเวลาผ่านไปประสิทธิภาพการทำงานก็จะค่อย ๆ เพิ่มขึ้นได้
แนวคิดคือเก็บข้อมูลไว้ในพื้นที่จัดเก็บที่ปลอดภัยภายในอุปกรณ์ เพื่อไม่ให้กลายเป็นความเสี่ยงด้านความปลอดภัย
ตัวป้อนข้อมูลที่ให้การเติมคำอัตโนมัติภาษาอังกฤษบนเดสก์ท็อปเหมือนบนมือถือ หรือให้คำย่อผ่านเฟรมเวิร์กตัวป้อนข้อมูลอย่าง
fcitx5น่าจะเป็นแนวคิดที่น่าสนใจอาจเป็นการ export ประวัติ Slack อัตโนมัติทุกสัปดาห์ คำนวณความถี่ของคำ แล้วกำหนด expansion หลายรายการด้วยตนเองจากผลลัพธ์ที่เห็นหรือเปล่า?
โครงสร้างคือใช้
Bluetooth Keyboard -> ESP32เป็นโฮสต์คีย์บอร์ด แล้วส่งคีย์ที่กดไปยัง USB และไฟล์ถ้ามีเงิน ก็มี USB/PS2 keyboard logger ที่บันทึกข้อมูลลงดิสก์ด้วย
ถ้าทำให้ทุกอย่างบรรจบไปทางนั้นได้ ก็จะช่วยให้สอดคล้องกันระหว่างคอมพิวเตอร์หลายเครื่อง และดีสำหรับกรณีที่ใช้คอมพิวเตอร์หลายเครื่องด้วย
สำหรับผม ดูเหมือนว่าการพิมพ์แทบไม่เคยเป็นคอขวดเลย ยกเว้นในบางสถานการณ์ของแชต
กลับมีแค่บางปฏิสัมพันธ์ที่แบนด์วิดท์เพิ่มเติมจากวิดีโอหรือเสียงจะช่วยได้มากกว่า สงสัยว่าคำย่อแบบนี้จะนำไปสู่การประหยัดเวลาทำงานจริงหรือไม่
เช่น บทสนทนาอย่าง “ช่วยอัปโหลดสกรีนช็อตให้ได้ไหม?” หรือการตอบกลับด้วยการส่งลิงก์ Calendly
แม้ตอนเขียนข้อความยาว ๆ ก็มักหงุดหงิดที่ความคิดเร็วกว่าแรงพิมพ์ ดังนั้นส่วนนี้ก็ช่วยได้เช่นกัน
การพิมพ์เป็นงานใช้มือที่รบกวนการคิด ดังนั้นยิ่งลดเวลาที่ต้องเข้าออกจากการพิมพ์ได้มากเท่าไร ก็ยิ่งกลับไปคิดต่อได้เร็วขึ้นเท่านั้น
ใช้เวลาค่อนข้างมากเพื่อทำ text expansion ไว้ใช้เอง
มันยากกว่าที่คิดมาก และหานามแฝงที่มีคุณค่าพอโดยไม่ทำงานผิดพลาดบ่อยเกินไปได้ยาก
ยิ่งซับซ้อนขึ้นเพราะสื่อสารหลายภาษาทุกวัน ตอนนี้จึงแยกนามแฝงตามแอปพลิเคชัน
ถึงอย่างนั้นก็ยังมีการทำงานผิดพลาดอยู่ และโดยรวมแล้วเริ่มสรุปว่าอาจต้องมีตัวคั่น
kk,zz,qqไว้หน้าชื่อนามแฝงเช่น
qqmeคือ signature อีเมลของผมถ้าเครื่องมือในต้นฉบับช่วยเสนอ alias สำหรับวลีที่ยาวกว่าที่เห็นใน README ได้ก็คงดี ได้ยินว่า TextExpander สำหรับ MacOS ทำแบบนั้น แต่ผมไม่ใช่ผู้ใช้ Mac
หนึ่งใน TODO คือการใช้คลังข้อความจริงที่วิเคราะห์แล้วเพื่อสร้าง blocklist ของ alias ที่ควรหลีกเลี่ยงด้วย
ถ้าพูดจากประสบการณ์ส่วนตัว ผมไม่เคยชอบ ตัวย่อแบบ SMS ที่ใช้ในโทรศัพท์ก่อนยุค iPhone
นั่นเป็นหนึ่งในเหตุผลที่แทบไม่ใช้ SMS หรือข้อความตัวอักษร เว้นแต่จำเป็นจริง ๆ
ผมใช้ text expansion มาตั้งแต่ช่วงแรก ๆ ของ TextExpander ที่ทำงานบน iOS และ macOS และแม้คีย์บอร์ด iPhone จะดีแค่ไหน การพิมพ์ซ้ำ ๆ อย่างที่อยู่บ้าน แผนที่บ้าน/ที่ทำงาน ข้อมูลเกี่ยวกับงานและข้อมูลส่วนตัวก็ยังไม่สะดวก TextExpander ช่วยได้มาก
ต่อมาเมื่อ TextExpander เปลี่ยนเป็นโมเดล subscription ผมก็เริ่มหาทางเลือกอื่น เพราะโดยส่วนตัวคิดว่าโมเดล subscription ไม่เหมาะกับเครื่องมือประเภทนี้ Snippets ที่รวมอยู่ใน Powerpack ของ Alfred เป็นทางเลือกที่ดีกว่า
macOS/iOS ก็มี “Text Replacements” ในตัว แต่ในที่ที่ไม่ใช่แอปของ Apple มักล้มเหลวบ่อย สิ่งที่อยู่ตรงนี้คล้ายกับ Text Replacement ของ Apple และผมยังเก็บฟีเจอร์นั้นไว้ แต่จัดการส่วนที่เหลือด้วย Alfred พูดตรง ๆ ถ้ามันทำให้ผมหลุดจาก Alfred ได้ทั้งหมด ผมก็อาจย้ายมาทางนี้
อย่างไรก็ตาม ผมอยากใช้ ตัวคั่น กับ expansion เพื่อไม่ให้รบกวนการพิมพ์ทั่วไป ตอนนี้ใช้
,เป็นตัวคั่น เพราะในภาษาอังกฤษหลังเครื่องหมายจุลภาคมักมีช่องว่างเสมอ และ expansion ของผมจะเกิดขึ้นเฉพาะเมื่อพิมพ์จุลภาคกับข้อความสั้น ๆ โดยไม่มีช่องว่างเท่านั้น ตำแหน่งปุ่มจุลภาคก็สะดวกเวลาพิมพ์สัมผัสด้วยแม้จะยังอยู่กับ Text Replacement ของ OS ต่อไป ผมก็น่าจะใส่ตัวคั่นเพื่อกันไม่ให้คำถูกขยายอัตโนมัติในสถานการณ์ที่ไม่ได้ตั้งใจ
https://textexpander.com
https://www.alfredapp.com
การจัดการข้อยกเว้นที่ละเอียดที่สุดคือ
.pyโดยทั่วไป.เป็นตัวคั่น แต่ทำให้เป็นข้อยกเว้นเมื่ออยู่หน้าpyเพื่อไม่ให้รบกวนเวลาพิมพ์ชื่อไฟล์ Pythonเพราะการเติมคำอัตโนมัติมาหลายปี ทักษะภาษาอังกฤษ ซึ่งเป็นภาษาที่สองของผมแย่ลงไปแล้ว
ผมรู้คำศัพท์ แต่จำตัวสะกดไม่ได้จนลืมการออกเสียงบ่อยขึ้น และเครื่องมือแบบนี้เหมือนจะทำลายทักษะที่เหลืออยู่ให้หมดไปเลย
แทนที่จะจำคีย์เวิร์ด ผมคิดว่าน่าจะใช้แค่ ตัวอักษรตัวแรก ๆ ได้ไหม
เมื่อไม่กี่สัปดาห์ก่อนลองทดลองด้วย ChatGPT แล้ว แต่ดูเหมือนจะยังไม่มีซอฟต์แวร์เดิมที่มีฟีเจอร์แบบนี้
ผมเขียนโปรแกรมไม่ค่อยเก่ง แต่ถ้ามีใครทำให้ก็คงดี: https://imgur.com/a/0o4zLwT
ความแม่นยำค่อนข้างดี แต่เวลามันเดาผิดก็น่าหงุดหงิดมาก
แม้จะทำงานได้สมบูรณ์แบบ พอลองใช้จริงแล้วก็พบว่า ภาระทางความคิด สูงกว่าการพิมพ์ตามปกติมาก
ถ้าตั้งใจมาก ๆ ก็พอจะใช้ตัวย่อแล้วทำความเร็วได้ประมาณเท่ากับความเร็วพิมพ์สบาย ๆ ตามปกติ แต่ก็ไม่เกินกว่านั้น และสุดท้ายก็กลับไปพิมพ์แบบปกติโดยธรรมชาติ
อย่างไรก็ตาม ผมพิมพ์เร็วและเขียนเยอะอยู่แล้ว ดังนั้นโปรโตไทป์นี้เหมือนกำลังพยายามเอาชนะกระบวนการในสมองที่ถูกปรับแต่งมาอย่างเข้มข้นราว 30 ปี สำหรับคนที่ไม่ได้พิมพ์เร็วอยู่เดิม อาจจะเหมาะกว่า