-
Notifications
You must be signed in to change notification settings - Fork 9
Home
kcwu edited this page Feb 25, 2013
·
10 revisions
資料來源是教育部的 重編國語辭典修訂本 網站。 第一步是抓下網站的原始 HTML 檔, 透過 parse.py 轉成 json 檔, 再用 convert_json_to_sqlite.py 轉成 sqlite db 檔。 其他 project 可以視需求拿 json 檔或 sqlite db 作進一步的利用。
kcwu 在 這邊 放了 HTML tarball 還有處理好的 json, sqlite 檔。 github 的 moedict-data 也有 json 檔, 可參閱 history。
原始網頁採用 big5 編碼, 加上自行造字(以圖檔表示)。json 跟 sqlite 的內容都是用 UTF-8 編碼。
- 少部分(十幾個) HTML 檔有非 big5 字元, 轉 unicode 時失敗 #1 目前先跳過
- 除了少數符號, 大多數造字都保留為 {[xxxx]} 形式, client 可自行決定怎麼處理
- 譬如 {[8e4f]} 的圖檔在 http://dict.revised.moe.edu.tw/images/8e4f.jpg
- [3du.tw] 另有 project 在整理造字對 Unicode/CNS11643 的對照表(這不是個簡單的工作,跟unicode版本、字形、異體字通同等很多問題有關)
- 詳情請見 https://hackpad.com/3du.tw-Encoding-Mashup-uGgOPAFgxDM , 或上 irc 討論
- (懶得研究? 直接套用成果) 那就用 moedict-epub 裡的 sym*.txt 把造字換成 unicode (執行 json2unicode.pl 或 db2unicode.pl)
3du.tw project 有定義 json api 跟 db schema, 但我的輸出不完全相同, 將來可能還會再修改。(也就是說, 不保證相容, 請小心使用)
- 對於字音,我有做簡單的處理(羅馬字母轉半形,造字轉 unicode)。如果想拿該欄位再利用,要小心有些特別的 case,譬如
- 根據 國語注音符號手冊
- 「輕聲」號在橫寫的標準寫法是在注音符號的左邊,不像平常注音輸入法寫在右邊
- 「ㄧㄨㄩ」的「ㄧ」在橫寫的標準寫法是直的,原本字典用「|(U+FF5C)」,我還是用「ㄧ(U+3127)」(注意 U+3127 在有些字形是直的有些是橫的)
- 「乎」的第二音的注音寫「(又音)ㄏㄨˊ」
- 「一檔子」的注音是「ㄧ ㄉㄤˇ .ㄗ (又音)ㄧ ㄉㄤˋ .ㄗ」
- 兒化韻標注音時「ㄦ」緊接前一個注音,沒有空格。譬如「一古腦兒」的注音是「ㄧ ㄍㄨˇ ㄋㄠˇㄦ」,「一會兒」的注音是「ㄧ ㄏㄨㄟˇㄦ (變)ㄧˋ ㄏㄨㄜˇㄦ」
- 根據 國語注音符號手冊
- 對於每一個「詞義」, 都放在一個 definition 裡, 主要內容在 "def" 欄位。若是舉例或是引經據典, 則會另外放到 example,quote,link 等欄位。
- example 是例句, quote 是引經據典, link 是參考其他條目。
- link 的例子: 亦作「掊克」。亦稱為「鹽膚木」。同「裸」。見「牡丹」條。簡稱為「三藏」。亦稱為「仙鶴」。或稱為「哥本哈根學派」、「語符學派」。, 還有許多變化, 共通點是都有引號。
- example, quote, link 這三個欄位, 在 json 是 array, 在 db 是以逗號分隔的字串。
- 對於比較複雜的詞義, 或是一個詞義裡再細分多個義項, 目前並沒有各別 parse 開來, 為了避免誤會, 整個詞義保持不動放在 "def" 欄位。(這種狀況約 3000 個)
- 同反義詞原本在頁始網頁是合在一起寫, 譬如「一般」的同義詞是「(1)一樣 (2)平常、通常、日常」,parse 後會把同義詞分到對應的詞義去
- 但有時原始資料怪怪的, 無法對應回去。譬如「目次」的同義詞是「目錄(2)」 #2
- 同反義詞(synonyms, antonyms)無論是 json 還是 sqlite db 都是用逗號分隔
- 要注意有時 "def" 會是空的, 只有 "link" 有內容。譬如「万」的第二音, 只有 link "見「万俟」條。"
- 要注意有時注音欄會是空的, 通常發生在異體字.
- {[xxxx]} 是造字
- <1>、<2>…是㊀、㊁… 用來區分一個字的不同讀音]
- 譬如「乎」的第二個音(ㄏㄨˊ)的寫「<1>之又音。」表示是第一個音(ㄏㄨ)的又音
- {1}、{2}…是❶、❷…用來區分多義的序號
- 譬如「使」的第二音(ㄕˋ)寫「<1>名、動{7}之又音。」表示是第一音(ㄕˇ)的名詞還有動詞第7義的又音
- 詞性有共分十一種, 「名動形副助介嘆連代綴狀」目前沒有用特別的符號表示...(要嗎?)
- 另外 type 除了詞性還可能是「辨似」
- 這些符號㊀❶我之所以用比較單純的寫法代換,而不是直接用對應的 Unicode char,是因為我覺得這樣比較 developer friendly。譬如➓跟⓫在 unicode 不連號