Topics

Review zh-tw.ctb multipass version #點字轉譯表

Sponge Jhan
 

Hi all,

附件 zh-tw.ctb 是最新的 noback context 版本 zh-tw.ctb, 還請大家測試看看有沒有問題?
使用時,需要 NVDA 2018.2 或更高版本,請取消「將游標所在處展開為完整的電腦點字」,否則綁定效果將不會呈現
這次以後,就把這個版本稱為 multipass 而不再叫 noback context 了
這次的版本有處理了簡體字、異體字方面的綁定問題
比如「音樂」被綁定,那簡體字「音乐」也會顯示正確讀音
不過,簡體字之中有非常多「歧義」,比如「干、乾、幹」三字合併為「干」,綁定詞當中有乾貨幹的轉簡體字就看不到綁定效果
另外,此版本由於游標移動不被綁定詞影響,收了許多三字以上的綁定詞,包括成語跟某些文言文句子中含多音字者
此版本也加了許多原先未定義的國字,以及修改許多罕見字注音與教育部字典不同者,但這裡不詳列,會列於下次更新舊版 (always 版本)
附件 duoyinzi.txt 是此版本所有綁定詞的列表
如果有發現問題,請在這個主題下討論,謝謝大家!

以下為技術性的內容,包含 zh-tw.ctb 的結構組成與如何使用 multipass 指令處理通同字、綁定詞的問題

* 通同字與簡體字:
由於漢字當中,有非常多通同字的狀況,所以其實綁定詞理論上應該要針對通同字都暴力列舉才是完整
但是,如此會讓 zh-tw.ctb 非常難管理,而且這個問題又被簡體字的創造弄得更加嚴重
有些字已經知道完全通同,就可以在轉換點字時將它抽換成一樣的字進行點譯,比如遇到簡體字就先校正為對應繁體字再行點譯
然而,許多字與字之間的關係也非完全通同,仍有些屬於自己的用法

* Multipass 指令:
所謂的 multipass 就是仿照點譯者逐次全部掃過整個檔案進行校對的過程
分成回合 0, 1, 以及 2 以上,對應的操作碼分別是 correct, context, pass2, pass3, ...
這些 multipass 規則之前都必須加上 noback 或 nofor, 分別表示這條規則適用於文字轉點字或點字轉文字
目前為止 zh-tw.ctb 只有用到 correct 與 context 二個回合,且只有文字轉點字的規則定義
在 correct 的回合,被匹配的文字內容會被替代為規則中指定的字串,比如把簡體字替換成對應的繁體字
在 context 的回合,被匹配的文字內容會被點譯為規則中指定的點位,但它所依據的「文字內容」是 correct 替換過的
其他回合則將 context 回合產生的點字結果加以調整
不過,這些 multipass 規則並不一定涵蓋所有字元,有很多字不用這麼麻煩的程序調整可直接轉點字
點字對照表中,每個字都有對應的「電腦點字」定義
就是當勾選將游標處展開為完整電腦點字時,直接被採用的規則,扮演一個預設的角色
或者,當 multipass 規則沒有涵蓋到這個字,也會直接採用「電腦點字」規則來點譯

* 舉例:
假設 zh-tw.ctb 想要正確呈現「音樂」的注音,而且簡體字的「音乐」也必須顯示正確,點字對照表就必須有以下五行指令
letter 音 1456-3
letter 樂 14-2346-5
letter 乐 14-2346-5
noback correct "乐" "樂"
noback context "音"["樂"] @236-5
前面三行即為電腦點字定義,對於梅被綁定的「樂」的狀況,就把它轉成 14-2346-5 這三方
第四行效用是把簡體字「乐」先修正為繁體字「樂」,第五行將「音」後面的「樂」點譯為 236-5
假設繁體字「音樂」要轉點字,「音」未被 multipass 規則規範,因此依照第一行點譯為 1456-3, 「樂」被第五行規範而轉成 236-5
如果是要轉簡體字的「音乐」,「音」理由同上也轉成 1456-3, 「乐」先被第四行對應而改成「樂」,再以「音樂」的內容套用第五行規則,轉點字 236-5
然而,「樂」與「乐」恰好呈現了 zh-tw.ctb 內一個字轉點字時的兩種途徑

* 從漢字到注音點字
在立子中,「樂」擁有自己的預設點字狀況跟 context 綁定規則,但是「乐」因為先被修正為「樂」而讓點字轉換的行為完全同「樂」
換言之,如果修改「樂」的綁定規則,「乐」的點譯結果一併被影響
只要多加入以下這行:
noback context ["樂"]"器" @236-5
就會讓「樂器」、「乐器」都顯示正確
這個處理方式能完美解決完全通同字的管理問題,可是許多字只有部份通同的現象

