2 poin oleh GN⁺ 2023-08-31 | 1 komentar | Bagikan ke WhatsApp
  • Alat yang secara otomatis membuat singkatan pengetikan dari korpus tulisan sendiri, dan menghasilkan shortcut input yang digunakan di email dan Slack
  • Mem-parsing korpus teks untuk menyarankan singkatan yang bisa menghemat karakter paling banyak saat mengetik, lalu membuat file konfigurasi untuk program shortcut keyboard Linux, Autokey
  • Menemukan n-gram yang sering muncul dalam korpus untuk membuat kandidat pengganti dengan ekspresi yang lebih pendek, dan peringkat saran dihitung dengan [jumlah karakter yang dihemat] * [frekuensi frasa]
  • Pemilihan singkatan bertujuan menghasilkan kependekan yang mudah diingat; singkatan yang ingin tetap diketik sebagai kata dikecualikan melalui blacklist, dan frasa yang lebih sering dipakai diprioritaskan mendapat singkatan yang lebih mudah diingat
  • Juga menyediakan alat parsing Slack Data Export untuk menggunakan pesan Slack sebagai korpus
    • Hanya admin workspace Slack yang bisa melakukan export
    • Hanya channel publik yang diexport
    • Ganti USERNAME_TO_EXPORT dengan nama pengguna Slack lalu jalankan parse_slack.py
    • Export Slack disertai prosedur untuk dihapus dengan srm
  • Alur penggunaan dasarnya adalah menaruh korpus di data/corpus/*.txt, membuat 200 kandidat teratas ke output/suggested_shortcuts.yaml dengan find_suggested_phrases.py, lalu memindahkan item yang diinginkan ke shortcuts.yaml dan menghasilkan file konfigurasi Autokey dengan generate_autokeys.py
  • Dependensi dipasang dengan install.sh, dan saat ini telah diuji pada Python 3.10.12
  • Autokey saat ini hanya mendukung X11 di Linux dan tidak mendukung Wayland
  • Konfigurasi Autokey yang dihasilkan diatur agar hanya berlaku saat Chrome sedang fokus, dan pengalaman penggunaan juga mencakup bahwa di terminal dan vscode lebih banyak masalah karena singkatan bertabrakan dengan perintah Linux pendek atau nama variabel

1 komentar

 
GN⁺ 2023-08-31
Komentar Hacker News
  • Saya juga menulis posting blog yang menyertakan video tentang proyek ini: https://erikschluntz.com/software/2023/08/26/compressing-my-...
    Jarang-jarang ini adalah proyek sampingan yang benar-benar menghemat lebih banyak waktu daripada waktu yang saya investasikan :)

  • Idenya sangat cerdas, tetapi kalau caranya berubah seiring waktu, rasanya saya tidak ingin memakainya
    Misalnya dijalankan setiap 6 bulan, lalu tahun lalu db berarti debug dan tahun ini menjadi database, itu bisa merusak memori otot dan kebiasaan
    Jadi saya lebih penasaran dengan versi umum yang stabil dan bermanfaat untuk semua orang ketika dijalankan pada buku, email, dan pesan teks yang ditulis ribuan orang dari berbagai latar belakang dan konteks
    Memperluas t menjadi the dan st menjadi something terasa jelas, tetapi saya penasaran apakah mungkin membuat satu set minimal sekitar 200–500 item yang bisa dipelajari semua orang dan menjadikannya semacam “keyboard standar”

    • Evans Basic English Code layak dilihat. Ini adalah sistem stenografi berbasis Phillips Code untuk telegraf, dan meski agak lama, kata-kata paling umum di dalamnya cukup berguna untuk menulis atau mengetik
      https://archive.org/details/evansbasicenglis00evan
      Sebaiknya gunakan PDF; file TXT hampir tidak bisa dipakai karena kualitas OCR-nya buruk
      Ini juga berguna: https://en.m.wikipedia.org/wiki/Most_common_words_in_English
    • Justru karena alasan itu, ini tidak berjalan otomatis. Ini menghasilkan suggested_shortcuts.yaml, lalu Anda menyalinnya ke shortcuts.yaml, sehingga shortcut yang benar-benar diaktifkan bisa dikendalikan secara manual :)
    • Saya rasa versi umum seperti itu pada akhirnya mirip dengan keyboard stenografi
    • Dulu saya menemukan Yublin, yang merupakan upaya persis seperti itu: membuat singkatan 1–3 huruf untuk 600 kata paling umum dalam bahasa Inggris
      Dan tentu saja the -> t ada di bagian paling atas daftar: https://jonaquino.blogspot.com/2007/06/yublin-shorthand-for-...
    • Solusi umum kemungkinan hanya akan cocok secara tanggung untuk banyak orang
      Seorang ahli kimia mungkin sering mengetik dropper dan menginginkan dp, tetapi seorang birokrat mungkin lebih memilih department
  • Kalau Anda bukan penutur asli bahasa Tionghoa, mungkin Anda tidak tahu bahwa bahasa Tionghoa punya fitur seperti ini bawaan
    Secara resmi disebut 双拼(Shuangpin), yaitu cara mengetik dua huruf Latin untuk tiap kata guna memasukkan seluruh kata: https://zh.wikipedia.org/zh-sg/%E5%8F%8C%E6%8B%BC
    Bahkan tanpa memakai Shuangpin secara formal, sebagian besar input method bahasa Tionghoa mendukung fitur serupa bernama 简拼 untuk frasa populer, sehingga Anda bisa memasukkan frasa berisi beberapa kata hanya dengan mengetik huruf Latin pertama dari tiap kata
    Misalnya untuk mengetik xiexie, yang berarti “thank you” dalam bahasa Tionghoa, biasanya cukup mengetik xx dan sebagian besar input method bahasa Tionghoa akan otomatis menyarankan karakter Han yang sesuai

    • Dengan keyboard pinyin yang bagus, mudah memasukkan kalimat umum dengan cepat
      Misalnya 「你想吃什麼」, yang berarti “what do you want to eat”, dimasukkan sebagai n x c s m
    • Baru-baru ini saya mendengarkan podcast menarik tentang cara mengetik bahasa Tionghoa dengan keyboard standar: https://radiolab.org/podcast/wubi-effect
    • Saya penasaran apakah menulis Xiao long bao dengan XLB juga contoh dari ini. Saya tidak tahu ada sistem yang lebih luas seperti itu; keren
    • Ini tampaknya sama sekali tidak terkait dengan topik yang sedang dibahas
  • Saya sangat suka melihat proyek seperti ini
    Akhir pekan lalu saya mengerjakan masalah serupa, tetapi targetnya adalah seluruh kata, bukan singkatan dari kamus buatan sendiri, dan dalam kasus umum caranya disesuaikan dengan korpus teks tertentu
    Yang membuat saya penasaran adalah “bisakah kita membuat autocorrect yang disesuaikan dengan korpus teks tertentu?” Misalnya, jika sebuah dokumen sering memakai ungkapan panjang seperti data augmentation, saya ingin melihat apakah itu bisa diotomatisasi
    Pendekatannya adalah menghitung surprisal untuk kata tunggal dan 2-gram pada dataset umum, yaitu korpus NYT, lalu menambahkan bobot pada kata-kata yang ada di indeks target penyesuaian, kemudian membuat struktur data trie berbobot surprisal untuk digunakan sebagai autocomplete tingkat lanjut
    Solusi yang berfungsi ada di sini: https://github.com/capjamesg/autowrite/blob/main/autocomplet...
    Belum ada dokumentasi, dan saya berencana menambahkannya dalam beberapa hari; kalau ingin berdiskusi, silakan tinggalkan GitHub Issue

    • Ini terdengar cukup mirip dengan https://github.com/wolfgarbe/SymSpell
      Mungkin saya saja yang bingung, apakah tujuannya mencari cara yang lebih kreatif untuk mengatakan ungkapan yang sama
  • Sebagai ide perluasan, bisa ditambahkan keylogger yang mengawasi input. Tentu saja, itu sendiri merupakan kelemahan
    Caranya adalah mempelajari frasa yang sering dipakai pengguna, menemukan frasa umum lalu menyarankan singkatan, kemudian memberi tahu pengguna secara halus tentang singkatan itu setiap kali pengguna mengetik frasa lengkapnya
    Dengan begitu siapa pun bisa memasangnya, hambatan masuknya rendah, dan produktivitas dapat meningkat bertahap seiring waktu

    • Saya sempat ingin membuat keyboard dengan keylogger bawaan yang memberikan autocomplete saat tombol khusus ditekan
      Idenya, data disimpan di penyimpanan aman di dalam perangkat agar tidak menjadi risiko keamanan
    • Sebagian bisa diimplementasikan sebagai input method (IME). Input method pada dasarnya adalah keylogger yang disetujui dan dapat mengedit input, dan terutama diperlukan untuk input bahasa Mandarin/Jepang
      Rasanya konsep input method yang menyediakan autocomplete bahasa Inggris di desktop seperti di ponsel, atau menyediakan singkatan lewat framework input method seperti fcitx5, akan menarik
    • Saya penasaran bagaimana cara kerjanya
      Apakah misalnya setiap minggu riwayat Slack diekspor otomatis, frekuensi kata dihitung, lalu berdasarkan hasil yang terlihat beberapa ekspansi ditetapkan secara manual?
    • Saya pernah menggali cukup dalam untuk membuat prototipe sesuatu yang mirip
      Strukturnya memakai Bluetooth Keyboard -> ESP32 sebagai host keyboard, lalu mengirim input tombol ke USB dan file
      Kalau punya uang, ada juga logger keyboard USB/PS2 yang menyimpan data ke disk
    • Saya rasa akan lebih baik jika ada singkatan yang distandardisasi
      Kalau dibuat berkumpul ke arah itu, konsistensi antar beberapa komputer juga terbantu, dan bagus juga untuk orang yang memakai banyak komputer
  • Bagi saya, selain beberapa situasi chat, rasanya mengetik hampir tidak pernah menjadi bottleneck
    Yang ada hanya interaksi yang akan terbantu oleh bandwidth tambahan dari video atau suara. Saya penasaran apakah singkatan seperti ini benar-benar berujung pada penghematan waktu kerja

    • Motivasi utamanya adalah percakapan Slack yang sangat cepat dan balasan email yang cukup formal
      Misalnya percakapan seperti “bisa unggah screenshot?” atau respons berupa mengirim tautan Calendly
      Saat menulis teks panjang pun, sering terasa menyebalkan karena pikiran lebih cepat daripada ketikan, jadi ini juga membantu bagian itu
    • Penghematan waktu adalah salah satu sisi, tetapi ini juga bisa berguna bagi orang yang mengalami repetitive strain injury atau carpal tunnel syndrome
    • Mengetik lebih cepat bukan soal mengurangi total waktu, melainkan mengurangi jeda di antara pikiran
      Mengetik adalah pekerjaan manual yang mengganggu proses berpikir, jadi makin sedikit waktu yang dihabiskan untuk masuk dan keluar dari aktivitas mengetik, makin cepat kita bisa kembali berpikir
    • Saya penasaran apakah kemampuan touch typing juga berpengaruh
  • Saya menghabiskan cukup banyak waktu untuk membuat text expansion yang akan saya pakai sendiri
    Ternyata jauh lebih sulit daripada yang saya kira, dan susah menemukan alias yang cukup bernilai tanpa terlalu sering salah aktif
    Karena setiap hari berkomunikasi dalam beberapa bahasa, ini menjadi lebih rumit, jadi sekarang saya memisahkan alias per aplikasi
    Meski begitu, salah aktif masih ada, dan saya makin mendekati kesimpulan bahwa pada umumnya diperlukan delimiter

    • Ikclaks sedang mengerjakan hal menarik di atas layout keyboard magic sturdy: https://github.com/Ikcelaks/keyboard_layouts/blob/main/magic...
    • Saya menambahkan kombinasi huruf yang jarang muncul sebagai huruf awal kata atau nama variabel, seperti kk, zz, qq, di depan alias
      Misalnya qqme adalah signature email saya
      Akan bagus kalau alat di artikel asli juga menyarankan alias untuk frasa yang lebih panjang daripada yang saya lihat di README. Saya dengar TextExpander untuk MacOS melakukan itu, tetapi saya bukan pengguna Mac
    • Kompromi yang tepat mungkin adalah memakai singkatan hanya untuk kata-kata paling umum, dan untuk sisanya mencari dengan fuzzy search di popup GUI sederhana lalu menempelkannya
    • Jika memakai beberapa bahasa, tampaknya shortcut yang bisa digunakan akan jauh lebih sedikit
      Salah satu TODO adalah membuat blocklist alias yang harus dihindari dengan menggunakan korpus teks nyata yang dianalisis
  • Secara pribadi saya akui, saya tidak pernah suka singkatan ala SMS yang dipakai di ponsel sebelum iPhone
    Itu salah satu alasan saya hampir tidak memakai SMS atau pesan teks kecuali benar-benar perlu
    Saya sudah memakai text expansion sejak masa awal TextExpander yang berjalan di iOS dan macOS, dan sebagus apa pun keyboard iPhone, tetap merepotkan mengetik berulang-ulang hal seperti alamat rumah, peta rumah/kantor, serta informasi kerja dan pribadi. TextExpander sangat membantu
    Setelah TextExpander beralih ke model berlangganan, saya mulai mencari alternatif, karena secara pribadi saya merasa model berlangganan tidak cocok untuk alat seperti ini. Snippets yang termasuk dalam Powerpack Alfred adalah alternatif yang lebih baik
    macOS/iOS juga punya “Text Replacements” bawaan, tetapi sering gagal di luar aplikasi Apple. Yang ada di sini mirip dengan Text Replacement Apple, dan saya membiarkan fitur itu tetap ada sementara sisanya saya kelola dengan Alfred. Terus terang, kalau saya bisa benar-benar lepas dari Alfred, saya mungkin akan pindah ke sini
    Namun saya ingin memakai delimiter untuk ekspansi agar tidak mengganggu pengetikan biasa. Saat ini saya memakai , sebagai delimiter, karena dalam bahasa Inggris koma selalu diikuti spasi, sedangkan ekspansi saya hanya terjadi jika saya mengetik koma dan teks pendek tanpa spasi. Posisi tombol koma juga nyaman saat touch typing
    Kalaupun tetap memakai Text Replacement OS, sepertinya saya akan memperkenalkan delimiter untuk mencegah kata otomatis diekspansi dalam situasi yang tidak diinginkan
    https://textexpander.com
    https://www.alfredapp.com

    • Saya menghabiskan cukup banyak waktu untuk menyesuaikan penanganan delimiter pada konfigurasi Autokey yang dihasilkan
      Penanganan pengecualian paling rinci adalah .py. Umumnya . adalah delimiter, tetapi dibuat pengecualian di depan py agar tidak mengganggu saat mengetik nama file Python
  • Karena bertahun-tahun memakai autocomplete, kemampuan bahasa Inggris saya sebagai bahasa kedua sudah memburuk
    Saya sering tahu katanya tetapi tidak ingat ejaannya sehingga lupa pengucapannya, dan alat seperti ini rasanya akan benar-benar menghabisi kemampuan yang tersisa

  • Saya berpikir, bagaimana kalau alih-alih menghafal kata kunci, kita cukup menulis huruf-huruf pertamanya?
    Beberapa minggu lalu saya bereksperimen dengan ChatGPT, tetapi sepertinya belum ada perangkat lunak yang sudah ada dengan fitur seperti ini.
    Saya tidak terlalu mahir pemrograman, tetapi saya berharap ada yang membuatkannya: https://imgur.com/a/0o4zLwT

    • Saya membuat prototipe dengan konsep yang mirip. Caranya, kita menyingkat sesuka hati, lalu ChatGPT mengoreksinya setelah setiap kalimat.
      Akurasinya cukup bagus, tetapi saat meleset, rasanya sangat menjengkelkan.
      Bahkan ketika bekerja dengan sempurna, setelah benar-benar saya coba, beban kognitifnya jauh lebih besar daripada mengetik seperti biasa.
      Kalau sangat fokus, saya bisa memakai singkatan sambil menyamai kecepatan mengetik nyaman saya seperti biasa, tetapi tidak bisa melampauinya, dan pada akhirnya secara alami kembali ke pengetikan normal.
      Namun, saya termasuk orang yang mengetik cepat dan banyak menulis, jadi prototipe ini pada dasarnya sedang berusaha mengalahkan proses di otak yang sudah dioptimalkan kuat selama sekitar 30 tahun. Mungkin ini bisa lebih cocok untuk orang yang sejak awal bukan pengetik cepat.