iPhoneにタイ語辞書を入れる
iPhoneでタイ語キーボード - Random NoteでiPhoneにタイ語キーボードを入れたので、今度はタイ語辞書を入れてみる。
電子辞書をいろいろ調べてみたが、タイ語辞書でまともなものはなかった。
iPhone/iPod touchでは、WeDictというStarDict形式の辞書を使える無料アプリがあったのでそれを利用することにした。
WeDictだと、3文字以上の単語については前方一致検索でインクリメンタルに候補が出てくるが、2文字いないの単語は完全一致でしか検索できない。WeDict Proは全ての単語を前方一致検索できたり、表示された定義の中の文字をクリックしてさらに検索できたりするらしいが日本のiTunes Storeではなぜか売られていない。USAのiTunes Storeでは買えるんだが・・・。
ちなみにOS X上にParallelsでWindows XPを入れた環境で作業するので、MacとWindowsを行ったり来たりするが、Windowsだけでも(一部やり方は違うが)作業はできるはず。MacだけだとPDIC一行テキスト形式を作成する方法が分からない。
白石昇氏作成のタイ語辞書
ホームページ移転のお知らせ - Yahoo!ジオシティーズに見出し語数25,330語のタイ日辞書があるので、まずはそれをWeDictで使えるようにする。
タイ日辞書をPDICに追加
ホームページ移転のお知らせ - Yahoo!ジオシティーズにPDIC for unicode用というファイルがあるのでそれをダウンロードする。このファイルは品詞や英語表現が削除されているので、より細かいデータがほしい場合は白石昇氏作成タイ語辞書データ変換ツールを利用して、PDICテキスト形式/ユニコード(UTF-16LE BOM付き)のファイルに変換する。
http://homepage3.nifty.com/TaN/からPDIC/Unicodeをダウンロードして、Windows上にインストール。
PDICに上で取得した辞書ファイルを追加する。
「ファイル」メニュー→辞書設定<詳細>→使用辞書一覧上で右クリック→既存辞書の追加
ここで「PDIC用の辞書ではありません。PDIC用の辞書に変換しますか?」と聞かれるので、「はい」を選択して変換を行う。変換元は「PDICテキスト形式」。
PDICタイ語
PDICタイ語ダウンロードページに黒沢一功氏提供の、見出し語数46,690語のPDIC形式の辞書がある。
今回はユニコード用のメンバーシップシェア版と、技術専門語辞書を利用。
タイ日辞書
PDICタイ語ダウンロードページからファイルをダウンロードすると、PDIC形式のタイ日辞書が入っているので、その辞書ファイルをPDICに追加。
「ファイル」メニュー→辞書設定<詳細>→使用辞書一覧上で右クリック→既存辞書の追加
技術専門語辞書はタイ日版、ローマ字簡易表記タイ語引き版、和引き版、タイ人向け和引き版、タイ人向け平仮名引き版があるので好きな辞書を同様に追加する。
日タイ辞書
PDICタイ語辞書は、定義部分に漢字かながまざっているのでそのまま反転しても使いづらい。
そこで、下記のようなスクリプト(これはgroovy)を使い、漢字・かなをそれぞれ見出し語化したファイルを作成する。
フォーマットは「見出し語<タブ>定義」。
def out = new PrintStream(new BufferedOutputStream(new FileOutputStream("Japanese_Thai.txt")), true, "UTF-8") def separator = "\t" def wordMap = new HashMap<String, String>() new File("Thai_Japanese_free.txt").eachLine {line-> println "LINE:" + line def words = line.split("\t") def thai = words[0] def jaLine = words[1] jaLine = jaLine.replaceAll(" / .*", ""); def japanese = jaLine.split("[\\[\\]]"); def kanjiLine = japanese[0].replaceAll("【.*?】", "") def kanaLine = null def kana = null; if (japanese.length > 1) kanaLine = japanese[1] def kanji = kanjiLine.split(",") if (kanaLine != null) kana = kanaLine.split(",") kanji.each { println "WORD:" + it addDefinition(wordMap, it, "", thai) } if (kana != null) { def i=0 kana.each { println "WORD:" + it + "[" + kanji[i] + "]" addDefinition(wordMap, it, kanji[i], thai) i++ } } } for (key in wordMap.keySet()) { def pdicLine = key + separator + toDefinition(wordMap, key) println pdicLine out.println pdicLine } out.close() def addDefinition(wordMap, key, subKey, definition) { def subMap = wordMap.get(key); if (subMap == null) { subMap = new HashMap() wordMap.put(key, subMap) } if (subMap.containsKey(subKey)) { subMap.put(subKey, subMap.get(subKey) + "," + definition) } else { subMap.put(subKey, definition) } } def toDefinition(wordMap, key) { def subMap = wordMap.get(key) def definition = "" for (subKey in subMap.keySet()) { if (subKey.length() > 1) definition += "[" + subKey + "]" definition += subMap.get(subKey) + " / " } return definition.substring(0, definition.length()-3) }
このファイルだけは、下記のStarDict形式に変換から続きを処理する。
PDICからStarDic形式の辞書ファイルを作成
PDIC1行テキスト形式ファイル出力
まず、PDICに追加した辞書からPDIC1行テキスト形式のファイルを作成する。
PDICを開いて、
「ファイル」メニュー→辞書設定<詳細>→使用辞書一覧の変換する辞書上で右クリック→辞書の変換→変換先ファイル形式を「PDIC1行テキスト形式」にして変換実行
StarDict形式に変換
PDIC1行テキスト形式のファイルをエディタで開き、下記2点を修正
Mac OS Xの場合:
WeDict Proが提供しているWeDictBuilderを使って、上記で作成した「見出し語<タブ>定義」形式のテキストファイルからStarDict形式の辞書ファイル(*.dict, *.idx)を作成する。
Windowsの場合:
英辞郎 on StarDict - nnn-isnt-nameの日記のStarDict Editorのくだりを参照。
WeDictに辞書を追加
StarDict形式の辞書ファイル(*.dict, *.idx)を、CyberDuckなどを利用してiPhoneの中の/var/mobile/Applications/***/weDict.app/フォルダに配置する。
以上でiPhone/iPod touch上のWeDictから辞書を引くことができるようになる。
参照
StarDict
StarDict
http://stardict.sourceforge.net/HowToCreateDictionary
http://stardict.sourceforge.net/Dictionaries_ja.php
http://stardict.sourceforge.net/Dictionaries_misc.php