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

2015-03-19 13:22:19 +08:00
 anguslg
目前在用鼠须管输入法,各方面配置已经最贴近自己使用习惯了,唯一的不足是词库缺乏。


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

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

我又想到。對於拼音用戶,未命中時「手動觸發雲輸入」這個主意怎樣?
dofine
2015-03-19 16:47:51 +08:00
关注一下~ 作者本尊现身了 O(∩_∩)O
anguslg
2015-03-19 17:06:42 +08:00
@lotem 我就想能更新新词就好了
lonelygo
2015-03-19 17:06:49 +08:00
@lotem 隐私问题,代码是开源的,应该问题可以解决。需要考虑的是:
P2P“众筹”的方式组织词库,那么肯定有些辞汇是不愿意上传的,如何处理哪些辞汇愿意共享,哪些不愿意的问题;
lotem
2015-03-19 17:45:45 +08:00
@lonelygo 所以這個計劃有兩個要點:一是保證共享出去的新詞摘要無法解碼爲原文;二是嚴格在足已證明新詞已廣泛使用時「解密」其原文。
Daniel65536
2015-03-19 18:16:56 +08:00
@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
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
2015-03-19 18:23:35 +08:00
@lotem
一:我们公布了md5和部分的utf8码,这些数据是无法反过来快速推算原文字的。
二:只有收集某个特定词汇的足够数量的utf8碎片,我们才能推算出这个utf8码到底是什么。

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

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

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

“密码”有32个bits,假设用户分享3个bits(10%),运气最好的情况下8个用户分享特定位置的8*3=24个bits就能够解密了,也就是说至少8个用户都输入了一个字典中不存在的新词“密码”时,这个词才会被当成新词被发布。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/177979

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX