iPhoneにタイ語辞書を入れる


iPhoneでタイ語キーボード - Random NoteiPhoneタイ語キーボードを入れたので、今度はタイ語辞書を入れてみる。
電子辞書をいろいろ調べてみたが、タイ語辞書でまともなものはなかった。
iPhone/iPod touchでは、WeDictというStarDict形式の辞書を使える無料アプリがあったのでそれを利用することにした。

WeDictだと、3文字以上の単語については前方一致検索でインクリメンタルに候補が出てくるが、2文字いないの単語は完全一致でしか検索できない。WeDict Proは全ての単語を前方一致検索できたり、表示された定義の中の文字をクリックしてさらに検索できたりするらしいが日本のiTunes Storeではなぜか売られていない。USAのiTunes Storeでは買えるんだが・・・。

ちなみにOS X上にParallelsWindows XPを入れた環境で作業するので、MacWindowsを行ったり来たりするが、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テキスト形式/ユニコード(UTF-16LE BOM付き)の日-タイ辞書を作成する。変換オプションで「日-タイ辞書」にするのを忘れずに。

あとはタイ日辞書ファイルを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点を修正

  1. 「 /// 」をタブに変換
  2. エンコーディングUTF-8に変換

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から辞書を引くことができるようになる。

環境

iPhone 3G
Firmware 2.1
JailBreak済み