看板 IME 關於我們 聯絡資訊
因為我的用詞不夠準確, 所以讀者還有疑問, 所以再補充這一篇文章. 相關文章會放置於下列網址: http://info.sayya.org/~cnoize/im/ Q: 不考慮字根與按鍵的配對,怎麼可能做的到? A: 答案的線索在前兩篇文章之中都提到了. 如果因為我的表達力不足, 因而讀者無法理解, 這種狀況是無解的. "不考慮字根與按鍵的配對" 是表示原理已經寫出來了, 所以不需要再重新思考這部分的"理論部分". 解答很簡單, 1. 每個字根都至少有一個鍵位, 而學習者並不需要 在乎每個鍵位有幾個字根. 假設全部 3200 個字根, A 有 2000 個, B 有 960 個, C 到 Z 各佔了 10 個字根, 只要不重碼, 這也是符合 規則的. 2. 實際上 "字根 -> 鍵位" 的對應如何安排, 是實作的細節. 是以電腦運算出的結果為準. 正常情況下, 讀者不應該關心這個問題, 直接查閱我最後做出來的表格即可. 如果讀者想要知道的話, 假設日後共有 3200 個字根, 22000 個字. (17000 個 big5+gb2312+jis0208, 2000 個簡體, 2000 個日文, 1000 個香港字) 先只計算 17000 個字的部分, 其他文字的做法雷同. 1. 字根唯讀資料區: 文字檔(big5), 利用 sort 排序過 格式: 一 乙 丁 七 乃 九 了 二 人 人人 ... 字根計算資料區: 3200 個 3200 bytes (內容為 0 ~ 25 ([a-z]) 這筆資料是可分散資料檔, 最初全為 0 的名字為 yy000000.dat 總共的可能筆數為 2 的 3200 次方. 每次新的計算是以 26 進位的方法, 從前面往後增加. 00 00 00 00 00.. <= yy000000.dat 01 00 00 00 00.. 下一筆. 02 00 00 00 00.. 下一筆. ... 19 00 00 00 00.. (0x19 是 16 進位, 是 10 進位的 25) 00 01 00 00 00.. 2. 17000 個字 => 17000 條算式. 用 unicode 內碼排序. (uniok.txt sort 即可) 算式唯讀資料區: 17000 * 3 * 2 bytes. = 102000 bytes. (102k) 內容是上面字根的順序編號(從 0 開始), 0xFFFF 為空值. 計算資料區: 17000 * 2 bytes = 34000 bytes. (內容是利用字根變數所填入的數值依順序 X1 *26*26 + X2 *26 + X3) 內容應該介於 0 ~ 17575 之間(26*26*26 - 1) 3. 重碼計數區: 26*26*26 * 2 = 17576 * 2 = 35152 bytes. 將計算資料區的內容數值對應的計數區 +1 最後 > 1 的部分再累加, 顯示為總共重碼數值. 每筆 yyxxxxxx.dat 的檔案可以計算出一個重碼數值. 當重碼數值小於 100 時, 表示這是可用的, 我再手動增加 100 個字根 來避開, 就可以做出正式的輸入法(big5+gb2312+jis0208)標準字的一部分. 2 的 3200 次方的可能性極大, 而 17000 個算式很小, 所以要算出無重碼 的數值理論上一定可行. 只不過, 假設我的電腦普通快, 1 秒可以算出一個 重碼數值, 只需 62687293219893581736879326478880116067839633518067409592791276958344\ 13372317196622134372935612040408102784895684819344333358599878066497\ 36461459676116235100909858289635686699036357515747700439778285236279\ 11551684253197782904029120174223951813474795916075837219308215459290\ 58319341054523285080979628542957317470063322205841954275919237119142\ 29630061634458202810788088536952824367282497744945895553808236236124\ 74602165498204669770690068597795715249561563546328116887361431198374\ 79407740278640136398738070992548739025119429232747347923391886299125\ 59842304960970062560710045873122655679734987908579179086463651479862\ 51552346165624996842591160048845561897756513119676136338591718218947\ 56168744395996130783459821471591622933191055748988887637768929088692\ 22247471845886799249387344485600422577519576558195416366229376858836\ 80121527750631110224307316620752351674603988949188849848254305469020\ 52445611279968501341694741298542468548026342266546750207346352680419\ 2105 年就可以全部計算一次, 找出數百億個以上的不同的、可用的輸入法編碼. 不過我只需要得到一個解而已, 而且可以手工強制調整若干字根, 所以如果 重碼數不多, 也符合我的需要, 所以暫訂 100 個重碼字以下可用. 會造出 okxxxxxx.dat (3200 bytes), 日後可以分析使用. 程式中途都可以停止, 也會造出目前最後運算到的 tmpxxxxxx.dat (3200 bytes). 如果我用兩台電腦計算的話. 第二台電腦初始值放 yy100000.dat 內容是, 00 .... 01 (第 1600 個 byte) ... 00 所需的時間可以減半. 當然這種 Brute-force 的笨方法速度會很慢, 所以我需要開發各種演算法 來加速計算. (或是用亂數做初值, 賭我的運氣. :P) 程式的 usage: %s <wordall.bin> <root_len> <root.bin> wordall.bin 是每個字的字根值列表(上述的 算式唯讀資料區), root_len 是字根數量, root.bin 可以是任意檔案, 程式可以取 前面的 root_len bytes, 再用每個 byte 的資料除以 26 的餘數 做為初值. 或許某首好聽的音樂可以幫助我計算出我的輸入法. 因此我事實上不是在做輸入法, 只是在研究一個奇怪的 open problem. 現在把它命名為 "中文無重碼輸入法 open problem". Q: OK,我在某軟體中,可以很順利打字,但是換了軟體之後呢? A: "偽.蝦米" 程式用 windows 的 api hook 技術不是運作得不錯嗎? 實際上, 我也很少使用 windows 軟體, 若有問題, 忽視它即可. Q: 2000多個字根是哪些? A: 如下: (包含一些編輯錯誤) ici findrootuni3.ici uniok.txt > /tmp/root050313.txt sort < /tmp/root050313.txt > /tmp/sort050313.txt wc -l sort050313.txt => 2187 sort050313.txt (約 2185 個) 來源: 初步分析 15681 個字 ㄙ 一 乙 丁 七 乃 九 了 二 人 人人 儿 入 八 几 刀 刁 力 匕 十 卜 又 又又 三 下 下火 下衣 丈 上 上四 上竹 上羊 上草 丫 丸 凡 久 么 也 乞 于 亡 兀 刃 勺 千 叉 口 口口 土 士 夕 大 女 子 寸 小 小心 尢 尸 山 川 工 己 已 巳 巾 干 廾 弋 弓 才 丑 丐 不 中 丰 丹 之 尹 予 云 井 互 五 亢 仁 今 介 介下 仄 元 允 內 六 兮 公 冗 冗上 凶 凶下 凶上 分 切 勻 勾 勿 化 匹 午 升 卅 卞 厄 友 及 反 壬 天 夫 夫(x) 夫夫 太 夭 孔 孔右 少 尤 尺 屯 巴 幻右 幻左 廿 弔 引 心 戈 戶 手 支 文 斗 斤 方 日 日刃 日內 日戶 日兌 日吳 日壯左 日巡右 日亞 日俞 日為 日乘 日真 日產 日陷右 日單 日堯 日發 日肅 日腦右 日鼠 日壽 日榮上 日齊 日廣 日樂 日賣 日錢右 日龍 日嬰 日襄 日壞右 日繩右 日贊 日僉 日雚 曰 月 木 欠 止 歹 毋 比 比左 毛 氏 水 火 爪 父 爻 片 牙 牛 犬 王 王王 丙 世 丕 且 丘 主 主上 乍 乏 乎 以 付 仕 他 代 令 充 兄 冉 冊 冬 冬下 冬上 凹 凹上 出 凸 加 功 包 匆 北 匝 半 卉 卉(x) 卡 占 卯 卯左 去 可 古 右 右刀 右正 右耳 召 司 叵 只 史 台 句 句外 四 囚 外 外行 外衣 外雙辛 央 失 奴 它 尼 巨 巧 巧右 左 左人 左太 左心 左手 左水 左火 左牛 左犬 左示 左冰 左羊 左耳 左行 左衣 左辛 左食 市 布 平 幼 弁 弘 弗 必 戊 打 斥 旦 朮 本 未 末 札 正 母 民 氐 永 氾 犯右 玄 玄下 玉 瓜 瓦 甘 生 用 甩 田 由 甲 申 疋 白 皮 皿 目 目目 矛 矢 石 示 禾 穴 立 丞 丟 交 交上 亦 亥 伊 伐 休 伏 任 光 兆 先 全 全上 共 冰左 列 刑 匈 匡 印 印右 印左 危 危下 吉 吏 同 同上 同用 吊 各 向 名 合 后 后上 因 回 在 圭 夙 多 夷 夸 好 如 字 存 守 宅 安 寺 州 并 年 式 戎 戌 成 扣 托右 收 收左 早 旨 旬 曲 曳 有 朴 朱 朵 次 此 死 汙 江 污右 灰 牟 百 竹上 米 糸 缶 羊 羊上 羊羊羊 羽 老 考 而 耒 耳 聿 肉 臣 自 至 臼 舌 舛 舟 舟上 艮 色 虫 虫?) 虫虫 血 行 行右 行外 行左 衣 衣下 西 西(?) 串 亨 位 何 作 你 你右 余 余(?) 兌 克 免 兵 別 判左 利 助 努 即 即左 卵 吞上 吾 否 呆 吳 呈 呂 呂(?) 君 告 呀 含 吟 囪 困 均 坎 坐 壯 壯左 夾 妥 孝 孝上 孚 孛 完 宋 宏 局 尿 尾 岑 巫 希 序 廷 弄 弟 彤 形左 役 忘 忌 志 忍 快 戒 我 抄 技 扶 折 投右 改左 攻右 攸 旱 更 束 杏 杉右 步 每 每上 求 求下 汞 沙 沈 沈右 沈右(?) 沛 決右 沐 沒 沒右 沃 沂 牢 狄 狂 甬 甫 男 皂 矣 私 私右 秀 禿 系 肖 育 良 芒 見 角 言 谷 豆 豕 貝 赤 走 足 身 車 辛 辰 巡右 邑 邪 邦 那 酉 釆 里 並 事 亞 亞下 享 京 來 佰 佩右 侖 兔 兒 兩 具 其 典 函 刷 刺 到 制 卒 卓 卑 卦 卷 卷上 卸 取 叔 叔左 受 味 和 周 命 咎 咎上 固 夜 奉 奇 奈 奄 奄(?) 奔 妾 妻 委 姑 姊右 孟 孤 季 宗 定 官 官下 宜 宛 尚 屈 居 居上 岡 岸 帚 帛 幸 庚 店 府 底 延 延左 延左下 弦 往 征 忝 忽 念 或 戾 拉 拔 拔右 抽 拍 抱 拖右 放 於 昔 易 昌 昆 明 昏 昊 昇 服 朋 東 果 林 松 析 欣 武 河 沾 沼 波 法 泓 沮 治 泡 炎 炙上 爭 版 物 的 直 知 空 空上 罔 羌 羋 者 肥 肩 肴 肯 臾 舍 芳 花 芷 虎 虎上 虱 表 迎右 采 采上 金 長 長下 門 阜 阿 隹 雨 青 青上 非 亟 亭 亮 侵 侯 便 保 俊 俊右 俎 俞 冒 冠 削 前 剌 則 勇 勉 勃 勁 南 卻右 厚上 哀 咨 哉 咸 品 垂 契 契上 奏 奎 奐 姦 威 宣 宣下 室 客 封 屏 屋 巷 帝 帥左 度 建 建左 弭 彥 待 律 思 急 怨 怨上 恆 恬 扁 拜 括 拾 政 施 既 春 春上 昭 是 是下 星 昨 曷 柱 柔 某 柬 柯 查 段 毒 泉 洪 流 流右 津 洞 洗 活 派 派右 洛 為 炭 爰 甚 畏 界 癸 皆 皇 盈 盆 省 相 眉 盾 眇 研 禹 禺 科 秋 穿 突 紅 紅左 約 美 耑 耶 胥 胃 背 胡 致 茅 苛 苦 若 苗 英 苟 虐 虹 衍 要 貞 負 軍 軌 述 述右 迥右 郎 酋 重 降右 面 革 韋 韭 音 頁 風 風外 飛 食 首 香 乘 倍 倩 候 修 倫 倉 兼 冥 匪 原 原上 叟 唐 哥 員 夏 夏下 夏上 套下 奚 姬右 孫 宰 害 家 家上 容 射 屑 展 島 差 席 師 師右 庫 庭 座 弱 徒 恣 恐上 恭 恩 息 扇 拳上 拿 捕 效 料 旁 旅 旅右 時 晉 晏 晃 朔 朗 桂 栗 桌 桑 柴 桀 殷 氣 氣上 泰 泰下 浪 浦右 浸 浸右 海 涅 烏 烏上 爹 玆 班中 畔 畜 畚上 留 留上 疾 病左上 皋 益 盍 盎 真 矩 神 租 秦 窄 紡 素 索 紛 缺 羔 翁 耆 耕 耕右 耕左 耿 脈 能 脊 臭 臬 舀 般 荒 荒下 茸 荐 草 草上 茲 茲(?) 茹 茶 荀 荃 虔 蚤 蚩 衰 袁 訊右 訊右(x) 豈 貢 躬 軒 辱 送 送右 逆 逆右 迷 退 追 追右 邕 釜 閃 除 隻 馬 骨 高 鬥 鬲 鬼 乾 乾左 假右 偃右 做 兜 剪 剪上 勒 務 務上 務左上 勘 動 匐 匿 區 區外 區左 參 參上 曼 商 唯 圈 國 國外 堅 堅上 基 堂 執 奢 婁 婪 孰 寇 寅 寂 宿 密 尉 專 將 屠 崖下 崩 崔 巢 常 帶 康 庸 庶 張 強 彗 彬 彩右 彩左 得右 得左 徙 從 御 患 悉 惟 戚 扈 捷右 措 掃右 掛右 推 採 捺 敝 敖 救 敏 敘 敕 斛 斬 族 旋 旋右 晨 曹 梁 條 條左上 梟 欲 殺 殺左 淺右 涯右 淑 淵右 淫 淫右 深右 淮 焉 焊 爽 牽 率 瓠 甜 產 畢 異 疏 眾 眾븠票 祭 祭上 移 窒 笠 累 終 羞 翌 習 聊 脣 脩 舂 莽 莫 荷 荼 處下 彪 袞 覓 規 許 設 豚 責 責上 貫 貪 赦 軟 通 連 逐 造 逢 部 郭 都 野 陪右 陳 陰 陷右 雀 雪 雪下 雩 章 竟 頂 頃 魚 鳥 鳥上 鹵 鹿 麥 麻 備 備右 最 勞 博 博右 厥 喜 單 喬 圍 堯 堪 報 報右 壹 壹上 奠 媛右 孱 孱下 尊 尊上 尋 就 巽 幾 幾上 彭 復 復右 惡 悶 惠 惰 戟 掌 插右 提 揖右 援右 敞 敦 敢 散 斑 斯 普 晶 景 智 晷 曾 替 朝 棠 棘 棘左 款 欺 欽 殼上 游右 渠 湯 渴右 焦 無 無上 然 牌 犀 猶 畫 番 登 發 發上 皓 稍 童 策 筆 答 筍 粟 粥 結 絕 絮 絲 善 翕 肅 舜 萃 華 華下 著 虛 覃 診右 象 貳 賁 費 貴 貴上 買 貿 貸 越 越右 辜 逮 逮右 進 鄉 量 鈞 閔 閏 閑 間 閒 隊 隋 陽 陽右 隆 雁 雅 雄右 雄左 集 雇 雲 項 須 飧 馮 黃 黍 黑 亂 傷右 傻右 剽 勤 嗇 園 塞 塔右 塌右 奧 幹 幹左上 廉 彙 微 微上 微右 意 慈 感 愛 愁 愈 戢 搖右 搆 敬 新 暖右 會 業 楚 楊 歇 歲 毀 殿 溝右 滅右 溫 溫右 煩 煞 瑟 當 當上 睪 睢 禁 萬 禽 稜 稟 節 筮 絹 罪 署 義 羨 聖 聘右 肆 肆左 腦右 葉 葬 葛 董 虞 虜 號 號左 蜀 解 誇右 詹 賊 資 賈 路 載右上 辟 農 運 道 遂 遂右 達 遐 過 過左下 過左上 鄒左 隔右 雍 雋 雉 雷 電下 零 預 頓 飾右 鼎 鼓 鼠 僕 僕右 匱 厭 嘗 團 壽 夢 夢上 奩 寧 察 對 幕 幕上 徹右 撇 摘右 撤右 敲右 斡 旗 旗左上 榮 榮上 漏右 漂 漢右 滿 滿右 滯 漆右 漸 熊 爾 獄 甄 疑 盡 盡上 監 監上 睿 碟右 福右 稱右 算 箸 綴右 網右 綿 維 罰 翠 翟 聚 臧 臺 與 舞 蒿 蒙 蓋 蜜 豪 豪上 貍 貌 貌右 賓 赫 輕 遠 遣 遞右 銀 閣 隙右 需 頗 魁 麼 鼻 齊 齊下 齊上 僵右 劉 厲 寮 寬 審 寫 寫下 廢 廚 廣 廣上 徵 徵右 慶 慧 慮 憂 慰 摩 摩上 撩右 敵左 敷 數 暴 樣右 樞 樂 毅 潔右 潭 潛右 潘 滕 熱 熱上 瑩 皺左 盤 確右 磊 碼 穀 窮 箭 箴 緣 緣右 罷 蔑 蔑下 蔡 蓬 蝦右 衛 諸 誰 豎 豬 賞 賤 賢 賣 賜 質 輦 適 遷 遷右 鄰左 鄭 閭 頡 養 髮上 魯 黎 黎上 墨 齒 冀 噩 嬴 學上 憲 擇 橫 橘右 樹右 歷 歷上 澡 激右 燕 盧 磨 禦 積 穌 縈 縣 羲 翰 興外 蕭 螢上 融 融左 衡 衡中 親 親左 謁 貓左 賴 遼右 遺 錢 錢右 錄 閻 隨 隨右 霍 頻 頹 頤左 餐上 餡右 龍 龜 嚏右 壓上 嬰 彌 應 戲 戴 戴上 擊上 斂 毚 營 營上 爵 牆 牆右 獲右 糜 糞 總右 繁 翼 聲上 聰右 聯 聯右 舉 舉下 舉上 薄 薛 虧右 襄 襄下 謠右 賽上 遽 還右 鍾 闌 隱 隱上 隱右 隸右 霜 鞠 鮮 點 叢 壘 斷 斷左 歸 獵右 瞿 禮右 竄 簫 簡人 簡內 簡勻 簡厄(?) 簡戶 簡冊 簡左食 簡臣 簡兌 簡兌(?) 簡壯 簡壯左 簡夾 簡見 簡言 簡貝 簡車 簡亞 簡來 簡侖 簡兩 簡岡 簡東 簡爭 簡舍 簡金 簡長 簡門 簡奐 簡彥 簡柬 簡為 簡紅左 簡貞 簡負 簡軍 簡韋 簡頁 簡風 簡食 簡倉 簡員 簡島 簡師 簡庫 簡時 簡晉 簡烏 簡芻 簡豈 簡馬 簡兜 簡務 簡區 簡參 簡商 簡堅 簡婁 簡專 簡將 簡帶 簡從 簡條 簡淺右 簡產 簡畢 簡眾 簡處 簡責 簡貫 簡通 簡連 簡魚 簡鳥 簡鹵 簡麥 簡備 簡勞 簡單 簡喬 簡堯 簡尋 簡湯 簡無 簡發 簡筆 簡肅 簡華 簡虛 簡賁 簡貴 簡買 簡鄉 簡陽右 簡黃 簡傷右 簡愛 簡會 簡會(?) 簡業 簡當 簡睪 簡萬 簡義 簡聖 簡腦右 簡農 簡達 簡過右 簡鄒左 簡厭 簡壽 簡榮 簡滿 簡滿右 簡盡 簡監 簡與 簡賓 簡麼 簡齊 簡厲 簡寬 簡寫 簡廚 簡廣 簡樂 簡豬 簡賣 簡質 簡遷 簡齒 簡歷 簡盧 簡縈 簡錢右 簡龍 簡龜 簡嬰 簡牆右 簡環右 簡舉 簡賽上 簡闌 簡隱 簡斷左 簡歸 簡豐 簡鎖右 簡雙 簡繩右 簡贊 簡邊 簡麗 簡嚴 簡競 簡藺 簡覺 簡黨 簡屬 簡纏右 簡覽 簡贛 簡宁 簡劦 簡佘 簡巠 簡彔 簡昜 簡亶 簡僉 簡縕 簡雚 織右 職 聶 藏 藍 藉 薰 薦 蟲 豐 轉 醫上 釐上 鎖右 離 離左 雜 雙 雙口 雙百 雙虫 雞左 鬆上 魏 壞 壞右 廬 懷 攀 瀝 瓊右 繫 繭 繩右 羅 藝 識右 贊 辭左 邊 邊右 難 靡 類 類左 顛 麗 嚴 寶 獻 獻左 纂 蘇 覺 贏 贏外 闡 黨 夔 屬 攜右 纏右 蘭 蠡 襪右 覽 鐵右 霸 顥 齧 囊 囊上 彎 彎勾 聽 籤下 變上 鑣右 顯 顯右 顯左 鱗右 蠶上 艷 贛 鷹上 鹽外 觀 釁 鬱 万 乇 冘 夬 巿 殳 毌 夗 宁 戉 犮 劦 囟 庄 朿 穵 佘 冏 卣 坒 夆 巠 忒 忡 旰 旲 甹 耴 肙 匊 匋 囷 坴 夌 宕 彔 旻 沓 洰 畀下 甾 豖 匽 厘 咠 咼 咢 壴 复 弇 彖 昜 昝上 柰 殄 洴 洼 狊 耎 胙 胊 苕 訇 党 冓 尃 恝 捋右 浧 涂 畟 罡 荅 陟 隼 偈右 埶 堇 欶 眯 离 窐 翏 莝 虖 嵕右 嵒 惢 斌 毳 焱 猋 絜 臦 褁 黹 亶 僉 喿 媷 歆 粲 觜 豊 豦 黽 慱 滎 熏 賏 畾 虢左 隤 鴈 瞢 蕇 諤右 閵 雔 繇左 罽 蹇 霝 龠 闑 雚 巂 爂上 蟺 矍 纍 贔 Q: 能不能保證有最簡單的取碼規則,而且可以一以貫之,沒有例外字? A: 有呀. 最簡單的四個字: "查表、死背". Q: 字根若是多達2253 個, 那麼學習字根的時間會至少需要多10倍的 時間來學習。那麼,呵呵,使用者可能不願意學習。 A: 這個輸入法是作者本人專用的. 現在是分享一些觀念給其他的輸入法 製作者. 我的目標是盲打, 最高速度一分鐘三百字, 一小時連續輸入的 速度能達到平均一分鐘一百五十字以上. 引用自: "玩學習" -- 三個博士姊妹的賞識教育 作者陳克正先生說: "  一天早晨,學校規定是語文早自習,我突然想到寫字是高考 語文時最費時間的,能不能把寫字的速度提高一些呢?如果能 節省10分鐘、20分鐘都是了不得的事,我先決定測試一下自己的 寫字速度。   當時高考的作文要求800字,寫這800字究竟需要多少時間呢? 我心中無底,於是我整整用了一個早自習來測量我的寫字速度, 因為那時高中生沒有一個人有手表,教室裡也沒有鐘,要測寫字的 速度,要知道時間,沒有別的辦法,只有利用早自習的鈴聲,測試 的結果,我一個小時只能寫800字左右。我一想,這糟了,如果用 這樣的寫字速度參加語文參考,一篇800字的作文,起草一遍,謄一 遍,考試時間就完了,我當時嚇了一身冷汗,覺得如果不是這測試 一下,到時可能會出大問題。學校考語文也考作文,也總是覺得 時間緊,但從來沒有想到用提高寫字速度來解決這個問題,完全沒有 想到寫字速度還可以提高,我當時感到非常痛心,這樣一個一說就 明白,而不說不明白的事怎麼就沒一個老師給我提個醒呢?   於是我開始苦練寫字功,主要是以提高寫字速度為主要目的。 大約練了半個學期,好不容易的才把寫字速度提高到每小時2000字 。這件事情,我留有極深的印象。所以在小淑華上小學時,我就要 她練字,有時一天要她練半個小時,堅持天天練。" 連寫字都可以達到一小時 2000 字, 用鍵盤輸入怎能少一萬字? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 202.145.82.143