* 簡體字中的例外
有些本義很少使用的正字被拿來當簡體字用,如「价」士「價」的簡體字,但它在文言文中是「善、介紹、僕役」的意思
註:請見教育部重編國語辭典 http://dict.revised.moe.edu.tw/cgi-bin/cbdic/gsweb.cgi?o=dcbdic&searchid=W00000005611
可以相信「价」絕大多數情況都是「價」之簡體,但少數詞語儒「無价事」仍須保留原音ㄐㄧㄝˋ
要是為了保留「無价事」而不願意用 correct 把它跟「價」行為變成一樣,又必須在每次綁定規則中含有「價」字時考慮「价」的狀況
因此 zh-tw.ctb 中針對 correct 另立利外規則如下:
noback correct "無"["价"]"事" "价"
noback correct "价" "價"
第一行即表示,出現「無价事」時保留「价」字,其他狀況將根據第二行把「价」修正為「價」

* zh-tw.ctb 的組成:
目前 zh-tw.ctb 內將規劃以下區域:
(1) 電腦點字定義:即所有預設注音跟標點、數理符號等定義所在的區域
(2) 一般通同字規則:一個字多數情況下被通同別字時,使用這區的規則抽換為通同字,在非電腦點字的環境下,這類字點譯的結果與其通同字一樣
(3) 例外通同字規則:在少數情況下,規則 (2) 中的字需保有其原始音義,用此規則將它保留
(4) 綁定詞點譯規則

如上,技術性的問題也歡迎提出討論


  sincerely yours
   Bo-cheng Jhan

嘯傲俠羽
 

實在寫的太精彩了,我要慢慢研究,然後看能否有啥心得也來分享?不過至少,我先來說
一下閱讀此信件的念熟:

能把整個修改過程,包過燒做指令與應用方式貼出分享,應有住於後學者的學習,日後又有啥新的思維與發現,這鄉這些內容都可作為參考,也很適合擺在檔案裡頭作為註解,只少我保留的檔案這樣做的。
可惜 nvda 各類設定檔,不曉得有沒有提供「多行註解」的設計?
巷這樣內容豐富、值得保存的分享,擺在定義檔之內,也便於日後細讀。

閱讀此信件過程,經常想要移動游標檢查字詞解釋,但每次一棟游標,點字就會亂跳,以至於找不到游標所謂在至?
該行地一個字本來在點字方第一格,但一旦游標往右邊移動,第一格的文字就會跑到點字方某一格,
表格的曾豎越多,點字卵跑的問題就越大,摸讀游標停留位置,你的摸讀能力要特別注意,
通常習慣編按方向見移動游標邊摸著點字游標手指跟著移動的習慣者,往往會把游標跟丟了。
這不是點字設定問題,把表格顯示功能關掉也許問題較小,
但那又會衍生另一種「缺乏表格呈現」的問,多數網頁都有表格,
又不知表格為排版表格或者裝飾表格,或者內容顯示必須以表格呈現才清楚?都要摸到才知道,
不曉得有沒有辦法建議,可跟誰建議,反正 nvda 有兩種移動游標方式,
至少在移動虛擬游標(也就是暗九宮格數字鍵移動的那個游標)點字方式可以固定不動的,方便摸讀!

語音朗讀的時候,遇到「層級標籤」育複雜的頁面,朗讀內容也會跟著變複雜,
例如離開表格意…地…我聽不清楚他怎樣念,太吵了,
我想除非我把這功能關掉,(這只是順代提出的遭遇)。

謝謝!


在 2018/7/28,Sponge Jhan via Groups.Io <school510587=yahoo.com.tw@groups.io> 撰寫:

Hi all,

附件 zh-tw.ctb 是最新的 noback context 版本 zh-tw.ctb, 還請大家測試看看有沒有問題?
使用時,需要 NVDA 2018.2 或更高版本,請取消「將游標所在處展開為完整的電腦點字」,否則綁定效果將不會呈現
這次以後,就把這個版本稱為 multipass 而不再叫 noback context 了
這次的版本有處理了簡體字、異體字方面的綁定問題
比如「音樂」被綁定,那簡體字「音乐」也會顯示正確讀音
不過,簡體字之中有非常多「歧義」,比如「干、乾、幹」三字合併為「干」,綁定詞當中有乾貨幹的轉簡體字就看不到綁定效果
另外,此版本由於游標移動不被綁定詞影響,收了許多三字以上的綁定詞,包括成語跟某些文言文句子中含多音字者
此版本也加了許多原先未定義的國字,以及修改許多罕見字注音與教育部字典不同者,但這裡不詳列,會列於下次更新舊版 (always 版本)
附件 duoyinzi.txt 是此版本所有綁定詞的列表
如果有發現問題,請在這個主題下討論,謝謝大家!

以下為技術性的內容,包含 zh-tw.ctb 的結構組成與如何使用 multipass 指令處理通同字、綁定詞的問題

