├── ChangeLog ├── LICENSE ├── PKGBUILD ├── fcitx5-mozc-ut.PKGBUILD ├── generate-mozc-archive.py └── ibus-mozc-ut.PKGBUILD ├── README.md └── src ├── alt-cannadic ├── convert_alt_cannadic.py └── make.sh ├── common ├── adjust_entries.py ├── filter_unsuitable_words.py └── unsuitable_words.txt ├── edict2 ├── convert_edict2.py └── make.sh ├── jawiki ├── convert_jawiki.py └── make.sh ├── merge ├── make.sh └── merge_dictionaries.py ├── neologd ├── convert_neologd.py └── make.sh ├── place-names ├── generate_place_names.py └── make.sh ├── skk-jisyo ├── convert_skk_jisyo.py └── make.sh └── sudachidict ├── convert_sudachidict.py └── make.sh /ChangeLog: -------------------------------------------------------------------------------- 1 | # ============================================================================== 2 | # mozcdic-ut 3 | # ============================================================================== 4 | 5 | 2024-10-22 6 | - ソースコードを merge-ut-dictionaries リポジトリにまとめた。 7 | コードが分散していると管理しにくい。 8 | 辞書ごとの個別のリポジトリは、辞書ファイルを置くだけの場所にした。 9 | 10 | 2024-07-04 11 | - 辞書生成プログラムを Python で書き換えた。 12 | 13 | 2023-01-15 14 | - データごとにプロジェクトを分割した。 15 | - ほぼすべてのソースを改変した。 16 | - プロジェクトごとにドキュメントを書いた。 17 | - GitHub にリポジトリを作成した。 18 | 19 | 2023-01-06 20 | - Update remove_unnecessary_entries.rb. 21 | デフォルト辞書と同じ読み表記を持つエントリの削除量を増やして、 22 | 配布ファイルを小さくした。 23 | 24 | - Update filter_unsuitable_entries.rb 25 | 不適切語をフィルタリングした後のIDを、「名詞,一般,」に変更した。 26 | 27 | - Update get_mozc_git.rb. 28 | Mozcの圧縮ファイルの日付を、ファイル取得日ではなく最終コミット日に変更。 29 | 30 | - Update README.md. 31 | - Update jawiki-articles. 32 | - Update utdic. 33 | 34 | 2022-12-30 35 | - Update generate_jawiki_ut.rb. 36 | - Update jawiki-articles. 37 | - Update utdic. 38 | 39 | 2022-10-22 40 | - Change "jinmei-ut" to "utdic". 41 | 人名以外にも追加したい項目があるので、jinmei-ut を utdic に変更。 42 | 例: 有機EL、昼白色 43 | 44 | - Change URL of SudachiDict. 45 | https://github.com/WorksApplications/SudachiDict 46 | > Dictionary sources were hosted on git lfs, but are hosted on S3 now. 47 | > They will be moved to github in the future once more. 48 | 49 | - Fix convert_sudachidict_to_mozcdic.rb. 50 | mozcdic-ut-sudachidict-*.txt had not been built properly. 51 | 52 | - Update jawiki-articles. 53 | - Update jinmei-ut. 54 | 55 | 2022-09-04 56 | - Update jawiki-articles. 57 | - Update jinmei-ut. 58 | 59 | 2022-07-23 60 | - Update jawiki-articles. 61 | - Update jinmei-ut. 62 | 63 | 2022-06-23 64 | - Update jawiki-articles. 65 | - Update jinmei-ut. 66 | 67 | 2022-05-25 68 | - Update jawiki-articles. 69 | - Update jinmei-ut. 70 | 71 | 2022-04-21 72 | - Update jawiki-articles. 73 | - Update jinmei-ut. 74 | 75 | - Update PKGBUILD. 76 | ソースに日付を付けるようにした。 77 | ソースが更新されても mozc_version_template.bzl が更新されないことがあるので。 78 | 旧: mozc-2.28.4702.102.tar.bz2 79 | 新: mozc-2.28.4702.102.20220418.tar.bz2 80 | 81 | バイナリパッケージの命名規則を変更した。 82 | 旧: fcitx5-mozc-ut-version.utdicdate 83 | 新: fcitx5-mozc-ut-version.srcdate 84 | 85 | mozc-ut-common を fcitx5-mozc-ut に統合した。 86 | AUR パッケージの形式に合わせないと警告が出るので。 87 | 88 | 2022-04-03 89 | - Update jawiki-articles. 90 | - Update jinmei-ut. 91 | 92 | 2022-03-05 93 | - Update jawiki-articles. 94 | - Update jinmei-ut. 95 | - Modify PKGBUILD. 96 | 97 | 2022-02-16 98 | - Update build scripts. 99 | - Modify PKGBUILD. 100 | - Update jinmei-ut. 101 | 102 | 2022-02-06 103 | - Change URL of jawiki-latest-pages-articles.xml.bz2. 104 | - Change URL of jawiki-latest-all-titles-in-ns0.gz. 105 | 106 | - Update PKGBUILD to support the changes 107 | https://github.com/fcitx/mozc/commit/4d2e3bd 108 | https://github.com/google/mozc/issues/544#issuecomment-1025122998 109 | 110 | - Update jawiki-articles. 111 | - Update jinmei-ut. 112 | 113 | 2022-01-12 114 | - Update jawiki-articles. 115 | - Update jinmei-ut. 116 | 117 | 2021-12-26 118 | - Update sudachidict. 119 | - Update jawiki-articles. 120 | - Update jinmei-ut. 121 | 122 | 2021-12-05 123 | - Update jawiki-articles. 124 | - Update jinmei-ut. 125 | 126 | 2021-11-21 127 | - Mozc辞書と「読み+表記」が重複していてもIDが重複していなければ収録することにした。 128 | 辞書サイズが大きくなるが、Mozc辞書の人名はマイナーなものが上位に来ることがあるので。 129 | 130 | - Change URL of SKK-JISYO.L. 131 | 132 | - Update jawiki-articles. 133 | - Update jinmei-ut. 134 | 135 | 2021-10-31 136 | - Update jawiki-articles. 137 | - Update jinmei-ut. 138 | 139 | 2021-10-09 140 | - Update PKGBUILD. 141 | Switched to Bazel. (Thanks Nocifer!) 142 | https://aur.archlinux.org/packages/mozc-ut-common/ 143 | https://aur.archlinux.org/packages/fcitx5-mozc-ut/ 144 | 145 | New Mozc targets are supported by Bazel only. 146 | https://github.com/google/mozc/blob/master/docs/build_mozc_in_docker.md#differences-between-bazel-build-and-gyp-build 147 | 148 | - Move fcitx4-mozc files to _obsolete. 149 | I couldn't build fcitx4-mozc with Bazel. 150 | 151 | - Update get_mozc_git.rb. 152 | Change source URL to https://github.com/fcitx/mozc.git 153 | 154 | - mozc-*.tar.bz2 に src/third_party/ を含めるようにした。 155 | サイズは大きくなるが外部からパッケージを取得する必要がなくなるので、 156 | そのままビルドできる。PKGBUILD もシンプルになった。 157 | 158 | - Make a LICENSE file automatically. 159 | 160 | - Update jawiki-articles. 161 | - Update jinmei-ut. 162 | 163 | 2021-09-25 164 | - Fix make-dictionaries.sh. 165 | 辞書作成前に既存ファイルを削除する際、mozcdic.txt を残すようにした。 166 | 最新版の mozc-*.tar.bz2 が存在する場合は mozcdic.txt を再作成しないので、 167 | 残しておかないと2回目以降の辞書作成でエラーが出る。 168 | 169 | - Update remove_unnecessary_entries.rb. 170 | 「99」までではなく「100」までの数字を収録対象にした。「100均」など。 171 | 172 | - Fix alt-cannadic. 173 | 読みの「う゛」を「ゔ」に置き換えた。 174 | alt-cannadic のバージョンは固定なので、wget のオプションを nc に変更した。 175 | 176 | - Fix skkdic. 177 | 読みの「う゛」を「ゔ」に置き換えた。 178 | 179 | - jinmei-ut.txt の量を減らした。 180 | jawiki-articles などでカバーできる。 181 | 182 | 2021-09-23 183 | - jawiki-articles を修正。 184 | 読みの取捨を共通コードに任せすぎて、ひらがな以外の読みを取得した場合でも 185 | それ以上の探索をしなくなっていた。 186 | 187 | - 読みがひらがな以外を含む場合は、各辞書の変換コードで省くようにした。 188 | エントリの取捨を共通コードに任せすぎて、各辞書単体が見づらくなっていた。 189 | 190 | - 最新版の mozc-*.tar.bz2 が mozc/ に存在する場合は再度作成しないようにした。 191 | 再度作ると sha256sum が変わるので、mozc-*.tar.bz2 の差し替えが必要になる。 192 | 193 | 2021-09-22 194 | - Mozc本体とSudachiDictのファイル取得方法を変更した。 195 | mozc_version_template.bzl や History ページから最新版のバージョン名を取得して、 196 | 手元のファイルと比較するようにした。 197 | wget だけだと常に新規取得になり、毎回450MBダウンロードすることになる。 198 | 199 | - リリースファイルの作成に必要な作業を自動化した。 200 | make-dictionaries.sh を実行すると、 201 | 最新の Mozc を取得してバージョン名付きの mozc-*.tar.bz2 を作成する。 202 | README.md に書かれている date: を更新する。 203 | README.md と PKGBUILD に書かれているバージョン名を更新する。 204 | PKGBUILD に書かれている mozc-*.tar.bz2 の sha256sum を更新する。 205 | mozcdic-ut-*.tar.bz2 を作成する。 206 | 207 | - 読みと表記を取捨するコードを独立させた。 208 | 重複行を削除してソートするところまでは各辞書の変換コードで行い、 209 | それ以上の取捨は別コードで行うことにした。 210 | 共通部分を独立させることで各辞書の変換コードがシンプルになった。 211 | これに伴いほとんどの ruby コードを更新した。 212 | 213 | - Mozc公式辞書と「読み+表記」が重複しているエントリを収録から外した。 214 | 従来は品詞が違っていれば「読み+表記」が重複していても収録していた。 215 | 216 | - edict2 辞書の英訳候補を収録から外した。 217 | 「もんすたーぺあれんつ」で「over-demanding parents」を出すのは過剰に感じた。 218 | 219 | - 「ゔぁゔぃゔゔぇゔぉ」の読みから「ばびぶべぼ」を作るのをやめた。 220 | 「ぼーぼわーる」で「ボーヴォワール」を出すのは過剰に感じた。 221 | Google翻訳のオンライン日本語入力で「ぼーぼわーる」と入力した場合も 222 | 「ボーボワール」しか出ない。 223 | https://translate.google.co.jp/?sl=ja&tl=en 224 | Google翻訳では「0 / 5000」の右の「あ」をクリックすると日本語入力できる。 225 | 226 | - Change names of ruby files. 227 | ruby のメソッド名をファイル名にした。 228 | 結果としてファイル名の "-" を "_" に置き換えた。 229 | メソッド名では "-" を使えない。 230 | 231 | - 辞書生成中に表示するメッセージを増やした。 232 | 233 | - Wikipediaのダンプファイルの取得元を your.org ミラーに変更した。 234 | ミラーサイト一覧 235 | https://dumps.wikimedia.org/mirrors.html 236 | 237 | - Update README.md. 238 | See this page for the latest information. 239 | http://linuxplayers.g1.xrea.com/mozc-ut.html 240 | 241 | 2021-09-07 242 | - Update build scripts. 243 | いったんすべての辞書ファイルを作成し、結合する段階で辞書を選択するようにした。 244 | edict を長らく作成していなくて、URL が変更されていることに気づかなかったので。 245 | 246 | - Update README.md. 247 | 248 | 2021-09-06 249 | - remove nicoime. 250 | ニコニコ大百科IME辞書をMozc用に変換するコードを削除。 251 | 「ニコニコ大百科」利用規約第6条(抜粋): 252 | 複数の「ニコニコ大百科記事」を編集著作物として利用すること、 253 | その他複数の「ニコニコ大百科記事」の集合であることに基づき利用する行為はできません 254 | https://dic.nicovideo.jp/d/html/tos/ 255 | 256 | - Update jawiki-articles (20210901). 257 | - Update jinmei-ut. 258 | 259 | 2021-08-22 260 | - Update jawiki-articles (20210820). 261 | - Update jinmei-ut. 262 | 263 | 2021-07-25 264 | - Update jawiki-articles (20210720). 265 | - Update jinmei-ut. 266 | 267 | 2021-06-27 268 | - Update fcitx5-mozc-*.patch. 269 | - Update jawiki-articles (20210620). 270 | - Update jinmei-ut. 271 | 272 | 2021-06-03 273 | - パッケージのバージョン名を「$UTDICDATE.$REVISION」から「$UTDICDATE」のみに変更。 274 | 改訂版を出す場合は「UTDICDATE="20210524.1"」のようにする。 275 | - Update abseil-cpp in PKGBUILD. 276 | - Update jawiki-articles (20210601). 277 | - Update jinmei-ut. 278 | 279 | 2021-05-24 280 | - Update get-entries-from-jawiki-articles.rb. 281 | Parallelのプロセス数を「物理コア数 - 1」にした。 282 | その他調整。 283 | 284 | - Update fcitx5-mozc-icons to simplify installation. 285 | cp -r ${srcdir}/fcitx5-mozc-icons-${_iconver}/* ${pkgdir}/usr/share/icons/ 286 | 287 | - remove gtk2 from makedepends in PKGBUILD. 288 | add "enable_gtk_renderer==0" to PKGBUILD. 289 | 290 | - Update jawiki-articles (20210520). 291 | - Update jinmei-ut. 292 | 293 | 2021-04-21 294 | - Update jawiki-articles (20210420). 295 | - Update jinmei-ut. 296 | 297 | 2021-03-29 298 | - Update get-entries-from-jawiki-articles.rb. 299 | Parallelによる処理を追加。 300 | 301 | - Update fcitx5/fcitx patches. 302 | - Update jinmei-ut. 303 | 304 | 2021-03-22 305 | - Update jawiki-articles (20210320). 306 | - Update jinmei-ut. 307 | - filter-ut.txt の \Z の位置を間違えていたので修正。 308 | 309 | 2021-02-22 310 | - Add sudachidict (disabled). 311 | - neologd辞書の表記でコストがマイナスのものを追加した。 312 | - 英数字のみの表記でウィキペディアの見出しにあるものを追加した。 313 | - Update jawiki-articles (20210220). 314 | - Update jinmei-ut. 315 | 316 | 2021-01-23 317 | - Update jawiki-articles (20210121). 318 | - Update jinmei-ut. 319 | 320 | 2020-12-29 321 | - Update jawiki-articles (20201221). 322 | - Update jinmei-ut. 323 | - Update README.md (change Mozc URL). 324 | - Test with ruby 3.0.0p0. 325 | - I uploaded fcitx5-mozc-ut-*.PKGBUILD. 326 | https://osdn.net/users/utuhiro/pf/utuhiro/files/ 327 | 328 | 2020-11-29 329 | - Update jawiki-articles (20201121). 330 | - Update jinmei-ut. 331 | - Update fcitx-mozc-icons.tar.gz. 332 | 333 | 2020-11-10 334 | - Update jawiki-articles and jinmei-ut. 335 | - Comment out my zipcode dictionary. 336 | Use official mozc's zipcode dictionary. 337 | - Update build scripts. 338 | 339 | 2020-09-24 340 | - Update neologd, jawiki-articles and jinmei-ut. 341 | 342 | 2020-08-30 343 | - Update neologd, jawiki-articles and jinmei-ut. 344 | - Rename filter-neologd-entries.rb to filter-entries.rb. 345 | - Update filter-entries.rb. 346 | 347 | 2020-08-21 348 | - Update neologd, jawiki-articles, jinmei-ut and zipcode. 349 | 350 | 2020-07-18 351 | - Update get-entries-from-jawiki-articles.rb. 352 | - Update mozcdic-neologd.txt. 353 | 354 | 2020-07-04 355 | - Reduce and update jinmei-ut.txt. 356 | - Update jawiki-articles. 357 | 358 | 2020-06-24 359 | - Update extract-new-entries.rb. 360 | - Update apply-jawiki-costs.rb. 361 | 362 | 2020-06-22 363 | - Add jawiki-articles. 364 | It's a dictionary generated from Japanese Wikipedia. 365 | - Update count-jawiki-titles.rb. 366 | It reads jawiki-latest-all-titles-in-ns0.gz directly. 367 | - Update filter-ut.txt. 368 | - 「読み+表記」が公式辞書と重複しているものを除外した。 369 | 以前は「読み+表記」が重複していても品詞が違っていれば収録していた。 370 | それだとjawiki-articlesとneologdで重複するエントリが多くなりすぎる。 371 | 372 | 2020-06-11 373 | - First release. 374 | - Update most scripts. 375 | - Update documents. 376 | - Add entries to jinmei-ut.txt. 377 | 378 | 379 | # ============================================================================== 380 | # mozcdic-neologd-ut 381 | # ============================================================================== 382 | 383 | 2020-06-03 384 | - Fix convert-neologd-format-to-mozc-format.rb. 385 | - Move PKGBUILD to https://osdn.net/users/utuhiro/pf/utuhiro/files/ 386 | 387 | 2020-05-25 388 | - Use debian patches in PKGBUILD. 389 | - Update mecab-user-dict-seed. 390 | 391 | 2020-05-20 392 | - Update mecab-user-dict-seed. 393 | 394 | 2020-03-18 395 | - Update build scripts. 396 | 文字コード変換のメソッドを kconv から encode に変更した。 397 | 修正した KEN_ALL.CSV を SJIS に戻して出力せず、UTF-8 で出力するようにした。 398 | - Update mecab-user-dict-seed. 399 | 400 | 2020-02-06 401 | - Fix costs with "jawiki-latest-all-titles-in-ns0". 402 | neologd の表記を日本語版Wikipediaの見出し語リスト内で検索して、 403 | ヒット数に応じてコスト値を修正した。 404 | 見出し語リストには間違った表記も捨て見出しとして収録されているので完全ではないが、 405 | "三浦大知" が "三浦大地" より優先されるようになる。 406 | 見出し語リストに含まれていない表記はコスト値を8000台にした。 407 | コスト値が6000台だと「ねがいがいつかかなう」が「願いが一花カナウ」になる。 408 | 409 | - mozc のエントリと読み+表記が同じであっても、左文脈IDが異なれば収録するようにした。 410 | 「名探偵コナン」「深浦康市」を1語として変換できるようになる。 411 | 412 | - 「・」「=」が含まれるエントリの収録基準を緩和した。 413 | 読みの文字数より表記の文字数が多いエントリは削除していたが、 414 | 「あんはさうぇい アン・ハサウェイ」のようなエントリを収録するようにした。 415 | 416 | - 地名辞書に全角英数が含まれていたので半角英数に修正。 417 | - mecab-user-dict-seed.*.csv.xz を同梱しないようにした。 418 | 自分で辞書を作成する場合は make-release-tarball.sh の "NEOLOGDDATE" "NEOLOGDURL" を 419 | 最新のものに変更してください。 420 | - Update mecab-user-dict-seed. 421 | 422 | 2020-01-15 423 | - I don't provide "mozc + additional dictionaries" tarballs anymore. 424 | The upstream mozc is not maintained, so packagers need to apply patches. 425 | I release mozcdic-neologd-ut as additional text files. 426 | See mozcdic-neologd-ut-*/README.md for installation. 427 | Arch Linux users can install mozc-neologd-ut easily with my PKGBUILD. 428 | 429 | - Change src dir structures. 430 | - Update build scripts. 431 | - Update PKGBUILD and README.md. 432 | 433 | 2020-01-13 434 | - I updated PKGBUILD for python3 support, and I removed python2 from makedepends. 435 | https://github.com/google/mozc/issues/462#issuecomment-573220288 436 | mozc-2.23.2815.102-python-3.patch 437 | - Add Debian patches 438 | https://salsa.debian.org/debian/mozc/tree/master/debian/patches 439 | debian_patches_Fix-build-with-gcc8.patch 440 | debian_patches_add_support_new_japanese_era.patch 441 | - Add chimei/generate-zipcode-*.rb 442 | I wrote them instead of "gen_zip_code_seed.py". 443 | 444 | - Update mecab-user-dict-seed. 445 | 446 | 2020-01-03 447 | - Update mecab-user-dict-seed. 448 | 449 | 2019-11-29 450 | - Update mecab-user-dict-seed. 451 | 452 | 2019-10-28 453 | - Update mecab-user-dict-seed. 454 | 455 | 2019-09-13 456 | - Update mecab-user-dict-seed. 457 | 458 | 2019-08-08 459 | - Update mecab-user-dict-seed. 460 | - 一部の組織を収録するようにした。 461 | 「京アニ」が収録対象外になっていたので。 462 | 463 | 2019-06-10 464 | - Update mecab-user-dict-seed. 465 | 466 | 2019-04-25 467 | - Add patches/add-new-japanese-era.patch. 468 | "きょう" => "令和元年5月1日" 469 | "ことし" => "令和元年" 470 | "れいわ" => "㋿"("令和"の合字) 471 | Use this font to show the character properly. 472 | https://github.com/googlefonts/noto-cjk/blob/master/NotoSansCJK-Regular.ttc 473 | 474 | - Update mecab-user-dict-seed. 475 | 476 | 2019-04-16 477 | - Update mecab-user-dict-seed. 478 | 479 | 2019-04-03 480 | - Update mecab-user-dict-seed. 481 | 482 | 2019-02-08 483 | - Update mecab-user-dict-seed. 484 | 485 | 2018-11-30 486 | - Update mecab-user-dict-seed. 487 | 488 | 2018-10-09 489 | - Update mecab-user-dict-seed. 490 | 491 | 2018-09-04 492 | - Update mecab-user-dict-seed. 493 | 494 | 2018-07-22 495 | - Update mecab-user-dict-seed. 496 | 497 | 2018-06-04 498 | - mozcエントリと読みが同じで表記が異なるutエントリを収録するときのコスト計算を修正。 499 | 「鈴木奈々」より「杉木奈々」が優先されていた。 500 | - 人名のコスト計算を変更。 501 | - 辞書生成スクリプトのファイル名を変更。 502 | - 公式辞書には filter-mozc.txt を当てないようにした。別のフィルタが入ったようなので。 503 | neologd に対しては filter-mozc.txt の適用を継続。 504 | - Update mecab-user-dict-seed. 505 | - Add a patch for gcc-8.1. 506 | https://github.com/google/mozc/issues/441#issue-321728877 507 | 508 | 2018-03-07 509 | - dependency change: use Qt5. 510 | - Update mozc version to 2.23.2815.102. 511 | - Update fcitx-mozc. 512 | See fcitx-mozc/README.md 513 | https://github.com/fcitx/fcitx/issues/403 514 | - Update mecab-user-dict-seed version to 20180301. 515 | 516 | 2018-01-03 517 | - mozc-2.23.2785.102 に追従。 518 | - mecab-user-dict-seed を最新版に差し替え。 519 | 520 | 2017-10-07 521 | - neologdエントリがmozcエントリと同じ読みを持つ場合、双方のコストを比較するようにした。 522 | mozcdic-ut2で追加辞書のコストをかなり上げたにもかかわらず、 523 | 「幾つかの」が「いくつかの」より優先されることがあったので。 524 | 525 | - mozc公式辞書のエントリをフィルタリングするようにした。 526 | - src/filter-mozc.txt に含まれる表記を除外する。 527 | /\A似非/ のような正規表現も使用可能。 528 | - 「殆ど ほとんど」のようにタブ区切りで2つの単語が並んでいる場合は、 529 | 前者の表記から後者の表記を生成して追加する。 530 | 追加した表記はもとの表記より優先度を高めにする。 531 | mozcの辞書には「殆どxx」という表記はあるのに、 532 | 「ほとんどxx」という表記はないことが多く、 533 | 文章が硬く見えるので。 534 | 535 | - 郵便番号辞書を生成するときにmozc公式辞書に追記しない形にした。 536 | mozc公式辞書は後で重複チェックの処理が入るので、 537 | 郵便番号辞書があると重複チェックに時間がかかる。 538 | 郵便番号辞書は他のエントリとかぶることがないので、 539 | 重複チェックの必要はない。 540 | 541 | 2017-10-04 542 | - mecab-user-dict-seed を最新版に差し替え。 543 | - 収録する表記の最大文字数を20に減らした(以前は24)。 544 | - 数字を含む表記を削除した。 545 | 「712円」「青森県道39号」「第1231話」などキリがないので。 546 | - 「カブシキガイシャ」などの煩雑なエントリを削除した。 547 | src/get-neologd-entries.rb を参照。 548 | 549 | 2017-10-02 550 | - mecab-user-dict-seed を最新版に差し替え。 551 | - ソースのコメントを整理。 552 | 553 | 2017-05-29 554 | - mecab-user-dict-seed を最新版に差し替え。 555 | 556 | 2017-03-20 557 | - mecab-user-dict-seed を最新版に差し替え。 558 | 559 | 2017-01-16 560 | - mecab-user-dict-seed を最新版に差し替え。 561 | 562 | 2016-12-15 563 | - mozc-2.20.2677.102 に追従。 564 | - fcitx-mozc-2.18.2612.102.1 に追従。 565 | - mecab-user-dict-seed を最新版に差し替え。 566 | 567 | 2016-11-21 568 | - mozc-2.19.2663.102 に追従。 569 | - mecab-user-dict-seed を最新版に差し替え。 570 | 571 | 2016-11-15 572 | - mecab-user-dict-seed を最新版に差し替え。 573 | 574 | 2016-10-24 575 | - mecab-user-dict-seed を最新版に差し替え。 576 | 577 | 2016-10-20 578 | - mecab-user-dict-seed を最新版に差し替え。 579 | - 人名を一括変換しにくいので品詞idを「名詞,一般,*,*,*,*,*」のidに統一した。 580 | 581 | 2016-10-17 582 | - 辞書生成を高速化。 583 | 正規表現を配列から毎回整形して作らずにあらかじめ作っておく。 584 | カタカナをひらがなに変換する処理はtrではなくnkfで行う。 585 | 全角英数・全角記号を半角に変換する処理はtrではなくnkfで行う。 586 | - filter.txtの正規表現エントリを // で囲むようにした。 587 | - Change url in pkgbuild. 588 | 589 | - mecab-user-dict-seed を最新版に差し替え。 590 | 591 | 2016-10-13 592 | - Change the directory structure and file names. 593 | - mecab-user-dict-seed を最新版に差し替え。 594 | - コスト計算を一部簡略化した。 595 | 596 | 2016-09-05 597 | - Update get-latest-mozc.sh 598 | - Update generate-mozc-tarball.rb 599 | keep original documents and the directory structure. 600 | 601 | - mecab-user-dict-seed を最新版に差し替え。 602 | 603 | 2016-08-15 604 | - Update generate-mozc-tarball.rb 605 | - mecab-user-dict-seed を最新版に差し替え。 606 | 607 | 2016-06-27 608 | - Update get-latest-mozc.sh 609 | 610 | - mecab-user-dict-seed を最新版に差し替え。 611 | 612 | 2016-05-24 613 | - Update get-latest-mozc.sh 614 | simplified. 615 | 616 | - mecab-user-dict-seed を最新版に差し替え。 617 | 618 | 2016-04-19 619 | - mecab-user-dict-seed を最新版に差し替え。 620 | 621 | 2016-03-18 622 | - 「都道府県+市+町域」のエントリを削除した。 623 | 辞書データが膨らみすぎるので。 624 | 625 | - mecab-user-dict-seed を最新版に差し替え。 626 | 627 | 2016-03-03 628 | - 地名生成コードを更新。 629 | - 町域の数字の読みがなを改善。 630 | 631 | - mecab-user-dict-seed を最新版に差し替え。 632 | 633 | 2016-02-29 634 | - 辞書生成コードを更新。 635 | - 同じ読みの人名が続いたときは辞書に多く含まれる表記を優先する。 636 | 冠番組を持つタレントなどが優先される。 637 | (例) 中井正広, 中居正広, 仲居正広, 中井正広のブラックバラエティ, 638 | 中居正広のボクらはみんな生きている, 中居正広のミになる図書館 639 | この場合は出現数の多い「中居正広」の表記を優先する。 640 | 641 | - 品詞をIDに変換する処理にバグがあったので修正。 642 | 高速化するために導入した処理だったが、 643 | バグがあった上に直してtimeを測ってみると速くなっていなかった。 644 | 高速化のために条件を加えるとその処理に時間がかかって、 645 | 差し引きゼロになってしまうことがある。 646 | 647 | - 単語の収録範囲を広げた。 648 | 「16文字以内の読みを持つ単語」から 649 | 「16文字以内の表記を持つ単語」に緩和した。 650 | あまり文字数を増やすとサジェストウィンドウが大きくなるので注意。 651 | 652 | - neologdの住所エントリを使わないようにした。 653 | 住所エントリは郵便番号データから自前で作成する。 654 | neologdでは自動作成された(?)短縮エントリが多く、辞書が肥大するので。 655 | (例) 徳島県春日町,トクシマケンカスガチョウ 656 | 正式な住所は「徳島県徳島市春日町」 657 | 658 | 最新の郵便番号データを使うと最新の住所を入力できるし、 659 | 巨大な住所エントリを分離することで辞書生成が多少速くなる。 660 | 661 | - 郵便番号データ関連のコードを更新。 662 | - 町域の読みにある数字をカタカナに変換。 663 | (例)「3ジョウ」を「サンジョウ」に。 664 | 665 | - 地名生成のためのコードを整理。 666 | 667 | - フィルタを更新。 668 | - mecab-user-dict-seed を最新版に差し替え。 669 | 670 | 2016-02-26 671 | - 辞書生成コードを更新。 672 | fix-jinmei.rb を実行した後のコストがマイナスにならないようコスト計算を変更。 673 | 674 | - フィルタを更新。 675 | - mecab-user-dict-seed を最新版に差し替え。 676 | 677 | 2016-01-25 678 | - 辞書生成コードを整理。 679 | - 辞書生成を少し高速化。 680 | 681 | - 人名の判定を変えた。 682 | fix-jinmei.rb 683 | 同じ読みのエントリが続いたときに片方が人名で片方がそれ以外の場合、 684 | 人名の表記を優先する。 685 | 人名だと判定されなかったエントリは品詞を人名に変え、優先度を下げる。 686 | 687 | - フィルタを更新。 688 | - mecab-user-dict-seed を最新版に差し替え。 689 | 690 | 2016-01-21 691 | - フィルタを更新。 692 | - mecab-user-dict-seed を最新版に差し替え。 693 | 694 | 2016-01-18 695 | - 辞書生成スクリプトを更新。 696 | - フィルタを更新。 697 | - mecab-user-dict-seed を最新版に差し替え。 698 | 699 | 2016-01-15 700 | - 正規表現でフィルタリングできるようにした。 701 | 正規表現の場合は頭に / を付ける。 702 | 多用すると辞書生成が遅くなる。 703 | 704 | 2016-01-14 705 | - First release. 706 | 707 | 708 | # ============================================================================== 709 | # mozcdic-ut2 710 | # ============================================================================== 711 | 712 | 2017-10-08 713 | - utエントリがmozcエントリと同じ読みを持つ場合、双方のコストを比較するようにした。 714 | utエントリのコストは大きめにしているが、 715 | それでも「幾つかの」が「いくつかの」より優先されてしまうので。 716 | 717 | - mozc公式辞書のエントリをフィルタリングするようにした。 718 | - src/filter-mozc.txt に含まれる表記を除外する。 719 | /\A似非/ のような正規表現も使用可能。 720 | - 「殆ど ほとんど」のようにタブ区切りで2つの単語が並んでいる場合は、 721 | 前者の表記から後者の表記を生成して追加する。 722 | 追加した表記はもとの表記より優先度を高めにする。 723 | mozcの辞書には「殆どxx」という表記はあるのに 724 | 「ほとんどxx」という表記はないことが多く、 725 | 文章が硬く見えるので。 726 | 727 | - 郵便番号データから生成した地名のコストを一律 9000 にした。 728 | - 駅名のコストを一律 9000 にした。 729 | 大量のヒット数を取得するのは時間がかかるし、 730 | 大量のヒット数からコストを計算するのも時間がかかるので。 731 | 他の辞書のヒット数を取得する際に 732 | 地名辞書/駅名辞書のエントリをスキップできるように、 733 | ヒット数を 0 にした地名辞書/駅名辞書を置いている。 734 | 735 | - コストを計算するときにヒット数が10000以上のエントリを除外するようにした。 736 | 上位のヒット数は桁違いに多いので、 737 | 残していると下位のエントリの優劣がつきにくくなる。 738 | 739 | - 郵便番号辞書を生成するときにmozc公式辞書に追記しない形にした。 740 | mozc公式辞書は後で重複チェックの処理が入るので、 741 | 郵便番号辞書があると重複チェックに時間がかかる。 742 | 郵便番号辞書は他のエントリとかぶることがないので、 743 | 重複チェックの必要はない。 744 | 745 | 2017-10-05 746 | - 人名用のスクリプトを修正。 747 | - 駅名のヒット数を修正。 748 | - 地名のヒット数を修正。 749 | - その他辞書生成用のスクリプトを変更。 750 | ヒット数を記したファイルの拡張子は .hits 、 751 | コスト数を記したファイルの拡張子は .costs 752 | に変更した。 753 | 2つを混同するとコストの計算がずれるので。 754 | 755 | 2017-10-04 756 | - neologd辞書を追加。 757 | - 駅名辞書が漏れていたので修正。 758 | 759 | 2017-10-02 760 | - 2017年9月22日時点の jawiki-latest-pages-articles.xml からヒット数を取り直した。 761 | 762 | - ヒット数を取得するツールを改訂した。 763 | jawikiの記事をテキストに変換する際にテーブルを含めるようにした。 764 | これによりメンバー表の中の人名がヒットするようになった。 765 | mozc公式辞書に含まれる単語のヒット数は取らずに一律 0 にした。 766 | ヒット数の取得にかかる時間を減らすため。 767 | 他に多数の変更。 768 | 769 | - 収録する表記の最大文字数を20に減らした(以前は24)。 770 | - 人名を更新。 771 | - はてなキーワードを更新。 772 | - edictを更新。 773 | - ニコニコ大百科IME辞書を更新。 774 | - 駅名を更新。 775 | 776 | 2017-05-29 777 | - 人名を更新。 778 | - はてなキーワードを更新。 779 | - edictを更新。 780 | - ニコニコ大百科IME辞書を更新。 781 | - 駅名を更新。 782 | 783 | 2017-03-21 784 | - 人名を更新。 785 | - はてなキーワードを更新。 786 | - edictを更新。 787 | - ニコニコ大百科IME辞書を更新。 788 | 789 | 2017-01-16 790 | - 人名を更新。 791 | - はてなキーワードを更新。 792 | - edictを更新。 793 | - ニコニコ大百科IME辞書を更新。 794 | 795 | 2016-12-15 796 | - mozc-2.20.2677.102 に追従。 797 | - fcitx-mozc-2.18.2612.102.1 に追従。 798 | - 人名を更新。 799 | - はてなキーワードを更新。 800 | - edictを更新。 801 | - ニコニコ大百科IME辞書を更新。 802 | - 駅名を更新。 803 | 804 | 2016-11-21 805 | - mozc-2.19.2663.102 に追従。 806 | - 人名を更新。 807 | - はてなキーワードを更新。 808 | - edictを更新。 809 | - ニコニコ大百科IME辞書を更新。 810 | 811 | 2016-11-15 812 | - 駅名をWikipediaベースに変更した。 813 | - 人名を更新。 814 | - はてなキーワードを更新。 815 | - edictを更新。 816 | - ニコニコ大百科IME辞書を更新。 817 | 818 | 2016-10-24 819 | - EDICT2辞書の生成コードを書き直した。 820 | EDICT2は読みと表記の対応が複雑すぎる。 821 | - カタカナ英語辞書の生成コードを書き直した。 822 | 823 | - はてなキーワードのヒット数を最新のWikipedia記事タイトルで補正。 824 | 「ニンテンドースイッチ」などに即応する。 825 | データベースを更新してヒット数を取り直すのは負担が大きいので、 826 | 軽い処理を作った。 827 | 828 | - はてなキーワードをUTF-8に変換したとき、一部の漢字がコードポイントになるので修正。 829 | 830 | - はてなキーワードを更新。 831 | - edictを更新。 832 | - 人名を更新。 833 | - ニコニコ大百科IME辞書を更新。 834 | 835 | 2016-10-20 836 | - upgrade-dictionary.sh を追加。 837 | 最新の日本語版Wikipedia記事を使ってヒット数を取り直すスクリプト。 838 | ヒット数を取る前にedict/hatena/niconico/skk-jisyoも自動で最新版に更新する。 839 | 必要な準備についてはREADME.mdを参照。 840 | - upgrade-dictionary.sh のテストを兼ねてヒット数をすべて取り直した。 841 | 842 | - 読みがなに「う゛」が混じっていたので「ゔ」に修正。 843 | - 人名辞書の生成を高速化。 844 | - docsの配置を変えた。 845 | - カタカナ英語辞書のコストを少し小さくした。 846 | コストが大きすぎて変換候補になりにくいものがあったので。 847 | 848 | - はてなキーワードを更新。 849 | - edictを更新。 850 | - 人名を更新。 851 | - ニコニコ大百科IME辞書を更新。 852 | 853 | 2016-10-17 854 | - 辞書生成を高速化。 855 | 正規表現を配列から毎回整形して作らずにあらかじめ作っておく。 856 | カタカナをひらがなに変換する処理はtrではなくnkfで行う。 857 | 全角英数・全角記号を半角に変換する処理はtrではなくnkfで行う。 858 | - filter.txtの正規表現エントリを // で囲むようにした。 859 | - Change url in pkgbuild. 860 | 861 | - カタカナ英語辞書の生成元をedictからedict2に変更。 862 | 「the plain EDICT file. PLEASE do not use this format for new applications」とあるので。 863 | edict2向けに辞書生成コードを書き直した。 864 | 865 | - はてなキーワードを更新。 866 | - edictを更新。 867 | - 人名を更新。 868 | 869 | 2016-10-13 870 | - First release. 871 | mozcdic-utの入ったパーティションを壊してしまったので新たに作った。 872 | 873 | 874 | # ============================================================================== 875 | # mozcdic-ut (old) 876 | # ============================================================================== 877 | 878 | 2016-09-05 879 | - Update get-latest-mozc.sh 880 | - Update generate-mozc-tarball.rb 881 | keep original documents and the directory structure. 882 | 883 | - 人名を追加。 884 | - はてなキーワードを更新。 885 | - EDICTを更新。 886 | - ニコニコ大百科IME辞書を更新。 887 | 888 | 2016-08-15 889 | - Update generate-mozc-tarball.rb 890 | 891 | - 駅名を更新。 892 | - 人名を追加。 893 | - はてなキーワードを更新。 894 | - EDICTを更新。 895 | - ニコニコ大百科IME辞書を更新。 896 | 897 | 2016-06-27 898 | - Update get-latest-mozc.sh 899 | 900 | - 人名を追加。 901 | - はてなキーワードを更新。 902 | - EDICTを更新。 903 | - ニコニコ大百科IME辞書を更新。 904 | 905 | 2016-05-24 906 | - Update get-latest-mozc.sh 907 | simplified. 908 | 909 | - 駅名を更新。 910 | - 人名を追加。 911 | - はてなキーワードを更新。 912 | - EDICTを更新。 913 | - ニコニコ大百科IME辞書を更新。 914 | 915 | 2016-04-19 916 | - 人名を追加。 917 | - はてなキーワードを更新。 918 | - EDICTを更新。 919 | - ニコニコ大百科IME辞書を更新。 920 | 921 | 2016-03-18 922 | - はてなキーワードに含まれる人名をjinmei.txtを使って校正。 923 | 「松嶋奈々子」「明石屋さんま」のように、 924 | jinmei.txtに存在しない表記のヒット数をある程度修正した。 925 | 926 | - 「都道府県+市+町域」のエントリを削除した。 927 | 辞書データが膨らみすぎるので。 928 | 929 | 2016-03-03 930 | - 人名を追加。 931 | - はてなキーワードを更新。 932 | - EDICTを更新。 933 | - ニコニコ大百科IME辞書を更新。 934 | - フィルタを更新。 935 | 936 | - 辞書生成コードを大きく変更した。 937 | - 生成の流れをシンプルにした。 938 | - 単語フィルタはパッチ適用時に通すようにした。 939 | - コードを整理した。 940 | 941 | - 郵便番号データ関連のコードを更新。 942 | - 「都道府県+市+町域」のエントリを生成するようにした。 943 | neologdの地名エントリの収録範囲に合わせた。 944 | 945 | - 町域の読みにある数字をカタカナに変換。 946 | (例)「3ジョウ」を「サンジョウ」に。 947 | 948 | - コードを整理した。 949 | 950 | 2016-01-25 951 | - 郵便番号用のコードを整理。 952 | - フィルタを更新。 953 | 954 | 2016-01-21 955 | - 辞書生成コードを整理。 956 | mozcdic-neologd-ut を作ったときに確認したら見づらかったので。 957 | 958 | 「ヴァヴィヴ」の読みから「ばびぶ」の読みを作るとき、 959 | 生成済みの辞書と重複がないかを確認しないようにした。 960 | 時間がかかる割に削れる量が少ないので。 961 | 962 | - はてな辞書とニコニコ辞書にmozcdic-neologd-utの単語フィルタをかけた。 963 | 多少の不具合は出るが、もう目で確認できる辞書サイズではないので。 964 | これまでも手で調整していたが、抜けも出るし手間がかかりすぎる。 965 | 966 | - 駅名を更新。 967 | - 人名を追加。 968 | - はてなキーワードを更新。 969 | - EDICTを更新。 970 | - ニコニコ大百科IME辞書を更新。 971 | 972 | 2015-11-30 973 | - Update get-official-mozc.sh 974 | - remove uim-mozc in PKGBUILD (build failure) 975 | 976 | - 駅名を更新。 977 | - 人名を追加。 978 | - はてなキーワードを更新。 979 | - EDICTを更新。 980 | - ニコニコ大百科IME辞書を更新。 981 | 982 | 2015-10-02 983 | - Update get-official-mozc.sh 984 | - Update PKGBUILD to specify python2 985 | 986 | - 駅名を更新。 987 | - 人名を追加。 988 | - はてなキーワードを更新。 989 | - EDICTを更新。 990 | - ニコニコ大百科IME辞書を更新。 991 | 992 | 2015-08-22 993 | - 人名を追加。 994 | - はてなキーワードを更新。 995 | - EDICTを更新。 996 | - ニコニコ大百科IME辞書を更新。 997 | 998 | 2015-07-15 999 | - Update fcitx-mozc 1000 | https://code.google.com/p/fcitx/issues/detail?id=755 1001 | http://download.fcitx-im.org/fcitx-mozc/ 1002 | 1003 | - Update get-official-mozc.sh 1004 | 1005 | - カタカナ英語辞書の収録基準を1語の英語のみにした。 1006 | 1007 | - 駅名を更新。 1008 | - 人名を追加。 1009 | - はてなキーワードを更新。 1010 | - EDICTを更新。 1011 | - ニコニコ大百科IME辞書を更新。 1012 | 1013 | 2015-05-29 1014 | - Update get-official-mozc.sh 1015 | - remove ibus-mozc 1016 | https://github.com/google/mozc/issues/287 1017 | > we will remove the code of ibus from our repository 1018 | > by the end of August 2015 at the latest. 1019 | 1020 | - 人名を追加。 1021 | - はてなキーワードを更新。 1022 | - EDICTを更新。 1023 | - ニコニコ大百科IME辞書を更新。 1024 | 1025 | 2015-04-04 1026 | - 人名を追加。 1027 | - はてなキーワードを更新。 1028 | - EDICTを更新。 1029 | - ニコニコ大百科IME辞書を更新。 1030 | 1031 | 2015-02-14 1032 | - Update fcitx-mozc 1033 | https://code.google.com/p/fcitx/issues/detail?id=747 1034 | https://code.google.com/p/mozc/issues/detail?id=285 1035 | 1036 | - Update PKGBUILD 1037 | - Update get-official-mozc.sh 1038 | 1039 | - Change mozc-ut archive format (7z => tar.xz) 1040 | 1041 | - 人名を追加。 1042 | - はてなキーワードを更新。 1043 | - EDICTを更新。 1044 | - ニコニコ大百科IME辞書を更新。 1045 | - 駅名を更新。 1046 | 1047 | 2015-01-14 1048 | - 駅名を更新。 1049 | - 人名を追加。 1050 | - はてなキーワードを更新。 1051 | - EDICTを更新。 1052 | - ニコニコ大百科IME辞書を更新。 1053 | 1054 | - get-official-mozc.sh を更新。 1055 | - PKGBUILD を更新。 1056 | 最新のmozcに追従。 1057 | 1058 | 2014-11-10 1059 | - 駅名を更新。 1060 | - 人名を追加。 1061 | - はてなキーワードを更新。 1062 | - EDICTを更新。 1063 | - ニコニコ大百科IME辞書を更新。 1064 | 1065 | - get-official-mozc.sh を更新。 1066 | depot_tools を git で取るようにした。 1067 | .git を削除。 1068 | 1069 | - PKGBUILD を更新。 1070 | uim-mozc の取得先を変更。 1071 | 1072 | 2014-09-29 1073 | - 人名を追加。 1074 | - はてなキーワードを更新。 1075 | - EDICTを更新。 1076 | - ニコニコ大百科IME辞書を更新。 1077 | 1078 | - PKGBUILD を更新。 1079 | fcitx-mozc を最新版に。 1080 | - debian.old を削除。 1081 | 1082 | 2014-07-16 1083 | - 英和辞書を更新。 1084 | 1085 | 2014-07-15 1086 | - mozc-1.15.1874.102 に対応。 1087 | リビジョンを指定してソースを取得するようにした。 1088 | 将来大きな変更があるとビルドに失敗するかもしれないので。 1089 | 1090 | PKGBUILD を更新。ninja 追加と fcitx-mozc/*.mo の位置の修正。 1091 | mozc-ut の sha1sum 確認を飛ばすようにした。 1092 | 辞書の選択を変えるたびに sha1sum を変えるのが手間なので。 1093 | 1094 | sha1sum の確認をやめたので PKGBUILD を mozc-ut 本体に同梱した。 1095 | PKGBUILD を mozc-ut 本体に同梱すると sha1sum がずれるので、 1096 | 今までは同梱できなかった。 1097 | 1098 | - 人名を大量に追加。 1099 | - 駅名を更新。 1100 | - はてなキーワードを更新。 1101 | - EDICTを更新。 1102 | - ニコニコ大百科IME辞書を更新。 1103 | 1104 | - 日本語WordNetから英和辞書を生成。 1105 | 詳細は README を参照。 1106 | バイナリサイズが大きくなるのと英和辞書の精度- 必要性を考えて、 1107 | デフォルトでは無効にしている。 1108 | 1109 | - 追加辞書は # を外すだけで有効になるようにした。 1110 | 1111 | - 地名辞書の生成スクリプトを変更。 1112 | 「川内町(宮島浜)」の場合「(宮島浜)」をカットしていたが、 1113 | 「川内町宮島浜」と出すようにした。 1114 | 1115 | 町域の英数字を全角にした(日本郵便のデータ通り)。 1116 | 縦に住所を印字する際に全角のほうが良いので。 1117 | 1118 | 2014-06-23 1119 | - mozc-1.15.1814.102 に対応。 1120 | 1121 | - Antergos Linuxでテストすることにした。 1122 | fcitx-mozc と mozc-ut の PKGBUILD をベースにして 1123 | 私家版の PKGBUILD を作成。 1124 | パッケージの作成とインストールについては README に書いた。 1125 | 1126 | debian/ は手元に環境がないので更新しない。 1127 | debian/ を debian.old/ にリネーム。 1128 | 1129 | - get-latest-mozc.sh を修正。 1130 | third_party/gyp を残した。Arch Linuxでのビルドに必要。 1131 | .svn が残っていたので削除。 1132 | 1133 | - リリース前に辞書ファイルを整理するようにした。 1134 | 重複項目がないかチェック。 1135 | 読みやすいようにソート。 1136 | 1137 | - 人名を追加。 1138 | - はてなキーワードを更新。 1139 | - EDICTを更新。 1140 | - ニコニコ大百科IME辞書を更新。 1141 | 1142 | 2014-05-23 1143 | - mozc-1.15.1785.102 に対応。 1144 | - debian/* ファイルを改変した。 1145 | 変更点は debian/changelog を参照。 1146 | テスト用なので、debian公式版が出たら差し替えます。 1147 | - get-latest-mozc.sh を作成。 1148 | 公式のtarballがリリースされないので。 1149 | sh get-latest-mozc.sh で無改変のtarballができる。 1150 | (ビルドに不要なファイルは削除した。) 1151 | - README の「Generate your mozc-ut」の項を改訂。 1152 | 手元でtarballを作成しないといけないので。 1153 | 1154 | - 人名を追加。 1155 | - はてなキーワードを更新。 1156 | - EDICTを更新。 1157 | - ニコニコ大百科IME辞書を更新。 1158 | 1159 | 2014-05-06 1160 | - 人名を追加。 1161 | - はてなキーワードを更新。 1162 | - EDICTを更新。 1163 | - ニコニコ大百科IME辞書を更新。 1164 | 1165 | - 読みがなにカタカナが混じっているものを修正。 1166 | 1167 | 2014-03-20 1168 | - 人名を追加。 1169 | - はてなキーワードを更新。 1170 | - EDICTを更新。 1171 | - ニコニコ大百科IME辞書を更新。 1172 | 1173 | - debian/ を最新版に差し替えた。 1174 | - debian/changelog を改変。 1175 | debianと被らないようにバージョン末尾を10にした。 1176 | 1177 | 2014-02-05 1178 | - 駅名を更新。 1179 | - 人名を追加。 1180 | - はてなキーワードを更新。 1181 | - EDICTを更新。 1182 | - ニコニコ大百科IME辞書を更新。 1183 | 1184 | - debian/ を最新版に差し替えた。 1185 | - debian/rules を改変。 1186 | gypのバージョンをSaucyに合わせた。 1187 | 1188 | 2014-01-03 1189 | - 人名を追加。 1190 | - はてなキーワードを更新。 1191 | - EDICTを更新。 1192 | - ニコニコ大百科IME辞書を更新。 1193 | 1194 | - 郵便番号ファイルの整形スクリプトを一時的に追加。 1195 | gen_zip_code_seed.py がエラーを出すが、 1196 | pythonは分からないのでrubyで整形した。 1197 | 1198 | - protobufを取得しないようにした。 1199 | debianのパッケージがあるので。 1200 | 1201 | - debian/rules を改変。 1202 | 私の環境によるものか最後のパッケージ作成で止まるので、次の行を追加。 1203 | override_dh_shlibdeps: 1204 | dh_shlibdeps --dpkg-shlibdeps-params=--ignore-missing-info 1205 | 1206 | 2013-11-09 1207 | - debian/* ファイルを最新版に差し替えた。 1208 | http://packages.debian.org/ja/source/sid/mozc 1209 | rules の --jobs=1 は削除。 1210 | 1211 | 2013-11-06 1212 | - 人名を追加。 1213 | - はてなキーワードを更新。 1214 | - EDICTを更新。 1215 | - ニコニコ大百科IME辞書を更新。 1216 | 1217 | - mozc-1.12.1599.102 に対応。 1218 | - debian/* ファイルを差し替えた。 1219 | こちらで配布されているものを改変。 1220 | http://packages.debian.org/ja/source/sid/mozc 1221 | 1222 | rules の --jobs=1 を削除。 1223 | uim/fcitxはmozc-1.12.1599.102だとエラーが出るのでひとまず削除。 1224 | 1225 | ibus-1.4/1.5のパッケージが混在しているとビルドエラーになるので、 1226 | ibus-1.5系で統一しておくこと。 1227 | (ubuntuをアップグレードした時にibus-1.4が残るかもしれない。) 1228 | 1229 | 2013-10-21 1230 | - 人名を追加。 1231 | - はてなキーワードを更新。 1232 | - EDICTを更新。 1233 | - ニコニコ大百科IME辞書を更新。 1234 | 1235 | - debian/* ファイルを差し替えた。 1236 | こちらで配布されているもの。 1237 | https://launchpad.net/~ikuya-fruitsbasket/+archive/fcitx 1238 | rules の --jobs=1 は削除。 1239 | 歴代のパッケージ作成者の皆様に感謝。 1240 | 1241 | 2013-09-02 1242 | - edict/はてな/ニコニコのヒット数を変更。 1243 | 中黒ありと中黒なしの表記があるときは、 1244 | 中黒なしを優先させるようにした。 1245 | > +あらびあんないと #T35 11105 アラビアン- ナイト 1246 | > あらびあんないと #T35 12339 アラビアンナイト 1247 | > -あらびあんないと #T35 12339 アラビアン- ナイト 1248 | 1249 | - 人名を追加。 1250 | - はてなキーワードを更新。 1251 | - ニコニコ大百科IME辞書を更新。 1252 | - EDICTを更新。 1253 | 1254 | - mozc-1.11.1522.102 に対応。 1255 | debian/controlを変更(依存ファイルの追加と削除) 1256 | debian/rulesを変更(エラーが出るので) 1257 | 1258 | 2013-08-01 1259 | - 人名を追加。 1260 | - はてなキーワードを更新。 1261 | - ニコニコ大百科IME辞書を更新。 1262 | - EDICTを更新。 1263 | 1264 | - mozc-1.11.1502.102 に対応。 1265 | 1266 | 2013-07-01 1267 | - 人名を追加。 1268 | - はてなキーワードを更新。 1269 | - ニコニコ大百科IME辞書を更新。 1270 | - EDICTを更新。 1271 | 1272 | - 開発用のプログラムを消してしまったので古いバックアップから復旧。 1273 | 語彙数は問題ないが、頻度生成で過去のバグが残っているかもしれない。 1274 | 1275 | 2013-05-20 1276 | - 同音の人名のヒット数を再チェック。 1277 | 検索時期や検索エンジンの違いで、 1278 | 同じ読みのマイナーな人名が上に来ることがあったので。 1279 | 全てはチェックできないがメジャーなものをチェックした。 1280 | 1281 | - 桁違いにヒット数の多い人名を再チェック。 1282 | 多くは取得時のエラー。 1283 | 1284 | - カタカナ英語辞書の収録数を増やした。 1285 | 辞書生成時の条件を追加した。 1286 | 1287 | - カタカナ英語辞書の優先度を下げた。 1288 | それでも組み合わせによっては稀に 1289 | 「sellingカイキン」(販売解禁)のようになることがある。 1290 | 1291 | 2013-05-16 1292 | - EDICTからカタカナ英語辞書を生成。 1293 | いんたーねっと ⇨ Internet 1294 | Google日本語入力には同目的の辞書があるようなので、 1295 | 試しに作ってみた。 1296 | 不要な場合はMozcプロパティを開いて、 1297 | 「カタカナ英語変換」のチェックを外せば候補が出なくなる。 1298 | 1299 | - EDICTを更新。 1300 | 中黒付きの表記のヒット数を下げた。 1301 | > てすともーど #T35 411 テスト- モード 1302 | > てすともーど #T35 4117 テストモード 1303 | 時期によってヒット数が逆転したり同じになったりするので。 1304 | 1305 | - 日本語WordNetから生成した英和辞書を削除。 1306 | 個人的にあまり使わなくなったのと、 1307 | 全角スペースの表記が出て候補ウィンドウがすっきりしないので。 1308 | > word n 1.ワード, 単語, 言葉, 語, 辞 1309 | > word n 1.ワード, 単語, 言葉, 語, 辞 1310 | 1311 | - 人名を追加。 1312 | - はてなキーワードを更新。 1313 | - ニコニコ大百科IME辞書を更新。 1314 | 1315 | 2013-04-12 1316 | - Mozc-1.10.1390.2 に対応。 1317 | - 人名を追加。 1318 | - はてなキーワードを更新。 1319 | 1320 | 2013-03-30 1321 | - Mozc-1.10.1389.2 に対応。 1322 | 1323 | - debian/ 内の uim-mozc, fcitx-mozc, emacs-mozc を削除した。 1324 | テスト用なのでシンプルにした。 1325 | 1326 | - 人名を追加。 1327 | - はてなキーワードを更新。 1328 | - ニコニコ大百科IME辞書を更新。 1329 | 1330 | 2013-03-09 1331 | - 地名辞書に「市区町村+町域」を追加。 1332 | 例えば「あいおいしあお」で「相生市青葉台」がサジェストされる。 1333 | これまでは「相生市|青葉台」しかなかったので、 1334 | 「あいおいしあ」まで入力するとサジェストが消失するし、 1335 | 「相生市|あおば台」のように誤変換する可能性があった。 1336 | 1337 | - 地名生成にバグがあったので修正。 1338 | "以下に掲載がない場合"を削除したつもりだったが残っていた。 1339 | 1340 | - wordnet/doc/Japanese WordNet/README に参考文献を追加した。 1341 | 1342 | - 駅名を更新。 1343 | - ニコニコ大百科IME辞書を更新。 1344 | - EDICTを更新。 1345 | - 人名を追加。 1346 | 1347 | 2013-02-26 1348 | - 日本語WordNetから英和辞書を生成。 1349 | 「Earth」のように大文字から入力すると 1350 | 「earth n 1.グローブ, 世界, 地球」 1351 | のように語義が表示される。 1352 | n は名詞、v は動詞、a は形容詞、r は副詞。 1353 | 詳細はREADMEの「■ 英和辞書」を参照。 1354 | 1355 | - 人名を追加。 1356 | - はてなキーワードを更新。 1357 | 1358 | 2013-02-05 1359 | - 人名を追加。 1360 | - はてなキーワードを更新。 1361 | - ニコニコ大百科IME辞書を更新。 1362 | - EDICTを更新。 1363 | 1364 | 2012-12-08 1365 | - 人名を追加。 1366 | - はてなキーワードを更新。 1367 | - ニコニコ大百科IME辞書を更新。 1368 | - EDICTを更新。 1369 | 1370 | 2012-10-20 1371 | - EDICTを更新。 1372 | 1373 | - debian/rules の --jobs=1 を削除。 1374 | ビルドに時間がかかりすぎるので。 1375 | 1376 | 2012-10-15 1377 | - 内部で使っているツールをruby-1.9に対応させた。 1378 | ubuntuの標準rubyが1.9になったので。 1379 | 結構変わっていて参った。 1380 | 今後はruby-1.9を使わないと辞書の新規生成ができません。 1381 | 1382 | - 複数のサイトから単語のヒット数を取るようにした。 1383 | 単一のサイトから取っているとすぐ制限に引っかかるので。 1384 | 複数の検索エンジンを使っているので、 1385 | 今まで以上にヒット数の整合性がなくなったかもしれない。 1386 | 1387 | - debian公式の debian/ ファイルを同梱した。 1388 | メンテナのIwamatsuさんに感謝。 1389 | 1390 | - protobuf を削除。 1391 | 1392 | - remove-ut-dictionary.sh を削除。 1393 | 辞書ファイルの置き場所や製品名の指定場所などが 1394 | 時々変更されるようなので。 1395 | 1396 | - 人名を追加。 1397 | - はてなキーワードを更新。 1398 | - ニコニコ大百科IME辞書を更新。 1399 | 1400 | 2012-07-15 1401 | - 人名を追加。 1402 | - はてなキーワードを更新。 1403 | - ニコニコ大百科IME辞書を更新。 1404 | 1405 | 2012-05-29 1406 | - 辞書の生成日を自動的にバージョン名にしないようにした。 1407 | 独自にパッチを当てた人がバイナリを配布すると、 1408 | そちらの日付のほうが新しくなる場合があり、 1409 | それが最新版だと誤解される可能性があるので。 1410 | 1411 | - Ubuntu の protobuf だとエラーが出るので公式サイト推奨のprotobufを同梱した。 1412 | 1413 | - 人名を追加。 1414 | - はてなキーワードを更新。 1415 | - ニコニコ大百科IME辞書を更新。 1416 | 1417 | 2012-04-28 1418 | - 人名を追加。 1419 | - はてなキーワードを更新。 1420 | - ニコニコ大百科IME辞書を更新。 1421 | 1422 | - mozc-renderer パッケージを新設。 1423 | mozc-renderer をインストールすると新候補ウィンドウ、 1424 | アンインストールすると従来の候補ウィンドウになる。 1425 | 1426 | - 辞書の形式を変更。 1427 | 新: 読み 品詞 ヒット数 表記 1428 | 旧: 読み 品詞 ヒット数 頻度強制,キーボード,ハンバーグ,マヨネーズの頻度 表記 1429 | 1430 | ヒット数は「キーボード」が75万件ヒットする場合の数値。 1431 | 例えば「冷蔵庫」が400万件ヒットして「キーボード」が150万件ヒットする場合、 1432 | 補正して200万件にする。 1433 | 1434 | 辞書生成のたびに計算すると時間がかかるし、 1435 | 頻度強制などの要素は今では使っていないので、 1436 | シンプルにした。 1437 | 1438 | - UT辞書を独立したファイルにした。 1439 | data/dictionary/dictionary-ut.txt 1440 | これまではUT辞書を dictionary01.txt に結合していた。 1441 | これだとMozcの公式辞書に戻せない。 1442 | 公式Mozc本来の動作を確認したい時もあるので、 1443 | $ ./remove-ut-dictionary.sh で 1444 | 公式辞書+郵便番号辞書+debパッケージ作成スクリプト に 1445 | 戻せるようにした。 1446 | 1447 | Mozcでは品詞IDが頻繁に変わるので、 1448 | dictionary-ut.txt を他のバージョンで使うことはできません。 1449 | 1450 | - protobuf はUbuntuのパッケージを使うようにした。 1451 | 1452 | 2012-04-03 1453 | - はてなキーワードを更新。 1454 | - はてなキーワードの読みがな自動生成を修正。 1455 | 「ゐゑ」を「いえ」にしていたが、「うぃうぇ」に変更した。 1456 | 「ゐすきー」は「いすきー」より「うぃすきー」がいいので。 1457 | 1458 | 2012-04-02 1459 | - 辞書生成を高速化。 1460 | 辞書を1つ1つ確認せずに、 1461 | メジャー辞書とマイナー辞書の2つにまとめて 1462 | 読みと表記をチェックするようにした。 1463 | メジャー辞書は読みと表記のどちらかが新規であれば収録。 1464 | マイナー辞書は読みと表記のどちらかが新規であっても、 1465 | 残りの片方が公式辞書+メジャー辞書に収録済みであれば除外する。 1466 | 1467 | - カタカナ英語辞書を削除した。 1468 | 常用できるだけの質と量にするのが難しいのと、 1469 | 個人的に英単語をひらがなから出すことがないので。 1470 | EDICTからの自動取得だと説明的な英訳が混じるし、 1471 | はてなキーワードのアルファベット表記は 1472 | 「ろまさが Romancing SaGa」のような省略が混じる。 1473 | 1474 | 2012-03-31 1475 | - 一部の一般名詞を人名扱いにしていたのを修正。 1476 | 1477 | - 「ゔぁ」の読みから「ば」の読みを生成するスクリプトを変更。 1478 | コスト計算をカタカナ英語辞書と同じにした。 1479 | 「ば」にした時の単語が既に収録されていないかチェックするようにした。 1480 | 生成処理を高速化した。 1481 | 1482 | - カタカナ英語人名辞書を作成。 1483 | 「すぴるばーぐ」で「Spielberg」が出る。 1484 | EDICTには Spielberg などがない。 1485 | 1486 | - カタカナ英語辞書のコストを調整。 1487 | コストは公式辞書の同じ読みの単語を基準にして計算しているが、 1488 | 例えば「何度」(コスト 2200) から中途半端に優先度を下げると、 1489 | 「NAND」のほうが「難度」(コスト 5500) よりも上に来てしまう。 1490 | カタカナ英語辞書が前に出すぎると困るので、 1491 | 公式辞書全体の下位10%以下に優先度を引き下げた。 1492 | 1493 | - 人名を追加。 1494 | 1495 | 2012-03-30 1496 | - カタカナ英語辞書を修正。 1497 | EDICT内での並びを維持するようにした。 1498 | そうしないと「ぶるー」と打った時に「blue」より「sad」が優先される。 1499 | - カタカナ英語辞書の収録範囲を拡大。 1500 | 2語までは収録することにした。 1501 | 1語しか収録しないと、 1502 | 「ぷらいまりーばらんす」と打った時に「primary balance」がなくて 1503 | 「PB」だけが出るので。 1504 | 1505 | 「-」が含まれる単語を追加収録。 1506 | 「plus-minus」など。 1507 | 1508 | 2012-03-29 1509 | - debian/* を改変した。 1510 | scim-mozc を削除した。 1511 | これは本家の方でも削除予定なので。 1512 | 1513 | emacs-mozc を復活させた。 1514 | emacs-mozcを動かすためにはパッチが必要だが、 1515 | パッチを当てると全てのアプリでテスター向けの用例ウィンドウが無効になる。 1516 | しかし用例ウィンドウはまだ初期段階で、 1517 | - フォントサイズが小さい 1518 | - 遅延がなく即座に用例が表示されるので場合によっては邪魔 1519 | ということで emacs-mozc を残すことにした。 1520 | 1521 | - はてなダイアリーキーワードを更新。 1522 | - ニコニコ大百科IME辞書を更新。 1523 | 1524 | 2012-03-26 1525 | - 用例辞書を有効にした debian/rules を追加した。 1526 | http://code.google.com/p/mozc/issues/detail?id=145 1527 | デフォルトでは無効。 1528 | 使いたい場合は次のようにする。 1529 | $ rm -rf debian/ 1530 | $ mv debian_yourei debian 1531 | $ debuild -b -uc -us 1532 | 1533 | - カタカナ英語辞書を追加。 1534 | EDICTからの自動生成。 1535 | 「いべんと」で「event」が出る。 1536 | 1537 | - 人名の収録条件を変えた。 1538 | 「C- クラーク」のような 1539 | 「アルファベット- 」で始まる表記を削除。 1540 | 日本語で「しーくらーく」のように入力することはあまりないので。 1541 | 同様に「でぃーじぇい DJ」で始まる表記も削除。 1542 | - 人名のアルファベットの読みをなるべく揃えた。 1543 | - 人名の読みがなを自動チェックして修正。 1544 | カタカナ人名の読みを自動的に修正した。 1545 | - 人名を追加。 1546 | 1547 | - コストの最小値を以前の値に戻した。 1548 | - 読み仮名「う゛」「ヱ」の置換スクリプトを remove-rare-words に移した。 1549 | - 駅名の全角英数を半角英数にした。 1550 | 1551 | 2012-03-17 1552 | - 郵便番号データから地名辞書を自動的に生成。 1553 | 地名は変換するのが大変なので。 1554 | 「あいづまちょう」で「逢妻町」に変換できる。 1555 | 1556 | - 郵便番号辞書を自動的に作成するようにした。 1557 | 地名辞書を作るため郵便番号データをダウンロードするので、 1558 | そのまま利用することにした。 1559 | 1560 | - babibubeboの生成スクリプトを修正。 1561 | 「べーとーべん」と入力したときに、 1562 | 「ベートーヴェン」より「ヴェートーベン」が上に来ないように。 1563 | コスト的にはそのようにしたが、公式辞書の品詞設定の都合で 1564 | 依然「ヴェートーベン」が上に来るかもしれない。 1565 | 1566 | - 私家版人名辞書を更新。 1567 | 再チェックして漏れていたものを追加。 1568 | 1569 | - バージョン名を sed で書き換えることにした。 1570 | 1571 | 2012-03-09 1572 | - 私家版人名辞書を更新。 1573 | 人名を追加するとともにマイナーだった人名のヒット数を取り直した。 1574 | - はてなダイアリーキーワードを更新。 1575 | - edictを更新。 1576 | - ニコニコ大百科IME辞書を更新。 1577 | - 駅名を追加。 1578 | 「十三」(じゅうそう)などが抜けているようなので。 1579 | こちらのサイトのものを加工させて頂きました。 1580 | http://www5a.biglobe.ne.jp/~harako/data/station.htm 1581 | - 辞書生成スクリプトをシンプルにした。 1582 | - 単語コストの範囲を変更。 1583 | 厳しく設定しすぎて出てきにくい候補があるようなので。 1584 | 1585 | 2012-01-30 1586 | - Bing APIが長い間バグで使えなかったので久しぶりの更新。 1587 | http://www.bing.com/community/developer/f/12254/t/671908.aspx 1588 | - 私家版人名辞書を更新。 1589 | - はてなダイアリーキーワードを更新。 1590 | - ニコニコ大百科IME辞書を更新。 1591 | - edictを更新。 1592 | 1593 | 2011-11-30 1594 | - debian/* ファイルをMozc公式サイトから取るようにした。 1595 | Ubuntu 11.10向けの修正が入ったので。 1596 | - mozc-1.3.911.102 に対応。 1597 | 1598 | 2011-11-23 1599 | - 私家版人名辞書を更新。 1600 | - はてなダイアリーキーワードを更新。 1601 | - ニコニコ大百科IME辞書を更新。 1602 | - debian/* ファイルを同梱するようにした。 1603 | Ubuntu 11.10向けにBuild-Dependsの改変が必要なため。 1604 | 1605 | 2011-10-03 1606 | - 私家版人名辞書を更新。 1607 | - はてなダイアリーキーワードを更新。 1608 | - ニコニコ大百科IME辞書を更新。 1609 | 1610 | 2011-08-22 1611 | - 私家版人名辞書を更新。 1612 | - はてなダイアリーキーワードを更新。 1613 | - ニコニコ大百科IME辞書を更新。 1614 | - ニコニコ大百科IME辞書はデフォルトでは無効。 1615 | - 郵便番号辞書生成スクリプトの位置を doc-ut/script/ に変更。 1616 | 1617 | 2011-08-17 1618 | - 私家版人名辞書を更新。 1619 | - はてなダイアリーキーワードを更新。 1620 | - ニコニコ大百科IME辞書を更新。 1621 | - 郵便番号辞書の生成方法を変更。 1622 | 公式版のスクリプトが修正されたので。 1623 | - パッチを当てた mozc-ut も配布することにした。 1624 | 辞書生成にかなり時間がかかるので。 1625 | 1626 | 2011-08-03 1627 | - 追加単語の頻度を全体的に下げた。 1628 | 最高頻度を公式辞書の上位20%に設定していたが、 1629 | 上位33%に下げた。 1630 | なるべく公式辞書の変換を崩さないようにするため。 1631 | 1632 | - カタカナ語の読みがなを自動的に修正。 1633 | 「きゃのん => キヤノン」も「きやのん」に直してしまうが、 1634 | 手間を省くため例外なく直す。 1635 | 1636 | - 「はてなダイアリーキーワード」を更新。 1637 | - jinmei を更新。 1638 | - 「公式辞書と表記が同じで読みが異なるもの」の取得を修正。 1639 | 「ぬくみずよういち」が抜けていた。 1640 | - 「公式辞書と表記が同じで読みが異なるもの」の頻度を修正。 1641 | 「からくり 機関」などの頻度が高くなりすぎていた。 1642 | - ひらがな以外の読みがながあったので修正。 1643 | - EUCからUTF8への変換を修正。 1644 | - EDICT からのエントリ取得を修正。 1645 | - EDICT を更新。 1646 | - EDICT の読みがなを修正。 1647 | 1648 | 2011-07-28 1649 | - edictから単語を控えめに追加。 1650 | 漢字またはカタカナで出来ている単語を追加。 1651 | ひらがな混じりだと文章風のものがあるので削除。 1652 | 変わった読み仮名が混じっているので、 1653 | 公式辞書と同じ読みのものは削除。 1654 | 1655 | - ニコニコ大百科IME辞書から単語を控えめに追加。 1656 | ライセンスに不安があるのでデフォルトでは無効にしています。 1657 | 2年近く配布されていて、 1658 | トラブルになってはいないようですが。 1659 | 収録単語の条件はedictと同じ。 1660 | 1661 | - サンプル単語のヒット数が正常に取れていないものがあったので修正。 1662 | - 単語選択スクリプトを修正。 1663 | 1664 | 2011-07-27 1665 | - 「はてなダイアリーキーワード」を更新。 1666 | - 表記が同じで読みが異なる単語のコスト計算を変更。 1667 | 決め打ちしていたのを公式辞書から算出するようにした。 1668 | とりあえずの結果としては変わりなし。 1669 | - 一般名詞の収録範囲を修正。 1670 | 1671 | 2011-07-26 1672 | - 公式辞書&人名辞書と読みが同じ「はてなダイアリーキーワード」を削除。 1673 | 当て字による中傷を減らすため。 1674 | 前から同じような処理を配布前にやっていたので 1675 | 結果としてはあまり変わらないが、 1676 | 辞書生成時に公式辞書を参照して削除するようにした。 1677 | 1678 | - 表記が同じで読みが異なる単語を収録。 1679 | 公式辞書と表記が同じ単語は削除してきたが、 1680 | 公式辞書では読みを間違えて登録していたり、 1681 | 濁音の読みが登録されていないことがあるので。 1682 | (例) 1683 | だんしだか 男子高 (「だんしこう」を追加) 1684 | こうはん 鋼板 (「こうばん」を追加) 1685 | 1686 | この時の品詞は公式辞書のものを流用し、 1687 | 頻度は公式辞書からざっくり計算した。 1688 | 1689 | 2011-07-25 1690 | - 辞書の優先順を変更。 1691 | mozc-official => jinmei => altcanna => hatena => skk を 1692 | mozc-official => altcanna => jinmei => hatena => skk に変更。 1693 | 1694 | jinmei には「スピード」のようなありきたりな名詞を使った 1695 | グループ名などがあるので、altcanna の優先度を上げた。 1696 | 1697 | - 読みと表記が公式辞書と完全に一致する単語は生成した辞書から削除。 1698 | 人名だけは残していたが削除することにした。 1699 | 1700 | - 公式辞書と表記もしくは読みが重なる単語でも、元データとしては残す。 1701 | 重複する単語は配布前に削除していたが、 1702 | スクリプト実行時に公式辞書を参照して削除することにした。 1703 | 1704 | - 郵便番号辞書の生成スクリプトを付けた。 1705 | 1706 | - 「ゔぁゔぃゔぇゔぉゔゅゔ」の読みから「ばびべぼびゅぶ」の読みを生成。 1707 | 「ばいおりん」で「ヴァイオリン」に変換できる。 1708 | 1709 | 2011-07-22 1710 | - はてなダイアリーキーワードが漏れていたので足した。 1711 | 1712 | 2011-07-18 1713 | - 辞書を大きく変えた。 1714 | 全体の方針 1715 | 手作業での単語優先度変更はなるべくしない。 1716 | 重要な単語がいくつか削がれたとしても、 1717 | なるべく楽に単語選択と頻度設定ができるようにする。 1718 | 1719 | - 単語のヒット数をbingですべて取り直した。 1720 | Yahoo APIは使用制限が厳しくなったのでやめた。 1721 | 1722 | - 公式辞書の変換をなるべく崩さないようにする。 1723 | 公式辞書と表記がかぶるものを 1724 | 辞書の種類に応じて自動で削除する。 1725 | 1726 | - 収録基準を見なおした。 1727 | 英数字を含む単語は私家版辞書から削除。 1728 | アルファベットが多いとヒット数が大きく出るし、 1729 | 多くの場合アルファベット部分は平仮名で打たないので。 1730 | (「えっちでぃーどらいぶ HDドライブ」など。) 1731 | 1732 | - バージョン名を「Mozc-UT-**」にした。 1733 | 非公式版であることを明確にするため。 1734 | バージョンは「ばーじょん」と入力して変換すると表示されます。 1735 | 1736 | 2011-04-09 1737 | - 私家版Anthy辞書の更新に追従。 1738 | 1739 | 2011-03-07 1740 | - 私家版Anthy辞書の更新に追従。 1741 | - ベースを Mozc-1.1.626.102 に更新。 1742 | - 人名の頻度を少し上げた。 1743 | 1回で変換できるものを増やした。 1744 | 1745 | 2010-12-17 1746 | - 私家版Anthy辞書の更新に追従。 1747 | - ベースを Mozc-1.0.558.102 に更新。 1748 | 1749 | 2010-11-16 1750 | - 私家版Anthy辞書の更新に追従。 1751 | 1752 | 2010-11-15 1753 | - 私家版Anthy辞書の更新に追従。 1754 | - ディレクトリ名を拡張版辞書と対比しやすいように変更した。 1755 | mozcdic-ut-base-*/ 1756 | - 生成済み辞書の入るディレクトリ名を変更した。 1757 | dictionaries/ 1758 | - ドキュメントを更新した。 1759 | - 2010-11-13 の件を解決。 1760 | 生の品詞名をIDに自動変換することにした。 1761 | 1762 | 2010-11-13 1763 | - 「分か***」の動詞を追加した。 1764 | 足りない基本単語は mozc-utwords.txt という 1765 | ファイルで足すことにした。 1766 | このファイルはBSDライセンスとする。 1767 | 動詞はID変更への自動追従が面倒なのでどうするか。 1768 | 1769 | 2010-11-11 1770 | - カタカナ語を増やした。 1771 | gcanna.ctdのカタカナ語を増やしたことにより 1772 | 収録範囲が広がった。 1773 | 1774 | 2010-11-10 1775 | - スコアが9000以上のものを削除した。 1776 | 1777 | 2010-11-10 1778 | - 「分か***」の動詞を追加した。 1779 | 1780 | 2010-11-06 1781 | - 「う゛」ではなく「ゔ」で検索するようにした。 1782 | Anthyの読み仮名は「う゛」、 1783 | Mozcの読み仮名は「ゔ」なので、 1784 | gcanna.ctdの読み仮名をあらかじめ「ゔ」に統一した。 1785 | 1786 | 2010-11-05 1787 | - 収録範囲を少し広げた。 1788 | 1789 | 2010-11-04 1790 | - id.def の変更に自動対応するようにした。 1791 | - 自動で辞書を作れるようにした。 1792 | - ディレクトリ名を変えた。 1793 | - 収録範囲を変更した。 1794 | かなり大胆に削ったので調整が必要。 1795 | 1796 | 2010-11-04 1797 | - 収録語を追加。 1798 | 私家版Anthy辞書に基本語の漏れが少しあったので。 1799 | 1800 | 2010-11-03 1801 | - 少し収録語を減らした。 1802 | 1803 | 2010-11-03 1804 | - 最初のリリース。 1805 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | - mozcdic-ut.txt (generated by merge-ut-dictionaries): Combined 2 | 3 | - jawiki-latest-all-titles: [CC BY-SA](https://ja.wikipedia.org/wiki/Wikipedia:ウィキペディアを二次利用する) 4 | - Update the costs for words using jawiki-latest-all-titles. 5 | 6 | - [id.def](https://github.com/google/mozc/blob/master/src/data/dictionary_oss/id.def) from Mozc: [BSD-3-Clause](https://github.com/google/mozc) 7 | - Update the ID for words using id.def. 8 | 9 | - Source code: Apache License, Version 2.0 10 | -------------------------------------------------------------------------------- /PKGBUILD/fcitx5-mozc-ut.PKGBUILD: -------------------------------------------------------------------------------- 1 | # Maintainer: UTUMI Hirosi 2 | # Contributor: Nocifer 3 | # Contributor: Felix Yan 4 | # Contributor: ponsfoot 5 | 6 | ## The UT dictionary's project page: http://linuxplayers.g1.xrea.com/mozc-ut.html 7 | 8 | ## Helpful internal stuff 9 | _mozcver=2.30.5618.102.20241223 10 | _pkgver=${_mozcver} 11 | 12 | pkgname=fcitx5-mozc-ut 13 | arch=('i686' 'x86_64') 14 | pkgver=${_pkgver} 15 | pkgrel=1 16 | url='https://github.com/fcitx/mozc' 17 | makedepends=('bazel' 'fcitx5' 'python' 'qt6-base') 18 | source=(mozc-${_mozcver}.tar.zst 19 | mozcdic-ut.txt) 20 | sha256sums=('SKIP' 21 | 'SKIP') 22 | 23 | prepare() { 24 | cd mozc-${_mozcver}/src 25 | 26 | # Add the UT dictionary 27 | cat ${srcdir}/mozcdic-ut.txt >> data/dictionary_oss/dictionary00.txt 28 | } 29 | 30 | build() { 31 | cd mozc-${_mozcver}/src 32 | sh ../scripts/build_fcitx5_bazel 33 | } 34 | 35 | package() { 36 | pkgdesc='Mozc with Fcitx5 module' 37 | license=('custom') 38 | depends=('fcitx5') 39 | optdepends=('fcitx5-configtool') 40 | 41 | cd mozc-${_mozcver}/src 42 | # Install mozc-ut 43 | sed -i -e "s,-/usr,-${pkgdir}/usr,g" ../scripts/install_server_bazel 44 | sed -i -e "s,share/doc,share/licenses,g" ../scripts/install_server_bazel 45 | sh ../scripts/install_server_bazel 46 | install -Dm644 ../LICENSE ${pkgdir}/usr/share/licenses/mozc/LICENSE 47 | 48 | # Install fcitx5-mozc-ut 49 | sed -i -e "s,-/usr,-${pkgdir}/usr,g" ../scripts/install_fcitx5_bazel 50 | sh ../scripts/install_fcitx5_bazel 51 | } 52 | -------------------------------------------------------------------------------- /PKGBUILD/generate-mozc-archive.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # coding: utf-8 3 | 4 | # Author: UTUMI Hirosi (utuhiro78 at yahoo dot co dot jp) 5 | # License: Apache License, Version 2.0 6 | 7 | import os 8 | import re 9 | import shutil 10 | import subprocess 11 | import urllib.request 12 | 13 | 14 | def main(): 15 | # mozc のバージョンを取得 16 | url = 'https://raw.githubusercontent.com/' + \ 17 | 'google/mozc/master/src/data/version/mozc_version_template.bzl' 18 | 19 | with urllib.request.urlopen(url) as response: 20 | lines = response.read().decode() 21 | 22 | version = lines.split('MAJOR = ')[1].split('\n')[0] + '.' 23 | version += lines.split('MINOR = ')[1].split('\n')[0] + '.' 24 | version += lines.split('BUILD_OSS = ')[1].split('\n')[0] + '.102.' 25 | 26 | # mozc の最終コミット日を取得 27 | date = get_committed_date('https://github.com/google/mozc/commits/master/') 28 | 29 | # mozc のアーカイブが古い場合は取得 30 | global mozc_ver 31 | mozc_ver = version + date 32 | mozc_dir = 'mozc-' + mozc_ver 33 | 34 | if not os.path.exists(mozc_dir + '.tar.zst'): 35 | if os.path.exists('mozc'): 36 | shutil.rmtree('mozc') 37 | 38 | subprocess.run( 39 | ['git', 'clone', '--depth', '1', 40 | '--recursive', '--shallow-submodules', 41 | 'https://github.com/fcitx/mozc.git'], check=True) 42 | shutil.rmtree('mozc/.git') 43 | os.rename('mozc', mozc_dir) 44 | else: 45 | print(mozc_dir + ' is up to date.') 46 | subprocess.run(['tar', 'xf', f'{mozc_dir}.tar.zst'], check=True) 47 | 48 | # mozc-fcitx の最終コミット日を取得 49 | date = get_committed_date('https://github.com/fcitx/mozc/commits/fcitx/') 50 | 51 | # mozc-fcitx のアーカイブが古い場合は取得 52 | if not os.path.exists(f'mozc-fcitx-{date}.zip'): 53 | subprocess.run( 54 | ['wget', 'https://github.com/' + 55 | 'fcitx/mozc/archive/refs/heads/fcitx.zip', 56 | '-O', f'mozc-fcitx-{date}.zip'], check=True) 57 | 58 | if os.path.exists('mozc-fcitx'): 59 | shutil.rmtree('mozc-fcitx') 60 | 61 | # mozc-fcitx を展開して、mozc-fcitx/src/unix を mozc に移動 62 | shutil.unpack_archive(f'mozc-fcitx-{date}.zip') 63 | shutil.rmtree(f'{mozc_dir}/src/unix') 64 | os.rename('mozc-fcitx/src/unix', f'{mozc_dir}/src/unix') 65 | shutil.rmtree('mozc-fcitx') 66 | 67 | # mozc のアーカイブを作成 68 | subprocess.run( 69 | ['tar', '--zstd', '-cf', f'{mozc_dir}.tar.zst', mozc_dir], check=True) 70 | shutil.rmtree(mozc_dir) 71 | 72 | # PKGBUILD を更新 73 | update_pkgbuild('fcitx5-mozc-ut.PKGBUILD') 74 | update_pkgbuild('ibus-mozc-ut.PKGBUILD') 75 | 76 | 77 | # GitHub の最終コミット日を取得 78 | def get_committed_date(url): 79 | with urllib.request.urlopen(url) as response: 80 | lines = response.read().decode() 81 | 82 | # "committedDate":"2024-01-16T06:05:57.000Z" 83 | date = lines.split('"committedDate":"')[1] 84 | # 数字以外を削除 85 | date = re.sub(r'\D', '', date)[:8] 86 | return (date) 87 | 88 | 89 | # PKGBUILD を更新 90 | def update_pkgbuild(pkgbuild): 91 | with open(pkgbuild, 'r') as file: 92 | lines = file.read() 93 | 94 | lines = re.sub('_mozcver=.*\n', f'_mozcver={mozc_ver}\n', lines) 95 | 96 | with open(pkgbuild, 'w') as file: 97 | file.write(lines) 98 | 99 | 100 | if __name__ == '__main__': 101 | main() 102 | -------------------------------------------------------------------------------- /PKGBUILD/ibus-mozc-ut.PKGBUILD: -------------------------------------------------------------------------------- 1 | # Maintainer: UTUMI Hirosi 2 | # Contributor: Nocifer 3 | # Contributor: Felix Yan 4 | # Contributor: ponsfoot 5 | 6 | ## The UT dictionary's project page: http://linuxplayers.g1.xrea.com/mozc-ut.html 7 | 8 | ## Helpful internal stuff 9 | _mozcver=2.30.5618.102.20241218 10 | _pkgver=${_mozcver} 11 | 12 | pkgname=ibus-mozc-ut 13 | arch=('i686' 'x86_64') 14 | pkgver=${_pkgver} 15 | pkgrel=1 16 | url='https://github.com/google/mozc' 17 | makedepends=('bazel' 'ibus' 'python' 'qt6-base') 18 | source=(mozc-${_mozcver}.tar.zst 19 | mozcdic-ut.txt) 20 | sha256sums=('SKIP' 21 | 'SKIP') 22 | 23 | prepare() { 24 | cd mozc-${_mozcver}/src 25 | 26 | # Add the UT dictionary 27 | cat ${srcdir}/mozcdic-ut.txt >> data/dictionary_oss/dictionary00.txt 28 | } 29 | 30 | build() { 31 | cd mozc-${_mozcver}/src 32 | bazel build package --config oss_linux --config release_build 33 | } 34 | 35 | package() { 36 | pkgdesc='Mozc with iBus module' 37 | license=('custom') 38 | depends=('ibus') 39 | 40 | cd mozc-${_mozcver}/src/ 41 | install -Dm644 ../LICENSE ${pkgdir}/usr/share/licenses/mozc/LICENSE 42 | 43 | cd bazel-bin/unix/ 44 | unzip -q mozc.zip -d $pkgdir 45 | 46 | cd $pkgdir 47 | rm -rf {tmp,usr/bin,usr/share/emacs} 48 | } 49 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ## Overview 2 | 3 | Merge multiple Mozc UT dictionaries into one and modify the costs. 4 | 5 | ## Press the Star button on GitHub 6 | 7 | They need more Stars. 8 | 9 | mozc: [1930 Stars](https://github.com/google/mozc) 10 | 11 | fcitx5-mozc: [82 Stars](https://github.com/fcitx/mozc) 12 | 13 | merge-ut-dictionaries: [40 Stars](https://github.com/utuhiro78/merge-ut-dictionaries) 14 | 15 | > Starring a repository also shows appreciation to the repository maintainer for their work. - [GitHub Docs](https://docs.github.com/en/get-started/exploring-projects-on-github/saving-repositories-with-stars) 16 | 17 | > リポジトリに Star を付けるということは、リポジトリメンテナに対してその作業についての感謝を示すことでもあります。- [GitHub Docs](https://docs.github.com/ja/get-started/exploring-projects-on-github/saving-repositories-with-stars) 18 | 19 | ## Download 20 | 21 | ``` 22 | git clone --depth 1 https://github.com/utuhiro78/merge-ut-dictionaries.git 23 | ``` 24 | 25 | ## Configure 26 | 27 | Comment out unnecessary dictionaries in [src/merge/make.sh](https://github.com/utuhiro78/merge-ut-dictionaries/blob/main/src/merge/make.sh). 28 | 29 | Default settings: 30 | 31 | ``` 32 | #alt_cannadic="true" 33 | #edict2="true" 34 | jawiki="true" 35 | #neologd="true" 36 | personal_names="true" 37 | place_names="true" 38 | #skk_jisyo="true" 39 | sudachidict="true" 40 | ``` 41 | 42 | ## Build 43 | 44 | ``` 45 | cd src/merge/ 46 | sh make.sh 47 | cat mozcdic-ut.txt >> ../../../mozc-master/src/data/dictionary_oss/dictionary00.txt 48 | ``` 49 | 50 | Build Mozc as usual. 51 | 52 | ## Option: Generate the UT dictionaries using the latest stuff 53 | 54 | Uncomment ```#generate_latest="true"``` in [src/merge/make.sh](https://github.com/utuhiro78/merge-ut-dictionaries/blob/main/src/merge/make.sh). 55 | 56 | It downloads the latest "jawiki-latest-pages-articles-multistream.xml.bz2" (over 4.2 GB). 57 | 58 | ## License 59 | 60 | - mozcdic-ut.txt (generated by merge-ut-dictionaries): Combined 61 | 62 | You can combine these UT dictionaries. 63 | 64 | - [mozcdic-ut-alt-cannadic](https://github.com/utuhiro78/mozcdic-ut-alt-cannadic) 65 | 66 | - [mozcdic-ut-edict2](https://github.com/utuhiro78/mozcdic-ut-edict2) 67 | 68 | - [mozcdic-ut-jawiki](https://github.com/utuhiro78/mozcdic-ut-jawiki) 69 | 70 | - [mozcdic-ut-neologd](https://github.com/utuhiro78/mozcdic-ut-neologd) 71 | 72 | - [mozcdic-ut-personal-names](https://github.com/utuhiro78/mozcdic-ut-personal-names) 73 | 74 | - [mozcdic-ut-place-names](https://github.com/utuhiro78/mozcdic-ut-place-names) 75 | 76 | - [mozcdic-ut-skk-jisyo](https://github.com/utuhiro78/mozcdic-ut-skk-jisyo) 77 | 78 | - [mozcdic-ut-sudachidict](https://github.com/utuhiro78/mozcdic-ut-sudachidict) 79 | 80 | - [jawiki-latest-pages-articles-multistream-index.txt](https://dumps.wikimedia.org/jawiki/latest/): [CC BY-SA](https://ja.wikipedia.org/wiki/Wikipedia:ウィキペディアを二次利用する) 81 | 82 | merge-ut-dictionaries use it to generate the costs for words. 83 | 84 | - [dictionary*.txt](https://github.com/google/mozc/tree/master/src/data/dictionary_oss) in Mozc: [BSD-3-Clause](https://github.com/google/mozc) 85 | 86 | merge-ut-dictionaries use them to remove duplicate words. 87 | 88 | - [id.def](https://github.com/google/mozc/tree/master/src/data/dictionary_oss) in Mozc: [BSD-3-Clause](https://github.com/google/mozc) 89 | 90 | merge-ut-dictionaries use it to update ID. 91 | 92 | - Source code: Apache License, Version 2.0 93 | 94 | [HOME](https://ss1.xrea.com/linuxplayers.g1.xrea.com/mozc-ut.html) 95 | -------------------------------------------------------------------------------- /src/alt-cannadic/convert_alt_cannadic.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # coding: utf-8 3 | 4 | # Author: UTUMI Hirosi (utuhiro78 at yahoo dot co dot jp) 5 | # License: Apache License, Version 2.0 6 | 7 | import re 8 | import tarfile 9 | import urllib.request 10 | from unicodedata import normalize 11 | 12 | urllib.request.urlretrieve( 13 | 'https://ftp.iij.ad.jp/pub/osdn.jp/alt-cannadic/50881/' + 14 | 'alt-cannadic-110208.tar.bz2', 'alt-cannadic-110208.tar.bz2') 15 | 16 | with tarfile.open('alt-cannadic-110208.tar.bz2') as tar: 17 | file = tar.extractfile('alt-cannadic-110208/gcanna.ctd') 18 | lines = file.read().decode('euc_jp') 19 | file = tar.extractfile('alt-cannadic-110208/g_fname.ctd') 20 | lines += file.read().decode('euc_jp') 21 | 22 | lines = lines.splitlines() 23 | 24 | l2 = [] 25 | 26 | for line in lines: 27 | line = line.split(' ') 28 | 29 | # あきびん #T35*202 空き瓶 空瓶 #T35*151 空きビン 空ビン 30 | yomi = line[0] 31 | yomi = yomi.replace('う゛', 'ゔ') 32 | 33 | # 読みがひらがな以外を含む場合はスキップ 34 | # 読みが2文字以下の場合はスキップ 35 | if yomi != ''.join(re.findall('[ぁ-ゔー]', yomi)) or \ 36 | len(yomi) < 3: 37 | continue 38 | 39 | hinsi = '' 40 | cost_anthy = 0 41 | 42 | # 読みを除去したエントリを作る 43 | line = line[1:] 44 | 45 | for c in range(len(line)): 46 | # 「#」で始まるエントリの場合は品詞とコストを取得 47 | # #T35*202 空き瓶 空瓶 #T35*151 空きビン 空ビン 48 | if line[c][0] == '#': 49 | entry = line[c].split('*') 50 | hinsi = entry[0] 51 | cost_anthy = int(entry[1]) 52 | continue 53 | 54 | hyouki = normalize('NFKC', line[c]) 55 | 56 | # 表記が1文字以下の場合はスキップ 57 | if len(hyouki) < 2: 58 | continue 59 | 60 | # alt-cannadic のコストから Mozc 辞書のコストを作る 61 | # 「#T35*202 空き瓶 空瓶 #T35*151 空きビン 空ビン」の場合、 62 | # 「空き瓶 空瓶 空きビン 空ビン」の順に優先されるようにする 63 | # Mozc 辞書のコストは 8000 台にする 64 | cost_mozc = (9000 - cost_anthy) + c 65 | 66 | # 収録する品詞を選択 67 | if hinsi.startswith('#T3') or \ 68 | hinsi.startswith('#T0') or \ 69 | hinsi.startswith('#JN') or \ 70 | hinsi.startswith('#KK') or \ 71 | hinsi.startswith('#CN'): 72 | entry = [yomi, hyouki, str(cost_mozc)] 73 | l2.append(entry) 74 | 75 | lines = sorted(l2) 76 | l2 = [] 77 | 78 | for i in range(len(lines)): 79 | # [読み, 表記] が重複するエントリをスキップ 80 | # [yomi, hyouki, str(cost_mozc)] 81 | if lines[i][:2] == lines[i - 1][:2]: 82 | continue 83 | 84 | # Mozc 辞書の並びに変更 85 | entry = [lines[i][0], '0000', '0000', lines[i][2], lines[i][1]] 86 | l2.append('\t'.join(entry) + '\n') 87 | 88 | lines = l2 89 | dict_name = 'mozcdic-ut-alt-cannadic.txt' 90 | 91 | with open(dict_name, 'w', encoding='utf-8') as file: 92 | file.writelines(lines) 93 | -------------------------------------------------------------------------------- /src/alt-cannadic/make.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Author: UTUMI Hirosi (utuhiro78 at yahoo dot co dot jp) 4 | # License: Apache License, Version 2.0 5 | 6 | python convert_alt_cannadic.py 7 | 8 | bzip2 -k mozcdic-ut-*.txt 9 | mv mozcdic-ut-*.txt* ../merge/ 10 | -------------------------------------------------------------------------------- /src/common/adjust_entries.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # coding: utf-8 3 | 4 | # Author: UTUMI Hirosi (utuhiro78 at yahoo dot co dot jp) 5 | # License: Apache License, Version 2.0 6 | 7 | import jaconv 8 | import re 9 | import sys 10 | from unicodedata import normalize 11 | 12 | args = sys.argv[1:] 13 | 14 | if not args: 15 | print('No file specified.') 16 | sys.exit() 17 | 18 | file_name = args[0] 19 | 20 | with open(file_name, 'r', encoding='utf-8') as file: 21 | lines = file.read().splitlines() 22 | 23 | l2 = [] 24 | 25 | for i in range(len(lines)): 26 | entry = lines[i].split('\t') 27 | yomi = entry[0] 28 | hyouki = entry[4] 29 | 30 | # 表記の「~」を「〜」に置き換える 31 | hyouki = hyouki.replace('~', '〜') 32 | 33 | # 表記の全角英数を半角に変換 34 | hyouki = normalize('NFKC', hyouki) 35 | 36 | # 表記の最初が空白の場合は取る 37 | if hyouki[0] == ' ': 38 | hyouki = hyouki[1:] 39 | 40 | # 表記の全角カンマを半角に変換 41 | hyouki = hyouki.replace(',', ', ') 42 | 43 | # 表記の最後が空白の場合は取る(全角カンマが「, 」に変換されている) 44 | # 表記の最後が「。」の場合は取る 45 | if hyouki[-1] == ' ' or hyouki[-1] == '。': 46 | hyouki = hyouki[:-1] 47 | 48 | # 読みにならない文字「 !?」などを削除したhyouki_stripを作る 49 | hyouki_strip = hyouki.translate(str.maketrans('', '', ' .!?-+*=:/・。×★☆')) 50 | 51 | # hyouki_stripがひらがなとカタカナだけの場合は、読みをhyouki_stripから作る 52 | if hyouki_strip == ''.join(re.findall('[ぁ-ゔァ-ヴー]', hyouki_strip)): 53 | yomi = jaconv.kata2hira(hyouki_strip) 54 | yomi = yomi.translate(str.maketrans('ゐゑ', 'いえ')) 55 | 56 | # 読みが2文字以下の場合はスキップ 57 | # hyouki_stripが1文字の場合はスキップ 58 | # 表記が26文字以上の場合はスキップ。候補ウィンドウが大きくなりすぎる 59 | # hyouki_stripの1文字に対する読みが平均4文字を超える場合はスキップ 60 | # 「さくらざかふぉーてぃーしっくす[15文字] 櫻坂46[4文字]」までは残す 61 | # 読み1文字に対するhyouki_stripのバイト数が平均3バイトを超える場合はスキップ 62 | # 「あいてぃー[5文字] ITエンジニア[17bytes]」をスキップ 63 | # 読みがひらがな以外を含む場合はスキップ 64 | # 表記がコードポイントを含む場合はスキップ 65 | # 表記が「/」を含む場合はスキップ 66 | # 「ひかりのあと 光の跡/生命体」をスキップ 67 | if len(yomi) < 3 or \ 68 | len(hyouki_strip) < 2 or \ 69 | len(hyouki) > 25 or \ 70 | len(yomi) / len(hyouki_strip) > 4 or \ 71 | len(hyouki_strip.encode()) / len(yomi) > 3 or \ 72 | yomi != ''.join(re.findall('[ぁ-ゔー]', yomi)) or \ 73 | '\\u' in hyouki or \ 74 | '/' in hyouki: 75 | continue 76 | 77 | # hyouki_stripに数字が3個以上ある場合はスキップ 78 | # ただし「100円ショップ」は残す 79 | n = re.findall(r'\d+', hyouki) 80 | 81 | if n != []: 82 | n = int(''.join(n)) 83 | 84 | if n > 100: 85 | continue 86 | 87 | entry[0] = yomi 88 | entry[4] = hyouki 89 | l2.append('\t'.join(entry) + '\n') 90 | 91 | lines = l2 92 | 93 | with open(file_name, 'w', encoding='utf-8') as dict_file: 94 | dict_file.writelines(lines) 95 | -------------------------------------------------------------------------------- /src/common/filter_unsuitable_words.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # coding: utf-8 3 | 4 | # Author: UTUMI Hirosi (utuhiro78 at yahoo dot co dot jp) 5 | # License: Apache License, Version 2.0 6 | 7 | import os 8 | import re 9 | import sys 10 | 11 | args = sys.argv[1:] 12 | 13 | if not args: 14 | print('No file specified.') 15 | exit() 16 | 17 | file_name = args[0] 18 | 19 | # Mozc 形式の辞書を読み込む 20 | # なかいまさひろ 1917 1917 6477 中居正広 21 | with open(file_name, 'r', encoding='utf-8') as file: 22 | lines = file.read().splitlines() 23 | 24 | # NGリストを読み込む 25 | dir_python = os.path.dirname(__file__) 26 | 27 | with open(f'{dir_python}/unsuitable_words.txt', 'r', encoding='utf-8') as file: 28 | unsuitables = file.read().splitlines() 29 | 30 | for i in range(len(unsuitables)): 31 | if unsuitables[i][0] == '/': 32 | unsuitables[i] = re.compile(unsuitables[i][1:]) 33 | 34 | with open(file_name, 'w', encoding='utf-8') as dict_file: 35 | for line in lines: 36 | hyouki = line.split('\t')[4] 37 | 38 | for unsuitable in unsuitables: 39 | if type(unsuitable) is re.Pattern: 40 | if re.match(unsuitable, hyouki) is not None: 41 | hyouki = None 42 | break 43 | elif unsuitable in hyouki: 44 | hyouki = None 45 | break 46 | 47 | if hyouki is not None: 48 | dict_file.write(line + '\n') 49 | -------------------------------------------------------------------------------- /src/common/unsuitable_words.txt: -------------------------------------------------------------------------------- 1 | 自民党 2 | 公明党 3 | 民進党 4 | 民主党 5 | 共産党 6 | 朝日新聞 7 | 読売新聞 8 | 毎日新聞 9 | 産経新聞 10 | 嫌韓 11 | 嫌中 12 | 親韓 13 | 親中 14 | 韓国 15 | 韓論 16 | 朝鮮 17 | 在日 18 | 特権 19 | 創価 20 | 気違い 21 | キチガイ 22 | ウリナラ 23 | チョッパリ 24 | ハングル 25 | ヒトモドキ 26 | 慰安婦 27 | 少女像 28 | 右翼 29 | 左翼 30 | ネトウヨ 31 | ブサヨ 32 | しばき隊 33 | シバキ隊 34 | 日教組 35 | 売国 36 | 愛国 37 | 憂国 38 | 保守 39 | 革新 40 | 反日 41 | 侮日 42 | 偏向 43 | 独裁 44 | 利権 45 | 捏造 46 | 自称 47 | 変態 48 | 支那 49 | シナ人 50 | いい加減 51 | いわゆる 52 | お断り 53 | アベ政治 54 | 殺せプラカ 55 | えば上祐 56 | の・ようなもの 57 | 一花カナウ 58 | 本仁戻 59 | :: 60 | 〇 61 | ○ 62 | ● 63 | 議会 64 | 選挙 65 | 国道 66 | 県道 67 | における 68 | の登場人物 69 | の歴史 70 | の国章 71 | の作品 72 | の世界遺産 73 | 一覧 74 | /^中国 75 | /^馬鹿 76 | /^バカ 77 | /^ウリ 78 | /^糞 79 | /^クソ 80 | /^通名 81 | /^部落 82 | /^似非 83 | /^エセ 84 | /^えせ 85 | /^安倍晋三.+ 86 | /.+シリーズ$ 87 | /.+代表$ 88 | -------------------------------------------------------------------------------- /src/edict2/convert_edict2.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # coding: utf-8 3 | 4 | # Author: UTUMI Hirosi (utuhiro78 at yahoo dot co dot jp) 5 | # License: Apache License, Version 2.0 6 | 7 | import gzip 8 | import jaconv 9 | import urllib.request 10 | from unicodedata import normalize 11 | 12 | urllib.request.urlretrieve( 13 | 'http://ftp.edrdg.org/pub/Nihongo/edict2.gz', 'edict2.gz') 14 | 15 | with gzip.open('edict2.gz', 'rt', encoding='EUC-JP') as file: 16 | lines = file.read().splitlines() 17 | 18 | l2 = [] 19 | 20 | for i in range(len(lines)): 21 | # エントリが全角スペースで始まる場合はスキップ 22 | # 名詞でなければスキップ 23 | if lines[i][0] == ' ' or \ 24 | ' /(n' not in lines[i]: 25 | continue 26 | 27 | entry = lines[i].split(' /(n')[0] 28 | 29 | # カタカナ語には読みが付与されていないので、表記から読みを作る 30 | # 表記が複数ある場合は、最初のものだけを採用する 31 | # ブラックコーヒー;ブラック・コーヒー / 32 | if ' [' not in entry: 33 | hyouki = entry.split(';')[0] 34 | yomi = hyouki 35 | # 表記または読みが複数ある場合は、それぞれ最初のものだけを採用する 36 | # 暗唱;暗誦;諳誦 [あんしょう;あんじゅ(暗誦,諳誦)(ok)] / 37 | else: 38 | entry = entry.split(' [') 39 | yomi = entry[1].split(']')[0].split(';')[0] 40 | hyouki = entry[0].split(';')[0] 41 | 42 | hyouki = hyouki.split('(')[0] 43 | yomi = yomi.split('(')[0] 44 | yomi = yomi.translate(str.maketrans('', '', ' =・')) 45 | 46 | # 読みが2文字以下の場合はスキップ 47 | # 表記が1文字以下の場合はスキップ 48 | # 表記が26文字以上の場合はスキップ。候補ウィンドウが大きくなりすぎる 49 | if len(yomi) < 3 or \ 50 | len(hyouki) < 2 or \ 51 | len(hyouki) > 25: 52 | continue 53 | 54 | # 読みのカタカナをひらがなに変換 55 | yomi = jaconv.kata2hira(yomi) 56 | yomi = yomi.translate(str.maketrans('ゐゑ', 'いえ')) 57 | 58 | # 表記の全角英数を半角に変換 59 | hyouki = normalize('NFKC', hyouki) 60 | 61 | entry = [yomi, '0000', '0000', '8000', hyouki] 62 | l2.append('\t'.join(entry) + '\n') 63 | 64 | lines = sorted(set(l2)) 65 | dict_name = 'mozcdic-ut-edict2.txt' 66 | 67 | with open(dict_name, 'w', encoding='utf-8') as file: 68 | file.writelines(lines) 69 | -------------------------------------------------------------------------------- /src/edict2/make.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Author: UTUMI Hirosi (utuhiro78 at yahoo dot co dot jp) 4 | # License: Apache License, Version 2.0 5 | 6 | python convert_edict2.py 7 | python ../common/adjust_entries.py mozcdic-ut-edict2.txt 8 | 9 | bzip2 -k mozcdic-ut-*.txt 10 | mv mozcdic-ut-*.txt* ../merge/ 11 | -------------------------------------------------------------------------------- /src/jawiki/convert_jawiki.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # coding: utf-8 3 | 4 | # Author: UTUMI Hirosi (utuhiro78 at yahoo dot co dot jp) 5 | # License: Apache License, Version 2.0 6 | 7 | import bz2 8 | import html 9 | import jaconv 10 | import re 11 | import subprocess 12 | from multiprocessing import Pool, cpu_count 13 | from unicodedata import normalize 14 | 15 | 16 | def main(): 17 | subprocess.run( 18 | ['wget', '-N', 'https://dumps.wikimedia.org/jawiki/latest/' + 19 | 'jawiki-latest-pages-articles-multistream.xml.bz2']) 20 | 21 | article_fragment = '' 22 | cache_size = 200 * 1024 * 1024 23 | core_num = cpu_count() 24 | dict_ut = [] 25 | 26 | with bz2.open( 27 | 'jawiki-latest-pages-articles-multistream.xml.bz2', 'rt', 28 | encoding='utf-8') as reader: 29 | while True: 30 | articles = reader.read(cache_size) 31 | 32 | # 最後まで読み切ったら終了 33 | if articles == '': 34 | break 35 | 36 | articles = articles.split(' ') 37 | articles[0] = article_fragment + articles[0] 38 | 39 | # 記事の断片を別名で保存 40 | article_fragment = articles[-1] 41 | 42 | # 記事の断片をカット 43 | articles = articles[0:-1] 44 | 45 | with Pool(processes=core_num) as p: 46 | dict_ut += p.map(convert_jawiki, articles) 47 | 48 | l2 = [] 49 | 50 | for entry in dict_ut: 51 | if entry is None: 52 | continue 53 | 54 | entry = [entry[0], '0000', '0000', '8000', entry[1]] 55 | l2.append('\t'.join(entry) + '\n') 56 | 57 | # 重複する行を削除 58 | dict_ut = sorted(list(set(l2))) 59 | 60 | dict_name = 'mozcdic-ut-jawiki.txt' 61 | 62 | with open(dict_name, 'w', encoding='utf-8') as file: 63 | file.writelines(dict_ut) 64 | 65 | 66 | def convert_jawiki(article): 67 | # Wikipediaの記事の例 68 | # あいの里公園駅 69 | # '''あいの里公園駅'''(あいのさとこうえんえき)は、 70 | 71 | article = article.split('') 72 | 73 | if len(article) < 2: 74 | return 75 | 76 | # 表記を取得 77 | hyouki = article[0].split('')[1] 78 | 79 | # 記事を取得 80 | article = article[1] 81 | 82 | # 表記の全角英数を半角に変換 83 | hyouki = normalize('NFKC', hyouki) 84 | 85 | # 表記を「 (」で切る 86 | # 田中瞳 (アナウンサー) 87 | hyouki = hyouki.split(' (')[0] 88 | 89 | # 表記のHTML特殊文字を変換 90 | hyouki = html.unescape(hyouki) 91 | 92 | # 表記にスペースがある場合はスキップ 93 | # 記事のスペースを削除して「表記(読み」を検索するので、残してもマッチしない 94 | # 表記が26文字以上の場合はスキップ。候補ウィンドウが大きくなりすぎる 95 | # 内部用のページをスキップ 96 | if ' ' in hyouki or \ 97 | len(hyouki) > 25 or \ 98 | hyouki.startswith('ファイル:') or \ 99 | hyouki.startswith('Wikipedia:') or \ 100 | hyouki.startswith('Template:') or \ 101 | hyouki.startswith('Portal:') or \ 102 | hyouki.startswith('Help:') or \ 103 | hyouki.startswith('Category:') or \ 104 | hyouki.startswith('プロジェクト:'): 105 | return 106 | 107 | # 読みにならない文字「!?」などを削除した hyouki2 を作る 108 | hyouki2 = hyouki.translate(str.maketrans('', '', ',.!?-+*=:/・、。×★☆')) 109 | 110 | # hyouki2 が1文字の場合はスキップ 111 | if len(hyouki2) < 2: 112 | return 113 | 114 | # hyouki2 がひらがなとカタカナだけの場合は、読みを hyouki2 から作る 115 | # さいたまスーパーアリーナ 116 | if hyouki2 == ''.join(re.findall('[ぁ-ゔァ-ヴー]', hyouki2)): 117 | yomi = jaconv.kata2hira(hyouki2) 118 | yomi = yomi.translate(str.maketrans('ゐゑ', 'いえ')) 119 | 120 | dict_ut = [yomi, hyouki] 121 | return (dict_ut) 122 | 123 | # テンプレート末尾と記事本文の間に改行を入れる 124 | lines = article.replace("}}'''", "}}\n'''") 125 | lines = lines.splitlines() 126 | 127 | l2 = [] 128 | 129 | # 記事の量を減らす 130 | for line in lines: 131 | # 収録語は「'''盛夏'''(せいか)」が最小なので、12文字以下の行はスキップ 132 | # テンプレートをスキップ 133 | if len(line) < 13 or \ 134 | line[0] == '{' or \ 135 | line[0] == '}' or \ 136 | line[0] == '|' or \ 137 | line[0] == '*': 138 | continue 139 | 140 | l2.append(line) 141 | 142 | # 記事が100行になったらbreak 143 | if len(l2) == 100: 144 | break 145 | 146 | lines = l2 147 | 148 | # 記事から読みを作る 149 | for line in lines: 150 | # 全角英数を半角に変換 151 | line = normalize('NFKC', line) 152 | 153 | # HTML特殊文字を変換 154 | line = html.unescape(line) 155 | 156 | # '{{.+?}}' を削除。'.+' に '?' を付けると最短一致 157 | # '''皆藤 愛子'''{{efn2|一部のプロフィールが「皆'''籐''' 158 | # (たけかんむり)」となっている}}(かいとう あいこ、 159 | if '{{' in line: 160 | line = re.sub(r'{{.+?}}', '', line) 161 | 162 | # '<ref.+?<\/ref>' を削除 163 | # '''井上 陽水'''(いのうえ ようすい<ref name="FMPJ"> 164 | # {{Cite web|和書|title=アーティスト・アーカイヴ 井上陽水| 165 | # url=https://www.kiokunokiroku.jp/}}</ref>、 166 | line = re.sub(r'<ref.+?<\/ref>', '', line) 167 | 168 | # '<ref\ name.+?\/>' を削除 169 | # <ref name="雑誌1" /> 170 | line = re.sub(r'<ref\ name.+?\/>', '', line) 171 | 172 | # 『』などを削除 173 | # 『不適切にもほどがある!』(ふてきせつにもほどがある)は、 174 | line = line.translate(str.maketrans('', '', ' "\'「」『』')) 175 | 176 | # 「表記(読み」から読みを取得 177 | if hyouki + '(' in line: 178 | yomi = line.split(hyouki + '(')[1] 179 | else: 180 | continue 181 | 182 | # 読みを「)」で切る 183 | yomi = yomi.split(')')[0] 184 | 185 | # 読みを「[[」で切る 186 | # ないとうときひろ[[1963年]] 187 | yomi = yomi.split('[[')[0] 188 | 189 | # 読みを「、」で切る 190 | # かいとうあいこ、[[1984年]] 191 | yomi = yomi.split('、')[0] 192 | 193 | # 読みを「/」で切る 194 | # ひみこ/ひめこ 195 | yomi = yomi.split('/')[0] 196 | 197 | # 読みにならない文字「!?」などを削除 198 | yomi = yomi.translate(str.maketrans('', '', ',.!?-+*=:・、。×★☆')) 199 | 200 | # 読みが2文字以下の場合はスキップ 201 | if len(yomi) < 3: 202 | continue 203 | 204 | # 読みが「ー」で始まる場合はスキップ 205 | # 読みが全てカタカナの場合はスキップ 206 | # ミュージシャン一覧(グループ) 207 | if yomi[0] == 'ー' or \ 208 | yomi == ''.join(re.findall('[ァ-ヴー]', yomi)): 209 | continue 210 | 211 | # 読みのカタカナをひらがなに変換 212 | yomi = jaconv.kata2hira(yomi) 213 | yomi = yomi.translate(str.maketrans('ゐゑ', 'いえ')) 214 | 215 | # 読みがひらがな以外を含む場合はスキップ 216 | if yomi != ''.join(re.findall('[ぁ-ゔー]', yomi)): 217 | continue 218 | 219 | dict_ut = [yomi, hyouki] 220 | return (dict_ut) 221 | 222 | 223 | if __name__ == '__main__': 224 | main() 225 | -------------------------------------------------------------------------------- /src/jawiki/make.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Author: UTUMI Hirosi (utuhiro78 at yahoo dot co dot jp) 4 | # License: Apache License, Version 2.0 5 | 6 | python convert_jawiki.py 7 | python ../common/adjust_entries.py mozcdic-ut-jawiki.txt 8 | python ../common/filter_unsuitable_words.py mozcdic-ut-jawiki.txt 9 | 10 | bzip2 -k mozcdic-ut-*.txt 11 | mv mozcdic-ut-*.txt* ../merge/ 12 | -------------------------------------------------------------------------------- /src/merge/make.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Author: UTUMI Hirosi (utuhiro78 at yahoo dot co dot jp) 4 | # License: Apache License, Version 2.0 5 | 6 | #alt_cannadic="true" 7 | #edict2="true" 8 | jawiki="true" 9 | #neologd="true" 10 | personal_names="true" 11 | place_names="true" 12 | #skk_jisyo="true" 13 | sudachidict="true" 14 | 15 | #generate_latest="true" 16 | 17 | rm -rf mozcdic-ut* 18 | 19 | if [[ $alt_cannadic = "true" ]] && [[ $generate_latest != "true" ]]; then 20 | git clone --depth 1 https://github.com/utuhiro78/mozcdic-ut-alt-cannadic.git 21 | fi 22 | 23 | if [[ $alt_cannadic = "true" ]] && [[ $generate_latest = "true" ]]; then 24 | cd ../alt-cannadic/ 25 | sh make.sh 26 | cd - 27 | fi 28 | 29 | if [[ $edict2 = "true" ]] && [[ $generate_latest != "true" ]]; then 30 | git clone --depth 1 https://github.com/utuhiro78/mozcdic-ut-edict2.git 31 | fi 32 | 33 | if [[ $edict2 = "true" ]] && [[ $generate_latest = "true" ]]; then 34 | cd ../edict2/ 35 | sh make.sh 36 | cd - 37 | fi 38 | 39 | if [[ $jawiki = "true" ]] && [[ $generate_latest != "true" ]]; then 40 | git clone --depth 1 https://github.com/utuhiro78/mozcdic-ut-jawiki.git 41 | fi 42 | 43 | if [[ $jawiki = "true" ]] && [[ $generate_latest = "true" ]]; then 44 | cd ../jawiki/ 45 | sh make.sh 46 | cd - 47 | fi 48 | 49 | if [[ $neologd = "true" ]] && [[ $generate_latest != "true" ]]; then 50 | git clone --depth 1 https://github.com/utuhiro78/mozcdic-ut-neologd.git 51 | fi 52 | 53 | if [[ $neologd = "true" ]] && [[ $generate_latest = "true" ]]; then 54 | cd ../neologd/ 55 | sh make.sh 56 | cd - 57 | fi 58 | 59 | if [[ $personal_names = "true" ]]; then 60 | git clone --depth 1 https://github.com/utuhiro78/mozcdic-ut-personal-names.git 61 | fi 62 | 63 | if [[ $place_names = "true" ]] && [[ $generate_latest != "true" ]]; then 64 | git clone --depth 1 https://github.com/utuhiro78/mozcdic-ut-place-names.git 65 | fi 66 | 67 | if [[ $place_names = "true" ]] && [[ $generate_latest = "true" ]]; then 68 | cd ../place-names/ 69 | sh make.sh 70 | cd - 71 | fi 72 | 73 | if [[ $skk_jisyo = "true" ]] && [[ $generate_latest != "true" ]]; then 74 | git clone --depth 1 https://github.com/utuhiro78/mozcdic-ut-skk-jisyo.git 75 | fi 76 | 77 | if [[ $skk_jisyo = "true" ]] && [[ $generate_latest = "true" ]]; then 78 | cd ../skk-jisyo/ 79 | sh make.sh 80 | cd - 81 | fi 82 | 83 | if [[ $sudachidict = "true" ]] && [[ $generate_latest != "true" ]]; then 84 | git clone --depth 1 https://github.com/utuhiro78/mozcdic-ut-sudachidict.git 85 | fi 86 | 87 | if [[ $sudachidict = "true" ]] && [[ $generate_latest = "true" ]]; then 88 | cd ../sudachidict/ 89 | sh make.sh 90 | cd - 91 | fi 92 | 93 | if [[ $generate_latest != "true" ]]; then 94 | bzip2 -dfk mozcdic-ut-*/mozcdic-ut-*.txt.bz2 95 | mv mozcdic-ut-*/mozcdic-ut-*.txt . 96 | fi 97 | 98 | cat mozcdic-ut-*.txt > mozcdic-ut.txt 99 | 100 | # IDを更新、重複エントリを削除、コストを調整 101 | python merge_dictionaries.py mozcdic-ut.txt 102 | -------------------------------------------------------------------------------- /src/merge/merge_dictionaries.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # coding: utf-8 3 | 4 | # Author: UTUMI Hirosi (utuhiro78 at yahoo dot co dot jp) 5 | # License: Apache License, Version 2.0 6 | 7 | import bz2 8 | import html 9 | import os 10 | import subprocess 11 | import sys 12 | import urllib.request 13 | from unicodedata import normalize 14 | from zipfile import ZipFile 15 | 16 | 17 | def main(): 18 | if len(sys.argv) == 1: 19 | print('No file specified.') 20 | sys.exit() 21 | 22 | file_ut = sys.argv[1] 23 | ut_dic = get_ut_dic(file_ut) 24 | 25 | mozc_dic = get_mozc_dic() 26 | id_mozc = mozc_dic[-1] 27 | mozc_dic = ut_dic + mozc_dic[:-1] 28 | 29 | ut_dic = remove_duplicates(mozc_dic) 30 | ut_dic += count_word_hits() 31 | 32 | ut_dic.append(id_mozc) 33 | ut_dic = apply_word_hits(ut_dic) 34 | 35 | with open(file_ut, 'w', encoding='utf-8') as file: 36 | file.writelines(ut_dic) 37 | 38 | 39 | def get_ut_dic(file_ut): 40 | with open(file_ut, 'r', encoding='utf-8') as file: 41 | ut_dic = file.read().splitlines() 42 | 43 | # UT辞書のIDを 'id' にする 44 | for i in range(len(ut_dic)): 45 | entry = ut_dic[i].split('\t') 46 | entry[1] = entry[2] = 'id' 47 | ut_dic[i] = '\t'.join(entry) 48 | 49 | return (ut_dic) 50 | 51 | 52 | def get_mozc_dic(): 53 | # Mozc の最終コミット日を取得 54 | url = 'https://github.com/google/mozc/commits/master/' 55 | 56 | with urllib.request.urlopen(url) as response: 57 | date = response.read().decode() 58 | date = date.split('"committedDate":"')[1] 59 | date = date[:10] 60 | date = date.replace('-', '') 61 | 62 | # Mozc のアーカイブが古い場合は取得 63 | url = 'https://github.com/google/mozc/archive/refs/heads/master.zip' 64 | 65 | if os.path.exists(f'mozc-{date}.zip') is False: 66 | urllib.request.urlretrieve( 67 | url, f'mozc-{date}.zip') 68 | 69 | with ZipFile(f'mozc-{date}.zip') as zip_ref: 70 | # 一般名詞のIDを取得 71 | with zip_ref.open( 72 | 'mozc-master/src/data/dictionary_oss/id.def') as file: 73 | id_mozc = file.read().decode() 74 | id_mozc = id_mozc.split(' 名詞,一般,')[0].split('\n')[-1] 75 | 76 | # Mozc 公式辞書を取得 77 | mozc_dic = [] 78 | 79 | for i in range(10): 80 | with zip_ref.open( 81 | 'mozc-master/src/data/dictionary_oss/' + 82 | f'dictionary0{i}.txt') as file: 83 | mozc_dic += file.read().decode().splitlines() 84 | 85 | mozc_dic.append(id_mozc) 86 | return (mozc_dic) 87 | 88 | 89 | def remove_duplicates(mozc_dic): 90 | for i in range(len(mozc_dic)): 91 | # 並び順を [読み, 表記, ID, ID, コスト] にする 92 | entry = mozc_dic[i].split('\t') 93 | entry.insert(1, entry[4]) 94 | mozc_dic[i] = entry[:5] 95 | 96 | mozc_dic.sort() 97 | ut_dic = [] 98 | 99 | for i in range(len(mozc_dic)): 100 | # あいおい\t相生\t1851\t433\t7582 101 | # あいおい\t相生\tid\tid\t8200 102 | # あいおい\t相生\tid\tid\t8400 103 | 104 | # Mozc 公式辞書をスキップ 105 | # 公式辞書と [読み, 表記] が重複するUTエントリをスキップ 106 | # UT辞書内で [読み, 表記] が重複するエントリをスキップ 107 | if mozc_dic[i][2] != 'id' or \ 108 | mozc_dic[i][:2] == mozc_dic[i - 1][:2]: 109 | continue 110 | 111 | ut_dic.append(mozc_dic[i]) 112 | 113 | mozc_dic = [] 114 | 115 | for i in range(len(ut_dic)): 116 | # Mozc 辞書の並びに戻す 117 | ut_dic[i].append(ut_dic[i][1]) 118 | ut_dic[i].pop(1) 119 | 120 | return (ut_dic) 121 | 122 | 123 | def count_word_hits(): 124 | subprocess.run( 125 | ['wget', '-N', 'https://dumps.wikimedia.org/jawiki/latest/' + 126 | 'jawiki-latest-pages-articles-multistream-index.txt.bz2'], 127 | check=True) 128 | 129 | with bz2.open( 130 | 'jawiki-latest-pages-articles-multistream-index.txt.bz2', 131 | 'rt', encoding='utf-8') as file: 132 | lines = file.read().splitlines() 133 | 134 | l2 = [] 135 | 136 | for line in lines: 137 | # 1004375:312:数学 138 | line = ':'.join(line.split(':')[2:]) 139 | 140 | # 表記のHTML特殊文字を変換 141 | line = html.unescape(line) 142 | 143 | # 「BEST (三浦大知のアルバム)」を 144 | # 「三浦大知のアルバム)」に変更。 145 | # 「三浦大知」を前方一致検索できるようにする 146 | line = line.split(' (')[-1] 147 | 148 | # 表記が1文字の場合はスキップ 149 | # 表記が26文字以上の場合はスキップ。候補ウィンドウが大きくなりすぎる 150 | # 内部用のページをスキップ 151 | if len(line) < 2 or \ 152 | len(line) > 25 or \ 153 | line.startswith('ファイル:') or \ 154 | line.startswith('Wikipedia:') or \ 155 | line.startswith('Template:') or \ 156 | line.startswith('Portal:') or \ 157 | line.startswith('Help:') or \ 158 | line.startswith('Category:') or \ 159 | line.startswith('プロジェクト:'): 160 | continue 161 | 162 | l2.append(line) 163 | 164 | lines = sorted(list(set(l2))) 165 | l2 = [] 166 | 167 | lines_len = len(lines) 168 | 169 | for i in range(lines_len): 170 | c = 1 171 | 172 | # 前方一致するエントリがなくなるまでカウント 173 | while i + c < lines_len and lines[i + c].startswith(lines[i]): 174 | c = c + 1 175 | 176 | entry = ['jawiki_hits', '0', '0', str(c), lines[i]] 177 | l2.append(entry) 178 | 179 | return (l2) 180 | 181 | 182 | def apply_word_hits(lines): 183 | id_mozc = lines[-1] 184 | lines = lines[:-1] 185 | 186 | for i in range(len(lines)): 187 | # 表記の「~」を「〜」に置き換える 188 | lines[i][4] = lines[i][4].replace('~', '〜') 189 | 190 | # 表記を正規化 191 | lines[i][4] = normalize('NFKC', lines[i][4]) 192 | 193 | # 表記を先頭にする 194 | lines[i].insert(0, lines[i][4]) 195 | lines[i] = lines[i][0:5] 196 | 197 | lines.sort() 198 | l2 = [] 199 | 200 | for line in lines: 201 | line[4] = int(line[4]) 202 | 203 | if line[1] == 'jawiki_hits': 204 | line_jawiki = line 205 | 206 | # jawiki のヒット数を最大 30 にする 207 | if line_jawiki[4] > 30: 208 | line_jawiki[4] = 30 209 | 210 | continue 211 | 212 | # 英数字のみの表記で jawiki に存在しないものはスキップ 213 | # 存在する場合はコストを 9000 台にする 214 | if len(line[0]) == len(line[0].encode()): 215 | if line[0] != line_jawiki[0]: 216 | continue 217 | else: 218 | line[4] = str(9000 + (line[4] // 20)) 219 | # 英数字以外を含む表記で jawiki に存在しないものはコストを 9000 台にする 220 | elif line[0] != line_jawiki[0]: 221 | line[4] = str(9000 + (line[4] // 20)) 222 | # jawiki のヒット数が 1 の表記はコストを 8000 台にする 223 | elif line_jawiki[4] == 1: 224 | line[4] = str(8000 + (line[4] // 20)) 225 | # jawiki のヒット数が 2 以上の表記はコストを 7000 台にする 226 | else: 227 | line[4] = str(8000 - (line_jawiki[4] * 10)) 228 | 229 | # Mozc の並びに戻す 230 | line.append(line[0]) 231 | line = line[1:] 232 | # IDを更新 233 | line[1] = line[2] = id_mozc 234 | l2.append('\t'.join(line) + '\n') 235 | 236 | l2.sort() 237 | return (l2) 238 | 239 | 240 | if __name__ == '__main__': 241 | main() 242 | -------------------------------------------------------------------------------- /src/neologd/convert_neologd.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # coding: utf-8 3 | 4 | # Author: UTUMI Hirosi (utuhiro78 at yahoo dot co dot jp) 5 | # License: Apache License, Version 2.0 6 | 7 | import jaconv 8 | import lzma 9 | import re 10 | import subprocess 11 | import urllib.request 12 | 13 | url = 'https://github.com/neologd/mecab-ipadic-neologd/tree/master/seed' 14 | with urllib.request.urlopen(url) as response: 15 | html = response.read().decode('utf-8') 16 | 17 | neologdver = html.split('mecab-user-dict-seed.')[1] 18 | neologdver = neologdver.split('.csv.xz')[0] 19 | 20 | subprocess.run( 21 | ['wget', '-nc', 'https://github.com/neologd/mecab-ipadic-neologd/' + 22 | f'raw/master/seed/mecab-user-dict-seed.{neologdver}.csv.xz']) 23 | 24 | with lzma.open(f'mecab-user-dict-seed.{neologdver}.csv.xz') as xz_ref: 25 | lines = xz_ref.read().decode() 26 | 27 | lines = lines.splitlines() 28 | 29 | l2 = [] 30 | 31 | for i in range(len(lines)): 32 | # https://taku910.github.io/mecab/dic.html 33 | # 表層形,左文脈ID,右文脈ID,コスト,品詞1,品詞2,品詞3,品詞4,品詞5,品詞6, 34 | # 原形,読み,発音 35 | 36 | # ihi corporation,1292,1292,5893,名詞,固有名詞,組織,*,*,*, 37 | # IHI,アイエイチアイ,アイエイチアイ 38 | 39 | entry = lines[i].split(',') 40 | 41 | # 「読み」を読みにする 42 | yomi = entry[11].replace('=', '') 43 | yomi = yomi.replace('・', '') 44 | 45 | # 「原形」を表記にする 46 | hyouki = entry[10] 47 | 48 | # 読みが2文字以下の場合はスキップ 49 | # 表記が1文字以下の場合はスキップ 50 | # 名詞以外の場合はスキップ 51 | # 地名の場合はスキップ。地名は郵便番号データから作成する 52 | if len(yomi) < 3 or \ 53 | len(hyouki) < 2 or \ 54 | entry[4] != '名詞' or \ 55 | entry[6] == '地域': 56 | continue 57 | 58 | # 読みのカタカナをひらがなに変換 59 | yomi = jaconv.kata2hira(yomi) 60 | yomi = yomi.replace('ゐ', 'い').replace('ゑ', 'え') 61 | 62 | # 読みがひらがな以外を含む場合はスキップ 63 | if yomi != ''.join(re.findall('[ぁ-ゔー]', yomi)): 64 | continue 65 | 66 | cost = int(entry[3]) 67 | 68 | # コストが 0 未満の場合は 0 にする 69 | if cost < 0: 70 | cost = 0 71 | # コストが 10000 以上の場合は 9999 にする 72 | elif cost > 9999: 73 | cost = 9999 74 | 75 | # 全体のコストを 8000 台にする 76 | cost = 8000 + (cost // 10) 77 | 78 | # 読み, 表記, コスト の順に並べる 79 | entry = [yomi, hyouki, str(cost)] 80 | l2.append('\t'.join(entry)) 81 | 82 | lines = sorted(l2) 83 | l2 = [] 84 | 85 | for i in range(len(lines)): 86 | entry1 = lines[i].split('\t') 87 | entry2 = lines[i - 1].split('\t') 88 | 89 | # [読み, 表記] が重複するエントリをスキップ 90 | if entry1[0:2] == entry2[0:2]: 91 | continue 92 | 93 | # Mozc 辞書の並びに変更 94 | entry1 = [entry1[0], '0000', '0000', entry1[2], entry1[1]] 95 | l2.append('\t'.join(entry1) + '\n') 96 | 97 | lines = l2 98 | dict_name = 'mozcdic-ut-neologd.txt' 99 | 100 | with open(dict_name, 'w', encoding='utf-8') as file: 101 | file.writelines(lines) 102 | -------------------------------------------------------------------------------- /src/neologd/make.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Author: UTUMI Hirosi (utuhiro78 at yahoo dot co dot jp) 4 | # License: Apache License, Version 2.0 5 | 6 | python convert_neologd.py 7 | python ../common/adjust_entries.py mozcdic-ut-neologd.txt 8 | python ../common/filter_unsuitable_words.py mozcdic-ut-neologd.txt 9 | 10 | bzip2 -k mozcdic-ut-*.txt 11 | mv mozcdic-ut-*.txt* ../merge/ 12 | -------------------------------------------------------------------------------- /src/place-names/generate_place_names.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # coding: utf-8 3 | 4 | # Author: UTUMI Hirosi (utuhiro78 at yahoo dot co dot jp) 5 | # License: Apache License, Version 2.0 6 | 7 | import jaconv 8 | import re 9 | import urllib.request 10 | from unicodedata import normalize 11 | from zipfile import ZipFile 12 | 13 | 14 | def fix_ken_all(): 15 | urllib.request.urlretrieve( 16 | 'https://www.post.japanpost.jp/zipcode/dl/kogaki/zip/ken_all.zip', 17 | 'ken_all.zip') 18 | 19 | with ZipFile('ken_all.zip') as zip_ref: 20 | with zip_ref.open('KEN_ALL.CSV') as file: 21 | lines = file.read().decode('SJIS') 22 | 23 | lines = normalize('NFKC', lines) 24 | lines = lines.splitlines() 25 | l2 = [] 26 | 27 | for i in range(len(lines)): 28 | # 01101,"064 ","0640820", 29 | # "ホッカイドウ","サッポロシチュウオウク","オオドオリニシ(20-28チョウメ)", 30 | # "北海道","札幌市中央区","大通西(20〜28丁目)",1,0,1,0,0,0 31 | 32 | entry = lines[i].split(",") 33 | 34 | # 町域に次の文字列が含まれていればスキップ 35 | str_ng = [ 36 | '○', '〔', '〜', '、', '「', 'を除く', '以外', 'その他', 37 | '地割', '不明', '以下に掲載がない場合'] 38 | 39 | # 町域の () 内に除外文字列があるか確認 40 | if '(' in entry[8]: 41 | kakko = ''.join(entry[8].split('(')[1:]) 42 | 43 | for c in range(len(str_ng)): 44 | if str_ng[c] in kakko: 45 | # マッチする場合は町域の読みと表記の「(」以降を削除 46 | entry[5] = entry[5].split('(')[0] 47 | entry[8] = entry[8].split('(')[0] 48 | break 49 | 50 | # 町域の () 外に除外文字列があるか確認 51 | for c in range(len(str_ng)): 52 | if str_ng[c] in entry[8]: 53 | # マッチする場合は町域の読みと表記を空にする 54 | entry[5] = '' 55 | entry[8] = '' 56 | break 57 | 58 | # 町域の読みの () を取る 59 | # 'ハラ(ゴクラクザカ)','原(極楽坂)' を 60 | # 'ハラゴクラクザカ','原(極楽坂)' にする。 61 | # 表記の () は取らない。「原極楽坂」だと読みにくいので 62 | entry[5] = entry[5].replace('(', '').replace(')', '') 63 | 64 | l2.append(','.join(entry)) 65 | 66 | return (l2) 67 | 68 | 69 | def generate_place_names(lines): 70 | # 数字の1から9までの読みを作成 71 | d1 = ['', 'いち', 'に', 'さん', 'よん', 'ご', 'ろく', 'なな', 'はち', 'きゅう'] 72 | 73 | # 数字の10から59までの読みを作成 74 | # サッポロシヒガシクキタ51ジョウヒガシ 75 | d2 = ['じゅう', 'にじゅう', 'さんじゅう', 'よんじゅう', 'ごじゅう'] 76 | 77 | yomi_num = [] 78 | 79 | for p in d2: 80 | for q in d1: 81 | yomi_num.append(p + q) 82 | 83 | yomi_num = d1 + yomi_num 84 | l2 = [] 85 | 86 | for i in range(len(lines)): 87 | # 01101,"064 ","0640820", 88 | # "ホッカイドウ","サッポロシチュウオウク","オオドオリニシ(20-28チョウメ)", 89 | # "北海道","札幌市中央区","大通西(20〜28丁目)",1,0,1,0,0,0 90 | 91 | entry = lines[i].replace('"', '').split(",") 92 | 93 | # 読みをひらがなに変換 94 | entry[3] = jaconv.kata2hira(entry[3]) 95 | entry[4] = jaconv.kata2hira(entry[4]) 96 | entry[5] = jaconv.kata2hira(entry[5]) 97 | 98 | # 読みの「・」を取る 99 | entry[5] = entry[5].replace('・', '') 100 | 101 | # 市を出力 102 | mozc_ent = [entry[4], '0000', '0000', '9000', entry[7]] 103 | l2.append('\t'.join(mozc_ent) + '\n') 104 | 105 | # 町の読みが半角数字を含むか確認 106 | c = ''.join(filter(str.isdigit, entry[5])) 107 | 108 | # 町の読みの半角数字が60未満の場合はひらがなに変換 109 | # さっぽろしひがしくきた51じょうひがし 110 | if c != '' and 0 < int(c) < 60: 111 | entry[5] = entry[5].replace(c, yomi_num[int(c)]) 112 | 113 | # 町の読みがひらがな以外を含む場合はスキップ 114 | # OAPたわー 115 | # 町の表記が空の場合はスキップ 116 | if entry[5] != ''.join(re.findall('[ぁ-ゔー]', entry[5])) or \ 117 | entry[8] == '': 118 | continue 119 | 120 | # 町を出力 121 | mozc_ent = [entry[5], '0000', '0000', '9000', entry[8]] 122 | l2.append('\t'.join(mozc_ent) + '\n') 123 | 124 | # 市+町を出力 125 | mozc_ent = [ 126 | entry[4] + entry[5], '0000', '0000', '9000', entry[7] + entry[8]] 127 | l2.append('\t'.join(mozc_ent) + '\n') 128 | 129 | lines = sorted(set(l2)) 130 | dict_name = 'mozcdic-ut-place-names.txt' 131 | 132 | with open(dict_name, 'w', encoding='utf-8') as file: 133 | file.writelines(lines) 134 | 135 | 136 | def main(): 137 | lines = fix_ken_all() 138 | generate_place_names(lines) 139 | 140 | 141 | if __name__ == '__main__': 142 | main() 143 | -------------------------------------------------------------------------------- /src/place-names/make.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Author: UTUMI Hirosi (utuhiro78 at yahoo dot co dot jp) 4 | # License: Apache License, Version 2.0 5 | 6 | python generate_place_names.py 7 | 8 | bzip2 -k mozcdic-ut-*.txt 9 | mv mozcdic-ut-*.txt* ../merge/ 10 | -------------------------------------------------------------------------------- /src/skk-jisyo/convert_skk_jisyo.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # coding: utf-8 3 | 4 | # Author: UTUMI Hirosi (utuhiro78 at yahoo dot co dot jp) 5 | # License: Apache License, Version 2.0 6 | 7 | import urllib.request 8 | from unicodedata import normalize 9 | 10 | urllib.request.urlretrieve( 11 | 'https://github.com/skk-dev/dict/raw/refs/heads/master/SKK-JISYO.L', 12 | 'SKK-JISYO.L') 13 | 14 | with open('SKK-JISYO.L', 'r', encoding='EUC-JP') as file: 15 | lines = file.read().splitlines() 16 | 17 | l2 = [] 18 | 19 | for i in range(len(lines)): 20 | # わりふr /割り振/割振/ 21 | # いずみ /泉/和泉;地名,大阪/出水;地名,鹿児島/ 22 | entry = lines[i].split(' /') 23 | yomi = entry[0].replace('う゛', 'ゔ') 24 | 25 | # 読みが2文字以下の場合はスキップ 26 | # 読みが英数字を含む場合はスキップ 27 | if len(yomi) < 3 or \ 28 | len(yomi.encode('utf-8')) != len(yomi) * 3: 29 | continue 30 | 31 | hyouki = entry[1].split('/') 32 | 33 | for c in range(len(hyouki)): 34 | hyouki[c] = hyouki[c].split(';')[0] 35 | 36 | # 表記の全角英数を半角に変換 37 | hyouki[c] = normalize('NFKC', hyouki[c]) 38 | 39 | # 表記が1文字の場合はスキップ 40 | # 表記が英数字のみの場合はスキップ 41 | if len(hyouki[c]) < 2 or \ 42 | len(hyouki[c].encode('utf-8')) == len(hyouki[c]): 43 | continue 44 | 45 | # 1つ前の表記と同じ場合はスキップ 46 | # ICカード/ICカード/ 47 | if hyouki[c] == hyouki[c - 1]: 48 | continue 49 | 50 | # 2個目以降の表記のコストを上げる 51 | cost = 8000 + (10 * c) 52 | 53 | entry = [yomi, '0000', '0000', str(cost), hyouki[c]] 54 | l2.append('\t'.join(entry) + '\n') 55 | 56 | lines = sorted(set(l2)) 57 | dict_name = 'mozcdic-ut-skk-jisyo.txt' 58 | 59 | with open(dict_name, 'w', encoding='utf-8') as file: 60 | file.writelines(lines) 61 | -------------------------------------------------------------------------------- /src/skk-jisyo/make.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Author: UTUMI Hirosi (utuhiro78 at yahoo dot co dot jp) 4 | # License: Apache License, Version 2.0 5 | 6 | python convert_skk_jisyo.py 7 | 8 | bzip2 -k mozcdic-ut-*.txt 9 | mv mozcdic-ut-*.txt* ../merge/ 10 | -------------------------------------------------------------------------------- /src/sudachidict/convert_sudachidict.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # coding: utf-8 3 | 4 | # Author: UTUMI Hirosi (utuhiro78 at yahoo dot co dot jp) 5 | # License: Apache License, Version 2.0 6 | 7 | import jaconv 8 | import os 9 | import re 10 | import urllib.request 11 | from zipfile import ZipFile 12 | 13 | 14 | def main(): 15 | lines = get_files() 16 | lines = generate_dict(lines) 17 | lines = remove_duplicates(lines) 18 | 19 | with open('mozcdic-ut-sudachidict.txt', 'w', encoding='utf-8') as file: 20 | file.writelines(lines) 21 | 22 | 23 | def get_files(): 24 | url = 'http://sudachi.s3-website-ap-northeast-1.amazonaws.com/' + \ 25 | 'sudachidict-raw/' 26 | 27 | with urllib.request.urlopen(url) as response: 28 | date = response.read().decode() 29 | date = date.split('/core_lex.zip')[0].split("'")[-1] 30 | 31 | if os.path.exists(f'small_lex_{date}.zip') is False: 32 | urllib.request.urlretrieve( 33 | f'{url}{date}/small_lex.zip', f'small_lex_{date}.zip') 34 | 35 | if os.path.exists(f'core_lex_{date}.zip') is False: 36 | urllib.request.urlretrieve( 37 | f'{url}{date}/core_lex.zip', f'core_lex_{date}.zip') 38 | 39 | if os.path.exists(f'notcore_lex_{date}.zip') is False: 40 | urllib.request.urlretrieve( 41 | f'{url}{date}/notcore_lex.zip', f'notcore_lex_{date}.zip') 42 | 43 | with ZipFile(f'small_lex_{date}.zip') as zip_ref: 44 | with zip_ref.open('small_lex.csv') as file: 45 | lines = file.read().decode() 46 | 47 | with ZipFile(f'core_lex_{date}.zip') as zip_ref: 48 | with zip_ref.open('core_lex.csv') as file: 49 | lines += file.read().decode() 50 | 51 | with ZipFile(f'notcore_lex_{date}.zip') as zip_ref: 52 | with zip_ref.open('notcore_lex.csv') as file: 53 | lines += file.read().decode() 54 | 55 | lines = lines.splitlines() 56 | return (lines) 57 | 58 | 59 | def generate_dict(lines): 60 | l2 = [] 61 | 62 | for i in range(len(lines)): 63 | # https://github.com/WorksApplications/Sudachi/blob/develop/docs/user_dict.md 64 | # 見出し (TRIE 用),左連接ID,右連接ID,コスト,\ 65 | # 見出し (解析結果表示用),品詞1,品詞2,品詞3,品詞4,品詞 (活用型),品詞 (活用形), 66 | # 読み,正規化表記,辞書形ID,分割タイプ,A単位分割情報,B単位分割情報,※未使用 67 | 68 | # ihi corporation,4785,4785,5000, 69 | # ihi corporation,名詞,固有名詞,一般,*,*,*, 70 | # アイエイチアイ,IHI,*,A,*,*,*,* 71 | 72 | entry = lines[i].split(',') 73 | 74 | # 「読み」を読みにする 75 | yomi = entry[11].replace('=', '') 76 | yomi = yomi.replace('・', '') 77 | 78 | # 「正規化表記」を表記にする 79 | hyouki = entry[12] 80 | 81 | # 読みが2文字以下の場合はスキップ 82 | # 表記が1文字以下の場合はスキップ 83 | # 名詞以外の場合はスキップ 84 | # 地名の場合はスキップ。地名は郵便番号データから作成する 85 | if len(yomi) < 3 or \ 86 | len(hyouki) < 2 or \ 87 | entry[5] != '名詞' or \ 88 | entry[7] == '地名': 89 | continue 90 | 91 | # 読みのカタカナをひらがなに変換 92 | yomi = jaconv.kata2hira(yomi) 93 | yomi = yomi.replace('ゐ', 'い').replace('ゑ', 'え') 94 | 95 | # 読みがひらがな以外を含む場合はスキップ 96 | if yomi != ''.join(re.findall('[ぁ-ゔー]', yomi)): 97 | continue 98 | 99 | cost = int(entry[3]) 100 | 101 | # コストが 0 未満の場合は 0 にする 102 | if cost < 0: 103 | cost = 0 104 | # コストが 10000 以上の場合は 9999 にする 105 | elif cost > 9999: 106 | cost = 9999 107 | 108 | # 全体のコストを 8000 台にする 109 | cost = 8000 + (cost // 10) 110 | 111 | # 読み, 表記, コスト の順に並べる 112 | entry = [yomi, hyouki, str(cost)] 113 | l2.append('\t'.join(entry)) 114 | 115 | return (l2) 116 | 117 | 118 | def remove_duplicates(lines): 119 | lines.sort() 120 | l2 = [] 121 | 122 | for i in range(len(lines)): 123 | entry1 = lines[i].split('\t') 124 | entry2 = lines[i - 1].split('\t') 125 | 126 | # [読み, 表記] が重複するエントリをスキップ 127 | if entry1[0:2] == entry2[0:2]: 128 | continue 129 | 130 | # Mozc 辞書の並びに変更 131 | entry1 = [entry1[0], '0000', '0000', entry1[2], entry1[1]] 132 | l2.append('\t'.join(entry1) + '\n') 133 | 134 | return (l2) 135 | 136 | 137 | if __name__ == '__main__': 138 | main() 139 | -------------------------------------------------------------------------------- /src/sudachidict/make.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Author: UTUMI Hirosi (utuhiro78 at yahoo dot co dot jp) 4 | # License: Apache License, Version 2.0 5 | 6 | python convert_sudachidict.py 7 | python ../common/adjust_entries.py mozcdic-ut-sudachidict.txt 8 | python ../common/filter_unsuitable_words.py mozcdic-ut-sudachidict.txt 9 | 10 | bzip2 -k mozcdic-ut-*.txt 11 | mv mozcdic-ut-*.txt* ../merge/ 12 | --------------------------------------------------------------------------------