2 puan yazan GN⁺ 2023-08-31 | 1 yorum | WhatsApp'ta paylaş
  • Kendi yazı korpusunuzdan otomatik olarak yazma kısayolları oluşturan ve e-posta ile Slack'te kullandığınız girdi kısayollarını üreten bir araç
  • Metin korpusunu ayrıştırarak yazarken en fazla karakter tasarrufu sağlayacak kısayolları önerir ve Linux klavye kısayol programı Autokey için yapılandırma dosyası oluşturur
  • Korpusta sık geçen n-gram'ları bulup bunları daha kısa ifadelerle değiştirmek için adaylar üretir; öneri sıralaması [tasarruf edilen karakter sayısı] * [ifade sıklığı] olarak hesaplanır
  • Kısayol seçimi, hatırlaması kolay kısaltmaları hedefler; kelime olarak yazmak isteyebileceğiniz kısaltmalar kara listeye alınarak hariç tutulur ve daha sık kullanılan ifadelere daha kolay hatırlanabilir kısaltmalar öncelikli olarak atanır
  • Slack mesajlarını korpus olarak kullanmak için Slack Data Export ayrıştırma aracı da sağlar
    • Yalnızca Slack çalışma alanı yöneticileri export yapabilir
    • Yalnızca public channel'lar export edilir
    • USERNAME_TO_EXPORT değerini Slack kullanıcı adıyla değiştirdikten sonra parse_slack.py çalıştırılmalıdır
    • Slack export'unu srm ile silmeyi söyleyen bir prosedür içerir
  • Temel kullanım akışı: korpusu data/corpus/*.txt içine koymak, find_suggested_phrases.py ile en iyi 200 adayı output/suggested_shortcuts.yaml içinde oluşturmak, istenen öğeleri shortcuts.yaml dosyasına taşımak ve generate_autokeys.py ile Autokey yapılandırma dosyasını üretmek şeklindedir
  • Bağımlılıklar install.sh ile kurulur; şu anda Python 3.10.12 üzerinde test edilmiştir
  • Autokey şu anda Linux'ta yalnızca X11 destekler, Wayland'i desteklemez
  • Oluşturulan Autokey yapılandırması yalnızca Chrome odaktayken uygulanacak şekilde yapılandırılmıştır; terminal ve vscode'da kısa Linux komutları veya değişken adlarıyla kısaltmaların çakışıp daha fazla soruna yol açtığına dair kullanıcı deneyimi de yer alır

1 yorum

 
GN⁺ 2023-08-31
Hacker News yorumları
  • Proje hakkında bir video da içeren bir blog yazısı yazdım: https://erikschluntz.com/software/2023/08/26/compressing-my-...
    Nadiren, harcadığım zamandan daha fazlasını gerçekten kazandıran bir yan proje oldu :)

  • Fikir çok zekice ama zamanla değişen bir yöntemse kullanmak istemezdim
    Örneğin bunu 6 ayda bir çalıştırdınız; geçen yıl db debug iken bu yıl database olursa kas hafızasını ve alışkanlıkları bozabilir
    Bu yüzden, farklı arka plan ve bağlamlardan binlerce kişinin yazdığı kitaplar, e-postalar ve mesajlar üzerinde çalıştırıldığında herkes için istikrarlı biçimde faydalı olacak genel amaçlı bir sürüm daha çok ilgimi çekiyor
    t'nin theye, st'nin somethinge genişlemesi bariz görünüyor; ama herkesin öğrenebileceği bir “standart klavye” haline gelecek 200-500 kadar minimal bir set oluşturulabilir mi merak ediyorum

    • Evans Basic English Code'a bakmaya değer. Telgraf için kullanılan Phillips Code'u temel alan bir stenografi sistemi; biraz eski olsa da en yaygın kelimeler yazı yazarken veya klavyede yazarken oldukça kullanışlı
      https://archive.org/details/evansbasicenglis00evan
      PDF'yi kullanmak daha iyi; TXT dosyasının OCR kalitesi kötü olduğu için neredeyse kullanılamaz
      Bu da faydalı: https://en.m.wikipedia.org/wiki/Most_common_words_in_English
    • Tam da bu nedenle otomatik çalıştırılmıyor. suggested_shortcuts.yaml çıktısı üretiyor; oradan shortcuts.yaml içine kopyalayarak gerçekten etkinleştirilecek kısayolları elle kontrol edebiliyorsunuz :)
    • Böyle genel amaçlı bir sürüm eninde sonunda steno klavyeye benzer bir şey olmaz mı diye düşünüyorum
    • Eskiden Yublin'i keşfetmiştim; İngilizcedeki en yaygın 600 kelime için 1-3 harfli kısaltmalar oluşturmayı hedefleyen tam da böyle bir girişimdi
      Ve yine the -> t listenin en tepesinde: https://jonaquino.blogspot.com/2007/06/yublin-shorthand-for-...
    • Genel bir çözümün birçok kişiye ancak kısmen uyma ihtimali yüksek
      Bir kimyager dropperı sık yazdığı için dp isteyebilir, ama bir bürokrat departmentı daha çok tercih edebilir
  • Ana dili Çince olmayanlar bilmeyebilir; Çince'de bu tür bir özellik yerleşik olarak var
    Resmî adı 双拼(Shuangpin) ve her kelime için 2 İngilizce harf girerek tüm kelimeyi yazma yöntemi: https://zh.wikipedia.org/zh-sg/%E5%8F%8C%E6%8B%BC
    Shuangpin'i resmen kullanmasanız bile çoğu Çince giriş yöntemi, popüler ifadeler için benzer bir 简拼 özelliğini destekler; böylece çok kelimeli ifadeleri her kelimenin yalnızca ilk İngilizce harfini yazarak girebilirsiniz
    Örneğin Çince “thank you” anlamındaki xiexieyi girmek için genelde sadece xx yazarsınız; çoğu Çince giriş yöntemi ilgili Çince karakterleri otomatik olarak önerir

    • İyi Pinyin klavyelerinde yaygın cümleleri hızlı yazmak kolaydır
      Örneğin “what do you want to eat” anlamındaki 「你想吃什麼」 n x c s m ile girilir
    • Standart klavyeyle Çince yazma yöntemi hakkında yakın zamanda ilginç bir podcast dinledim: https://radiolab.org/podcast/wubi-effect
    • XLB ile Xiao long bao yazmak da buna bir örnek mi merak ediyorum. Daha geniş bir sistem olduğunu bilmiyordum, harika
    • Bunun şu anda tartışılan konuyla hiç ilgisi yok gibi görünüyor
  • Böyle projeler görmeyi gerçekten seviyorum
    Hafta sonu benzer bir problem üzerinde çalıştım; kendi hazırladığım sözlükteki kısaltmalar yerine tam kelimeleri hedefliyordu ve genel durumda verilen metin derlemine göre uyarlanıyordu
    Merak ettiğim şey şuydu: “Verilen bir metin derlemine göre uyarlanmış bir otomatik düzeltici yapılabilir mi?” Örneğin bir belgede data augmentation gibi uzun ifadeleri çok kullanıyorsanız, bunu otomatikleştirmenin mümkün olup olmadığını görmek istedim
    Yaklaşımım, genel bir veri kümesi olan NYT derleminde tekil kelimelerin ve 2-gramların şaşırtıcılığını hesaplamak, uyarlama yapılacak dizindeki kelimelere ağırlık eklemek, ardından şaşırtıcılıkla ağırlıklandırılmış bir trie veri yapısı kurup bunu gelişmiş otomatik tamamlama olarak kullanmaktı
    Çalışan çözüm burada: https://github.com/capjamesg/autowrite/blob/main/autocomplet...
    Henüz dokümantasyon yok; birkaç gün içinde eklemeyi planlıyorum. Konuşmak isterseniz GitHub Issue bırakabilirsiniz

    • Bu, https://github.com/wolfgarbe/SymSpell ile epey benzer geliyor
      Belki de aynı ifadeyi daha yaratıcı şekilde söylemenin yollarını aramaya çalıştığını sanıp ben karıştırmış olabilirim
  • Genişletme fikri olarak, girdiyi izleyen bir keylogger eklenebilir. Elbette bu başlı başına bir dezavantaj
    Kullanıcının sık kullandığı ifadeleri öğrenip, yaygın ifadeleri bularak kısayollar önermek ve kullanıcı tüm ifadeyi her yazdığında kısayolu nazikçe hatırlatmak gibi bir yöntem
    Böylece herkes kurabilir, giriş bariyeri de düşük olur ve zamanla verimlilik kademeli olarak artabilir

    • Özel bir tuşa basınca otomatik tamamlama yapan yerleşik keylogger klavye yapmak istemiştim
      Verileri cihaz içindeki güvenli depoda tutarak bunun bir güvenlik riski olmamasını amaçlıyordum
    • Bir kısmı girdi yöntemi (IME) olarak uygulanabilir. Girdi yöntemi aslında girdiyi düzenleyebilen onaylı bir keylogger’dır ve çoğunlukla Çince/Japonca girişi için gerekir
      Masaüstünde telefondaki gibi İngilizce otomatik tamamlama sunan ya da fcitx5 gibi girdi yöntemi framework’leriyle kısayollar sağlayan bir girdi yöntemi ilginç bir konsept olabilir
    • Nasıl çalışacağını merak ediyorum
      Her hafta Slack kayıtlarını otomatik dışa aktarıp kelime sıklığını hesapladıktan sonra, görünen sonuçlara göre elle birkaç genişletme mi tanımlanır?
    • Benzer bir şeyi prototip olarak yapmak için epey derine indiğim olmuştu
      Bluetooth Keyboard -> ESP32 yapısında ESP32’yi klavye host’u olarak kullanıp tuş girişlerini USB’ye ve dosyaya gönderen bir yapıydı
      Paran varsa veriyi diske kaydeden USB/PS2 klavye logger’ları da var
    • Standartlaştırılmış kısaltmaların olması daha iyi olmaz mı diye düşünüyorum
      O yöne yakınsamayı sağlarsanız farklı bilgisayarlar arasında tutarlılığa da yardımcı olur, birden fazla bilgisayar kullananlar için de iyi olur
  • Benim için birkaç sohbet durumu dışında yazma hızının neredeyse hiç darboğaz olduğunu sanmıyorum
    Aksine, görüntü ya da sesin ek bant genişliğinin faydalı olacağı etkileşimler var. Bu tür kısayolların gerçekten çalışma süresinden tasarrufa dönüşüp dönüşmediğini merak ediyorum

    • Ana motivasyon çok hızlı Slack konuşmaları ve epey resmîleşmiş e-posta yanıtlarıydı
      Örneğin “ekran görüntüsü yükleyebilir misiniz?” gibi konuşmalar ya da Calendly bağlantısı gönderme türü yanıtlar
      Uzun metin yazarken de düşüncelerin yazma hızından hızlı olması sık sık sinir bozucu oluyor; bu kısımda da yardımcı oluyor
    • Zaman tasarrufu bunun bir yönü, ama tekrarlayan zorlanma yaralanması veya karpal tünel sendromu yaşayan kişiler için de yararlı olabilir
    • Daha hızlı yazma, toplam süreyi azaltma meselesinden çok düşünceler arasındaki gecikmeyi azaltma meselesi
      Yazmak, düşünmeyi bölen elle yapılan bir iş; yazmaya girip çıkmak için harcanan süre ne kadar azalırsa düşünmeye o kadar hızlı geri dönülebilir
    • On parmak yazma becerisinin de etkisi olup olmadığını merak ediyorum
  • Kendim kullanmak için metin genişletme yapmaya epey zaman harcadım
    Beklediğimden çok daha zordu; çok sık yanlış çalışmadan yeterince değer sağlayacak takma adlar bulmak zor
    Her gün birden çok dilde iletişim kurduğum için iş daha da karmaşıklaştı; şu anda takma adları uygulama bazında ayırdım
    Yine de yanlış tetiklemeler var ve genel olarak bir ayırıcı gerektiği sonucuna yaklaşıyorum

    • Ikclaks, magic sturdy klavye düzeni üzerinde ilginç işler yapıyor: https://github.com/Ikcelaks/keyboard_layouts/blob/main/magic...
    • Takma adların başına kk, zz, qq gibi kelimelerin ya da değişken adlarının ilk harfi olarak pek çıkmayan karakter kombinasyonları ekliyorum
      Örneğin qqme benim e-posta imzam
      Orijinal yazıdaki araç, README’de gördüğümden daha uzun ifadeler için de takma ad önerebilse iyi olurdu. MacOS için TextExpander’ın bunu yaptığını duydum ama Mac kullanıcısı değilim
    • Uygun uzlaşma, yalnızca en yaygın kelimeler için kısaltma kullanmak; geri kalanları ise basit bir GUI açılır penceresinde bulanık arama ile bulup yapıştırmak olabilir
    • Birden çok dil kullanınca kullanılabilecek kısayolların çok daha az olacağını düşünüyorum
      TODO’lardan biri de analiz edilen gerçek metin derlemini kullanarak kaçınılması gereken takma adlar için bir engelleme listesi üretmek
  • Kişisel bir itiraf olarak, iPhone öncesi telefonlarda kullanılan SMS tarzı kısaltmaları hiç sevmedim
    Mecbur kalmadıkça SMS ya da metin mesajı neredeyse hiç kullanmamamın nedenlerinden biri buydu
    iOS ve macOS’te çalışan TextExpander’ın ilk zamanlarından beri metin genişletme kullanıyorum; iPhone klavyesi ne kadar iyi olursa olsun ev adresi, ev/iş haritaları, iş ve kişisel bilgiler gibi şeyleri tekrar tekrar girmek zahmetliydi. TextExpander çok yardımcı oldu
    Sonra TextExpander abonelik modeline geçince alternatif aramaya başladım; kişisel olarak bu tür araçlar için abonelik modelinin uygun olmadığını düşündüm. Alfred’in Powerpack’ine dahil olan Snippets daha iyi bir alternatiftü
    macOS/iOS’te yerleşik “Text Replacements” da var ama Apple uygulaması olmayan yerlerde sık sık başarısız oluyor. Buradaki şey Apple’ın Text Replacement’ına benziyor; ben o özelliği bırakıp geri kalanını Alfred ile yönetiyorum. Açıkçası Alfred’den tamamen kurtulmamı sağlayabilirse buna geçebilirim
    Ancak normal yazmayı engellememesi için genişletmelerde ayırıcı kullanmak istiyorum. Şu anda ayırıcı olarak , kullanıyorum; çünkü İngilizcede virgülden sonra her zaman boşluk gelir ve benim genişletmelerim yalnızca boşluk olmadan virgül ve kısa metin yazdığımda gerçekleşiyor. On parmak yazarken virgül tuşunun konumu da rahat
    İşletim sisteminin Text Replacement’ında kalacak olsam bile, kelimelerin istenmeyen durumlarda otomatik genişlemesini önlemek için ayırıcı getireceğimi düşünüyorum
    https://textexpander.com
    https://www.alfredapp.com

    • Oluşturduğu Autokey ayarında ayırıcı işlemeyi doğru yapmak için epey zaman harcadım
      En ayrıntılı istisna işleme .py. Normalde . bir ayırıcıdır ama Python dosya adı yazarken engel olmaması için py öncesinde istisna yaptım
  • Yıllardır süren otomatik tamamlama yüzünden ikinci dilim olan İngilizce becerim zaten kötüleşti
    Kelimeyi bildiğim hâlde yazımını hatırlayamadığım için telaffuzunu unuttuğum sık oluyor; bu tür araçlar kalan becerimi de tamamen yok edecek gibi geliyor

  • Anahtar kelimeleri ezberlemek yerine ilk harfleri yazsak olmaz mı diye düşünüyorum
    Birkaç hafta önce ChatGPT ile denedim; bu tür bir özelliğe sahip mevcut bir yazılım yok gibi görünüyor
    Programlamada çok iyi değilim ama keşke biri yapsa: https://imgur.com/a/0o4zLwT

    • Buna benzer bir konsepte sahip bir prototip yaptım. İstediğiniz gibi kısaltarak yazıyorsunuz, ChatGPT de her cümlenin ardından düzeltiyor
      Doğruluğu oldukça iyi, ama ıskaladığında çok sinir bozucu oluyor
      Kusursuz çalışsa bile, pratikte kullanınca normalde yazmaya kıyasla bilişsel yükü çok daha fazlaydı
      Çok odaklanırsam kısaltmalar kullanırken normal rahat yazma hızımı yakalayabiliyordum ama aşamıyordum; sonunda doğal olarak sıradan yazmaya geri dönüyordum
      Ancak ben hızlı yazan ve çok metin üreten biriyim; bu prototip, beynimde yaklaşık 30 yıldır güçlü biçimde optimize olmuş bir süreci yenmeye çalışıyor sayılır. Zaten hızlı yazan biri olmayanlar için daha uygun olabilir