中州韻輸入法(rime)導入搜狗詞庫

rime是一個很是優秀的輸入法,linux平臺下的反應速度遠超搜狗,也沒有隱私風險。2012年開始接觸它,到後來拋棄了它,由於rime自帶的詞庫真的太弱了,也懶得折騰。最近發現一個詞庫轉換軟件叫 imewlconverter,因而發現rime導入其餘輸入法(好比搜狗)的詞庫其實還挺方便的。python

要導入詞庫須要兩個文件: linux

1. luna_pinyin_simp.custom.yaml 是配置文件

rime在部署的時候會自動加載。由於我用的是明月簡體schema,因此是這個名字。若是你用的是明月schema,那就是luna_pinyin.custom.yamlui

# luna_pinyin_simp.custom.yaml
patch:
# 指定自定義詞庫位置
  "translator/dictionary": luna_pinyin.sogou

2. luna_pinyin.sogou.dict.yaml 是詞庫文件

文件名是上面配置文件中設置的名字加上.dict.yaml後綴。內容是一個rime定義的文件頭加上轉換好的txt格式的詞庫:spa

將這兩個文件放置在rime的配置文件夾以後,點擊rime輸入法圖標的「從新部署」按鈕就能夠了。輸入「yxlm」會自動出現原來沒有的候選詞「英雄聯盟」。code

3. 怎麼生成這個luna_pinyin.sogou.dict.yaml

  • 首先安裝一下imewlconverter,怎麼安裝就不說了。
  • 而後下載搜狗的scel細胞詞庫到某個文件夾
  • 而後在這個文件夾寫一個批量轉換的python腳本(見最後)。
  • 而後運行這個腳本,就會用imewlconverter把全部的scel細胞詞庫文件轉換成一個txt格式的詞庫文件,並以自定義的文件名保存,而後添加rime定義的yaml頭。
  • 拷貝文件到rime配置文件夾。
#!/usr/bin/env python
# coding=utf-8

# ============================================================
# filename : convert.py
#  author  : chdy.uuid@gmail.com
# modified : 2019-09-11 15:39
# descrip. :
# ============================================================

from glob import glob
import os
import shutil

if not os.path.exists('./output/'):
    os.mkdir('output')

original_files = glob("*.scel")
print("---------------")
for of in original_files:
    if ' ' in of:
        new_fn = of.replace(' ', '_')
        print('rename "%s" to "%s"' % (of, new_fn))
        shutil.move(of, new_fn)
        of = new_fn
    print('>> ', of)
print("---------------")

original_files = glob("*.scel")
# print(original_files)

yaml_file = 'luna_pinyin.sogou.dict.yaml'

command='''imewlconverter -i:scel %s -o:rime "%s"''' % (str(original_files).strip('[]').replace(',', ''), yaml_file)
print(command)
os.system(command)

data = '''---
name: luna_pinyin.sogou
version: "1.0"
sort: by_weight
use_preset_vocabulary: true
# 此處爲擴充詞庫(基本)默認連接載入的詞庫
import_tables:
    - luna_pinyin
    - luna_pinyin.sogou
...

# 自定義詞語

'''
with open(yaml_file, "r+") as f:
     old = f.read()
     f.seek(0)
     f.write(data)
     f.write(old)

print("Now don't forget to copy the file to rime config folder (like ~/.config/fcitx/rime)")

https://www.jianshu.com/p/300bbe1602d4blog

相關文章
相關標籤/搜索