Kazuhiro's blog
ようこそ! Kazuhiro's blog
日曜日, 11月 28 2021 @ 11:55 午前 JST
 記事を友人にメールする 印刷用画面 

OALD7の圧縮について

general

Oxford Advanced Learner's Dictionary, 7th Editionに付属するOxford Advanced Learner's Compassのデータのうち、圧縮部分に関するメモです。 基本的には先人による解析をトレースしただけです。 圧縮部分も含めて暗号化はされていないので、伸長できれば比較的容易に調べる事が可能だと思います。 ただし、いわゆるidm形式一般にあてはまるものかどうかは分かりません。

本文テキストを例に出します。CONTENT.tdaが圧縮されたデータになります。圧縮されたファイル名に拡張子tdzをつけたファイル名(この例ではCONTENT.tda.tdz)がそのインデックスになります。

圧縮されたデータは、ファイルの末尾にnull文字をつけたものをいくつか結合したもの(以下チャンクと呼びます)をdeflate圧縮し、それを更に結合させて作成されています。ファイル名は別ファイルに収録されます。

インデックスは8バイトが一組で収録されており、その8バイトのうち、先頭の4バイトに圧縮前のチャンクのサイズが、後半の4バイトに圧縮後のサイズがそれぞれリトルエンディアンで収録されています。

本文データのようなテキストファイルを前から順番に取り出すだけの場合、CONTENT.tda.tdzから8バイトずつ読み込み圧縮されたチャンクのサイズを得て、CONTENT.tdaから圧縮されたチャンクを取得します。圧縮されたチャンクはzlibのinflate関数にかけて展開、null文字を区切りとすることで個々のエントリを得ることができます。

n番目のエントリの位置は同じディレクトリのfiles.datに収録されています。テーブル構造は同じディレクトリのconfig.cftを参照して下さい。尚、エントリの位置は圧縮されたチャンクを伸長して結合した場合のオフセットを指しています。 任意のn番目のテキストを得る場合は、CONTENT.tda.tdzに収録された圧縮前のチャンクのデータサイズから目的のテキストが存在するチャンクを決定してデータを取り出します。チャンクをまたいで存在することは無いようです。 テキストの場合はnull文字に当たるまで読み込んでもよいですが、音声・画像のようなバイナリデータの場合は次のエントリのオフセットも取得して伸長後のデータサイズを決定する必要があります。 個々のバイナリデータのサイズは

(n+1)番目のオフセット - n番目のオフセット - 1

のようになります。最後の-1は末尾のnull文字を削る必要がある為です。また、最終エントリについては次のエントリのオフセットがないので例外処理が必要になると思われます。

タグ:OALD7

 記事を友人にメールする 印刷用画面 

oald7-fpwを公開

general

OALD7のCD-ROMを見ていましたが、どうも期待するようなインデックスは存在しないような気がしてきた(Jammingでもインデックスを作成しないといけないようだし)ので変換ツールをもうちょっとましにして公開してみました。こっちのサイトにはまだ準備していません。

といっても字下げやらを指定しやすくしただけで、あんまりちゃんと調整していません。本家のブラウザと比べてこう見えて欲しい等ありましたら、字下げとか改行に関してはある程度は対応できるかもしれません。それから、Lookupとeblookで使用する場合は20070806以降をお薦めします。

(追記) こっちのサイトにもページを用意しました

タグ:OALD7 FreePWING EPWING

 記事を友人にメールする 印刷用画面 

OALD7をFreePWINGで変換

general

できなくもなさそうという事で、とりあえずテキストだけやってみました。 書式はちょっとだけ整えましたが、ほとんどxmlのタグを取っ払っただけです。

画像がJPG、音声がMP3なので、この辺のデータも入れるのならFreePWINGよりはEBStudioでの変換を試みた方がよいと思います。

個人的には辞書の変換よりは直接ひく方に興味があるのですが、インデックスがなんだかよく分かりません。

タグ:OALD7 FreePWING EPWING

 記事を友人にメールする 印刷用画面 

OALD7について

general

勢いあまってOALD7を買ってしまいました。 付属のCD-ROMをインストールする前に少し調べてみましたが暗号化はされておらず、圧縮されている部分もすぐに (zlibで) 伸長できました。 少し腕に覚えがあればFreePWINGやEBStudio向けの変換ツールを作成する事もそれほど困難ではないと思われます (xmlの解釈が面倒そうですが)。 尚、私は腕に覚えはありません。

変換ツールの作製に興味はあるが、買ってみて変換できませんでしたじゃ困るという人達むけの情報でした。

タグ:OALD7

 記事を友人にメールする 印刷用画面 

Lookup 1.99の更新

Lookup

SourceForge.netで公開されているLookup 1.99ですが、先程、CVSリポジトリにLookup 1.4, Lookup 1.4+mediaでのマルチメディア拡張等が取り込まれました。 川幡さんによるコミットで、川幡さんが独自に作業された部分も含まれているようです。

ただし、川幡さん自身はEmacs23でしか動作確認していないそうです。 UTF-8なファイルがあるのでそのファイルが読めることは必須条件ですが、Emacs22以前での動作は今のところ不明なようです(私もまだ確認していません)。 Lookup 1.99を使用されている方、試してみたい方はどうぞ。

(2007/07/19 追記) 現在のCVSリポジトリから取得できるものがNTEmacs 22.1で動作するのを確認しました。 ただし、確認といっても広辞苑第五版で検索と図の表示だけしか見ていません。

タグ:Lookup