2 คะแนน โดย GN⁺ 2023-08-31 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • เครื่องมือที่สร้างคำย่อสำหรับการพิมพ์โดยอัตโนมัติจากคลังข้อความงานเขียนของคุณเอง และสร้าง ทางลัดการป้อนข้อความ สำหรับใช้ในอีเมลและ 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 และปัจจุบันทดสอบบน Python 3.10.12
  • Autokey ปัจจุบันรองรับเฉพาะ X11 บน Linux และไม่รองรับ Wayland
  • การตั้งค่า Autokey ที่สร้างขึ้นถูกกำหนดให้มีผลเฉพาะเมื่อ Chrome อยู่ในโฟกัส และมีประสบการณ์ใช้งานระบุว่าใน terminal และ vscode มีปัญหามากกว่า เพราะคำสั่ง Linux สั้น ๆ หรือชื่อตัวแปรไปซ้ำกับคำย่อ

1 ความคิดเห็น

 
GN⁺ 2023-08-31
ความคิดเห็นบน 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 รายการให้ทุกคนเรียนรู้ได้ แล้วทำให้เป็น “คีย์บอร์ดมาตรฐาน” ได้ไหม

    • Evans Basic English Code น่าลองดู เป็น ระบบชวเลข ที่อิงจาก Phillips Code สำหรับโทรเลข และแม้จะเก่าไปหน่อย แต่คำที่พบบ่อยที่สุดก็ค่อนข้างมีประโยชน์สำหรับการเขียนหรือการพิมพ์
      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 ที่จะเปิดใช้งานจริงได้เองแบบแมนนวล :)
    • เวอร์ชันทั่วไปแบบนี้สุดท้ายก็คล้ายกับ คีย์บอร์ดชวเลข ไม่ใช่หรือ
    • ก่อนหน้านี้เคยเจอ Yublin ซึ่งเป็นความพยายามแบบนั้นพอดี คือสร้างตัวย่อ 1~3 ตัวอักษรสำหรับคำที่พบบ่อยที่สุด 600 คำในภาษาอังกฤษ
      และแน่นอนว่า 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 m
    • เพิ่งฟังพอดแคสต์ที่น่าสนใจเกี่ยวกับวิธีพิมพ์ภาษาจีนด้วยคีย์บอร์ดมาตรฐาน: https://radiolab.org/podcast/wubi-effect
    • สงสัยว่าการใช้ XLB เพื่อเขียน Xiao long bao ก็เป็นตัวอย่างของสิ่งนี้หรือเปล่า ไม่รู้มาก่อนว่ามีระบบที่กว้างกว่านั้น เจ๋งดี
    • อันนี้ดูไม่เกี่ยวอะไรกับหัวข้อที่กำลังคุยกันอยู่เลย
  • ชอบมากที่ได้เห็นโปรเจกต์แบบนี้
    ช่วงสุดสัปดาห์ผมก็จัดการปัญหาคล้าย ๆ กัน แต่ทำกับ ทั้งคำ ไม่ใช่ตัวย่อจากพจนานุกรมที่สร้างเอง และในกรณีทั่วไปเป็นการปรับให้เข้ากับคลังข้อความที่กำหนด
    สิ่งที่ผมสงสัยคือ “จะสร้างตัวแก้คำอัตโนมัติที่ปรับตามคลังข้อความที่กำหนดได้ไหม?” เช่น ในเอกสารมีการใช้วลียาว ๆ อย่าง data augmentation บ่อยมาก เลยอยากดูว่าจะทำให้เป็นอัตโนมัติได้หรือไม่
    แนวทางคือคำนวณ surprisal ของคำเดี่ยวและ 2-gram จากชุดข้อมูลทั่วไปอย่างคลังข้อความ NYT จากนั้นเพิ่มน้ำหนักให้คำที่อยู่ในดัชนีเป้าหมายสำหรับการปรับแต่ง แล้วสร้างโครงสร้างข้อมูล trie ที่ถ่วงน้ำหนักด้วย surprisal เพื่อใช้เป็น autocomplete ขั้นสูง
    โซลูชันที่ใช้งานได้อยู่ที่นี่: https://github.com/capjamesg/autowrite/blob/main/autocomplet...
    ตอนนี้ยังไม่มีเอกสาร และจะเพิ่มในอีกไม่กี่วัน ถ้าอยากคุยก็ฝาก GitHub Issue ไว้ได้

    • ฟังดูค่อนข้างคล้ายกับ https://github.com/wolfgarbe/SymSpell
      หรืออาจเป็นผมที่สับสนเองว่าคุณกำลังหาวิธีพูดสำนวนเดียวกันให้สร้างสรรค์ขึ้นหรือเปล่า
  • ในฐานะแนวคิดต่อยอด อาจเพิ่ม คีย์ล็อกเกอร์ ที่คอยสังเกตการพิมพ์ได้ แน่นอนว่านั่นเองก็เป็นข้อเสียอยู่แล้ว
    วิธีคือเรียนรู้วลีที่ผู้ใช้ใช้บ่อย หา phrase ที่พบบ่อยแล้วเสนอคำย่อ จากนั้นค่อย ๆ แจ้งคำย่อให้ผู้ใช้ทราบอย่างเป็นธรรมชาติทุกครั้งที่ผู้ใช้พิมพ์วลีเต็ม
    แบบนั้นใคร ๆ ก็ติดตั้งได้ มีอุปสรรคในการเริ่มใช้งานต่ำ และเมื่อเวลาผ่านไปประสิทธิภาพการทำงานก็จะค่อย ๆ เพิ่มขึ้นได้

    • เคยอยากทำ คีย์บอร์ดที่มีคีย์ล็อกเกอร์ในตัว ซึ่งกดปุ่มพิเศษแล้วจะเติมคำอัตโนมัติให้
      แนวคิดคือเก็บข้อมูลไว้ในพื้นที่จัดเก็บที่ปลอดภัยภายในอุปกรณ์ เพื่อไม่ให้กลายเป็นความเสี่ยงด้านความปลอดภัย
    • บางส่วนสามารถทำเป็น ตัวป้อนข้อมูล (IME) ได้ จริง ๆ แล้วตัวป้อนข้อมูลก็คือคีย์ล็อกเกอร์ที่ได้รับอนุญาตให้แก้ไขอินพุตได้ และส่วนใหญ่จำเป็นสำหรับการพิมพ์ภาษาจีน/ญี่ปุ่น
      ตัวป้อนข้อมูลที่ให้การเติมคำอัตโนมัติภาษาอังกฤษบนเดสก์ท็อปเหมือนบนมือถือ หรือให้คำย่อผ่านเฟรมเวิร์กตัวป้อนข้อมูลอย่าง fcitx5 น่าจะเป็นแนวคิดที่น่าสนใจ
    • สงสัยว่าจะทำงานอย่างไร
      อาจเป็นการ export ประวัติ Slack อัตโนมัติทุกสัปดาห์ คำนวณความถี่ของคำ แล้วกำหนด expansion หลายรายการด้วยตนเองจากผลลัพธ์ที่เห็นหรือเปล่า?
    • เคยขุดลึกเพื่อจะทำอะไรคล้าย ๆ กันเป็นโปรโตไทป์
      โครงสร้างคือใช้ Bluetooth Keyboard -> ESP32 เป็นโฮสต์คีย์บอร์ด แล้วส่งคีย์ที่กดไปยัง USB และไฟล์
      ถ้ามีเงิน ก็มี USB/PS2 keyboard logger ที่บันทึกข้อมูลลงดิสก์ด้วย
    • รู้สึกว่าถ้ามีตัวย่อที่เป็นมาตรฐานน่าจะดีกว่าไหม
      ถ้าทำให้ทุกอย่างบรรจบไปทางนั้นได้ ก็จะช่วยให้สอดคล้องกันระหว่างคอมพิวเตอร์หลายเครื่อง และดีสำหรับกรณีที่ใช้คอมพิวเตอร์หลายเครื่องด้วย
  • สำหรับผม ดูเหมือนว่าการพิมพ์แทบไม่เคยเป็นคอขวดเลย ยกเว้นในบางสถานการณ์ของแชต
    กลับมีแค่บางปฏิสัมพันธ์ที่แบนด์วิดท์เพิ่มเติมจากวิดีโอหรือเสียงจะช่วยได้มากกว่า สงสัยว่าคำย่อแบบนี้จะนำไปสู่การประหยัดเวลาทำงานจริงหรือไม่

    • แรงจูงใจหลักคือ บทสนทนาใน Slack ที่เร็วมาก และการตอบอีเมลที่ค่อนข้างเป็นทางการ
      เช่น บทสนทนาอย่าง “ช่วยอัปโหลดสกรีนช็อตให้ได้ไหม?” หรือการตอบกลับด้วยการส่งลิงก์ Calendly
      แม้ตอนเขียนข้อความยาว ๆ ก็มักหงุดหงิดที่ความคิดเร็วกว่าแรงพิมพ์ ดังนั้นส่วนนี้ก็ช่วยได้เช่นกัน
    • การประหยัดเวลาก็เป็นด้านหนึ่ง แต่ยังอาจมีประโยชน์กับคนที่มี อาการบาดเจ็บจากการใช้งานซ้ำ ๆ หรือกลุ่มอาการอุโมงค์ข้อมือด้วย
    • การพิมพ์ให้เร็วขึ้นไม่ใช่ปัญหาเรื่องการลดเวลารวมเท่าไรนัก แต่เป็นการลด ความหน่วงระหว่างความคิด
      การพิมพ์เป็นงานใช้มือที่รบกวนการคิด ดังนั้นยิ่งลดเวลาที่ต้องเข้าออกจากการพิมพ์ได้มากเท่าไร ก็ยิ่งกลับไปคิดต่อได้เร็วขึ้นเท่านั้น
    • สงสัยว่าความสามารถในการพิมพ์สัมผัสก็มีผลด้วยหรือเปล่า
  • ใช้เวลาค่อนข้างมากเพื่อทำ text expansion ไว้ใช้เอง
    มันยากกว่าที่คิดมาก และหานามแฝงที่มีคุณค่าพอโดยไม่ทำงานผิดพลาดบ่อยเกินไปได้ยาก
    ยิ่งซับซ้อนขึ้นเพราะสื่อสารหลายภาษาทุกวัน ตอนนี้จึงแยกนามแฝงตามแอปพลิเคชัน
    ถึงอย่างนั้นก็ยังมีการทำงานผิดพลาดอยู่ และโดยรวมแล้วเริ่มสรุปว่าอาจต้องมีตัวคั่น

    • Ikclaks กำลังทำงานที่น่าสนใจบนเลย์เอาต์คีย์บอร์ด magic sturdy: https://github.com/Ikcelaks/keyboard_layouts/blob/main/magic...
    • ใส่ชุดตัวอักษรที่ไม่ค่อยโผล่มาเป็นตัวแรกของคำหรือชื่อตัวแปร เช่น kk, zz, qq ไว้หน้าชื่อนามแฝง
      เช่น qqme คือ signature อีเมลของผม
      ถ้าเครื่องมือในต้นฉบับช่วยเสนอ alias สำหรับวลีที่ยาวกว่าที่เห็นใน README ได้ก็คงดี ได้ยินว่า TextExpander สำหรับ MacOS ทำแบบนั้น แต่ผมไม่ใช่ผู้ใช้ Mac
    • จุดประนีประนอมที่เหมาะสมอาจเป็นการใช้ตัวย่อเฉพาะกับคำที่พบบ่อยที่สุด และที่เหลือให้ค้นหาแบบ fuzzy search ในป๊อปอัป GUI ง่าย ๆ แล้ววางลงไป
    • ถ้าใช้หลายภาษา คำลัดที่ใช้ได้คงน้อยลงมาก
      หนึ่งใน 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

    • ใช้เวลาค่อนข้างมากในการปรับ การจัดการตัวคั่น ในการตั้งค่า Autokey ที่สร้างขึ้น
      การจัดการข้อยกเว้นที่ละเอียดที่สุดคือ .py โดยทั่วไป . เป็นตัวคั่น แต่ทำให้เป็นข้อยกเว้นเมื่ออยู่หน้า py เพื่อไม่ให้รบกวนเวลาพิมพ์ชื่อไฟล์ Python
  • เพราะการเติมคำอัตโนมัติมาหลายปี ทักษะภาษาอังกฤษ ซึ่งเป็นภาษาที่สองของผมแย่ลงไปแล้ว
    ผมรู้คำศัพท์ แต่จำตัวสะกดไม่ได้จนลืมการออกเสียงบ่อยขึ้น และเครื่องมือแบบนี้เหมือนจะทำลายทักษะที่เหลืออยู่ให้หมดไปเลย

  • แทนที่จะจำคีย์เวิร์ด ผมคิดว่าน่าจะใช้แค่ ตัวอักษรตัวแรก ๆ ได้ไหม
    เมื่อไม่กี่สัปดาห์ก่อนลองทดลองด้วย ChatGPT แล้ว แต่ดูเหมือนจะยังไม่มีซอฟต์แวร์เดิมที่มีฟีเจอร์แบบนี้
    ผมเขียนโปรแกรมไม่ค่อยเก่ง แต่ถ้ามีใครทำให้ก็คงดี: https://imgur.com/a/0o4zLwT

    • ผมทำโปรโตไทป์ที่มีแนวคิดคล้ายกันนี้ขึ้นมาแล้ว คือให้พิมพ์ย่อได้ตามใจ แล้ว ChatGPT จะช่วยแก้ให้หลังแต่ละประโยค
      ความแม่นยำค่อนข้างดี แต่เวลามันเดาผิดก็น่าหงุดหงิดมาก
      แม้จะทำงานได้สมบูรณ์แบบ พอลองใช้จริงแล้วก็พบว่า ภาระทางความคิด สูงกว่าการพิมพ์ตามปกติมาก
      ถ้าตั้งใจมาก ๆ ก็พอจะใช้ตัวย่อแล้วทำความเร็วได้ประมาณเท่ากับความเร็วพิมพ์สบาย ๆ ตามปกติ แต่ก็ไม่เกินกว่านั้น และสุดท้ายก็กลับไปพิมพ์แบบปกติโดยธรรมชาติ
      อย่างไรก็ตาม ผมพิมพ์เร็วและเขียนเยอะอยู่แล้ว ดังนั้นโปรโตไทป์นี้เหมือนกำลังพยายามเอาชนะกระบวนการในสมองที่ถูกปรับแต่งมาอย่างเข้มข้นราว 30 ปี สำหรับคนที่ไม่ได้พิมพ์เร็วอยู่เดิม อาจจะเหมาะกว่า