# JMdict 派生データ

このパッケージは、iOS アプリ **作詞支援PRO**（App Store 名「作詞支援PRO - 韻・音数で検索」）とweb サイト **韻で検索.com**が JMdict から導出して使っている派生データの公開用一式です。

- 公開先： 韻で検索.com の /data/jmdict/
- 生成日： 2026-11-01
- ライセンス： **Creative Commons Attribution-ShareAlike 4.0 International（CC BY-SA 4.0）**
  ―― 全文は同梱の `LICENSE.txt`（<https://creativecommons.org/licenses/by-sa/4.0/legalcode.txt> から取得）

## 帰属表示（Attribution）

このパッケージに含まれるデータは、EDRDG（Electronic Dictionary Research and
Development Group）が提供する **JMdict** から導出したものです。

- JMdict / EDICT Dictionary Project： <https://www.edrdg.org/wiki/index.php/JMdict-EDICT_Dictionary_Project>
- EDRDG ライセンス表明： <https://www.edrdg.org/edrdg/licence.html>
- 著作権： James William BREEN and The Electronic Dictionary Research and Development Group

JMdict 自体が CC BY-SA 4.0 で提供されており、その ShareAlike 条項

> Share Alike. If you alter, transform, or build upon this work, you may distribute
> the resulting work only under the same, similar or a compatible licence.

に従い、本派生データも同じ CC BY-SA 4.0 で配布します。EDRDG の著作権は本派生データの
公開によって一切減じられるものではなく、当方はこのデータに対する著作権を主張しません
（EDRDG ライセンス表明 3 節「Users of material from the files must NOT claim copyright
over that material.」）。

## 元データの版

| 項目 | 値 |
|---|---|
| 配布物 | `JMdict_e_NG.gz`（"New Generation" 版・日英） |
| 取得元 | <http://ftp.edrdg.org/pub/Nihongo/JMdict_e_NG.gz> |
| ルート要素の `created` 属性 | `2026-11-01` |
| ルート要素の `version` 属性 | `1.10` |
| 圧縮サイズ / 展開サイズ | 11,030,505 バイト / 64,949,693 バイト |
| SHA-256（`JMdict_e_NG.gz`） | `e1889f8e7aa0fd438b35efd0a495b122a01c030074241aafc18f7fbe26885a14` |
| エントリ数 | 219,005 |

## 更新の手順（EDRDG ライセンス 4 節）

EDRDG ライセンスは次を求めています。

> If a software package, WWW server, smartphone app, etc. uses the files or
> incorporates data from the files, there must be a procedure for regular updating
> of the data from the most recent versions available. For example, WWW-based
> dictionary servers should update their dictionary versions at least once a month.

辞書データを作り直すときは、その前に `pipeline/jmdict_fetch.py --force` で上記の配布 URL から
最新版の JMdict を取り直し、辞書データとこの派生データを作り直します（バージョンの固定・
古い版へのピン留めは行いません）。

## このパッケージに入っているもの

### `jmdict-signals.tsv.gz`

UTF-8・タブ区切り・gzip 圧縮。1 行目がヘッダで、**1 行が 1 つの「読みグループ」**に対応します。

| 列 | 内容 |
|---|---|
| `group_id` | 読みグループの識別子（辞書 DB におけるもの。辞書を作り直すと変わる） |
| `reading` | その読みグループの読み（カタカナ） |
| `proper_noun_only` | その読みの表記がすべて固有名詞・新語層なら `1`、一般語の表記を含めば `0` |
| `jmdict_exists` | (見出し語, 読み) が JMdict に存在すれば `1` |
| `has_frequency_mark` | JMdict の優先度タグによる頻出印が付いていれば `1` |
| `headwords` | その読みグループに属する見出し語を `\|` で連結したもの |

**収録範囲は `jmdict_exists = 1` の読みグループのみ**です（114,003 行）。`0` は
「JMdict に無い」という判定結果であって JMdict の内容を含まないため、収録すると
辞書全体（2,060,875 行）へ膨らむ一方で情報は増えません。このファイルに現れない
読みグループはすべて `jmdict_exists = 0` です。

2 つの信号は**読みグループ単位の値**です。実装上はグループの代表エントリ（並び順キーが
最小のエントリ）の値を採っていますが、並び順キーは頻出印・JMdict 存在をこの順で最優先の
桁に置くため、結果として**そのグループに属するどれか 1 つの見出し語が条件を満たせば 1**
になります（メンバー全体の OR と一致）。

`headwords` 列は、そのグループがどの語を指すのかを判別できるように添えているもので、
**個々の見出し語ごとの判定値ではありません**。

`has_frequency_mark` の定義は JMdict の DTD 内コメントの記述そのものです。

> The entries with news1, ichi1, spec1, spec2 and gai1 values are marked with a
> "(P)" in the EDICT and EDICT2 files.

すなわち `news1` / `ichi1` / `spec1` / `spec2` / `gai1` のいずれかが、その
(見出し語, 読み) の見出し語側・読み側のどちらかに付いている場合に `1` になります。

### `jmdict-entry-signals.tsv.gz`

UTF-8・タブ区切り・gzip 圧縮。1 行目がヘッダで、**1 行が 1 つの (見出し語, 読み)** に対応します。
表記チップ（同じ読みの表記の並び）は、見出し語ごとの並び順キーで並べており、その第 1 段・第 2 段が
見出し語ごとの 2 つの信号です。このファイルはその見出し語ごとの値です。

| 列 | 内容 |
|---|---|
| `group_id` | 読みグループの識別子（`jmdict-signals.tsv.gz` と同じ） |
| `reading` | 読み（カタカナ） |
| `headword` | 見出し語 |
| `jmdict_exists` | (見出し語, 読み) が JMdict に存在すれば `1`（このファイルには `1` の行だけを収録） |
| `has_frequency_mark` | その (見出し語, 読み) に JMdict の頻出印が付いていれば `1` |

収録は 153,603 行（そのうち頻出印つき 27,221 行）です。
このファイルに現れない (見出し語, 読み) はすべて `jmdict_exists = 0`・`has_frequency_mark = 0` です。

### `stats.json`

件数の内訳と元データの版です。

| 区分 | 読みグループ総数 | `jmdict_exists = 1` | `has_frequency_mark = 1` |
|---|---:|---:|---:|
| 一般語の表記を含む読み | 248,994 | 80,576（32.4%） | 18,509（7.4%） |
| 表記がすべて固有名詞・新語層の読み | 1,811,881 | 33,427（1.8%） | 822（0.0%） |
| 合計 | 2,060,875 | **114,003** | 19,331 |

書き出した 114,003 グループに属する見出し語は 321,225 件です。

### `LICENSE.txt`

CC BY-SA 4.0 の全文（英語原文）。

### `SHA256SUMS.txt`

上記各ファイルのチェックサム。

## 何が「派生データ」なのか（範囲の判断）

辞書データ（`lexicon.db` と `search_index.bin`）のうち、**JMdict を入力として値が決まるのは、
(見出し語, 読み) ごとの次の 2 つの真偽値だけ**です。

1. `jmdict_exists` ―― (見出し語, 読み) が JMdict に存在するか
2. `has_frequency_mark` ―― JMdict の優先度タグによる頻出印が付いているか

辞書データに含まれる他の JMdict 由来の値は、すべてこの 2 つの決定的な関数です。

- **並び順キー**（読みの並びの `reading_groups.cost`、表記チップの並びの `entries.cost`）
  ―― 6 段の優先順位を 1 つの整数へ位取り符号化した値。その第 1 段・第 2 段が上記 1・2。
  残る 4 段（出典階層・活用形ペナルティ・生コスト・副キー）は JMdict を入力に取りません
- **検索インデックスの flags バイト bit3 / bit4** ―― 上記 1・2 そのもの
- **表記ゆれ・誤記変種の降格判定** ―― 3 条件のうち 1 つが「JMdict に無い」＝上記 1 の否定

したがって、上記 2 つを書き出せば派生データを過不足なく網羅します。

## 含まれないもの

- **JMdict の語義（gloss）・見出し語・読み・エントリ番号は一切含みません。**
  JMdict は語彙源としては使わず、並び順を決める補助信号としてのみ辞書データを作るときに
  参照しています。収録している語彙そのものは SudachiDict（Apache License 2.0）と
  Wikidata（CC0）に由来します
- **品詞分類はこの派生データに含まれません。** 品詞 7 分類は SudachiDict の品詞情報のみから
  決まります。JMdict の品詞タグは、その分類の精度を辞書データを作るときに実測する目的だけに
  使っており、辞書データには格納していません

## 再生成の方法

作詞支援PRO のリポジトリで、辞書 DB を生成したうえで次を実行します。

```sh
cd data-pipeline && venv/bin/python -m pipeline.jmdict_fetch --force
venv/bin/python -m pipeline.build_db && venv/bin/python -m pipeline.build_index
cd .. && python3 scripts/export_jmdict_derived.py <出力ディレクトリ> --generated-on YYYY-MM-DD
```

## 無保証

JMdict は無保証で提供されており、本派生データも同様です。正確性・特定目的への適合性に
ついていかなる保証もありません（EDRDG ライセンス表明 5 節、CC BY-SA 4.0 第 5 条）。

## 問い合わせ

JMdict そのものに関する問い合わせは EDRDG（Dr Jim Breen）へお願いします。
