Convert external words into Mozc system dictionary
本ツール群は当初 Mozc-UT (Mozcdic-UT) を失ったことによる損失を埋めるための「緊急避難」として使うために作られた。 現在はMozc-UTとは異なるアプローチによって、より快適な変換環境を構築することを目指している。
本ツール群はMozc外部のリソースからMozcシステム辞書を構築する。 これをMozcに組み込んでビルドすることにより、Mozcの語彙力を増加させることができる。
本ソフトウェアにそのようにして生成された辞書は 含まない 。 また、 Mozc本体も含まない 。
このようなソフトウェアにするのはいくつか理由があるが、まず本ソフトウェアが、東風フォント事件におけるさざなみゴシックのような「緊急避難」であることを理解してほしい。 つまり、何年かかるかは分からないが、安定した開発が行われる、優れたかな漢字変換ソフトウェア及び辞書が誕生するまでの「つなぎ」である。
その意味で「つなぎ」として機能しやすいようにこのようなソフトウェアにした。 これは、Mozc以外のソフトウェアからもMozcシステム辞書からの変換とすることで利用しやすいようにし、かな漢字変換ソフトウェアの発展を促す意味もある。
Mozcdic-UTとの大きな違いは以下になる
- オープンなプロジェクトであり、ライセンスがGPL v3である
- ソフトウェアは辞書生成のためのツールであり、生成された辞書ではない
- Mozcdic-UTは一般名詞のみを対象とするが、Mozcdict-EXTは品詞を制限しない
各ディレクトリの mkdict.zsh
または mkdict.rb
は変換された辞書を生成し、標準出力に吐く。
この時以下の前提を満たす必要がある。
- スクリプトの実行はスクリプトがあるディレクトリをカレントディレクトリとして実行する
- 環境変数
$MOZC_ID_FILE
にMozcのid.def
ファイルのパスを入れておく必要がある
id.def
ファイルはMozcのsrc/data/dictionary_oss/id.def
に存在している。
このファイルは 本ソフトウェアには含まれない。
ビルドにどのみちMozcが必要となるので、先にMozcのリポジトリを入手・更新しておくことが望ましい。
このようにして標準出力に吐かれた内容はMozcのシステム辞書として扱うことができ、システム辞書に組み込んでビルドすれば含めることができる。
おすすめは src/data/dictionary_oss/dictionary09.txt
に追記することだ。
複数の辞書を生成した場合、複数の辞書にまたがる整形作業を加えるとより良い。
.dev.utils/uniqword.rb
はARGF
から辞書を読み、品詞を含めて同一の語があれば除外してSTDOUTに出力する。
重複した語はSTDERRに吐かれる。
ruby uniqword.rb ~/dict/neologd.txt ~/dict/sudachi.txt > ~/dict/unified.txt
Mozcdic-UTと違い、固有名詞の生成を行うので、この作業はやったほうが良い。
本プロジェクトとは別に fcitx5-mozc-ext-neologd
というAURパッケージを用意している。
ARUからこのパッケージをインストールすることで外部辞書を含む形でMozcをビルドしてインストールすることができる。
なお、当該パッケージは本プロジェクトとは別のものである。
必須。MOZCの id.def
の所在を示す。
厳密に一致する品詞がない場合に、よりおおまかな品詞に丸める。
no
を指定するとこの処理を行わない。
次の辞書ツールで機能する。
- sudachi
品詞が不明な語がある場合にエラーを発生させる。
デフォルトでは発生させず、yes
を指定した場合に発生させる。
次の辞書ツールで機能する。
- sudachi
通常、このツールは「英語への変換」を除外する。
-e
あるいは --english
オプションをつけると、英語の変換結果を許容する。
--english
をつけておらず、--english-proper
をつけた場合、英語は固有名詞である場合のみ許容する。
固有名詞を除外する。
全角文字と半角カナへの変換を除外しない。
より正確には通常はOnigmoの正規表現 /^[\p{Symbol}\p{In_CJK_Symbols_and_Punctuation}\p{Punctuation}\p{White_Space}\p{In_Halfwidth_and_Fullwidth_Forms}]+$/
にマッチする場合除外されるが、これによる除外を停止する。
--fullwidth-english
をつけていない場合に固有名詞のみ許容する。
通常、このツールは変換時に支障をきたす「きごう」を変換する記号を除外するが、
-s
あるいは --symbol
オプションをつけると、強制的に生成に含める。
コマンドラインオプションを使用せずにデフォルトのオプションを変更したい場合、設定ディレクトリ(${XDG_CONFIG_HOME:-$HOME/.config}/mozcdict-ext
)のconfig.yaml
によってデフォルトオプションを与えることができる。
例えば--fullwidth-english
を常に有効にしたい場合は、次のようにする。
fullwidth-english: true
設定ディレクトリのexclude.txt
ファイルを用いて、辞書への追加を回避したいパターンを指定することができる。
除外リストは、1行あたり1パターンで、読みパターンと原形パターンを1個以上の連続するホワイトスペースで区切ったものである。
パターンはそれぞれFile.fnmatch
によってチェックされる。
例えばゃ
で始まる読みで変換されるすべての候補を除外したい場合は
ゃ* *
とする。
何か問題があれば、Issueに書くか、Pull Requestを生成してほしい。
ただ、私は既にかなり手出ししている中で善意で本ソフトウェアを作っていることを理解してほしい。 つまり、IssueやPull Requestにまで手が回るかは分からない。 (少なくとも、なるべく対応したいとは思っている。)
このソフトウェアはGPL v3でライセンスされている。 ソフトウェアは「自由に」コピーして使って良い。
一方、このソフトウェアに何か問題があったり、あるいは不足があったりしたとしても私は一切の責任を負うことはできない。 誰もがよく知っている通り、ABSOLUTELY NO WARRANTYである。
本ソフトウェアが提供するのはあくまでも辞書生成ツールである。 しかし、恐らくディストリビューションとして配布したいとすれば、それによってビルドされたMozcだろう。 このようにしてビルドされたMozcは本ツールのライセンスとは全く関係がない。 なぜならば、そのMozcに本ツールは含まれないからだ。 そのようなパッケージは、Mozcと、外部辞書として使われたリソースのライセンス・規約に従うことになるだろう。 そのようにして配布が可能であることもまた、本ソフトウェアおよび私は保証しない。
- NEologd - 機能する
- Sudachi - 一部の品詞についてのみ生成される (実験的・開発中)
- 本ソフトウェアによって生成される辞書のライセンス、および正当性について本ソフトウェアは一切関知しない
sudachiのclsmap.yaml
(Sudachiの品詞分類からMozcの品詞分類への変換)
utils/dev-by-cls.rb
を使うと品詞ごとの具体的なワードに分類して.dev.reference/sudachi-cls
以下に吐く(.gitignore
で指定されている)ので、これを参考に品詞分類を固める作業が進行中である。
- Ruby >= 3.0
- Zsh
- xz(1)
- curl(1)
- Git (Submodules)
mecab-ipadic-NEologdをベースとした辞書である。
形態素解析ソフトウェアSudachiの辞書を流用したものである。
名詞以外についても利用する予定だが、現在停滞中である。
neologd, sudachiを使っても変換できない、もしくは変換が困難な語について手動で編纂されている辞書である。
原則として国語小辞典に掲載されるような一般語のみを収録し、固有名詞は収録しない。
登録のための管理システムは開発中であり、現時点では追加してほしい語はissueにて申請してほしい。
Mozc Common User Dictは本プロジェクトを補完する一般語のユーザー辞書である。
byhandへの収録が何らかの理由で難しいものはこちらに収録される。