Cobulid 辞書ファイルの構造

(スクリプトを見ながら書き起こしたので細かいところは間違っている可能性あり)

■ファイル
==========

●CD-ROM の種類

1. 書籍第3版
1.1 Collins COBUILD on CD-ROM ISBN:0-00-710884-2 ('Version 1.0 Software')
1.2 Collins COBUILD on CD-ROM ISBN:0-00-715905-6 ('Version 2.0 Software')
2. 書籍第4版 ('Version 3.0 Software')
2.1 Advanced Learner's English Dictionary + CD-Rom ISBN:0-00-715799-1 Hardback
2.2 Advanced Learner's English Dictionary + CD-Rom ISBN:0-00-715800-9 Paperback
2.3 Collins Cobuild on CD-Rom Resource Pack ISBN:0-00-716921-3

2.1 と 2.2 の CD-ROM の内容は同一と思われる。
2.1/2.2 は辞書本体と Wordbank のみ。
その他は文法、シソーラス、用法が付属する。
2.1/2.2 と 2.3 では辞書本体のファイルが若干異なる。

●Version 1

インストール先ディレクトリ

EN MBX 244,901 01-12-11 11:38 en.mbx 画像
EN SPL 524,073 01-12-11 11:38 en.spl スペル
EN WBX 549,351,419 01-12-11 11:40 en.wbx 発音
EN-CC3 FTX 17,685,849 01-12-11 11:37 en-cc3.ftx
EN-CC3 REL 266,056 01-12-11 11:37 en-cc3.rel
EN-CC3 TRD 15,191,804 01-12-11 11:37 en-cc3.trd 辞書
EN-CGR FTX 1,393,929 01-12-11 11:37 en-cgr.ftx
EN-CGR TRD 1,158,940 01-12-11 11:37 en-cgr.trd 文法
EN-CTH FTX 1,331,337 01-12-11 11:37 en-cth.ftx
EN-CTH TRD 1,590,516 01-12-11 11:37 en-cth.trd シソーラス
EN-CUS FTX 2,473,533 01-12-11 11:37 en-cus.ftx
EN-CUS TRD 1,645,144 01-12-11 11:37 en-cus.trd 用法
EN-CWB FTX 37,906,681 01-12-11 11:38 en-cwb.ftx
EN-CWB TRD 25,367,548 01-12-11 11:37 en-cwb.trd Wordbank

●Version 2

インストール先ディレクトリの data ディレクトリ

EN SPL 523,273 02-09-04 4:00 en.spl スペル
HCP-CC3 DDF 3,253 02-09-04 4:00 hcp-cc3.ddf
HCP-USR DDF 224 02-09-04 4:00 hcp-usr.ddf
HCP_EN WBX 549,351,419 02-09-04 4:00 hcp_en.wbx 発音
HCP_EN~1 FTX 22,913,217 02-09-04 4:00 hcp_en-cc3.ftx
HCP_EN~1 MBX 244,901 02-09-04 4:00 hcp_en-cc3.mbx 画像
HCP_EN~1 REL 334,395 02-09-04 4:00 hcp_en-cc3.rel
HCP_EN~1 TRD 15,055,464 02-09-04 4:00 hcp_en-cc3.trd 辞書
HCP_EN~2 FTX 1,634,201 02-09-04 4:00 hcp_en-grm.ftx
HCP_EN~2 REL 5,121 02-09-04 4:00 hcp_en-grm.rel
HCP_EN~2 TRD 997,520 02-09-04 4:00 hcp_en-grm.trd 文法
HCP_EN~3 FTX 1,576,417 02-09-04 4:00 hcp_en-gth.ftx
HCP_EN~3 TRD 1,467,456 02-09-04 4:00 hcp_en-gth.trd シソーラス
HCP_EN~4 FTX 2,978,453 02-09-04 4:00 hcp_en-usg.ftx
HCP_EN~4 TRD 1,512,784 02-09-04 4:00 hcp_en-usg.trd 用法
HCP_EN~5 FTX 35,691,873 02-09-04 4:00 hcp_en-wbk.ftx
HCP_EN~5 TRD 23,348,888 02-09-04 4:00 hcp_en-wbk.trd Wordbank

●Version 3

インストール先ディレクトリの data ディレクトリ

523273 5月 23 2003 en.spl スペル
3745 5月 23 2003 hcp-cc3.ddf
224 5月 23 2003 hcp-usr.ddf
19121229 5月 23 2003 hcp_en-cc3.ftx
244901 5月 23 2003 hcp_en-cc3.mbx 画像
314898 5月 23 2003 hcp_en-cc3.rel
13251280 5月 23 2003 hcp_en-cc3.trd 辞書
35691873 5月 23 2003 hcp_en-wbk.ftx
23348888 5月 23 2003 hcp_en-wbk.trd Wordbank
549351419 5月 23 2003 hcp_en.wbx 発音
20150 5月 23 2003 lexsmb.mbx

Resource Pack の場合、文法、シソーラス、用法のファイルもある。


