Skip to content

reasonset/mozcdict-ext

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

mozcdict-ext

Convert external words into Mozc system dictionary

概要

本ツール群は Mozc-UT (Mozcdic-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.rbARGFから辞書を読み、品詞を含めて同一の語があれば除外してSTDOUTに出力する。 重複した語はSTDERRに吐かれる。

ruby uniqword.rb ~/dict/neologd.txt ~/dict/sudachi.txt > ~/dict/unified.txt

Mozcdic-UTと違い、固有名詞の生成を行うので、この作業はやったほうが良い。

Archlinuxの場合

本プロジェクトとは別に fcitx5-mozc-ext-neologd というAURパッケージを用意している。

ARUからこのパッケージをインストールすることで外部辞書を含む形でMozcをビルドしてインストールすることができる。

なお、当該パッケージは本プロジェクトとは別のものである。

環境変数

$MOZC_ID_FILE

必須。MOZCの id.def の所在を示す。

$WORDCLASS_ROUND

厳密に一致する品詞がない場合に、よりおおまかな品詞に丸める。 noを指定するとこの処理を行わない。 次の辞書ツールで機能する。

  • sudachi

$ERROR_ON_UNEXPECTED_CLASS

品詞が不明な語がある場合にエラーを発生させる。 デフォルトでは発生させず、yesを指定した場合に発生させる。 次の辞書ツールで機能する。

  • sudachi

実行オプション

-e / --english

通常、このツールは「英語への変換」を除外する。 -e あるいは --english オプションをつけると、英語の変換結果を許容する。

--english-proper

--englishをつけておらず、--english-properをつけた場合、英語は固有名詞である場合のみ許容する。

-P / --no-proper

固有名詞を除外する。

-w / --fullwidth-english

全角文字と半角カナへの変換を除外しない。

より正確には通常はOnigmoの正規表現 /^[\p{Symbol}\p{In_CJK_Symbols_and_Punctuation}\p{Punctuation}\p{White_Space}\p{In_Halfwidth_and_Fullwidth_Forms}]+$/ にマッチする場合除外されるが、これによる除外を停止する。

--fullwidth-english-proper

--fullwidth-englishをつけていない場合に固有名詞のみ許容する。

-s / --symbol

通常、このツールは変換時に支障をきたす「きごう」を変換する記号を除外するが、 -s あるいは --symbol オプションをつけると、強制的に生成に含める。

オプションのデフォルト

コマンドラインオプションを使用せずにデフォルトのオプションを変更したい場合、設定ディレクトリ(${XDG_CONFIG_HOME:-$HOME/.config}/mozcdict-ext)のconfig.yamlによってデフォルトオプションを与えることができる。

例えば--fullwidth-englishを常に有効にしたい場合は、次のようにする。

fullwidth-english: true

除外

設定ディレクトリのexclude.txtファイルを用いて、辞書への追加を回避したいパターンを指定することができる。

除外リストは、1行あたり1パターンで、読みパターンと原形パターンを1個以上の連続するホワイトスペースで区切ったものである。

パターンはそれぞれFile.fnmatchによってチェックされる。

例えばで始まる読みで変換されるすべての候補を除外したい場合は

ゃ*    *

とする。

IssueとPR

何か問題があれば、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で指定されている)ので、これを参考に品詞分類を固める作業が進行中である。

Dependency

  • Ruby >= 3.0
  • Zsh
  • xz(1)
  • curl(1)

About

Convert external words into Mozc system dictionary

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published