V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
anguslg
V2EX  ›  macOS

大家是如何扩充鼠须管输入法的词库的?

  •  1
     
  •   anguslg · 2015-03-19 13:22:19 +08:00 · 6029 次点击
    这是一个创建于 3544 天前的主题,其中的信息可能已经有所发展或是发生改变。
    目前在用鼠须管输入法,各方面配置已经最贴近自己使用习惯了,唯一的不足是词库缺乏。

    之前使用的是搜狗,积累了不少个人词库,这些词库目前也都已经导入到了鼠须管词库,但是相比不断增长的新词,仍然感到力不从心手动输入肯定不现实,不知道各位是怎么积累词库的?
    28 条回复    2018-11-21 22:06:58 +08:00
    wc0517
        1
    wc0517  
       2015-03-19 13:27:26 +08:00
    用到一定数量的新词以后别的就无所谓了,除非一些新出来的名词。
    anguslg
        2
    anguslg  
    OP
       2015-03-19 14:37:59 +08:00
    @wc0517 行业原因,经常需要输入这些新词
    Daniel65536
        3
    Daniel65536  
       2015-03-19 14:44:10 +08:00 via iPad
    @anguslg 这就是选择rime必须的结果啊。
    想要新词,就离不开各种云服务,自己破解输入法大厂的新词api这种邪路可不推荐。
    lonelygo
        4
    lonelygo  
       2015-03-19 15:10:33 +08:00
    用Rime就要走自力更生维护词库的这条路啊。
    或者
    定期搞定各厂商词库,深蓝一下。
    zhouzm
        5
    zhouzm  
       2015-03-19 15:53:49 +08:00
    不是能智能自动造词的吗
    lotem
        6
    lotem  
       2015-03-19 16:08:12 +08:00   ❤️ 1
    許不許歪樓。
    如果有個插件,實現聯網的協同輸入,或叫做衆包造網絡詞庫。會有用戶願意參加嘛。
    大意是:大家都往一個網上詞庫裏敲詞(有准入條件地),你聯入這個網絡,敲一個新詞的時候,也許能直接命中。
    前提:一通過一定技術手段保證只上傳大家都在用的新詞;二能有效防止作弊和破壞網絡詞庫的行爲。
    anguslg
        7
    anguslg  
    OP
       2015-03-19 16:13:19 +08:00
    @zhouzm 但是一些新词还是不能一击命中
    anguslg
        8
    anguslg  
    OP
       2015-03-19 16:15:51 +08:00
    @lotem 大部分使用鼠须管的用户,也都是因为之前爆出来的的搜狗收集隐私问题吧。如果有这个插件,如何保证别人能相信你?这个问题才是关键
    lotem
        9
    lotem  
       2015-03-19 16:28:14 +08:00
    @anguslg 如果開源這個插件的代碼,應該會有幫助吧。

    思路是:本地用戶新詞生成摘要上傳、服務器下發已挖到的新詞;服務器用摘要作統計,挖到有熱度的新詞後,再從用戶那裏索取原文。懂行的朋友說說這個思路可行否。
    anguslg
        10
    anguslg  
    OP
       2015-03-19 16:31:34 +08:00
    @lotem 不知道p2p的思想是否可行
    lotem
        11
    lotem  
       2015-03-19 16:37:18 +08:00
    @anguslg 有點意思。值得研究。

    我又想到。對於拼音用戶,未命中時「手動觸發雲輸入」這個主意怎樣?
    dofine
        12
    dofine  
       2015-03-19 16:47:51 +08:00
    关注一下~ 作者本尊现身了 O(∩_∩)O
    anguslg
        13
    anguslg  
    OP
       2015-03-19 17:06:42 +08:00
    @lotem 我就想能更新新词就好了
    lonelygo
        14
    lonelygo  
       2015-03-19 17:06:49 +08:00
    @lotem 隐私问题,代码是开源的,应该问题可以解决。需要考虑的是:
    P2P“众筹”的方式组织词库,那么肯定有些辞汇是不愿意上传的,如何处理哪些辞汇愿意共享,哪些不愿意的问题;
    lotem
        15
    lotem  
       2015-03-19 17:45:45 +08:00
    @lonelygo 所以這個計劃有兩個要點:一是保證共享出去的新詞摘要無法解碼爲原文;二是嚴格在足已證明新詞已廣泛使用時「解密」其原文。
    Daniel65536
        16
    Daniel65536  
       2015-03-19 18:16:56 +08:00 via iPad   ❤️ 1
    @lotem 一个简单的算法是这样的:
    目标词汇:“密码”
    我们公开这个词的md5:A8105204604A0B11E916F3879AAE3B0B……数值A

    我们再重新另外计算这个词的utf8编码:\u5BC6\u7801
    十六进制转化为二进制:0100 1110 1111 0110 0111 1000 0000 0001……数值X
    把这个数值和一个随机的二进制数进行与运算:比如1111 1111 1111 1111 0000 0000 0000 0000
    这样,我们就获得了0100 1110 1111 0110 0000 0000 0000 0000……数值B
    把这个数据也公布出去。

    现在,服务器收集所有A值是A8105204604A0B11E916F3879AAE3B0B的B,并且对这些B1、B2、B3进行或运算。当我们收集到足够的B之后,它们进行或运算就能获得最初的数值X,这个X所对应的“密码”一词的md5正好是A。
    这样,我们就可以把“密码”这个词公开了。
    lotem
        17
    lotem  
       2015-03-19 18:20:06 +08:00
    舉一個例子(P2P):

    某用戶甲有:
    ---
    我好帥 => 44a53c6
    我好衰 => d1cfd7f

    經過一段時間:
    ---
    44a53c6 × 100 users
    ....
    d1cfd7f × 1 user
    ....

    於是認爲 44a53c6 是個可以的解密的新詞的摘要。
    44a53c6 × 100 users
    這條信息在用戶乙同步時下發了,用戶乙的輸入法會發現用戶詞典裏有某個詞的摘要是 44a53c6,遂解密該詞(的一部分bits,以求保險,防止摘要衝突)。這時分享出去的是:
    ---
    戈女𠂤* 44a53c6 × 101 讚
    ....
    d1cfd7f × 1 讚
    ....

    許久遇不到新用戶的 d1cfd7f,可以考慮在某個時機捨去。

    最終流傳下去的是:
    ---
    我最帥 × N 多讚
    ....
    Daniel65536
        18
    Daniel65536  
       2015-03-19 18:23:35 +08:00 via iPad
    @lotem
    一:我们公布了md5和部分的utf8码,这些数据是无法反过来快速推算原文字的。
    二:只有收集某个特定词汇的足够数量的utf8碎片,我们才能推算出这个utf8码到底是什么。

    唯一的问题是我们没有办法防御恶意spam,恶意用户可以大量提交随意生成的B值,导致其他用户再多也不能推算出正确的X值来。

    另外,真正的算法中需要用sha256来当hash,也许要用utf16来代替utf8。
    lotem
        19
    lotem  
       2015-03-19 18:29:43 +08:00
    @Daniel65536 這個辦法好。

    生成摘要的算法一定要強,因爲可被截獲,所以要默認他是對所有人可見的。
    Daniel65536
        20
    Daniel65536  
       2015-03-19 18:59:59 +08:00 via iPad
    @lotem 用户可以自己设定自己的分享百分比,也就是一次会分享出去百分之多少的bit到服务器上,如果使用云词库,最少需要分享3.125%。

    “密码”有32个bits,假设用户分享3个bits(10%),运气最好的情况下8个用户分享特定位置的8*3=24个bits就能够解密了,也就是说至少8个用户都输入了一个字典中不存在的新词“密码”时,这个词才会被当成新词被发布。
    zhouzm
        21
    zhouzm  
       2015-03-19 20:27:26 +08:00
    不需要考虑解密的问题,只要判定某个md5或sha256达到热词标准,加入云端可上传列表,哪个用户优先更新到这个sha256,同时本机又存在这个热词,自动上传即可,当然也可以设一个开关,让用户决定上不上传。
    shyangs
        22
    shyangs  
       2015-03-20 01:07:26 +08:00
    @lotem
    讚數 方法有漏洞。

    要識別 100不同使用者,避免刷讚分,那每個使用者都要有獨立的ID. 因為如果沒有獨立ID的話,我愛刷幾個讚就直接定一個大數字發佈就是。如果ID是隨機生成 而非計算硬體資訊綁定的話,我就一直安裝反安裝刷隨機ID.

    既然有固定ID,這樣我就加入這個P2P網路,每天就在網路中收集 己解密的新詞、未解密的新詞hash、和使用者id.

    過一天,收集到新的解密的新詞,計算新詞的hash, 對比前一天和hash綁定的使用者id, 那我不就知道這新詞哪些使用者id會打。

    --------

    而 Daniel65536 與運算、或運算的算法,可以不記錄使用者id,但也無法防禦惡意spam.
    dearrrfish
        23
    dearrrfish  
       2015-03-20 02:30:47 +08:00
    @shyangs
    与硬件绑定的UID如何进行配置云同步?
    shyangs
        24
    shyangs  
       2015-03-20 11:39:44 +08:00
    @lotem
    Rime 的用戶數就有雲詞庫,也會被吐槽不如搜狗好用吧。

    應該加強靈活性、配置性 這些 Rime 的固有強項,比如提供插件系統。讓第三方開發者編寫插件。

    比如,羨慕搜狗/百度/QQ的詞庫,就編寫插件,插件每天連網下載,下載完自動編譯固態詞典,掛到指定的方案上。
    也不是只能連輸入法大廠,插件開發者也可以架一個Server,寫爬蟲每天爬微博熱搜榜,讓插件連這個Server下載新的微博熱詞,自動編譯自動掛載。
    Rime 官方想提供雲詞庫,一樣可以透過插件。有人不想上傳的詞彙(比如:自己和朋友的姓名),可以直接修改插件,弄一個黑名單。

    為降低插件編寫門檻,可以考慮編寫語言使用流行廣的腳本語言。
    lotem
        25
    lotem  
       2015-03-20 12:16:21 +08:00   ❤️ 2
    @shyangs 事實上,我有一個寫了一半的項目 lotem/rimekit ,是一個分發 Rime 配置的工具,把輸入方案、配色方案、各項設定用 JavaScript/Coffeescript 腳本寫成「配方」,在 rimekit 裏列表顯示,用戶勾選即可完成配置。這功能不需要在輸入過程中即時調用,所以不必做成插件,以保持輸入法本身簡單可靠。
    anguslg
        26
    anguslg  
    OP
       2015-03-20 17:35:11 +08:00
    @lotem 不知道搜狗的这个对词库有没有帮助
    http://www.sogou.com/labs/dl/w.html
    jprovim
        27
    jprovim  
       2015-03-23 04:47:25 +08:00
    @lotem

    直接開一個github repo每週更新詞組, 需要的直接下載詞庫即可.
    不用支持自動update, 不然就跟其他的輸入法沒有區別了.
    leopku
        28
    leopku  
       2018-11-21 22:06:58 +08:00
    🂡🂢🂣
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3022 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 00:13 · PVG 08:13 · LAX 16:13 · JFK 19:13
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.