home
home copied to clipboard
导入扩展词库后无法使用自动造词功能
使用五笔输入,导入搜狗扩展词库,使用中英混输(easy_en),同时希望使用自动造词功能。 但是一旦导入外部词库,自动造词功能就无法使用。就是说,既无法使用之前的自造词,也无法自动造新词。 下面是我的配置:
# wubi86.custom.yaml
patch:
translator/enable_user_dict: true # 用户词典开启/关闭、词序自动调频
translator/dictionary: wubi86_feijie # 载入扩展词库
__include: easy_en:/patch # 中英混输
easy_en/enable_sentence: false # 防止英文无意义带太极图案的词
---
# wubi86_feijie.dict.yaml
name: wubi86_feijie
version: "2022.07.16"
sort: by_wight
use_preset_vocabulary: true
import_tables:
- wubi86 #这个是默认使用五笔词库,没事别删
- wubi86_sougou_stand.extended #这个是搜狗标准库,以后别的词库也要这样输入进来才有效
...
# wubi86_sougou_stand.extended.dict.yaml
---
name: wubi86_sougou_stand.extended
version: "1.0"
sort: by_weight
columns:
- text
- code
- weight
- stem
encoder:
exclude_patterns:
- '^z.*$'
rules:
- length_equal: 2
formula: "AaAbBaBb"
- length_equal: 3
formula: "AaBaCaCb"
- length_in_range: [4, 10]
formula: "AaBaCaZa"
...
# 下面是扩展词库内容
啊啊啊 kkkb 1
阿埃二氏病变 bffy 1
阿埃二氏手术 bffs 1
阿埃二氏损害 bffp 1
阿埃二氏细胞 bffe 1
阿埃斯特兰德二氏手术 bfas 1
目前基础词库、扩展词库、中英混输功能都正常,但是无法使用自动造词功能,之前的自造词也不会出现。我做过多次尝试,该功能始终无法正常,相同配置情况下如果不导入扩展词库则功能正常。
自动造词和动态词序自动调频功能是否分离呢?比如,使用自动造词功能,但不使用词序自动调频功能。
未指定用户词典,默认与固态词典同名,如果要使用 wubi86
的用户词典,须定义 translator/user_dict: wubi86
。
造词规则应当在 wubi86_feijie.dict.yaml
中定义。
未指定用户词典,默认与固态词典同名,如果要使用
wubi86
的用户词典,须定义translator/user_dict: wubi86
。 造词规则应当在wubi86_feijie.dict.yaml
中定义。
感谢👍,这个问题困扰我好久!
定义 translator/user_dict: wubi86
后,之前的自造词就能够出现在候选词列表中了,我之前一直尝试添加 translator/dictionary: wubi86
原来是搞错了。目前无法造新词,应该和你说的造词规则相关。
下面便是添加造词规则相关问题:
- 造词规则是不是这些代码,我在中间文件和每个词典中单独都添加了:
# wubi86_feijie.dict.yaml
---
name: wubi86_feijie
version: "2022.07.16"
sort: by_wight
use_preset_vocabulary: true
encoder:
exclude_patterns:
- '^z.*$'
rules:
- length_equal: 2
formula: "AaAbBaBb"
- length_equal: 3
formula: "AaBaCaCb"
- length_in_range: [4, 10]
formula: "AaBaCaZa"
import_tables:
- wubi86 #这个是默认使用五笔词库,没事别删
- wubi86_sougou_stand.extended #这个是搜狗标准库,以后别的词库也要这样输入进来才有效
...
# wubi86_sougou_stand.extended.dict.yaml
---
name: wubi86_sougou_stand.extended
version: "1.0"
sort: by_weight
columns:
- text
- code
- weight
- stem
encoder:
exclude_patterns:
- '^z.*$'
rules:
- length_equal: 2
formula: "AaAbBaBb"
- length_equal: 3
formula: "AaBaCaCb"
- length_in_range: [4, 10]
formula: "AaBaCaZa"
...
# 下面是词库
啊啊啊 kkkb 1
阿埃二氏病变 bffy 1
阿埃二氏手术 bffs 1
阿埃二氏损害 bffp 1
# wubi86.dict.yaml
---
name: wubi86
version: "0.7"
sort: by_weight
columns:
- text
- code
- weight
- stem
encoder:
exclude_patterns:
- '^z.*$'
rules:
- length_equal: 2
formula: "AaAbBaBb"
- length_equal: 3
formula: "AaBaCaCb"
- length_in_range: [4, 10]
formula: "AaBaCaZa"
...
工 a 99454797 aa
了 b 1477224452 bn
#子 b 1477224451
以 c 418261033 ny
-
造词规则是否只能放在词典文件
*.dict.yaml
中?将造词规则放在wubi86.custom.yaml
应该不起任何作用吧? -
放在
wubi86_feijie.dict.yaml
中是否代表自造词放在扩展词库内了,还是仍然被放在用户词典内? 有一点想要强调一下,wubi86_feijie.dict.yaml
仅仅是一个中间文件,并还是真正的词库。我把造词规则放在这里合适吗? 使用扩展词库引入中间文件的话有三种组合,哪种是合适的?一是将造词规则放在中间文件wubi86_feijie.dict.yaml
中,二是只需要在中间文件引入的各个词典中添加,三是在中间文件和中间文件引入的各个词典中都需要添加? -
在此之前并没有定义
translator/user_dict: wubi86
,但如果不添加扩展词库,自动造词功能便一切正常,其中的机制是什么?不添加扩展词库,便会默认启用/访问用户词典吗?
造词规则只在 translator/dictionary
所指定的词典(固态词典的源文件 *.dict.yaml
)中配置,具体位置是 encoder
选项。通过 import_tables
导入码表,等效于将被导入的内容复制到本词典中(在统一的列顺序下),不会读取被导入码表的 encoder
配置。
只有用户词典会记录用户输入,所以自造词只能在用户词典中。
对于最后一个问题,关键信息在上次的回复中——用户词典默认与固态词典同名:所以对于原方案,translator/user_dict: wubi86
是可以省略的。当修改固态词典的名称后,用户词典也自动变更名称,所以翻译器将不再访问原来的用户词典 wubi86
,除非明文定义之。
造词规则只在
translator/dictionary
所指定的词典(固态词典的源文件*.dict.yaml
)中配置,具体位置是encoder
选项。通过import_tables
导入码表,等效于将被导入的内容复制到本词典中(在统一的列顺序下),不会读取被导入码表的encoder
配置。只有用户词典会记录用户输入,所以自造词只能在用户词典中。
对于最后一个问题,关键信息在上次的回复中——用户词典默认与固态词典同名:所以对于原方案,
translator/user_dict: wubi86
是可以省略的。当修改固态词典的名称后,用户词典也自动变更名称,所以翻译器将不再访问原来的用户词典wubi86
,除非明文定义之。
十分感谢大佬!解释的清晰明了👍
现在功能全部正常,但候选里面出现很多繁体词组,这个有办法避免掉吗?
比如我打”造词“,会出现下面这些: 其中3、4、5、6、7这几项不是我期望的,需要的是简体词组。
“詞”在固态词典 wubi86
中;“造詞”选中让它上屏一次以后,在导出的用户词典文本中可以搜索到;“德慶”在任何一个词典中都不存在,却也出现在候选字当中。