Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

詞典共享計劃 #5

Open
lotem opened this issue May 9, 2018 · 6 comments
Open

詞典共享計劃 #5

lotem opened this issue May 9, 2018 · 6 comments

Comments

@lotem
Copy link
Member

lotem commented May 9, 2018

問題

「八股文」詞典及各部韻書缺少常用詞彙,尤其是

  • 最近幾年產生並廣泛使用的新詞
  • 極其高頻的詞組及固定搭配

用家持續使用輸入法,會在用戶詞典記下衆多新詞、缺詞,並按使用習慣調整詞頻,從而逐漸提升輸入體驗。然而這些屬於隱私數據,無法用於改善「八股文」及各部韻書,也無法安全地分享給其他用家。

共享計劃,以衆包的模式改進詞典,其關鍵是設計一套嚴密保護隱私數據、彙總、發現新詞、人工審查彙總結果的機制,並實現相關工具。

構想

這套工具鏈的第一環節是用家通過 GitHub 帳號訂閱一期詞典共享計劃。
分期的目的是每期之間可以更新流程及工具,變更分享內容,並使用不同的加密密鑰。
使用不同輸入語言(編碼方案)的用家可加入不同的共享計劃,或只參加八股文詞典共享。
將來這一概念可以擴展到共享專業\行業詞典,等等。

訂閱要求用家的用於參加分享用戶詞典積累了達到一定量的數據。訂閱後先由工具分析詞典內容,抽樣產生一份報表(可能包含新詞及詞頻相對於預設值有顯著更新的詞),呈用戶審閱(可手動刪除部份不願共享的內容,或重新抽樣)後,做雙層不對稱加密,將密文提交到該期共享計劃的資料庫。

第二環節,由執鍵人完成彙總。
在收集到大量用家提交的報表後,由當值執鍵人在安全操作環境中,持外層密鑰的私鑰對報表解除一層加密。執鍵人不持有內層密鑰。
這將使每條記錄的用戶識別碼(並非個人身份信息)、詞頻等字段可讀,而詞條內容(加鹽)仍受第二層加密保護。執行腳本彙總所有用家提交的資料,濾去使用人數、累計詞頻折算權重不足設定閾值的記錄,結果再次加密後,寫入另一資料庫。

第三環節,審覈團隊人工處理彙總結果。
審覈團隊必須排除當值執鍵人,並獨立設計本期共享計劃的記錄格式、加鹽算法,配製用於內層加密的密鑰。審覈團隊不持有外層加密的私鑰,因此只能解密查看彙總後的資料。
審覈團隊須排除惡意提交的記錄,分析、討論詞條及編碼的正確性,並確定有效記錄的歸屬。
例如,一份方言輸入方案的新詞記錄,除連帶編碼匯入所屬韻書外,屬於通用語的詞彙,另可去除編碼匯入「八股文」詞典。然而該方言特有的詞彙只應進入方言詞典。對詩詞、歇後語、專業術語、常用的固定搭配等也應考慮收集到專門的詞典。

第四環節,審覈後確定的更新內容,加密後推送給本期計劃訂閱者。
訂閱者提交一定數量的報表後,用家可獲得解密密鑰,以訪問本期計劃資料庫中已共享的內容。

第五環節,該期共享計劃結束後,在相應代碼庫發出 pull request,將所有 PR 鏈接記錄在共享計劃結果記錄頁(Issues)。

@sirlaurie
Copy link

願意加入

@lotem
Copy link
Member Author

lotem commented Jun 20, 2018

@netzrh 这里讨论的不是在线输入。

@soyaine
Copy link

soyaine commented Jun 13, 2019

@lotem 请问目前计划有更新进度吗?

@lemos1235
Copy link

小鹤音形词库有共享的吗?

@alswl
Copy link

alswl commented Oct 24, 2020

@lemos1235 小鹤音形库不是单纯的表码,还需要做一些代码逻辑调整。

@lotem
Copy link
Member Author

lotem commented Oct 24, 2020

哇,真是有趣的計劃。lotem的點子還真多呢。
不過想要實行,需要一個技術團隊。
還得完成一項先期任務:製作一個成熟的命令行(配方管理器)工具,先替代目前的腳本用作數據分發,再依託這一工具做數據共享。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants