An alternative (more objective) Scoring System #260
Replies: 9 comments 26 replies
-
I wanted to try out what optimal layouts would result based on this alternative score when using @Glitchy-Tozier's script. But as it turned out unfortunately, the score is not directly transferable into this script. While the duration for the transition and the writing of the 2nd position can easily be entered, I don't know how one could consider the duration of the first letter. [Edit 13.3.2022:] But this total duration of a biPos connection would then have to be included in the bigram score calculation as the reciprocal value. And we can't just take the reciprocals of the two values and add them together, because "1/a + 1/b ≠ 1/a+b". |
Beta Was this translation helpful? Give feedback.
-
Hello @Glitchy-Tozier, Thanks, |
Beta Was this translation helpful? Give feedback.
-
Hi @Glitchy-Tozier, thank you for the quick reply. Would it be doable to add a setting within the script defining, whether der script-internal scoring is used or a script-external scoring given in an external file... ... let's say a subfolder "extra_scores" in 8vim_keyboard_layout_calculator-main/ ... and a file "extra-score-1.txt" containing the scoring information for all 1024 Pos-Pos-Connections like this AA 1,47324352124221 or L1-2_L1-2 1,47324352124221 ... whatever better fits the needings of the script. I could e.g. shift "my Positions" in a way that A is the first letter (A = 0) and so on. Btw., I think I do not understand the concept of pull requests - what would I need to do for that. Last time you wrote PR I was thinking this means Personal Response ;-) [Edit] 3-3 1,47324352124221 |
Beta Was this translation helpful? Give feedback.
-
Hello @Glitchy-Tozier, thank you for your great support. I really appreciate this and I know that so much support is not something to take for granted. Attached you will find a zip file with the following content (--> score-lists.zip):
I hope that this new score also provides really good layouts (although I'm not sure about that yet). If we have several good layouts, we can then include the diacritical marks in the overall scoring. But i wouldn't bother with the script for that. For that, an excel-based approach might be easier to handle. By the way, I am the guy with the LO calc script that generates passable layouts using the non-linear solver (they are all better than the original 8pen layout). But the quality is not at all comparable to that of your layout generator. kjoe |
Beta Was this translation helpful? Give feedback.
-
You are just great, @Glitchi-Tozier - I was only able to give everything a quick try because currently I'm not at my own PC. The script works wonderfully - I even have the impression that it is now a bit faster. As far as I can tell now, I also need to adapt my score - I was not satisfied with the first layouts. Fortunately, it seems to improve dramatically when I scale the individual scores so that they are distributed over the entire spectrum between 0 and 1 (currently the lowest value is 0.382) - so more "punishment" for unfavorable connections is obviously helpful here. Maybe tomorrow I can present german layouts based on the new score, so you can get an impression of it. kjoe |
Beta Was this translation helpful? Give feedback.
-
You are right, the scoring system does not care about rotation. As far as the writing experience is concerned, I can't see any preference at the moment. I have already thought about whether we could use more objective criteria in this case, e.g. in what percentage there are full stops or also taking in account diacritic letters. Since the "new score" is based purely on writing time, it might be possible to improve it by adding penalties for full-stops. I already tried that (but before you corrected your script) and ended up with very strange layouts with empty spaces in the 3rd layer. Unfortunately I'm abroad for the next few days, so I won't have much time to try out new solutions and ideas for the rest of the week. |
Beta Was this translation helpful? Give feedback.
-
Hello all (and of course also @Glitchy-Tozier), I've tried different score variations in the meantime and have to say that despite different results, there hasn't been one where I could say that one of them feels like the right one. I got the impression that larger differences in the individual score numbers within a layer may lead to less fluent results. Therefore, I wanted to try out what happens if I don't consider the flow at all and only use the duration of the individual letters for the score (as measured by myself). In doing so, I unfortunately ran into a problem: the script starts with the 1st cycle and gets stuck after the first layer (even though pypy3 keeps running in the background). I suspect this has to do with the fact that there might not be a "best layout" for layer 1 if all positions have the same score. This can be worked around by slightly changing the numbers in the score list. But then there will be the same getting stuck when layer 4 is calculated. If I make the numbers sufficiently different (but as close as possible to the desired values) that the script just doesn't get stuck, I get results that are not inferior to a more complex score and for me even feel better. Have we made a mistake in thinking about scoring? Is it perhaps the case that the letters are distributed most optimally according to their frequencies if they are not influenced too much by complex scores? The getting stuck can be reproduced, at least for me, if you use the score "KJOETOM_SCORE_LIST_2" from this score list (score_lists.py.zip). I would be happy if the cause of the script getting stuck could be fixed. By the way, the script now seems to run faster again - thank you for that. kjoe ;-) |
Beta Was this translation helpful? Give feedback.
-
The script getting stuck is now fixed. Thanks for that. kjoe |
Beta Was this translation helpful? Give feedback.
-
Hello again everyone, I think I've finally managed to find a score that matches my expectations. This new score is still based on the Duration of the Bi-Positions (= writing time for two-position-combinations), but in addition it also accounts for different movement qualities when writing these Bi-Positions. "bad" Position-Connections are:
"good" are all the other Position-Connections. For the new score the inverse Duration of the Bi-Positions is used. Therefore, Bi-Positions with longer writing times result in smaller values. These values are then scaled down depending on whether it is a "good" or "bad" connection to maximally reach a value ... This procedure ensures that bad connections always have lower scores than good connections and that no overlaps can occur which in the past score versions seemingly was the reason for completely distorted "best layout results". So, based on the duration times I've measured and calculated at the beginning of this thread (#260), one can calculate the new Score for any Bi-Position (two-position-combination) as follows:
The new score is included in a score list usable by the 8vim keyboard layout calculator of Glitchy-Tozier (#138 (comment)) |
Beta Was this translation helpful? Give feedback.
-
Hello
I have thought a lot about how to score layouts in the last few weeks and would like to share my thoughts with you. This post will probably be a bit longer and I hope that I don't annoy anyone with it or I would like to ask for your understanding in advance.
To create good language-specific layouts, we basically need 2 things. On the one hand, we need to know which bigrams occur in which frequency in a language (fortunately, these are available for some languages). On the other hand, we also need an evaluation of the writing movements as objectively as possible with respect to their speed and flow.
So far, we have included subjective assessments of how good or pleasant it is to "write" the motion sequences between the individual positions on the layout. In principle, this is a good approach.
However, the risk here is that small deviations in the judgments can potentially have a big impact on the final "best" layout.
The idea was therefore to develop a scoring system that is as objective as possible.
The following part of this paper will only deal with the connection between two positions on the 8-VIM layout, i.e. that part of the scoring which is independent of the languages and their bigram frequency. I would therefore like to call this part of the score the bi-position score (BiPos score) and clearly distinguish it from the final bigram score.
By the way, this is my definition of positions, which I will always refer to in the following:
The following criteria should be considered in the score:
My principle thought was: if we can describe the movements somehow mathematically, then we know the distances and so we can compare and evaluate all movement sequences with regard to their distances. But this was a mistake in my thinking (more about this later).
So I came up with the following model to be able to describe every movement with only 3 elements:
All letters or "written positions" start at one of the four black dots in the circle (α, β, γ, δ), then run outside the circle with a right turn (clockwise) or left turn, and end again at one of the black dots in the circle.
The transition from the first to the second position occurs inside the circle and can be described with the same three elements. However, it soon becomes clear that in addition to the pure path distances, there are also interfering factors that must be taken into account.
And this is how the model looks like:
There is nothing new at all. I just tried to put everything on a more objective basis and make it mathematically describable.
A position in layer 1 can be described with "ccc" or one in layer 3 with "cc IUI cc".
The bi-position connection "F-->T" (starting at the "γ" point) is therefore "ccc II cc IUI cc" or "7c + 4 I + 1U", respectively.
The bi-position connection "B-->C" (starting at the "α" point) is therefore "ccc ccc" or "6c", respectively.
(Obstacles of the transition are not considered yet in these examples.)
When I now checked how well the path lengths correlate with the actual writing times, it immediately turned out that I had made a mistake in thinking here. In practice, the 3 elements are obviously written at different speeds, which actually is not really surprising.
This now meant that I had to find out the actual duration of the elements by measuring numerous representative movement sequences in time and then correlating them with the elements.
But before you can do that, you have to think about the disturbances that can occur during the transition between the positions (inside the circle), so that you can include them in the correlation.
I came up with several variants and in the end one turned out to be useful. According to this, there are 2 interfering factors - rotation change and forced stop, which can occur in different combinations:
So there were 5 variables that went into the "mathematical model" (ok, that's kind of an exaggeration):
E.g. the full expression for the F-->T connection mentioned above in the model is "7c + 4 I + 1U + 0R +0F".
And the full expression for the B-->C connection would be "6c + 0 I + 0U + 1R + 1F"
I also specified 4 connection qualities, which must be reflected in the results as different durations. Bad connections must prove to be longer lasting than better ones. This was then also confirmed. The following graphic gives an overview of these 4 connection qualities (the black dashed line marks the end of the first position):
And these are the resulting times of the model:
The numbers are currently milliseconds, based on my own write speed. But for comparability, we'd need to think about some standardization (e.g., the duration of writing a particular connection). Also, we would need to use the reciprocals when multiplying by the bigram frequencies.
And for the positions/letters of the 4 layers, this results in the following 4 write durations:
And for the duration of the specified 4 connection qualities
Tabular overview for calculating the BiPos-Scores:
The BiPos score for the connection "F-->T", for example, is calculated as follows: 290.9 + 26.6 + 527.9 = 845.4 ms
The BiPos score for the connection "B-->C" is then: 290.9 + 309.3 + 290.9 = 891,1 ms
Beta Was this translation helpful? Give feedback.
All reactions