Abgesehen vom Fehler für die Zeitberechnung finde ich im CSV (und
Quelltext) auch keycombo verständlicher als key (was ich als einzelne
Taste interpretieren würde, auch wenn es der Schlüssel für das
dictionary sein könnte, ja).
Daher mein patch im Anhang. Anwenden in Ordner mit dem Skript mit
patch -p0 <neo_ngram_duration_logger.patch
Grüße,
Erik
El 20/8/25 a las 0:35, Erik del Toro Streb escribió:
Ich habe das Skript kurz überflogen (nicht mit LLM, kein Vertrauen).
Kann es sein dass in Zeile 133 ein Fehler steckt?
key_buffer[-2] + "→" + prev_key
existiert doch gar nicht im dictionary. Die Variable wird doch wie
folgt zusammengesetzt in Zeile 127:
bigram = prev_key + key_str
Der Pfeil kommt nicht vor, nur in der Printausgabe in Zeile 124.
Grüße,
Erik
El 19/8/25 a las 21:29, Florian Thaler escribió:
Ich mache mit. :-D
Freut mich, dass einige Leute motiviert sind! Umso mehr von uns
mitmachen, umso repräsentativer wird die Statistik letzten Endes!
Sicher kennt ihr noch andere Neo-Leute über irgendwelche Chaträume,
fragt gerne auch die, ob sie mitmachen wollen! :)
Da ich mir das Python-Skript anschauen kann, kann ich auch
nachprüfen, ob da für mich unangenehme Daten gesammelt werden.
Das finde ich einen sinnvollen Ansatz, schaut euch das Skript gerne
an und jagt es durch ein LLM eurer Wahl, um es zu prüfen. Ich habe
mich bemüht, es möglichst privatsphärenrespektierend zu gestalten.
Falls Feedback aufkommt immer her damit, oder als Pull Request
hierher: https://github.com/Glitchy-Tozier/neo_ngram_duration_logger
* Idealerweise startet man das Skript am Anfang langer
Schreibsessions und vergisst dann temporär, dass es läuft
(=natürliches Schreiben, nicht von eigenen Vorstellungen übers
Schreiben beeinflusst).
* Für Windows musste ich eine andere Tastenkombination zum Stoppen
einbauen, weil ... es einfach nicht anders wollte. Auf Linux geht
wie immer CTRL+C zum beenden des Programms.
* Verwendung: Im Ordner, in dem die Dateien liegen Terminal öffnen
und folgendes machen:
pip install pynput
python neo_ngram_duration_logger.py
* Als letztes möchte ich noch anmerken: Man müsste grundsätzlich
auch noch diskutieren, ob Schreibdauer denn immer eine
Gedankenpause darstellt. Auf einer Tastatur, die "mpf" schwierig
zu schreiben macht, stellt die längere Dauer dieses Trigramms ja
z.B. einfach höhere Schwierigkeit dar.
* Falls es keine Bugs im Programm auftauchen würde ich das
Experiment einfach mehrere Wochen laufen lassen, und danach dann
die Daten zusammensammeln :)
Liebe Grüße,
Florian
_______________________________________________
Diskussion mailing list [email protected]
To unsubscribe send an email [email protected]
_______________________________________________
Diskussion mailing list [email protected]
To unsubscribe send an email [email protected]
--- ../neotest/neo_ngram_duration_logger.py 2025-08-20 00:14:11.257769048 +0000
+++ neo_ngram_duration_logger.py 2025-08-20 00:40:53.331626517 +0000
@@ -130,7 +130,7 @@
# Trigram
if len(key_buffer) >= 2:
trigram = key_buffer[-2] + prev_key + key_str
- prev_bigram_interval = bigram_durations.get(key_buffer[-2] + "→" + prev_key, [0])[-1]
+ prev_bigram_interval = bigram_durations.get(key_buffer[-2] + prev_key, [0])[-1]
trigram_duration = prev_bigram_interval + interval
trigram_durations.setdefault(trigram, []).append(trigram_duration)
@@ -174,7 +174,7 @@
for row in reader:
if len(row) != 2:
continue
- key, durations_str = row
+ keycombo, durations_str = row
try:
# Convert string list back to list of floats/ints
durations = eval(durations_str) if isinstance(durations_str, str) else durations_str
@@ -183,14 +183,14 @@
except Exception:
continue
- combined_data.setdefault(key, []).extend(durations)
+ combined_data.setdefault(keycombo, []).extend(durations)
# Shuffle durations per key
rows = []
- for key, durations in combined_data.items():
+ for keycombo, durations in combined_data.items():
shuffled_durations = durations[:]
random.shuffle(shuffled_durations)
- rows.append([key, shuffled_durations])
+ rows.append([keycombo, shuffled_durations])
# Shuffle rows to further hide sequence info
random.shuffle(rows)
@@ -199,7 +199,7 @@
combined_path = os.path.join(output_dir.split("/")[0], combined_filename)
with open(combined_path, 'w', newline='') as f:
writer = csv.writer(f)
- writer.writerow(["key", "durations"])
+ writer.writerow(["keycombo", "durations"])
writer.writerows(rows)
print(f"Combined file saved: {combined_path}")
_______________________________________________
Diskussion mailing list -- [email protected]
To unsubscribe send an email to [email protected]