rime / weasel

【小狼毫】Rime for Windows
https://rime.im
GNU General Public License v3.0
4.17k stars 528 forks source link

小狼毫用户由于误输入产生的自造词无法删除 #1283

Open robot741258963 opened 1 month ago

robot741258963 commented 1 month ago
          > shift+delete 呢

常用的组合+del都不行

Originally posted by @plainee in https://github.com/rime/weasel/issues/1191#issuecomment-2079015567

就像上一个issue所提及那样,

是的,一旦误输入一个词语,各种常用的组合键都无法把这个词语从词库中删掉,我试过唯一的办法就是把用户文件夹中的 方案.userdb文件夹删掉,但后果就是你的好多自造词什么的都没有了。

我认为对于用户词库的管理不便是小狼毫的一大硬伤。特别是 方案.userdb文件夹用户无法编辑,真是让人无法理解。

closure11 commented 1 month ago

在你的方案里搜索send: Shift+Delete,前面accept的内容才是输入的组合键。我的是Control+k

robot741258963 commented 1 month ago

在你的方案里搜索send: Shift+Delete,前面accept的内容才是输入的组合键。我的是Control+k

我用的是五笔/拼音混输, 总共与三个方案沾边, 好在方案代码不长, 整个贴出来你看看.

好像压根儿没您说的那个吧

举一反三, 我尝试去查找了weasel.yaml, 也是一无所获.

# Rime schema settings
# encoding: utf-8

schema:
  schema_id: wubi_pinyin
  name: "五笔·拼音"
  version: "0.9"
  author:
    - 發明人 王永民先生
  description: |
    五筆字型86版+漢語拼音混合輸入。
    碼表源自 ibus-table
  dependencies:
    - pinyin_simp

switches:
  - name: ascii_mode
    reset: 0
    states: [ 中文, 西文 ]
  - name: full_shape
    states: [ 半角, 全角 ]
  - name: extended_charset
    states: [ 常用, 增廣 ]
  - name: ascii_punct
    states: [ 。,, ., ]

engine:
  processors:
    - ascii_composer
    - recognizer
    - key_binder
    - speller
    - punctuator
    - selector
    - navigator
    - express_editor
  segmentors:
    - ascii_segmentor
    - matcher
    - abc_segmentor
    - punct_segmentor
    - fallback_segmentor
  translators:
    - punct_translator
    - reverse_lookup_translator
    - table_translator

speller:
  delimiter: " ;'"
  #max_code_length: 4  # 四碼頂字上屏

translator:
  dictionary: wubi86
  prism: wubi_pinyin
  enable_charset_filter: true
  enable_sentence: true
  enable_encoder: true
  encode_commit_history: true
  max_phrase_length: 4
  disable_user_dict_for_patterns:
    - "^z.*$"

abc_segmentor:
  extra_tags:
    - reverse_lookup

reverse_lookup:
  dictionary: pinyin_simp
  prefix: "`"
  suffix: "'"
  tips: 〔拼音〕
  preedit_format:
    - xform/([nl])v/$1ü/
    - xform/([nl])ue/$1üe/
    - xform/([jqxy])v/$1u/

#punctuator:
  #import_preset: default

key_binder:
  import_preset: default

recognizer:
  import_preset: default
  patterns:
    reverse_lookup: "`[a-z]*'?$"
# Rime schema settings
# encoding: utf-8

schema:
  schema_id: wubi86
  name: "五笔86"
  version: "0.21"
  author:
    - 發明人 王永民先生
  description: |
    五筆字型86版
    碼表源自 ibus-table
    敲 z 鍵進入拼音反查
  dependencies:
    - pinyin_simp

switches:
  - name: ascii_mode
    reset: 0
    states: [ 中文, 西文 ]
  - name: full_shape
    states: [ 半角, 全角 ]
  - name: extended_charset
    states: [ 常用, 增廣 ]
  - name: ascii_punct
    states: [ 。,, ., ]

engine:
  processors:
    - ascii_composer
    - recognizer
    - key_binder
    - speller
    - punctuator
    - selector
    - navigator
    - express_editor
  segmentors:
    - ascii_segmentor
    - matcher
    - abc_segmentor
    - punct_segmentor
    - fallback_segmentor
  translators:
    - punct_translator
    - reverse_lookup_translator
    - table_translator

speller:
  delimiter: " ;'"
  #max_code_length: 4

translator:
  dictionary: wubi86
  enable_charset_filter: true
  enable_sentence: true
  enable_encoder: true
  encode_commit_history: true
  max_phrase_length: 4
  disable_user_dict_for_patterns:
    - "^z.*$"

reverse_lookup:
  dictionary: pinyin_simp
  prefix: "z"
  suffix: "'"
  tips: 〔拼音〕
  preedit_format:
    - xform/([nl])v/$1ü/
    - xform/([nl])ue/$1üe/
    - xform/([jqxy])v/$1u/

punctuator:
  import_preset: symbols

key_binder:
  import_preset: default

recognizer:
  import_preset: default
  patterns:
    punct: '^/([0-9]0?|[A-Za-z]+)$'
    reverse_lookup: "^z[a-z]*'?$"
# Rime schema
# encoding: utf-8

schema:
  schema_id: pinyin_simp
  name: 袖珍简化字拼音
  version: '0.9'
  author:
    - 佚名
  description: |
    源自 Android 拼音
  dependencies:
    - stroke

switches:
  - name: ascii_mode
    reset: 0
    states: [ 中文, 西文 ]
  - name: full_shape
    states: [ 半角, 全角 ]
  - name: ascii_punct
    states: [ 。,, ., ]

