This is actually “kind of” what https://www.typequicker.com/practice does in the SmartPracrice mode.
Try one practice session - see the stats we measure for each text. Each character, every mistype, every millisecond for bigram/trigram, speed and accuracy per hand/fingers, etc.
This is aggregated and we identify weak points over time this way. Then using those weak points we create natural practice text
Spent wayyyy too much time diving deep into building out this algorithm lol. But it works fairly well