* 通同字與簡體字:
由於漢字當中,有非常多通同字的狀況,所以其實綁定詞理論上應該要針對通同字都暴力列舉才是完整
但是,如此會讓 zh-tw.ctb 非常難管理,而且這個問題又被簡體字的創造弄得更加嚴重
有些字已經知道完全通同,就可以在轉換點字時將它抽換成一樣的字進行點譯,比如遇到簡體字就先校正為對應繁體字再行點譯
然而,許多字與字之間的關係也非完全通同,仍有些屬於自己的用法

* Multipass 指令:
所謂的 multipass 就是仿照點譯者逐次全部掃過整個檔案進行校對的過程
分成回合 0, 1, 以及 2 以上,對應的操作碼分別是 correct, context, pass2, pass3, ...
這些 multipass 規則之前都必須加上 noback 或 nofor, 分別表示這條規則適用於文字轉點字或點字轉文字
目前為止 zh-tw.ctb 只有用到 correct 與 context 二個回合,且只有文字轉點字的規則定義
在 correct 的回合,被匹配的文字內容會被替代為規則中指定的字串,比如把簡體字替換成對應的繁體字
在 context 的回合,被匹配的文字內容會被點譯為規則中指定的點位,但它所依據的「文字內容」是 correct 替換過的
其他回合則將 context 回合產生的點字結果加以調整
不過,這些 multipass 規則並不一定涵蓋所有字元,有很多字不用這麼麻煩的程序調整可直接轉點字
點字對照表中,每個字都有對應的「電腦點字」定義
就是當勾選將游標處展開為完整電腦點字時,直接被採用的規則,扮演一個預設的角色
或者,當 multipass 規則沒有涵蓋到這個字,也會直接採用「電腦點字」規則來點譯

* 舉例:
假設 zh-tw.ctb 想要正確呈現「音樂」的注音,而且簡體字的「音乐」也必須顯示正確,點字對照表就必須有以下五行指令
letter 音 1456-3
letter 樂 14-2346-5
letter 乐 14-2346-5
noback correct "乐" "樂"
noback context "音"["樂"] @236-5
前面三行即為電腦點字定義,對於梅被綁定的「樂」的狀況,就把它轉成 14-2346-5 這三方
第四行效用是把簡體字「乐」先修正為繁體字「樂」,第五行將「音」後面的「樂」點譯為 236-5
假設繁體字「音樂」要轉點字,「音」未被 multipass 規則規範,因此依照第一行點譯為 1456-3, 「樂」被第五行規範而轉成 236-5
如果是要轉簡體字的「音乐」,「音」理由同上也轉成 1456-3, 「乐」先被第四行對應而改成「樂」,再以「音樂」的內容套用第五行規則,轉點字
236-5
然而,「樂」與「乐」恰好呈現了 zh-tw.ctb 內一個字轉點字時的兩種途徑

* 從漢字到注音點字
在立子中,「樂」擁有自己的預設點字狀況跟 context 綁定規則,但是「乐」因為先被修正為「樂」而讓點字轉換的行為完全同「樂」
換言之,如果修改「樂」的綁定規則,「乐」的點譯結果一併被影響
只要多加入以下這行:
noback context ["樂"]"器" @236-5
就會讓「樂器」、「乐器」都顯示正確
這個處理方式能完美解決完全通同字的管理問題,可是許多字只有部份通同的現象

* 簡體字中的例外
有些本義很少使用的正字被拿來當簡體字用,如「价」士「價」的簡體字,但它在文言文中是「善、介紹、僕役」的意思
註:請見教育部重編國語辭典
http://dict.revised.moe.edu.tw/cgi-bin/cbdic/gsweb.cgi?o=dcbdic&searchid=W00000005611
可以相信「价」絕大多數情況都是「價」之簡體,但少數詞語儒「無价事」仍須保留原音ㄐㄧㄝˋ
要是為了保留「無价事」而不願意用 correct 把它跟「價」行為變成一樣,又必須在每次綁定規則中含有「價」字時考慮「价」的狀況
因此 zh-tw.ctb 中針對 correct 另立利外規則如下:
noback correct "無"["价"]"事" "价"
noback correct "价" "價"
第一行即表示,出現「無价事」時保留「价」字,其他狀況將根據第二行把「价」修正為「價」

* zh-tw.ctb 的組成:
目前 zh-tw.ctb 內將規劃以下區域:
(1) 電腦點字定義:即所有預設注音跟標點、數理符號等定義所在的區域
(2) 一般通同字規則:一個字多數情況下被通同別字時,使用這區的規則抽換為通同字,在非電腦點字的環境下,這類字點譯的結果與其通同字一樣
(3) 例外通同字規則:在少數情況下,規則 (2) 中的字需保有其原始音義,用此規則將它保留
(4) 綁定詞點譯規則

如上,技術性的問題也歡迎提出討論


  sincerely yours
   Bo-cheng Jhan