*.trd 本文データ
*.ftx 全文検索用インデックス
*.rel ??リレーションファイル
*.wbx 発音データ
*.mbx 画像データ
*.spl ??スペルデータ
*.ddf ??辞書説明ファイル

■辞書ファイルの構造
====================

*.trd ファイルの構造は次のとおり。

ヘッダ部
不明 (調べていない)
インデックス部
データ部

●ヘッダ部

長さは 128 バイト (80h) 固定。
数値はすべてリトルエンディアン。

位置 長さ
0h 64 著作権表示 (あまりは 00h)
40h 16 不明
50h 4 データ件数
54h 4 不明
58h 4 インデックスベース数
5Ch 4 インデックスオフセット数 (データ件数 + 1)
60h 4 不明
64h 4 インデックス部位置
68h 4 データ部位置
6Ch 4 不明
70h 16 不明

●インデックス部

次のような形式で格納されている。

base 1
base 2
...
base n
ofs 1..64 (base 1用)
ofs 1..64 (base 2用)
...
ofs 1..x (base n用)

まずインデックスベースがインデックスベース数分、格納されている。

長さ
4 インデックスベース (データ部先頭からのオフセット)

続いてインデックスベース1件につきインデックスオフセットが64件ずつ、
順番に格納されている。
最後のインデックスベースについてはインデックスオフセットが64件より
少ないことがある。

長さ
2 インデックスオフセット (インデックスベース先頭からの4バイト単位のオフセット)

データレコード位置は次の式で求める。

データレコード位置 = データ部位置
+ インデックスベース
+ ( インデックスオフセット * 4 )

各データレコードの長さは、次のデータレコード位置まで。
インデックスオフセット数はデータ件数 + 1、
つまり最終インデックスオフセットは最終データの長さを求めるために存在する。

●データ部

次の形式のレコードが連続して格納されている。

長さ
1 本文項目数
- 見出し項目
- 本文項目1
...
- 本文項目n

各項目は、格納されているデータ項目を示すビットフラグ(1バイト)と
実際のデータの連続。
文字データは6ビット単位のビットストリームで格納されている。
以下、とくに記述がない場合、データは文字データ。

== 見出し項目の構造

フラグ
0x01 見出し部
0x01 見出し語
0x02 異形/キー? (類語、文法のみ)
0x08 品詞 (類語のみ)
0x10 変化形 [CD-ROM v3.0]
0x20 用法 (類語のみ)
0x80 発音

0x02 追加データ
0x01 別見出しにした理由
0x02 構文 [Resource Pack]
0x04 分綴 [CD-ROM v3.0]
0x08 注釈
0x10 章節番号 (文法のみ)
0x20 頻度
データは1バイトの数値で頻度段階をあらわす
(1..5、CD-ROM v3.0 では 1..3)

0x80 音声データ
次の形式のデータが連続して格納されている。
01h: データあり (データ3バイトが続く、先頭データ?)
80h: データあり (データ3バイトが続く、先頭以外のデータ?)
00h: データ終了

== 本文項目の構造

フラグ
0x01 小見出し
0x01 見出し
0x02 ?? 別見出し [CD-ROM v3.0] (faff の 1 件のみ、編集ミス?)
0x08 品詞
0x10 派生形
0x20 見出し全体の説明 [Resource Kit]

0x02 用法など
0x02 異形
0x04 分綴 [CD-ROM v3.0]
0x08 注釈 (類語のみ、表示されない)
0x10 用法 (文法では章節番号)
0x20 ?? (辞書本体のみ)
データは1バイトで値は01h..05h (頻度か?)
0x80 番号または記号

0x10 本文
0x01 意味
0x02 例文
データは先頭1バイトが例文数。以下、例文データが続く。
0x04 表
データは先頭1バイトが行数。以下、各行のデータが続く。
0x08 参照
データは先頭1バイトが参照数。以下、各データが続く。
0x40 参照 (See also) [CD-ROM v3.0]

0x80 画像
データは先頭1バイトがフラグ。次の4バイトが画像番号。

0x40 関連語
0x01 同義語
0x02 反義語


■文字データ
============

文字データは6ビット単位のビットストリームでバイト単位で格納されている。
常用文字は6ビット、通常文字は12ビット、外字は30ビットであらわす。
文字データの終わりは 000000b。

先頭6ビットの値
0 文字列終端
1..26 英小文字 (a..z)
32..38 常用記号
40..62 後続文字とあわせて1文字 (英大文字、数字、記号、アクセント付き文字など)
63 外字 (次の4文字からそれぞれ -1 した値が unicode の各 4 ビットに相当する)

詳細は CobuidLib.rb を参照のこと。

文字データ内にはタグが使用されている。

