monkeytypegame / monkeytype

The most customizable typing website with a minimalistic design and a ton of features. Test yourself in various modes, track your progress and improve your speed.
https://monkeytype.com/
GNU General Public License v3.0
15.96k stars 2.42k forks source link

Keep a list of most mistyped words / letters #44

Open Arithmetics opened 4 years ago

Arithmetics commented 4 years ago

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

Miodec commented 4 years ago

Interesing idea! I will keep this in mind for the future.

ghost commented 4 years ago

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.

ghost commented 4 years ago

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.

eggbean commented 4 years ago

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.

RebonackAl commented 4 years ago

@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.

eggbean commented 4 years ago

@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.

Orcomp commented 4 years ago

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.)

kevinzhao07 commented 3 years ago

I would love to contribute to this issue!

Miodec commented 3 years ago

As discussed on Discord: assigning @kevinzhao07

ahmetb commented 3 years ago

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:

image

ZSA Oryx training tool shows per-lesson stats:

image

I think a collection of successful hit rates over time per-letter would be amazing.

whnr commented 3 years ago

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)

grafik grafik

Miodec commented 3 years ago

I like the target error / actual error / frequency / error rate stats. Something to consider @kevinzhao07

kevinzhao07 commented 3 years ago

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 .

rizwanmustafa commented 2 years ago

Mio I would love to work on this issue. Can you assign me?

Thanks, Rizwan Mustafa.

doprz commented 2 years ago

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.

nocommentcode commented 2 years ago

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. image

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

nobergg commented 2 years ago

@nocommentcode If we store the data for such a short period, maybe we could store it in the browser's localStorage?

Miodec commented 2 years ago

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

rpost commented 2 years ago

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.

pandeyganesha commented 1 year ago

@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.

yanshay commented 1 year ago

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.

GitAlv96 commented 1 year ago

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!

eikowagenknecht commented 11 months ago

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.

Silverdev2482 commented 8 months ago

I would imagine this should also include things like bigrams

haasn commented 2 months ago

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).