2 Punkte von GN⁺ 2023-08-31 | 1 Kommentare | Auf WhatsApp teilen
  • 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_EXPORT muss durch den Slack-Benutzernamen ersetzt werden, danach ist parse_slack.py auszuführen
    • Das Vorgehen enthält den Hinweis, den Slack-Export mit srm zu löschen
  • Der grundlegende Ablauf besteht darin, das Korpus in data/corpus/*.txt abzulegen, mit find_suggested_phrases.py die Top-200-Kandidaten in output/suggested_shortcuts.yaml zu erzeugen, gewünschte Einträge nach shortcuts.yaml zu verschieben und anschließend mit generate_autokeys.py die Autokey-Konfigurationsdateien zu generieren
  • Mit install.sh werden die Abhängigkeiten installiert; getestet wurde derzeit mit Python 3.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

 
GN⁺ 2023-08-31
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 db für debug, dieses Jahr aber für database, kann das Muskelgedächtnis und Gewohnheiten kaputtmachen
    Deshalb 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
    t zu the und st zu something zu 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“

    • Der Evans Basic English Code ist einen Blick wert. Er ist ein Kurzschriftsystem auf Basis des Phillips Code für die Telegrafie und zwar etwas in die Jahre gekommen, aber die häufigsten Wörter sind beim Schreiben oder Tippen ziemlich nützlich
      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
    • Genau aus diesem Grund wird es nicht automatisch ausgeführt. Es gibt suggested_shortcuts.yaml aus, und man kopiert daraus nach shortcuts.yaml, sodass man die tatsächlich aktivierten Kurzbefehle manuell steuern kann :)
    • So eine universelle Version wäre am Ende wohl im Grunde etwas Ähnliches wie eine Kurzschrift-Tastatur
    • Vor einiger Zeit bin ich auf Yublin gestoßen; das war genau so ein Versuch, für die 600 häufigsten Wörter im Englischen Abkürzungen aus 1 bis 3 Buchstaben zu erstellen
      Und natürlich steht the -> t ganz oben auf der Liste: https://jonaquino.blogspot.com/2007/06/yublin-shorthand-for-...
    • Eine allgemeine Lösung wird für viele Leute vermutlich nur so halb passen
      Ein Chemiker tippt vielleicht oft dropper und möchte dafür dp, während ein Beamter eher department bevorzugen könnte
  • Wenn 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, xx zu tippen, damit automatisch die entsprechenden chinesischen Zeichen vorgeschlagen werden

    • Mit einer guten Pinyin-Tastatur lassen sich häufige Sätze schnell eingeben
      Zum Beispiel gibt man 「你想吃什麼」, also „what do you want to eat“, als n x c s m ein
    • Ich habe neulich einen interessanten Podcast darüber gehört, wie man Chinesisch mit einer Standardtastatur eingibt: https://radiolab.org/podcast/wubi-effect
    • Ich frage mich, ob XLB für Xiao long bao auch ein Beispiel dafür ist. Ich wusste nicht, dass es ein breiteres System gibt; cool
    • Das scheint mit dem Thema, über das wir gerade sprechen, überhaupt nichts zu tun zu haben
  • Ich 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 augmentation verwendet, wollte ich sehen, ob sich das automatisieren lässt
    Mein 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

    • Das klingt ziemlich ähnlich wie https://github.com/wolfgarbe/SymSpell
      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.

    • Ich wollte eine Tastatur mit eingebautem Keylogger bauen, die bei Druck auf eine Sondertaste Autovervollständigung anbietet.
      Die Idee war, die Daten in einem sicheren Speicher auf dem Gerät zu halten, damit daraus kein Sicherheitsrisiko wird.
    • Ein Teil davon ließe sich als Eingabemethode (IME) umsetzen. Eine Eingabemethode ist im Grunde ein zugelassener Keylogger, der Eingaben bearbeiten kann, und wird vor allem für die Eingabe von Chinesisch/Japanisch benötigt.
      Eine Eingabemethode, die auf dem Desktop englische Autovervollständigung wie auf dem Smartphone bietet oder über ein Eingabemethoden-Framework wie fcitx5 Kürzel bereitstellt, wäre ein interessantes Konzept.
    • Ich frage mich, wie das funktionieren würde.
      Vielleicht jede Woche automatisch den Slack-Verlauf exportieren, Worthäufigkeiten berechnen und dann anhand der sichtbaren Ergebnisse manuell mehrere Erweiterungen festlegen?
    • Ich habe mich einmal ziemlich tief damit beschäftigt, etwas Ähnliches als Prototyp zu bauen.
      Die Struktur war Bluetooth Keyboard -> ESP32 als 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.
    • Ich frage mich, ob standardisierte Abkürzungen nicht besser wären.
      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.

    • Die Hauptmotivation waren sehr schnelle Slack-Unterhaltungen und ziemlich formalisierte E-Mail-Antworten.
      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.
    • Zeitersparnis ist ein Aspekt, aber es kann auch für Menschen mit Repetitive Strain Injury oder Karpaltunnelsyndrom nützlich sein.
    • Schnelleres Tippen ist weniger eine Frage, die Gesamtzeit zu reduzieren, sondern eher, die Verzögerung zwischen Gedanken zu verringern.
      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 frage mich, ob auch die Fähigkeit zum Zehnfingersystem eine Rolle spielt.
  • 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.

    • Ikclaks macht interessante Arbeit auf Basis des Tastaturlayouts magic sturdy: https://github.com/Ikcelaks/keyboard_layouts/blob/main/magic...
    • Ich setze vor Aliase Zeichenkombinationen wie kk, zz, qq, die selten am Anfang von Wörtern oder Variablennamen vorkommen.
      Zum Beispiel ist qqme meine 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.
    • Ein sinnvoller Kompromiss könnte sein, nur für die häufigsten Wörter Abkürzungen zu verwenden und den Rest über Fuzzy Search in einem einfachen GUI-Popup zu suchen und einzufügen.
    • Wenn man mehrere Sprachen verwendet, dürfte es deutlich weniger nutzbare Kürzel geben.
      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

    • Ich habe ziemlich viel Zeit damit verbracht, in der erzeugten Autokey-Konfiguration die Behandlung von Trennern richtig hinzubekommen.
      Die feinste Ausnahmebehandlung betrifft .py. Normalerweise ist . ein Trenner, aber vor py ist 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

    • Ich habe einen Prototyp mit einem ähnlichen Konzept gebaut. Man kürzt nach Belieben ab, und ChatGPT korrigiert es jeweils hinter jedem Satz
      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