engine:
  processors:
    - ascii_composer
    - recognizer
    - key_binder
    - speller
    - punctuator
    - selector
    - navigator
    - express_editor
  segmentors:
    - ascii_segmentor
    - matcher
    - abc_segmentor
    - punct_segmentor
    - fallback_segmentor
  translators:
    - punct_translator
    - script_translator
    - reverse_lookup_translator

speller:
  alphabet: zyxwvutsrqponmlkjihgfedcba
  delimiter: " '"
  algebra:
    - erase/^hm$/
    - erase/^m$/
    - erase/^n$/
    - erase/^ng$/
    - abbrev/^([a-z]).+$/$1/
    - abbrev/^([zcs]h).+$/$1/
    - derive/^([nl])ue$/$1ve/
    - derive/^([jqxy])u/$1v/
    - derive/un$/uen/
    - derive/ui$/uei/
    - derive/iu$/iou/
    - derive/([aeiou])ng$/$1gn/
    - derive/([dtngkhrzcs])o(u|ng)$/$1o/
    - derive/ong$/on/
    - derive/ao$/oa/
    - derive/([iu])a(o|ng?)$/a$1$2/

translator:
  dictionary: pinyin_simp
  preedit_format:
    - xform/([nl])v/$1ü/
    - xform/([nl])ue/$1üe/
    - xform/([jqxy])v/$1u/

reverse_lookup:
  dictionary: stroke
  enable_completion: true
  prefix: "`"
  suffix: "'"
  tips: 〔笔画〕
  preedit_format:
    - xlit/hspnz/一丨丿丶乙/

punctuator:
  import_preset: symbols

key_binder:
  import_preset: default

recognizer:
  import_preset: default
  patterns:
    # hack: to enable "/fh" style symbols, '/' must be mapped to a [list].
    # so those who have customized '/' for direct commit won't be affected by
    # this change.
    punct: "^/([0-9]+[a-z]*|[a-z]+)$"
    reverse_lookup: "`[a-z]*'?$"
closure11 commented 1 month ago

@robot741258963 我的这个配置在default.yamlkey_binder/bindings里,没有的话你自己写patch加一行应该也可以:

key_binder:
  bindings:
    - { when: composing, accept: Control+k, send: Shift+Delete }
robot741258963 commented 1 month ago

@robot741258963 我的这个配置在default.yamlkey_binder/bindings里,没有的话你自己写patch加一行应该也可以:

key_binder:
  bindings:
    - { when: composing, accept: Control+k, send: Shift+Delete }

谢谢, 在default.yaml里面确实找到了你说的, 但实际上没有什么用, 无论你按Control+k还是Shift+Delete, 你要删除的候选字依旧还在那里, 不离不弃.

bickman commented 1 month ago

我测试是没问题的,在用户配置目录创建:default.custom.yaml, 然后定义的快捷键: 屏幕截图 2024-06-05 054409 键入词组四维猴屏幕截图 2024-06-05 055637 control+K后,键入词组被删除: 屏幕截图 2024-06-05 055649

EVANGELION-Air commented 1 month ago

有相同问题,按照之前楼层所述,在default.custom.yaml中添加快捷键,也没有效果

robot741258963 commented 1 month ago

一旦误输入一个词语,各种常用的组合键都无法把这个词语从词库中删掉

你截个图给我看看,是什么自造词

无论你按Control+k还是Shift+Delete, 你要删除的候选字依旧还在那里, 不离不弃

到底是字还是词?

这是用五笔输入的 这套方案用到了如下方案: wubi_pinyin.schema.yaml wubi86.schema.yaml wubi86.dict.yaml pinyin_simp.dict.yaml pinyin_simp.schema.yaml

比如我要输入词语“怎么”,输入三级简码tht,但第一个候选词是“和睡”

至于“和睡”这个词的来源,我在wubi86.dict.yaml / pinyin_simp.dict.yaml这两个字典中都没有搜到,在wubi86.userdb.txt中找到了,所以我认为这是一个自造词,是由于某一次输入失误所创造的一个自造词。

image image

t ht 和睡 c=2 d=1.33121 t=478 enctkht 和睡 c=1 d=1 t=482

奇怪的是,wubi86.userdb.txt中,这个词语出现两次,编码还不一样

先展示一下我的配置,应该没有问题吧? image

下面展示删除自造词“和睡”

image

然后我无论是Control+Delete还是Control+k还是Shift+Delete, 对于这个词都是不起作用的。

如下图:

image

tiger326 commented 2 weeks ago

@robot741258963 我的这个配置在default.yamlkey_binder/bindings里,没有的话你自己写patch加一行应该也可以:

key_binder:
  bindings:
    - { when: composing, accept: Control+k, send: Shift+Delete }

谢谢, 在default.yaml里面确实找到了你说的, 但实际上没有什么用, 无论你按Control+k还是Shift+Delete, 你要删除的候选字依旧还在那里, 不离不弃.

我本来遇到了和你一样的困扰,因为经常打“Python”这个词,结果总是显示“屁眼通红”这么个奇怪的东西, 怎么都删不掉, 一度以为是rime的bug。 后面去词库里搜了一下。。居然还真有这个词,把词库对应词条删掉终于清静了。(雾凇拼音,cn_dicts\tencent.dict.yaml中)

roblues commented 1 day ago

有同样问题,莫名其妙解决了。 我的是小狼毫,在用户文件夹下面/build/luna_pinyin_simp.schema.yaml中是这样的 {accept: "Control+k", send: "Shift+Delete", when: composing} 我尝试了一下Ctrl+K,居然删除了,再试Shift+Delete,也可以了。

fxliang commented 1 day ago

可以导出用户词,如果前面已经是负数就已经删了。再显示出来似乎是 联想的包子出来的