- Ein Tool, das automatisch Tippkürzel aus dem eigenen Textkorpus erstellt und Eingabe-Shortcuts für E-Mails und Slack generiert
- Es analysiert ein Textkorpus, schlägt Kürzel vor, mit denen sich beim Tippen die meisten Zeichen sparen lassen, und erzeugt Konfigurationsdateien für Autokey, ein Linux-Programm für Tastaturkürzel
- Es findet häufig vorkommende n-Gramme im Korpus, erstellt Kandidaten, um sie durch kürzere Ausdrücke zu ersetzen, und berechnet die Rangfolge der Vorschläge als
[eingesparte Zeichenanzahl] * [Häufigkeit der Phrase] - Bei der Auswahl der Kürzel wird auf leicht merkbare Abkürzungen gezielt; Abkürzungen, die man als normales Wort tippen möchte, werden per Blacklist ausgeschlossen, und häufigere Phrasen erhalten bevorzugt besser merkbare Abkürzungen
- Es bietet auch ein Parsing-Tool für Slack Data Export, um Slack-Nachrichten als Korpus zu verwenden
- Export ist nur für Administratoren des Slack-Workspaces möglich
- Es werden nur öffentliche Channels exportiert
USERNAME_TO_EXPORTmuss durch den Slack-Benutzernamen ersetzt werden, danach istparse_slack.pyauszuführen- Das Vorgehen enthält den Hinweis, den Slack-Export mit
srmzu löschen
- Der grundlegende Ablauf besteht darin, das Korpus in
data/corpus/*.txtabzulegen, mitfind_suggested_phrases.pydie Top-200-Kandidaten inoutput/suggested_shortcuts.yamlzu erzeugen, gewünschte Einträge nachshortcuts.yamlzu verschieben und anschließend mitgenerate_autokeys.pydie Autokey-Konfigurationsdateien zu generieren - Mit
install.shwerden die Abhängigkeiten installiert; getestet wurde derzeit mit Python3.10.12 - Autokey unterstützt derzeit unter Linux nur X11, nicht Wayland
- Die erzeugte Autokey-Konfiguration ist so eingerichtet, dass sie nur greift, wenn Chrome den Fokus hat; außerdem wird die Erfahrung geteilt, dass es in Terminal und VS Code mehr Probleme gab, weil sich Abkürzungen dort häufiger mit kurzen Linux-Befehlen oder Variablennamen überschnitten
1 Kommentare
Hacker-News-Kommentare
Ich habe auch einen Blogbeitrag mit einem Video zu dem Projekt geschrieben: https://erikschluntz.com/software/2023/08/26/compressing-my-...
Ausnahmsweise war das ein Side Project, das mir tatsächlich mehr Zeit gespart hat, als ich hineingesteckt habe :)
Die Idee ist sehr clever, aber wenn sich das Verhalten mit der Zeit ändert, würde ich es vermutlich nicht nutzen wollen
Wenn ich es zum Beispiel alle 6 Monate laufen lasse und letztes Jahr stand
dbfürdebug, dieses Jahr aber fürdatabase, kann das Muskelgedächtnis und Gewohnheiten kaputtmachenDeshalb wäre ich eher an einer universellen Version interessiert, die zuverlässig allen hilft, wenn man sie auf Bücher, E-Mails und Nachrichten von Tausenden Menschen mit sehr unterschiedlichen Hintergründen und Kontexten anwendet
tzutheundstzusomethingzu erweitern, wirkt naheliegend, aber ich frage mich, ob man ein Minimal-Set von etwa 200 bis 500 Einträgen schaffen könnte, das alle lernen können – als eine Art „Standardtastatur“https://archive.org/details/evansbasicenglis00evan
Am besten die PDF verwenden; die TXT-Datei hat eine schlechte OCR-Qualität und ist praktisch kaum nutzbar
Das hier ist ebenfalls nützlich: https://en.m.wikipedia.org/wiki/Most_common_words_in_English
suggested_shortcuts.yamlaus, und man kopiert daraus nachshortcuts.yaml, sodass man die tatsächlich aktivierten Kurzbefehle manuell steuern kann :)Und natürlich steht
the -> tganz oben auf der Liste: https://jonaquino.blogspot.com/2007/06/yublin-shorthand-for-...Ein Chemiker tippt vielleicht oft
dropperund möchte dafürdp, während ein Beamter eherdepartmentbevorzugen könnteWenn man kein chinesischer Muttersprachler ist, weiß man das vielleicht nicht, aber im Chinesischen ist so etwas eingebaut
Offiziell heißt es 双拼 (Shuangpin), und man gibt pro Wort zwei lateinische Buchstaben ein, um das ganze Wort zu schreiben: https://zh.wikipedia.org/zh-sg/%E5%8F%8C%E6%8B%BC
Selbst wenn man Shuangpin nicht formell nutzt, unterstützen die meisten chinesischen Eingabemethoden für beliebte Phrasen eine ähnliche 简拼-Funktion, bei der man nur den ersten lateinischen Buchstaben jedes Worts eingibt, um mehrwortige Ausdrücke einzugeben
Wenn man zum Beispiel
xiexie, also „thank you“ auf Chinesisch, eingeben möchte, reicht es bei den meisten chinesischen Eingabemethoden normalerweise,xxzu tippen, damit automatisch die entsprechenden chinesischen Zeichen vorgeschlagen werdenZum Beispiel gibt man 「你想吃什麼」, also „what do you want to eat“, als
n x c s meinXLBfürXiao long baoauch ein Beispiel dafür ist. Ich wusste nicht, dass es ein breiteres System gibt; coolIch sehe solche Projekte wirklich gern
Am Wochenende habe ich mich mit einem ähnlichen Problem beschäftigt, allerdings nicht mit Abkürzungen aus einem selbst erstellten Wörterbuch, sondern mit ganzen Wörtern; im allgemeinen Fall sollte es an ein gegebenes Textkorpus angepasst werden
Mich interessierte die Frage: „Kann man eine Autokorrektur bauen, die an ein gegebenes Textkorpus angepasst ist?“ Wenn man in einem Dokument zum Beispiel oft lange Ausdrücke wie
data augmentationverwendet, wollte ich sehen, ob sich das automatisieren lässtMein Ansatz war, auf einem allgemeinen Datensatz, dem NYT-Korpus, die Surprisal einzelner Wörter und 2-Gramme zu berechnen, Wörtern im anzupassenden Index zusätzliches Gewicht zu geben und daraus eine nach Surprisal gewichtete Trie-Datenstruktur zu bauen, die als fortgeschrittene Autovervollständigung dient
Eine funktionierende Lösung gibt es hier: https://github.com/capjamesg/autowrite/blob/main/autocomplet...
Es gibt noch keine Dokumentation; ich werde sie in den nächsten Tagen hinzufügen. Wer darüber sprechen möchte, kann ein GitHub Issue hinterlassen
Vielleicht verstehe ich aber auch falsch, dass es darum geht, kreativere Möglichkeiten zu finden, denselben Ausdruck zu formulieren
Als Erweiterungsidee könnte man einen Keylogger einbauen, der die Eingaben beobachtet. Das ist natürlich an sich schon ein Nachteil.
Er würde häufig verwendete Formulierungen des Nutzers lernen, gängige Phrasen finden, Kürzel vorschlagen und den Nutzer dann jedes Mal sanft auf das Kürzel hinweisen, wenn er die ganze Phrase eingibt.
Dann wäre es für jeden installierbar, hätte eine niedrige Einstiegshürde und könnte die Produktivität mit der Zeit schrittweise steigern.
Die Idee war, die Daten in einem sicheren Speicher auf dem Gerät zu halten, damit daraus kein Sicherheitsrisiko wird.
Eine Eingabemethode, die auf dem Desktop englische Autovervollständigung wie auf dem Smartphone bietet oder über ein Eingabemethoden-Framework wie
fcitx5Kürzel bereitstellt, wäre ein interessantes Konzept.Vielleicht jede Woche automatisch den Slack-Verlauf exportieren, Worthäufigkeiten berechnen und dann anhand der sichtbaren Ergebnisse manuell mehrere Erweiterungen festlegen?
Die Struktur war
Bluetooth Keyboard -> ESP32als Tastatur-Host, der die Tastatureingaben an USB und in eine Datei weiterleitet.Wenn man Geld hat, gibt es auch USB/PS2-Tastatur-Logger, die Daten auf einer Disk speichern.
Wenn man in diese Richtung konvergiert, hilft das auch der Konsistenz zwischen mehreren Computern und ist gut, wenn man mehrere Rechner nutzt.
Bei mir scheint Tippen, abgesehen von ein paar Chat-Situationen, fast nie der Flaschenhals zu sein.
Es gab eher Interaktionen, bei denen die zusätzliche Bandbreite von Video oder Audio geholfen hätte. Ich frage mich, ob solche Kürzel wirklich zu eingesparter Arbeitszeit führen.
Zum Beispiel Gespräche wie „Können Sie einen Screenshot hochladen?“ oder Antworten wie das Senden eines Calendly-Links.
Auch beim Schreiben längerer Texte ist es oft frustrierend, dass die Gedanken schneller sind als das Tippen; dabei hilft es ebenfalls.
Tippen ist eine manuelle Tätigkeit, die das Denken stört; je weniger Zeit man damit verbringt, ins Tippen hinein- und wieder herauszuwechseln, desto schneller kann man zum Denken zurückkehren.
Ich habe ziemlich viel Zeit darauf verwendet, eine Texterweiterung für den eigenen Gebrauch zu bauen.
Es war viel schwieriger als gedacht, und es ist schwer, Aliase zu finden, die genug Wert bieten, ohne allzu häufig falsch auszulösen.
Da ich täglich in mehreren Sprachen kommuniziere, wurde es noch komplexer; inzwischen habe ich die Aliase nach Anwendung getrennt.
Fehlfunktionen gibt es trotzdem noch, und ich komme im Großen und Ganzen zu dem Schluss, dass man einen Trenner braucht.
kk,zz,qq, die selten am Anfang von Wörtern oder Variablennamen vorkommen.Zum Beispiel ist
qqmemeine E-Mail-Signatur.Es wäre schön, wenn das Tool aus dem Originalbeitrag auch Aliase für längere Phrasen vorschlagen würde als das, was ich im README gesehen habe. Ich habe gehört, dass TextExpander für MacOS das tut, aber ich bin kein Mac-Nutzer.
Einer der TODO-Punkte ist, anhand des tatsächlich analysierten Textkorpus auch eine Blockliste von Aliasen zu erzeugen, die man vermeiden sollte.
Persönlich muss ich gestehen, dass ich SMS-artige Abkürzungen, wie man sie auf Handys vor dem iPhone verwendet hat, nie mochte.
Das war einer der Gründe, warum ich SMS oder Textnachrichten kaum genutzt habe, außer wenn es wirklich nötig war.
Ich nutze Texterweiterung seit den frühen Tagen von TextExpander auf iOS und macOS, und egal wie gut die iPhone-Tastatur war: Dinge wie Privatadresse, Karten zu Zuhause/Büro sowie berufliche und persönliche Informationen wiederholt einzugeben, war mühsam. TextExpander hat sehr geholfen.
Als TextExpander später auf ein Abo-Modell umstellte, begann ich nach Alternativen zu suchen, weil ich persönlich finde, dass ein Abo-Modell für solche Tools nicht passt. Die in Alfreds Powerpack enthaltenen Snippets waren die bessere Alternative.
macOS/iOS haben zwar auch eingebaute „Text Replacements“, aber außerhalb von Apple-Apps scheitern sie oft. Das hier ähnelt Apples Text Replacement; ich behalte diese Funktion, verwalte den Rest aber in Alfred. Ehrlich gesagt könnte ich hierher wechseln, wenn ich dadurch vollständig von Alfred wegkomme.
Allerdings möchte ich für Erweiterungen einen Trenner verwenden, damit sie normales Tippen nicht stören. Derzeit nutze ich
,als Trenner, weil im Englischen nach einem Komma immer ein Leerzeichen kommt und meine Erweiterungen nur dann stattfinden, wenn ich ein Komma gefolgt von kurzem Text ohne Leerzeichen tippe. Die Position der Kommataste ist beim Zehnfingersystem auch bequem.Selbst wenn ich bei der Text-Replacement-Funktion des OS bleibe, würde ich vermutlich einen Trenner einführen, um zu verhindern, dass Wörter in unbeabsichtigten Situationen automatisch erweitert werden.
https://textexpander.com
https://www.alfredapp.com
Die feinste Ausnahmebehandlung betrifft
.py. Normalerweise ist.ein Trenner, aber vorpyist es eine Ausnahme, damit es beim Eingeben von Python-Dateinamen nicht stört.Durch jahrelange Autovervollständigung sind meine Englischkenntnisse als Zweitsprache bereits schlechter geworden.
Ich kenne Wörter, erinnere mich aber oft nicht mehr an die Schreibweise und vergesse dadurch die Aussprache; solche Tools werden mir wohl auch die restlichen Fähigkeiten vollständig nehmen.
Statt sich Schlüsselwörter zu merken, könnte man doch einfach die Anfangsbuchstaben schreiben
Ich habe vor ein paar Wochen mit ChatGPT damit experimentiert, aber es scheint keine bestehende Software mit so einer Funktion zu geben
Ich kann nicht besonders gut programmieren, aber es wäre schön, wenn jemand so etwas bauen würde: https://imgur.com/a/0o4zLwT
Die Genauigkeit ist ziemlich gut, aber wenn es danebenliegt, ist es extrem nervig
Selbst wenn es perfekt funktioniert, war die kognitive Belastung in der Praxis deutlich höher als beim Tippen wie gewohnt
Wenn ich mich sehr konzentrierte, konnte ich mit Abkürzungen ungefähr meine gewohnte, angenehme Tippgeschwindigkeit erreichen, sie aber nicht übertreffen, und am Ende fiel ich ganz natürlich wieder zum normalen Tippen zurück
Allerdings tippe ich schnell und schreibe viel; dieser Prototyp versucht also im Grunde, einen Prozess in meinem Kopf zu schlagen, der seit etwa 30 Jahren stark optimiert ist. Für jemanden, der nicht ohnehin schnell tippt, könnte es besser passen