- <タグ.文字列> 形式 ex.
b 太字 (bold) [CD-ROM v3.0]
e 強調 (emphasis)
i 斜体 (italic)
u 下線? (underline? used?)
c 注釈 (comment) (informal, Brit., ...)
f 語句? (phrase?)
x 相互参照 (cross reference)
g 文法要素? (grammar?) (of, in, see also, ...)
o option? pronoun? (your, somenoe, ...)
v ?? (see, one's, ...) [CD-ROM v3.0]
w ?? (WEAK, STRONG, ...) [CD-ROM v3.0]
A 米国 (American)
B 英国 (British)
O Option? (to, with, someone, ...)
E 指数? (Exponent?) (上付き数字)
S 記号 (Symbol) [CD-ROM v3.0]
- <タグ> 形式 ex.
h 分綴文字 (hyphenation) [CD-ROM v3.0]
DW 警告
li 表項目 (list item)
lb 表開始 (list begin)
le 表終了 (list end)
z[1-9]?[a-z] 発音アイコン , , ...
A[a-z] 米国発音アイコン [CD-ROM v3.0]
B[a-z] 英国発音アイコン [CD-ROM v3.0]

表の形式は
  • ...
  • ...


    ■データの例
    ============

    Aの項目を例として説明する。データは次のようになっている。

    05 81 01 F6 09 20 04 00 01 B3 FB 00 80 B4 FB 00
    00 13 18 F6 D9 BD D7 D8 3D C4 00 F6 09 20 06 26
    81 8E 0F 60 F8 74 E4 80 1F 87 4E 26 82 8C 00 80
    F9 10 00 01 88 58 7D 82 38 09 4E 05 08 16 01 89
    49 35 20 30 55 14 15 28 0F 1A 05 08 16 0F 64 38
    73 09 4C 88 01 31 02 01 08 55 21 00 13 18 F6 D9
    ...

    0. 本文項目数

    05 先頭1バイトは本文項目数、つまり5項目ある。

    1. 見出し項目

    81 次の1バイトは見出し項目のフラグ。
    見出し部(0x01)と音声データ(0x80)があることがわかる。

    1.1 見出し部

    01 見出し部の先頭はフラグ。データは見出し語(0x01)のみ。

    1.1.1 見出し語

    F6 09 20 04 00

    これを二進数であらわすと、

    11110110 00001001 00100000 00000100 00000000

    6ビット単位で解析し、null(000000b)でデータ終了となる。

    111101 100000 100100 100000 000001 000000 0000
    A , a

    1.2 音声データ

    01 B3 FB 00 80 B4 FB 00 00

    これは次のように解析できる。

    01 データあり(先頭データ?)
    B3 FB 00 音声データ番号(?)
    80 データあり(途中データ?)
    B4 FB 00 音声データ番号(?)
    00 データ終了

    2.0 本文項目

    以下、本文項目数だけ、本文項目が続く。

    2.1 本文項目1

    13 最初のバイトはフラグ。
    小見出し(0x01)、用法(0x02)、本文(0x10)があることがわかる。

    2.1.1 小見出し

    18 最初のバイトはフラグ。
    品詞(0x08)、変化形(0x10)があることがわかる。

    2.1.1.1 品詞

    F6 D9 BD D7 D8 3D C4 00

    文字列。値は、

    N-VAR

    2.1.1.2 変化形

    F6 09 20 06 26 81 8E 0F 60 F8 74 E4 80 1F 87 4E 26 82 8C 00

    文字列。値は、

    A, a A's, a's

    は発音アイコンを示すタグ。
    が見出し部の音声データの最初のデータに、が2番目のデータに対応する。

    2.1.2 用法

    80 フラグ。データは番号または記号(0x80)のみ。

    2.1.2.1 番号または記号

    F9 10 00

    文字列。値は、

    1

    つまり、語義番号。

    2.1.3 本文

    01 フラグ。データは意味(0x01)のみ。

    2.1.3.1 意味

    88 58 7D 82 38 09 4E 05 08 16 01 89 49 35 20 30
    55 14 15 28 0F 1A 05 08 16 0F 64 38 73 09 4C 88
    01 31 02 01 08 55 21 00

    文字列。値は、

    is the first letter of the English alphabet.

    は強調タグ。htmlでいえばAで太字表示。

    2.2 本文項目2

    以下、本文項目1と同様。


    ■画像データファイルの構造
    ==========================

    *.mbx ファイルの構造は次のとおり。

    ヘッダ部
    不明
    テーブル部
    インデックス部
    データ部

    ●ヘッダ部

    長さは 128 バイト (80h) ??。
    数値はすべてリトルエンディアン。

    位置 長さ
    0h 64 著作権表示 (あまりは 00h)
    40h 16 不明
    50h 4 テーブル件数
    54h 4 インデックス件数
    58h 4 データ件数
    5Ch 4 不明
    60h 4 テーブル部位置
    64h 4 インデックス部位置
    68h 4 データ部位置
    6Ch 4 不明
    70h 16 不明

    ●テーブル部

    調べていない。

    ●インデックス部

    次の形式のレコードがインデックス件数分、連続して格納されている。

    長さ
    4 データ位置 (データ部先頭からのオフセット)

    ●データ部

    次の形式のレコードが連続して格納されている。

    長さ
    1 不明??
    - 画像データ (GIF形式)

    先頭レコードと最終レコードはダミーデータのようだ。
    つまり画像番号は1から始まる。