Open Arithmetics opened 4 years ago
Interesing idea! I will keep this in mind for the future.
To expand upon this, not only could we have a list of all the most incorrectly typed words, a list of all the words that you type the slowest would also be very useful. Unsure of the feasibility of this though.
FYI I'm thinking about a general list, not a list specific to only the currently done test.
Each char and each word (up to like the top 1000?) could have associated with it a miss rate and an avg time-to-type (in ms).
chars = {'a':{'miss-rate':0.04, 'avg-time':60},...}
words = {'the':{'miss-rate':0.11, 'avg-time':180},...}
These dicts could then be plotted somewhere on the user's profile. Two new funboxes for practicing these commonly missed chars and words could then be added.
It'd be nice if this took into account things you missed in other funboxes such as ascii. That would be my primary use of it - practicing my most missed chars in ascii.
Disappointing that this is files as Low Priority, as I think it would be a very effective way of improving my speed and accuracy from using MT. As it is, I feel MT is better at benchmarking speed and accuracy rather than the best way to improve it.
@eggbean @Arithmetics I'm interested in this too. As it's an open source project, there is nothing stoping you or I raising a PR and adding the feature - other than Miodec approving it. Share your thoughts with me on what the minimal viable functionality for this feature would be.
I like the idea of a list of mistyped words. Cap it at a reasonable amount and make it ordered, so new words being added pop older words you might no longer be mistaking off the list. Mistyped words contain the mistyped characters, so your getting char and words in one - although you wouldn't have stats on worst character or anything like that. If the list was ordered, and pulled more from the front, you'd be seeing more of the mistakes you've made recently.
Another thought would be giving mistyped words a score, +10 points when it's first added to the list, +3 points if it's already on the list, -1 point each time you type it with no mistakes. If the score reaches 0, it's removed from the list.
Let me know your thoughts and I'll look at it this weekend or next.
@RebonackAl I think what I had in mind is pretty much exactly what you describe. Sounds great, but I would imagine not easy to implement if MT is not already logging mistyped words.
Would be nice to see the progress (in speed and mistakes) in mistyped words (and letters) over time as well.
When it come to letters, I generally struggle with letter combinations such as "exq". Would be nice for the system to pick up on word combinations that cause the typo (i.e. the preceding 1 or 2 characters before the typo and look for other words in the dictionary with similar characters. And then build a test out of such words.)
I would love to contribute to this issue!
As discussed on Discord: assigning @kevinzhao07
To give an idea how it could look like, here are some examples from the ecosystem.
keybr.com shows overall mistyped keys as a visualization:
ZSA Oryx training tool shows per-lesson stats:
I think a collection of successful hit rates over time per-letter would be amazing.
Here are more examples from https://tipp10.de
I like the overview of characters with the split between target errors (should have been pressed) and errors (was wrongly pressed)
I like the target error / actual error / frequency / error rate stats. Something to consider @kevinzhao07
Hey Miodec, Because my school has ended, I'm no longer working on the project. You can remove me from the assignment now, thank you.
Kevin M. Zhao The University of Michigan | Class of 2022 Computer Science | Economics | College of Engineering @.*** | (917) 637-0775
On Sat, May 8, 2021 at 10:19 PM Jack @.***> wrote:
I like the target error / actual error / frequency / error rate stats. Something to consider @kevinzhao07 https://github.com/kevinzhao07
— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/Miodec/monkeytype/issues/44#issuecomment-835632968, or unsubscribe https://github.com/notifications/unsubscribe-auth/AMEHBT3LIMDGITYXYETHRPDTMXWJXANCNFSM4NHDDNYQ .
Mio I would love to work on this issue. Can you assign me?
Thanks, Rizwan Mustafa.
I like the idea of somewhat doing what keybr.com does and using:
This application generates random but readable and pronounceable words, using the phonetic rules of your native language. These words look almost natural, and often are. Typing sensible text is much easier than repeating random letters, and it helps you remember frequent key combinations. The latest point is crucial. For example, it’s almost impossible for the letter ‘W’ to follow the ‘Z’ in English, and you will never type such a combination in this application. Instead, you will type more common words, such as «the,» « that,» «with,» and so on. Soon you will learn how to type the «th» combo really fast.
The words are generated from the letters which are selected using the following rules. https://www.keybr.com/help
This helps with practicing words that are "misspelled" while focusing on letters that are commonly missed according to each user. It would also show stats and progress over time.
I would like to work on this issue. I think we can start of simple and scale this up as we go
The first iteration would probably involve storing the mistyped words in the past x tests. Then we have a practice mode where we can type only the top x mistyped words (practice-words.ts in the FE already implements part of this, we just need to tell it which words to use.)
I propose we store mistyped words in an array for each test, and we store the past x tests in the db.
if we assume on average there are 10 mistyped words per test and we store the past 50 tests, there will be 500 strings to store for each user. Is this a realistic possibility? 500 should not be too bad right?
We can then build 1 array of all mistyped words and we use a hashmap to count the occurences. This can be done in O(n) time, where n is the total number of words (https://www.geeksforgeeks.org/find-winner-election-votes-represented-candidate-names/)
After that we can start also recording the speed of each word we can probably just record the mean and st dev for each word, and sample the words via a normal distribution
@nocommentcode If we store the data for such a short period, maybe we could store it in the browser's localStorage?
I would like to work on this issue. I think we can start of simple and scale this up as we go
Sorry, I don't wanna assign anyone to this issue. I wanna do this a very particular way
I know this isn't fancy feature like million themes to chose from, but really useful one. Pls do not let it wait another 2 years.
@Miodec I want to contribute to Monkey type, I am its active user and would love to contribute but as a beginner in open source I am unable to contribute much anywhere. I need some mentor to help me.
I would learn anything required to contribute, just please tell me how to do that. I would like to work upon this feature but where to start and how. Please help me out.
Out of curiosity, any updates on this? I arrived here when searching for such feature as a user, it is really missing in order to improve. I used it all the time with keybr, however keybr doesn't support another language I want to practice so switched to monkeytype and really miss the ability to know what keys I need to focus on in order to improve.
Hi, as a user I am also interested in having a list of top 20 (or so) mistyped words so that I can practice. I came here from keybr as I needed to be able to practice British English spelling for words. Thanks for your hard work!
I would also absolutely love this feature, currently I use keybr.com to train my weak spots, but this would make (my) monkeytype experience so much better to have it all here.
I would imagine this should also include things like bigrams
Expanding on the idea, I would like to have overall statistics across words - perhaps limited to top N for sanity. My use case is that I am interested in finding statistical correlations between certain word (speed, accuracy) and analyzer metrics for that word (e.g. ngram type distribution).
With a tool like this, it would be very easy to gather a large corpus of data for evaluating how the different analyzer metrics should be weighted (and ultimately using that data to generate a custom layout).
track which words i mistype the most and maybe the word behind it. create a special typing test made of these words so i can practice