mike-fabian / ibus-typing-booster

ibus-typing-booster is a completion input method for faster typing
https://mike-fabian.github.io/ibus-typing-booster/
Other
232 stars 16 forks source link

[ENHANCEMENT] Record frequency on correctly spelled words only #470

Closed sathieu closed 9 months ago

sathieu commented 12 months ago

Is your feature request related to a problem? Please describe.

I've installed ibus-typing-browser for my children who are learning words.

With record mode disabled, most of the suggested words are useless because previously typed words are not recorded.

With record mode enabled, words with wrong spelling are added and later suggested.

Describe the solution you'd like

Record only when last typed word is in dictionary.

Describe alternatives you've considered

Cleaning up the DB from time to time.

Additional context

mike-fabian commented 12 months ago

That is a very interesting idea!

Personally I sometimes want to record words which are not in dictionaries for special purposes. But not always, and even I probably want to only record words from dictionaries most of the time.

So maybe a new option

☑️ Record only words which are n dictionaries

would be good?

By the way, currently you can already manually remove unwanted suggestions from the database, the default key binding for this is

remove_candidate_1 ['Control+1', Control+KP_1', Control+F1']

Also, the database is cleaned up a bit already at each restart of ibus-typing-booster, a few entries which have not been used much and have not been used for a long time are removed. Currently there is a hardcoded limit of 50000 entries for the database, if that limit is exceeded, old entries (not used for a long time) are removed until no more than 50000 entries remain. On top of that, no matter how many entries there are in the database, 0.1% of oldest (least used) entries are removed immediately if they have been used only once and if they have been used more than once their usage count is cut in half. So mispelled entries will eventually fade out and disappear automatically althought that can take some time.

So maybe such a new option is a good idea.

sathieu commented 12 months ago

@mike-fabian Thanks for the detail.

Maybe the option can be named Record mode with the following possible values:

mike-fabian commented 11 months ago

There is already a checkbox option

☑️ Off the record mode

If that is checked, nothing is recorded in the user database. Maybe, I shoud change this option into a combobox options

Record mode [All | Dictionaries and user database | Dictionaries | Nothing]

Advantage:

Disadvantage:

I am thinking about the details how this should work.

mike-fabian commented 10 months ago

I have implemented a new combobox option “Record mode” now.

It chooses which words to record

0: Everything
1: Correctly spelled or previously recorded
2: Correctly spelled
3: Nothing

I left the existing option

☑️ Off the record mode

there for the moment. It works as it always did. Setting the new “Record mode” option to 3 and checking “Off the record mode” does the same thing so this seems a bit redundant. But the advantage is that one can still quickly toggle recording to off using “Off the record mode” with a keybinding and when toggling it on again return to the operation of the selected “Record mode” in the combobox option. I could hide the ☑️ Off the record mode and still make the keybinding to toggle “Off the record mode” work but I tend to think now that would just obfuscate things.

I could maybe remove the option “3: Nothing” from the combobox to remove redundancy…

On the other hand that redundancy doesn’t hurt.

As I added one more row to the options tab of the setup tool, I saved one row by putting the two buttons

[ Learn from text file ] [ Delete learned data ]

into the same row.

mike-fabian commented 10 months ago

Test builds of ibus-typing-booster-2.24.13 with the new feature are available for Fedora 38, 39, and rawhide here:

https://copr.fedorainfracloud.org/coprs/mfabian/ibus-typing-booster/builds/

and for openSUSE here:

https://build.opensuse.org/package/show/home:mike-fabian/ibus-typing-booster

Can you please test this?

Is the wording of the option values OK? Is the text of the tooltip shown when hovering with the mouse over the option OK?:

        self._record_mode_label.set_tooltip_text(
            _('Selects which kind of input should be recorded in the user '
              'database: everything, only correctly spelled words or words '
              'which have been previously recorded in the user database, only '
              'correctly spelled words, or nothing.'))
mike-fabian commented 9 months ago

New option is included in ibus-typing-booster 2.25.0: https://github.com/mike-fabian/ibus-typing-booster/releases/tag/2.25.0