Skip to content

tumuyan/Dict-Trick

Repository files navigation

Dict Trick

这是一组方便处理词库的工具

目前已经完成初步整理的有:

Clean

用于过滤词库中的废词,完成简繁转换,用于中文输入法使用。针对wiki词条和萌娘百科词条做了精准优化和大量测试。处理过程并非直接使用黑名单/正则进行匹配。

  • 一定程度上保留了中英文混合词条
  • 统一调整-``·等符号
  • 从空格、标点切分词条
  • 切分和抛弃大量含序号/数字/数量词的词条,包括但不限于①⒛Ⅰⅻ甲
  • 切分和去除大量非常见汉字的词条
  • 去除部分过短的词条
  • ...

DumpMoeGirl

用户dump萌娘百科的词库,并调用Clean工具完成处理

UserDBClean

rime系列输入法同步用户词库时,会生成userdb.txt格式的用户词库同步文件。
使用此工具可以对用户词库文件切割、分析、整理。

基本逻辑

通过与原词库文件对比,可以根据特征对同步文件的内容进行分类:

  1. 词条在白名单中,直接不处理(本次对文件处理后的文件,下次当作白名单文件,可以降低人工处理的工作量)
  2. 词库中有这个词,并且编码相同(不需处理)
  3. 词条和编码与黑名单完全一致,直接忽略
  4. 词条和编码符合黑名单正则规则,输出到单独的文件
  5. 词库中有这个词,但是词条编码不同,说明有错误的输入习惯,或者可能词库有错误的编码
  6. 词库中没有这个词,说明词条是自造词
    对自造词按c值排序,可以再次筛选结果
    1. 低频词,可能是错误的造词,需要确认并删除,避免后续打字出现错误的书写
    2. 高频词,可能需要加入词库中
    3. c=-1,可以直接删除而不输出到文件

经过分类后可以删除原同步文件和userdb文件夹,放置修改后的文件,执行同步

参数说明

此工具和前两个参数有较大差异,特做说明(同样可以把这些参数写入config文件,并用-c参数调用):

-input                 待处理的文件
-count-group a:b:c:d   按照频率对词条分组,abcd为冒号分割的递增的数字,设定了分组内词条的c值最大值。可以最多分10组。推荐参数 0:3:8:20
-refer                 原方案中的词库文件
-blacklist             黑名单词条所在的文件(使用词条和编码匹配)
-blacklist-regex       词条和编码的正则匹配规则,匹配的词条单独输出到一个文件
-whitelist             不处理的词条所在的文件(只使用词条本身匹配,不比较编码)

使用方法

  1. 下载或者build jar文件
  2. 下载opencc (由于java具有跨平台性,而opencc本身就是跨平台的,理论上Linux也可以使用这个工具)
  3. 根据需求编辑opencc的简繁转换配置文件
  4. 根据需求编辑废词文件
  5. 根据需求编辑配置文件,仓库中的config.txt是一个示例,已经备注了使用的参数(配置文件可以是任何名称)
  6. 使用命令 java -jar DumpMoegirl.jar -c config.txt 来调用配置文件完成爬虫任务
    使用命令 java -jar Clean.jar -c config.txt 来调用配置文件完成纯文本词条过滤任务
    使用命令 java -jar UserDBClean.jar -c config.txt 来调用配置文件完成纯文本词条过滤任务
  7. 当然也可以不使用配置文件,直接在命令行内输入所需参数
  8. 词库处理程序运行结束,名称为.dict.txt没有额外后缀的文件为最终文件。如果没有使用-less-output参数,可以得到转换过程产生的其他文件,可以用于进一步分析和改善。 同步文件处理程序运行结束,输出一组分离的文件,方便手动分析和处理; 同时也自动输出一个名称为.auto_output.txt的合并文件,自动删除了黑名单匹配到的词条,如果有count-group参数则自动删除第一组。

附言

我在使用此工具以及深蓝词库转换工具持续更新萌娘百科、维基百科的rime词库文件,但是由于你并不一定使用了和我相同的配置文件和相同版本的软件,会导致转换的结果可能存在差异。

转换结果和部分配置文件在我的仓库中: