# 情報源とライセンス

アプリの「情報源」画面にそのまま出せる形で書いてある。
**起動時に一瞬出すのでは要件を満たさない**（EDRDG が明記している）。
メニューからいつでも開ける独立した画面に置くこと。

---

## このアプリが使っている辞書

### JMdict（一般語彙 242,811 語）

読み・品詞・一般度（`nfXX` 優先度タグ）を使っている。

- 配布元: [Electronic Dictionary Research and Development Group (EDRDG)](http://www.edrdg.org/jmdict/j_jmdict.html)
- ライセンス: [Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)](https://creativecommons.org/licenses/by-sa/4.0/)

### JMnedict / ENAMDICT（固有名詞 594,846 語）

地名・駅名・人名・作品名などを候補に含めるために使っている。

- 配布元: [EDRDG](http://www.edrdg.org/enamdict/enamdict_doc.html)
- ライセンス: CC BY-SA 4.0

### EDRDG が求めている表示文（この文はそのまま出す）

> This application uses the JMdict/EDICT and JMnedict/ENAMDICT dictionary
> files. These files are the property of the
> [Electronic Dictionary Research and Development Group](https://www.edrdg.org/),
> and are used in conformance with the Group's
> [licence](https://www.edrdg.org/edrdg/licence.html).

### UniDic（辞書の構築時のみ）

同形異音語（`新宿` = シンジュク / ニイジュク …）のうち、どの読みが実際に使われる
かを判定するために、**辞書を作るときだけ** `fugashi` + `unidic-lite` を使っている。
アプリの実行時には形態素解析器を積んでいない。結果は `rhyme.db` の `udpick` 列に
真偽値として残る。

- UniDic: 国立国語研究所。BSD / GPL / LGPL のトリプルライセンス（BSD を選択）

---

## Share-Alike：何を公開する必要があるか

CC BY-SA 4.0 は**派生物にも同じライセンスを求める**。このアプリの派生物は
**`rhyme.db` そのもの**で、次を含む:

| 列 | 中身 | 由来 |
|---|---|---|
| `surface` `reading` `pos` `freq` `gloss` | 辞書の中身 | JMdict / JMnedict |
| `vnorm` `rvnorm` `vraw` `rvraw` `mora` | 母音列と反転（韻の索引） | 読みから導出 |
| `rpop` `lprod` `rprod` | 派生語での出現数・くっつきやすさ | 辞書から導出 |
| `udpick` | 形態素解析器が選ぶ読みか | UniDic |
| `alt` | そのエントリの第一表記でないか | JMdict |

**導出した列も派生物に含まれる。** したがって `rhyme.db` を CC BY-SA 4.0（または
互換ライセンス）でダウンロードできる場所に置く必要がある。

**アプリのコードは対象外。** Share-Alike が及ぶのはデータであってプログラムでは
ないので、アプリ本体を非公開にしたまま商用販売してよい。

---

## 更新手順

辞書は更新され続けるので、同梱データを定期的に作り直す。

```
python -c "from rhyme_jp import build; build.build(force_dl=True)"   # 最新版を取得して再構築
python -c "from rhyme_jp import build; build.slim()"                 # 配布用に列を削る
python eval_reading.py && python eval_input.py && python test_mora.py  # 回帰確認
```

`force_dl=True` を付けないと `data/` のキャッシュを使い回して更新されない。
再構築のたびに上の3本を通し、**同形異音の第一候補正解率**（`eval_reading.py`）が
落ちていないことを確認する。

---

## 出さない語について

このツールは訊かれてもいない語を提案するので、辞書に載っていることと候補として
差し出すことは別問題になる。JMdict の語義タグ（`X` `vulg` `sens` `derog`）が
**全語義**に付いたエントリの (表記, 読み) は、固有名詞側も含めて候補から外している。
辞書のタグでは届かないものは `rhyme_jp/blocklist.txt` に手で足す。
詳しくは README の「候補に出さない語」を参照。
