home icon indicating copy to clipboard operation
home copied to clipboard

扩展词库同步与词频问题

Open ws051682 opened this issue 3 years ago • 6 comments

在使用五笔输入的过程中,很多人不希望使用动态的词库(也不希望动态调整词频),因为那样会降低输入效率。

因此我使用了

#wubi86.custom.yaml
patch:
  translator/enable_user_dict: false		# 关掉用户词典,防止自动造词和调整词频
  translator/dictionary: wubi86.extended	# 调用外接词库

并使用

#wubi86.extended.dict.yaml
import_tables: 
  -wubi86

# 下方是我的扩展词库
一个词	gwzn	1 	#词频为1的使用起来没有问题
现有	gmde	0 	#“现有”是标准库中也有的词,想通过调整词频为0来删除侯选,但是这个方法行不通

来管理我的扩展词库,并通过它进一步导入标准词库。但是在使用的过程中,发现还是有两个问题困扰我:

  1. 使用扩展词库的话,多设备之间同步是不会同步扩展词库的,有没有什么办法实现同步?

个人想到的办法是,能否开放用户词库,但是强制手动方式进行维护?

  1. 标准词库中有个别出错的,或不想要的词条。可以在扩展词库中调整词频到1,来确保它出现在重码的最后一个位置。但是我无法在扩展词库中调整词频到0,以确保它不出现在候选列表。(虽然可以直接修改标准库,但修改标准库相当于创建了一个分支,不利于标准库的维护)

请问上述两个问题有没有办法处理?或者会不会在以后的版本中改进? 万分感谢!

ws051682 avatar May 27 '21 09:05 ws051682

​既然是手動方式維護,那麼機器就無法自動合併出現差異的各個終端版本。Rime對用戶寫的YAML文件只做備份,也就是這個原因。因此對於第一個問題,也只能手動干預同步。您可以使用git等版本控制工具管理個人的配置和詞庫源文件。

要精確控制候選來優化詞庫,不如自己維護一份完整的詞庫,不然太複雜了,也無法通過文件直觀地觀察最終的結果。

lotem avatar Jun 04 '21 06:06 lotem

​既然是手動方式維護,那麼機器就無法自動合併出現差異的各個終端版本。Rime對用戶寫的YAML文件只做備份,也就是這個原因。因此對於第一個問題,也只能手動干預同步。您可以使用git等版本控制工具管理個人的配置和詞庫源文件。

要精確控制候選來優化詞庫,不如自己維護一份完整的詞庫,不然太複雜了,也無法通過文件直觀地觀察最終的結果。

多谢回复,目前我觉得GIT应该确实是最好用的一个办法。我也理解各客户机无法同步各版本差异的情况。 但是如果能把用户词库的自动造词关闭,并有手动在用户词库造词的功能。是不是就能完美解决这个问题呢?

ws051682 avatar Jun 04 '21 11:06 ws051682

在使用五笔输入的过程中,很多人不希望使用动态的词库(也不希望动态调整词频),因为那样会降低输入效率。

因此我使用了

#wubi86.custom.yaml
patch:
  translator/enable_user_dict: false		# 关掉用户词典,防止自动造词和调整词频
  translator/dictionary: wubi86.extended	# 调用外接词库

并使用

#wubi86.extended.dict.yaml
import_tables: 
  -wubi86

# 下方是我的扩展词库
一个词	gwzn	1 	#词频为1的使用起来没有问题
现有	gmde	0 	#“现有”是标准库中也有的词,想通过调整词频为0来删除侯选,但是这个方法行不通

来管理我的扩展词库,并通过它进一步导入标准词库。但是在使用的过程中,发现还是有两个问题困扰我:

  1. 使用扩展词库的话,多设备之间同步是不会同步扩展词库的,有没有什么办法实现同步?

个人想到的办法是,能否开放用户词库,但是强制手动方式进行维护?

  1. 标准词库中有个别出错的,或不想要的词条。可以在扩展词库中调整词频到1,来确保它出现在重码的最后一个位置。但是我无法在扩展词库中调整词频到0,以确保它不出现在候选列表。(虽然可以直接修改标准库,但修改标准库相当于创建了一个分支,不利于标准库的维护)

请问上述两个问题有没有办法处理?或者会不会在以后的版本中改进? 万分感谢!

您好,我和你使用了相同方案。不同的是我想使用自动造词功能,但一旦导入外部词库,用户词库便不会出现在候选词中,自动造词功能也无法使用。就是说,既无法使用之前的自造词,也无法自动新造词。 下面是我的配置:

# 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

目前基础词库、扩展词库、中英混输功能都正常,但是无法使用自动造词功能,之前的自造词也不会出现。我做过多次尝试,该功能始终无法正常,相同配置情况下如果不导入扩展词库则自动造词功能正常。 @lotem @Ace-Who 大佬帮忙看看有没有解决办法

feijie825 avatar Aug 17 '22 04:08 feijie825

如果能把用户词库的自动造词关闭,并有手动在用户词库造词的功能。是不是就能完美解决这个问题呢?

不能,因为同步时不知道怎么自动合并两份手动管理的用户词库。如果接受程序自动合并的结果,那也就等于承认动态管理词条的排序。

lotem avatar Aug 17 '22 05:08 lotem

@feijie825 你需要在translator/dictionary指定的词典里配置encoder/rules才能按照编码规则造词。因为你在方案里使用了一个不同的词典,跟名为wubi86词典没有关联,因此也不会访问wubi86的用户词典。

lotem avatar Aug 17 '22 05:08 lotem

@feijie825 你需要在translator/dictionary指定的词典里配置encoder/rules才能按照编码规则造词。因为你在方案里使用了一个不同的词典,跟名为wubi86词典没有关联,因此也不会访问wubi86的用户词典。

嗯,我明白了,这里配置是我拷贝网络的。他注释 wubi86 词典“#这个是默认使用五笔词库,没事别删”,其实这里 wubi86 是输入法自带的固态词典对吗?并不是真正的用户词典?我把这一项当作是输入法的用户词典了。

而且我如果不引入扩展词库,自动造词功能便一切正常,其中的机制是什么?不引入扩展词库,便默认启用/访问用户词典?

feijie825 avatar Aug 17 '22 05:08 feijie825