私が作った/改造した、ジャンクな物 - 日本語入力関連

Unix系(FreeBSD/NetBSD/OpenBSD, GNU/Linux, Solaris, et al.)で 動作する日本語入力関連のガラクタです。 ドキュメントを書くのが面倒だとか、 使う場面が凄く限定されているとか、 使う人を選ぶだとか、 そういう意味のガラクタであって、 バグがあるとか動作不良起こすとか、 そういう事ではありません。

だからといって、バグが無い事を保証・補償・保障するわけでもありませんので。

改造品やパッチのライセンスは、原作のライセンスを参照してください。

私が作成したものは、ライセンス形態を指定している物を除き、 BSD-license か GPL か LGPL か、 どれか都合の良いライセンス形態でお使いください。 利用の際はあくまで自己責任で、AS IS。


RSS 2.0あります。

あと、このページは 50KB超あるので、はてなアンテナは、こけます (はてなアンテナは 32KiB までしか対応していないらしい)。


目次



■ uim のステータスポップアップ改造パッチ

原著作者:uim

uim-1.8.8.patch.caret-color.gz(1KiB)(uim-gtk3 で caret-state-indicator の色がおかしいのを修正するパッチ)

uim-1.8.8.patch.time_on_off.bz2(3KiB)(表示/非表示をkinput2風にするパッチと、画面外に表示しない様に修正するパッチ)

uim-1.8.0.patch.time_on_off.bz2(3KiB)(表示/非表示をkinput2風にするパッチと、画面外に表示しない様に修正するパッチ)

uim-1.7.0.patch.time_on_off.bz2(4KiB)(表示/非表示をkinput2風にするパッチと、画面外に表示しない様に修正するパッチ)

uim-1.6.0.patch1(2KiB)(画面外に表示しない様に修正するパッチ)

uim-1.6.0.patch2(1KiB)(uim-dict-gtkにてGTK+-2が原因でメモリリークする問題の対処パッチ)

uim-1.5.4.patch2.bz2(3KiB)(patch2 にデバッグ表示を追加した物)

uim-1.3.1.patch1.bz2(2KiB)(表示/非表示をkinput2風にするパッチと、画面外に表示しない様に修正するパッチ)

uim-1.3.1.patch2.bz2(2KiB)(patch1 に、uim-dict-gtkにてGTK+-2が原因でメモリリークする問題の対処を追加した版)

ウィンドウのフォーカスを変えた後に? ステータスウィンドウを表示しようとすると、 ステータスウィンドウが表示されない場合があります。   原因も対処法も不明です。   取り敢えず、マウスを動かしてみたり、 変換させたい文字入力以外のキー入力をすると、 表示が戻ってくるみたいですが。

uim-1.8.8.patch.caret-color では、 別途、${HOME}/.config/gtk-3.0/gtk.css 辺りに 色の指定を書く必要があります。 例えば、 .popup :not(:active):not(:hover):not(:disabled):not(:selected):not(:focus):not(:indeterminate):not(:checked):not(:backdrop) { background-color: @theme_bg_color; } と書く必要があります。

uim-1.7.0 / uim-1.8.0 用では、 「表示/非表示をkinput2風にするパッチ」は、 同等の機能が本家に取り込まれたにも関わらず、 FreeBSD 8-STABLE/amd64, FreeBSD 10-CURRENT/amd64 では正常に機能しなかった為、 uim-1.3.1用に実装した手法で再実装しています。

uim-1.6.0用では、 「表示/非表示をkinput2風にするパッチ」は、 同等の機能が本家に取り込まれた為削除しました。

uim-1.3.1用のパッチですが、 uim-1.4.1/1.4.2/1.5.0/1.5.3/1.5.4/1.5.5/1.5.6 でも使えました。

kinput2(総本山不明)だと、ステータス表示のポップアップが、 「直接入力時(かな漢字変換無効時)は、常に非表示」、 「かな漢字変換有効時は、常に表示」、 となっています。

オリジナルの uim だと、 ステータス表示のポップアップは、 「(入力モードに関わらず)変化が有った後に指定した秒数だけ表示。 もしくは、(入力モードに関わらず)常に表示」、 となっています。

kinput2 に慣れた身には、uim のステータス表示だと、 現在の入力モードが把握できなくなるか、 ステータス表示が邪魔になるか、 どちらかになってしまい、不便で仕方がありませんでした。

そこで、uim で kinput2 風の表示ができるパッチを作りました。

パッチを当てて再構築して、 uim-candwin-gtk, uim-xim, im-uim.so を新しい物に入れ替えた後、 ~/.uim に

(define bridge-show-input-state? #t)
(define bridge-show-input-state-time-length 0)
(define bridge-show-input-state-time-length-at-off -1)
(define bridge-show-input-state-time-length-at-on 0)

と書いてから uim関連を再起動すると、kinpu2 風になります。

時間指定を 0 にすると常に表示(パッチで追加した機能)、 負にすると常に非表示(パッチで追加した機能)、 正にすると指定した秒数だけ表示(原作版と同じ)、 となっています。

あと、ステータスウィンドウが画面外にはみ出す場合でも、 構わず表示してしまい、見えなくなってしまう事が有ったので、 修正しました。 オリジナルのソースを見ると、 そういう機能を付けた痕跡は有りましたが、 機能していなかったので……。

パッチを見てわかるとおり、なげやりです。 今すぐどうにかしたかったので。


備考: uim-dict-gtk にてメモリリークしているのを発見。 「追加」「編集」「削除」あたりで、 「読み方」「書き方」あたりの widget を表示した時に、 2MiBずつリークしている。

↑ GTK+-2 の問題だった。 しかも、他の GTK+-2 を使ってテキスト入力をするソフト全てで メモリリークする。

解決策1: env GTK_IM_MODULE=xim して xim な input method を使う。

解決策2: GTKネイティブの input module(非 xim な IM)を使う場合は、 helper/dict-main-gtk.c の gtk_main(); の前後で

GtkIMContext* const im_context = gtk_im_multicontext_new();
gtk_im_context_set_client_window( im_context, NULL );
gtk_main();
g_object_unref( im_context );

の様に、 ダミーの input module を読み込みっ放しにする。

patch2 にて、ダミー読み込みっ放しによる解決策を実装した。

もっとも、uim-dict-gtk は普通なら、 数単語、登録なり編集なり編集する毎に終了するから、 大きな問題にはならない気もする。


■ uim-Anthy のキーカスタマイズで大文字と小文字を別のキーとみなすパッチ(Canna+kinput2風)

uim-1.5.0-anthy.scm-capital.patch(3KiB) uim-1.5.x用

uim.conf(97KiB) (Thu,23 Apr,2009) ${HOME}/.uim のサンプル

uim-1.3.1/1.4.1/1.4.2/1.5.0/1.5.3/1.5.4/1.5.5/1.5.6 どれでも使えました。

拙作パッチ anthy-9100h.patch13Bptn20.bz2 以降と併用する場合、 「ANTHY_RECONVERT_DISABLE true」していないと、 思い通りに入力できない場合があります。

拙作パッチ anthy-9100h.patch13Bptn20.bz2 を使用しない場合、 ソースを改造するか、フロントエンドの設定機能にて、 デフォルト設定を ANTHY_RECONVERT_DISABLE にしていないと、 思い通りに入力できない場合があります。

Canna+kinput2 にあった、 「ZA」とタイプすると「A」が、 「Za」とタイプすると「a」が、 入力される機能を、 uim-anthy で実現する為のパッチ。

ついでに、 小文字でタイプすると平仮名、 大文字でタイプすると片仮名、 先頭に「;」を付けてタイプすると片仮名、 と言う設定も追加してみました。 但し、 「ザジズゼゾ」が「AIUEO」と、かぶっているので、 「AIUEO」を「@A @I @U @E @O」に変更しています。

さらに、 「t.」とタイプすると「t」が入力される項目を追加。 これにより、例えば「at.」とタイプして変換すると、 読みが「あt」の変換になり、 vagus氏の alt-cannadic の extra にある、 JIS X 0208 以外の単漢字変換ができます。   なお、バグだか仕様だか知りませんが、 標準の Anthy は EUC-JP-MS のみ対応で、 JIS X 0212/0213 EUC-JP は非対応です。 なので、 JIS X 0212/0213 EUC-JP 対応端末であっても、 EUC モードの Anthy では、これらの追加された文字は処理できません。

anthy.scm だけに適用すると xim だけで、 anthy-utf8.scm だけに適用すると GTK+/Qt だけで、 大文字小文字が区別され、もう一方では区別されない、 と言う、嫌な事態になるので注意。


■ uim-Anthy-1.5.5 で追加された、ひらがな/カタカナ変換の自動学習を無効にするパッチ

uim-1.5.5-anthy.scm-dontlearnkana.patch(1KiB) uim-1.5.5用

uim-Anthy-1.5.5 から、 ひらがな/カタカナ変換を行った時に、 変換した内容を学習する機能が追加になっていました。

ただ、この機能、 「学習させたい時は漢字変換で、 学習させたくない時はひらがな/カタカナ変換で」 と言う「使い分け」をしている人にとっては、 はっきり言うと邪魔な機能です。

本パッチは、ひらがな/カタカナ変換をした時の学習を無効にするパッチです。

もっとも、このパッチが役に立つ人がそうそういるとは思えませんが。


■ uim-canna-utf8 : uim-canna で EUC-JP JIS X 0201 や EUC-JP JIS X 0212 を使える様にするパッチ

uim-1.8.6.canna-utf8.patch.bz2(17KiB) uim-1.8.6用

Canna自体およびかんなプロトコルは、 EUC-JP JIS X 0208 , ASCII , EUC-JP JIS X 0201 , EUC-JP JIS X 0212 の 4系統の文字エンコーディングの同時使用に対応していますが、 uim-canna は EUC-JP JIS X 0208 のみにしか対応しておらず、 ASCII , EUC-JP JIS X 0201 , EUC-JP JIS X 0212 が通りません。
uim-canna に本パッチを適用すると、 ASCII や EUC-JP JIS X 0201 や EUC-JP JIS X 0212 も 使える様になります。

Canna自体およびかんなプロトコルは いつの頃からかは忘れましたが ASCII や EUC-JP JIS X 0201 や EUC-JP JIS X 0212 も 使える様になっていますので、 Canna側の改造は不要です。


■ uim-canna-utf16 : uim-canna でかんなプロトコルに UTF-16BE をねじ込むパッチ

uim-1.8.6.canna-utf16.patch.bz2(17KiB) uim-1.8.6用

uim-canna にて、 かんなプロトコルをしゃべる際に SVR3.2 JAE プロセスコードの代わりに UTF-16BE を使うパッチです。

これで かんなプロトコル採用エンジンでも Unicode が使える様になりますが、 なにぶん、UTF-16BE を解するかな漢字変換エンジンが無い為、 何の役にも立ちません。


■ かな漢字変換 anthy で、個人用学習データを活用して変換結果の改善を目指すパッチ Since Sun,02 Sep,2007

概要:

オリジナルのままの 「かな漢字変換 anthy」 は 個人用の学習データの上限がとても少なく設定されており、 文書のタイプをしていると 数時間前の学習内容が上限量超過で消え去ってしまいます。

世間で Anthy が「学習しなくて馬鹿だ」といわれるのは、 主にはこの設定の為です。

「学習しない」辺りを改善して、 「学習する様に」して「学習した内容であれば」変換結果を多少は良くしよう というパッチです。

……最初のうちは↑なパッチだったのですが、 patch13 に至った所で、 変換結果関係無く何でもかんでも思い付いた機能は実装して試してみる パッチになっていました。

使用上の注意:

備考: あくまで私個人の憶測になりますが、 オリジナルの Anthy の場合、 古いPCやサブノートのような小型低速小容量のPCでも 軽快に動く事を目指していると思われる発言が見受けられますので、 もしかしたら故意に少なくしているのかもしれません。 憶測の根拠: 「http://srad.jp/~tabatee/journal/407854 anthyの速度 - tabatee の日記」 あくまで憶測ですからね。 あと、 組込系へも移植できる様にしたい、 と言う感じの発言も見かけた様な気が。

  • 本パッチは、 バッグ修正パッチやセキュリティ修正パッチではありません。 Anthy にバグが有るとか無いとか、 セキュリティホールが有るとか無いとかに関しては、 私は関知していません。
    個人用の単語登録辞書 ${HOME}/.anthy/private_dict_*.tt が壊れて 正常に動作しなくなる事があるらしいですが、 これはオリジナルの Anthy の問題です。 この問題のせいで Anthy が動かなくなっている場合、 本パッチを使用しても事態は改善しません。   この問題が起きた場合、 ~/.anthy/private_dict_*.tt を削除すれば、 正常に動作する様になるらしいです。 また、個人用の単語登録辞書として private_words_* だけを使い、 private_dict_*.tt を一切使わなければ、この問題は起きません。
  • 本パッチ群は、 「学習しなくて馬鹿だ」と言う点を何とかする事を主目的としています。
    よって、「学習して多少なりともマシにする」は主目的に含まれますが、 学習無しで本質的に賢くしたり、 学習無しで誤変換をしない様にしたりする事は、 目的とはしていません。
    また、学習したからと言って、必ず賢くなると言う訳でもありません。
  • Anthy は「UTF-8化しないと、丸数字やハートマーク等の文字が使えない」 と言う解説記事をあちこちで見かけますが、これは誤りです。
    EUC-JP のまま JIS X 0213化すれば、それら文字も使う事ができます。
    但し、一部のソフトで EUC-JISX0213 に非対応だったり、 環境設定を変えないと EUC-JISX0213 に対応しなかったり、 する場合があります。
  • patch13B-iconv は多分 Unicode 5.0 までのみ対応です。 Unicode 5.1 で対応になった異字体セレクタ IVS には非対応です。 Unicode の構造の後方互換性に依り、 何となく使えてしまうかもしれませんが。
    patch13B およびそれ以前は、原作版 Anthy の対応通りです。
    原作版 Anthy は、ソースコードを読んだ限りでは、 Unicode 2.1 かそれ以前までしか対応していませんでした。 2.1よりも後の版の対応は、Unicode の後方互換性に依存しています。
    # 原作版 Anthy では非対応の Unicode 3.1以降で 対応になった JIS X 0213 が、原作版 Anthy でも出せてしまうのは、 Unicode の後方互換性に依る。
  • GNU/Linux系の幾つかのディストリビューションのパッケージでは、 追加パッチや追加辞書や追加頻度情報が入れてあったり、 追加のコーパスが入っていたり逆にコーパスが外してあったりします。 この追加パッチや追加辞書や追加頻度情報やコーパスの変更が理由で、 変換結果が良くなったり悪くなったりする事が実際に起きています。
    この件に関しては、 オリジナルの Anthy やオリジナルの alt-cannadic や 改訂版 alt-cannadic や alt-depgraph や本パッチなどは一切関係無く、 原因は追加パッチや追加辞書や追加頻度情報やコーパスの改変に 帰属しますので御注意下さい。
    どれが理由で良くなったのか、悪くなったのかの切り分けは、 適切に判断願います。
  • 本パッチを適用した場合、 あるいは本パッチを適用すると共に辞書を追加/変更/削除した場合、 あるいは本パッチを適用すると共に本パッチ用の環境設定を変更した場合、 もしくは原作版 Anthy にて辞書を追加/変更/削除した場合、 コーパスを無効にするか、コーパスデータベースの再構築を行わないと、 変換結果が悪化する場合があります。
    これは、 原作版 Anthy の仕様 (変換結果が変化する変更を行った場合、 コーパスデータベースの再構築が必須になる) です。
    コンパイル時の、make all 後、make install 前に、
    make update_params && make update_params2 && make update_params2
    を実行して下さい。 Athlon64 3500+ / PentiumD 3.5GHz クラスで、 概ね 15〜20分くらいかかりました。
    具体的に名指しすると、 OpenBSD, FreeBSD では辞書の追加/変更を行っていないので、 コーパスデータベースの再構築は不要です。 Red Hat GNU/Linux および Fedora GNU/Linux では、 原作版 Anthy に対して辞書の追加/変更を行っている様ですが コーパスデータベースの再構築が行われていました。
  • 本パッチを使う際、 誤変換による誤学習がある場合には、変換結果が悪くなります。 その場合、テキストエディタ等を使って、 個人用学習データから誤学習を消すと、変換結果が良くなります。
    patch8以降を使用する場合、 個人用学習データの last-record1_* を編集する時は、 編集する前と後に、 バイナリ形式の個人用学習データ last-record1_*.bin を削除して下さい。 last-record2_* は、そのまま編集できます。
    個人用学習データの編集後に新規にかな漢字変換を行うと、 自動的に編集後の学習データが読み込まれます。 なお、かな漢字変換が「新規に行われる」のがいつなのかは、 フロントエンドによって違う為、明言できません。
  • 本パッチを使う際、 誤変換による誤学習がある場合には、変換結果が悪くなります。
    誤学習には、 候補の選択間違いだけでなく、 文節区切り位置の間違いも含みます。
    kinput2, uim の場合、文節区切り位置が表示されます。 この表示される文節区切り位置を正しい位置に修正しないと、 誤学習を起こします。
    scim の場合、文節区切り位置が表示されない為、 文節区切り位置の学習が正しくなるか間違えるかの確認は困難です。
    im, iiimf, ibus は未確認です。
  • 本パッチは個人用学習データを重視する為、 個人用学習データがまだ十分に貯まっていない時は、 あまり効果がありません。
    また、学習データが十分に貯まっている場合でも、 過去に変換した事が無い内容を変換した場合、 学習していないのとほとんど同じ状態になります。
  • anthy がα版〜β版だった頃の slashdot.jp にて、 「変換アルゴリズムによっては、単純に辞書を増やすとかえって駄目になる」 と言う主旨の発言と、 「変換の重み付けが不適切なまま学習していくと、かえって駄目になる」 と言う主旨の発言がありました。
    但し、真偽のほどや、Anthy に当てはまるのか否かは知りません。
  • 本パッチには、 292277026596年問題と、 学習データの中に 68年以上前に学習した項目があると 処理がおかしくなる問題がありますが、 修正しません。
  • オリジナルの Anthy 及び本パッチには、 sizeof() の仕様を間違えているバグがありますが、 修正していませんし、修正しません。
  • オリジナルの Anthy の EUC-JP モードは EUC-JP-MS のみ対応で、 JIS X 0212/0213 EUC-JP (第3水準、第4水準、補助漢字)は非対応です (例えば、もりおうがい 「森鷗外」 の「おう」の字が出せません。 なお、 JIS X 0213 EUC-JP 非対応のブラウザでこのページを閲覧している場合、 「おう」の字が正しく表示できていません。 Mozilla Firefox, Microsoft InternetExplorer 共に表示できません)。
    なお、雑誌や web などで 「EUC-JP では第3水準/第4水準/補助漢字は使えない。 UTF-8 にすれば使える」 と言う記事を見かけますが、この記述は誤りもしくは不適切です。 原作版 Anthy の EUC-JP モードが 第3水準/第4水準/補助漢字に対応していないだけです。
  • オリジナルの Anthy に、 int型が 32bit 未満の時に正常に動作しない仕様?を見つけましたが、 修正していません。
  • オリジナルの Anthy には、 複数のアプリケーションで同時にかな漢字変換を有効にし、 一方のアプリケーションで変換候補を表示している状態で、 もう一方のアプリケーションで変換確定を行うと、 学習データが過去に戻るバグ?仕様?があります。
    patch8およびそれ以降にて発症しにくくなるように修正しましたが、 根治はしていません。 ロック処理の仕様を変えないと根治できないので、そこまでしたくない。
  • オリジナルの Anthy では、 Anthy 専用 API 呼び出しにおいて、 マルチプロセス/マルチスレッドに非対応ですが、修正していません。
    本パッチでは、オリジナルの Anthy が対応しているか否かに そのまま依存しています。
  • 本パッチは、原作者氏の意図や方針を、 確信犯でくつがえしている部分がある為、 積極的に本家に commit する気にはなれません (バグ修正ならともかく、 設計方針や実装意図とかけ離れているパッチを送られても 困るでしょうし……)。 どうしたものか。
  • 2009年1月上旬現在:   patch12/patch13 では、学習量の上限を、 1ヶ月〜1年分(学習項目によって異なる)、 2MB くらいに設定してあります。   patch(無印)〜patch11 では、学習量の上限を、 2年分、8〜10MB くらいに設定してあります。
    patch12/patch13の場合、 上限一杯まで学習すると、学習データの再読み込みに、 Athlon64系 2.0GHz クラスで 0.5秒前後、 Core/Core2/Atom系 1.5GHz クラスで1秒くらい、 かかると思われます(コア数が増えても変わらず)。   patch7〜patch11の場合、 上限一杯まで学習すると、学習データの再読み込みに、 Athlon64系 2.0GHz クラスで 2〜3秒くらい、 Core/Core2/Atom系 1.5GHz クラスで 3〜5秒くらい、 かかると思われます(コア数が増えても変わらず)。   patch1〜patch6の場合、 上限一杯まで学習すると、学習データの再読み込みに、 Athlon64系 2.0GHz クラスで 2〜7秒くらい、 Core/Core2/Atom系 1.5GHz クラスで 5〜15秒くらい、 かかると思われます(コア数が増えても変わらず)。
    この辺りのパラメータを調整したい場合、 ~/.anthy/conf (patch12/patch13 の場合) もしくは src-worddic/settings.c (patch8〜patch13 の場合) もしくは src-worddic/record_truncate_settings.h (patch4〜patch7 の場合) の、 「学習量の設定」の各項目の値を、 好みに合わせて変更して下さい。   なお、patch(無印)〜patch3 では、個別のソース中に直接記述されています。
  • patch12/patch13 にて変換のチューニングを行いたい場合、 sample/conf を参照してください。

パッチの全般的な概要:

  • パッチの番号が大きくなる程、 原作の Anthy と異なる部分/異なる動作が増えています。 好みに合う程度を適当に選んで下さい。   各パッチの詳細解説は、別ページの Anthy 改造パッチの詳細解説と覚え書きと落書きとグチ を参照して下さい。
  • 原作の anthy-9100h には、未修正の既知バグがあります。 [Anthy-dev 3677][Anthy-dev 3679][Anthy-dev 3701][Anthy-dev 3703]。 拙作パッチでは patch13系列ではこれらの修正が含まれていますが、 patch12系列およびそれ以前には含まれていません。
  • patch0 の内容は、patch0 以外のパッチには含まれていません。
    patch(無印)〜patch1〜patch13 は、どれか1つだけ選ぶ必要があります。 大きい番号のパッチは、 それより小さい番号のパッチ全部を含んでいる、 もしくは仕様変更により互換性が無くなっています。
    patch0 を使わずに、patch(無印)〜patch1〜patch13 だけを使用した場合、 コーパスは有効になります。 コーパスを使用するか否かは、各自で判断して下さい。
  • patch0b と patch無印 は 9100〜9100h 全てで使えます。 今後の 9100系に於いても使えるのではないかと思います。
    patch1〜patch11 は anthy-9100〜9100e 専用のパッチです。
    なお、 anthy-9100〜9100e には特定の変換を行った時にクラッシュするバグがあり、 anthy-9100h にて治されています。 patch11 にはそのバグの修正パッチを含んでいますが、 patch1〜patch10 にはそのバグの修正パッチは含まれていません。
    また、 patch1〜patch11 では、[Anthy-dev 3703] の件は未修正です。
    9100f は廃版、9100g は廃版と同等、9100i は正式アナウンス無し、の為、 それら用のパッチはありません。
    patch12〜patch13/13B は anthy-9100h 用のパッチです。

パッチのライセンス:

patch8 以降は、LGPL と3条項 BSDライセンスの混合となります。
その為、ソース再配布・バイナリ再配布とわず、 再配布の際には、同梱するドキュメント等で 「OpenBSD の libc のソースコードの一部を同梱及び利用している」 旨を明示する義務が有ります (「libc のソースコードの一部」の部分は、 具体的に「strlcpy(),strlcat(),mergesort() のソースコード」 でも可)。 なお、3条項 BSDライセンスなので、 明示する義務は有りますが、広告する義務は有りません。

alt-depgraph 同梱版は、 2012年3月辺りから GPL の辞書と CC BY-SA 2.1 の辞書の両方が含まれています。 GNUライセンスで再配布されている方は ライセンス違反になる可能性が有りますのでご注意下さい。
CC が混じるとまずい方は、単漢字辞書を無効に (mkworddic/dict.args.in および alt-cannadic/extra/Makefile.am から gt-kanji- を含む行を削除) して下さい。


パッチの入手:


patch0 系列 :

anthy-9100.patch0b.bz2 patch0 (1KiB) (Fri,27 Feb,2009)

コーパス情報を削除するだけのパッチ(9100〜9100h用)。

このパッチだけは、他のパッチと併用する物です。

patch13系列との併用は非推奨です。  どうしてもコーパスを切りたい場合は、 文節数最小モードに切り替える事をおすすめします。


patch1 系列 :

anthy-9100.patch.bz2 patch(無印) (2KiB) (Sun,20 Jul,2008)

注意:
原作の anthy-9100〜9100e には 9100h で修正されたバグがあります。 また 9100h にも未修正のバグがあります。 本パッチには、そのバグ修正は含まれません。

単純に学習量の上限を増やすだけのパッチ(9100〜9100h用)。


patch6 系列 :

anthy-9100.patch6.bz2 (43KiB) (Wed,29 Sep,2010)

注意:
原作の anthy-9100〜9100e には 9100h で修正されたバグがあります。 また 9100h にも未修正のバグがあります。 本パッチには、そのバグ修正は含まれません。

学習量の上限増加、 学習の記録と削除をスコアリングで行う、 個人用学習データの読み込みを2割程度高速化、 様にした物。 文節切り直しによる再変換時に、注目文節より左側を不変にした。

注意: 個人用学習データの形式が変更されています。 既存の学習データはそのまま利用できますが、 本パッチ適用後に学習した内容は、 オリジナルの Anthy では利用できなくなります。


patch9 系列 :

anthy-9100.patch9.bz2 (176KiB) (Wed,29 Sep,2010)

type-punned pointer なバグがあります。
もう長い事ダウンロード実績が無いので直しません (必要な方は言って頂ければ善処します)。

Sun,02 Nov,2008 よりも古い patch9 にはバグがあります。
Sun,02 Nov,2008 もしくは新しい版に差し替えてください。

注意:
原作の anthy-9100〜9100e には 9100h で修正されたバグがあります。 また 9100h にも未修正のバグがあります。 本パッチには、そのバグ修正は含まれません。

patch6に加え、 個人用学習データをバイナリ形式に変換し、 学習データの読み込みを6〜8割程度高速化。 テキスト形式の個人用学習データの読み込みも1割程度高速化。   Anthy の置き換えとなる かな漢字変換 の開発が 2038年までに間に合わなかった場合の保険として、 2038年問題に対応。

各種の設定は src-worddic/settings.c で指定します。

注意1: 個人用学習データの形式が変更されています。 既存の学習データはそのまま利用できますが、 本 patch9 適用後に学習した内容は、 オリジナルの Anthy や patch8 までの Anthy では利用できなくなります。

注意2:本パッチ中の src-diclib/strlcpy.c と src-diclib/strlcat.c は BSDライセンスになります。


patch11 系列 :

anthy-9100.patch11.bz2 (188KiB) (Wed,29 Sep,2010)

type-punned pointer なバグがあります。
もう長い事ダウンロード実績が無いので直しません (必要な方は言って頂ければ善処します)。

Wed,24 Jun,2009 よりも古い patch11 にはバグがあります。
Wed,24 Jun,2009版もしくはそれより新しい版に更新して下さい。

注意:
原作の anthy-9100〜9100e には 9100h で修正されたバグがありますが、 本パッチはそのバグ修正を含んでいます。 しかしながら、9100h の未修正のバグの修正は含んでいません。

patch9に加え、 変換候補の学習と予測変換の学習を統合し学習データの大きさを削減。 候補の並び順を決める際に、 同評価の項目の順位は毎回同じ、 自動生成された変換候補の並び順は毎回同じ、 に変更。 自動生成された変換候補は学習しない様に変更。

句読点や数字や記号などを変換した時に、 以前と変換候補の並び方が変わります。   並び順が気に入らない場合は、 0〜50 以外の数字の場合は src-worddic/settings.c の .extra_flag の CEF_TUNESCORE_CLOUMN を変更してください。 句読点や 0〜50 までの数字や記号などは、 alt-cannadic/*.ctd の頻度値を変更するか、 個人用の辞書に単語登録して十分に大きな頻度値を設定して下さい。

オリジナルの Anthy もしくは patch1〜patch9 までの Anthy から patch10〜patch11 に移行する場合、 一旦、

% rm ~/.anthy/last-record1_*.bin
% anthy-agent --do-nothing --update-base-record
% rm ~/.anthy/last-record1_*.bin
% anthy-agent --do-nothing --update-base-record

を実行(同じ事を2回繰り返していますが、間違いではありません)して、 学習データの形式変換をして下さい。

各種の設定は src-worddic/settings.c で指定します。

注意1: 予測変換を利用している人の場合、 予測変換の変換の傾向が変わる可能性があります。 予測変換を利用していない人の場合、デメリットはありません。

注意2: 本 patch11 適用後に学習した予測変換の学習データは、 patch10 までの Anthy では利用できなくなります。

注意3:本パッチ中の src-diclib/strlcpy.c と src-diclib/strlcat.c と src-diclib/mergesort.c は BSDライセンスになります。


(旧: mkworddic_fix) (旧: patch13B 系列) (旧: patch13Bptn23) (旧: patch13B-23-iconv) (旧: patch13C 系列)

patch13系列では、 文節区切りアルゴリズムや、変換候補の順番決定アルゴリズム、 各種辞書の処理方法や、学習の処理方法など、 あちこちの設計思想を大きく変更しています。

patch13系列では、単語辞書および付属語グラフを vagus氏による alt-depgraph angie に交換しています。これは vagus氏の労作によるものです。

変更点やら何やらの詳細は、 後述のソースコードのリポジトリのログを見て下さい。

オリジナルの Anthy もしくは iconv対応前の版から、 iconv対応後の版に移行する場合、 個人用の単語辞書、個人用の学習データ、 インストール後のシステムの辞書、 全てに於いて、一部の文字の互換性が無くなります。
全てのデータの文字コードを適切に変換するか、 iconv対応版をインストールする前に、 個人用の単語辞書/個人用の学習データ/システムの辞書、などから、 後述の問題になる文字を全て削除するか、 して下さい。
文字コードの変換方法は個別の環境によって異なる為、 一般的な変換方法をここで述べる事はできません。   ロケールとか 使っているフロントエンドソフトとか 辞書/学習の形式などによって、 どの変換を行うべきなのか/行わないべきなのかが異なるので、 iconv, nkf, qkc などでサクっと変換、と言う訳にはいきません。
問題になる文字は 「iconv対応版の解説:」 を参照。 これらの文字を含んでいない場合、変換の必要は有りません。

オリジナルの Anthy もしくは patch13Bptn22 よりも古い版から、 patch13Bptn22 かそれ以降の版に移行する場合、 一旦、

% rm ~/.anthy/last-record1_*.bin
% anthy-agent --update-base-record
% rm ~/.anthy/last-record1_*.bin
% anthy-agent --update-base-record

を実行(同じ事を2回繰り返していますが、間違いではありません)して、 学習データの形式変換をして下さい。
なお、変換後の学習データは、 原作版Anthy や古いパッチ版では使用できません。


環境設定を変更したかったり、 patch13/13B で追加された機能を有効にしたかったり、 変換のパラメーターチューニングをしたかったり、 学習する内容を調整したかったりする場合は、 sample/conf に見本と解説がありますので、 それを参考に適当に書いて下さい。
おまかせ設定のまま変更しない場合は、何もしなくて構いません。

patch13/13B の機能を最大限に発揮するには、 フロントエンドのソフトウェアの改造が必要です。 「patch12/patch13/patch13B パターン22:」 を参照。
改造しなくても、全ての機能を発揮できないだけで、 それ以外は、デメリットはありません。

直前の変換確定を忘れる機能を使うには、 フロントエンドのソフトウェアの改造が必要です。 「patch12/patch13/patch13B パターン22:」 を参照。

iconv 対応版:

文字コードの配列が、 原作の Anthy や iconv対応前の版では eucJP-MS ですが、 iconv対応版では EUC-JP(JIS X 0208/0212) になります。
ロケールを UTF-8 にして、 MSゴシック/MS明朝/みかちゃんフォント などの CP51932用フォント もしくは MS-Windows の Vistaより前(XP,2000,98,95,3.1,3.0,2.0)用の フォントを使用した場合、 一部の記号が文字化けします。   これはフォントの誤字です。   メイリオフォント等の Unicode ver.3.1以降(ver.4.0以降?)対応/JIS X 0213対応の フォントに更新すれば、治ります。

それ以外は、下記のMBRビタビ/前方n文節最長一致と同じ。


patch13 MBRビタビモード(標準設定のモード。旧patch12と同等):

変換候補や変換結果が、 これまでに学習した内容やシステム辞書の頻度情報に、 大きく影響を受ける様になります。
特に、 句読点や数字や記号などを変換した時に、 以前と変換候補の並び方が変わります。
並び順が気に入らない場合、次に述べる設定変更を行なって下さい。  0〜50 以外の数字の場合、 ${HOME}/.anthy/conf の TUNE_SCORE_NUM_* の設定を変更して下さい。  句読点や 0〜50 までの数字や記号の場合、 alt-cannadic/*.ctd もしくは mkworddic/*.t の頻度値を変更するか、 個人用の辞書に単語登録して十分に大きな頻度値を設定して下さい。


patch11 までの内容は、ほぼ全部含む。 但し仕様を大幅に変更した物も有る。

学習の内容と学習結果の反映方法を、大きく変更。

変換内容に対するシステム辞書の影響の仕方を、大きく変更。


変換結果が、 システム辞書の頻度値の影響を大きく受ける様になります。
vagus氏や内海氏の、 頻度値をカスタマイズした辞書を使うと、 変換候補の並び順や文節の区切り方の傾向に 大きな違いが出るかもしれません。
良い傾向か悪い傾向かは判りませんが。


patch13 前方n文節最長一致モード(オプションのモード。旧patch13と同等):

変換アルゴリズムを根本から変えているので、 変換候補や変換結果が全く別物になります。 むしろ、 アルゴリズムの違いによる変換結果の違いを見てみたいとか、 前方n文節最長一致を使いたいとか、 MBRビタビアルゴリズム(隠れマルコフモデル)を使いたくないとか、 そう言う人を除き、 このモードは使わないで下さい。


そもそも文節区切りのアルゴリズムを根本から換えてみるテスト。
前方n文節最長一致(nは任意、標準設定では前方3文節最長一致)を実装。 本パッチ群の本来の目的である、 変換エンジンは原作のまま、学習結果の活用だけで乗り切る、 と言う方針を、根本的且つ全面的に逸脱している異端パッチ。

文節区切りのアルゴリズムを丸ごと変更した以外は、 patch13 MBRビタビモードと全く同じ。


注意1: 繰り返しになりますが、アルゴリズムを根本からいじっていますので、 変換の傾向とか使い勝手とか色々変わります。

注意2: 本 patch13 適用後に学習した学習データは、 patch12 までの Anthy では利用できなくなります。

注意3:本パッチ中の src-diclib/strlcpy.c と src-diclib/strlcat.c と src-diclib/mergesort.c は BSDライセンスになります。

  • 旧安定版
    vagus氏による 「作業部屋-angie」 に対して、 バグ修正とコーパス追加と用例辞書追加を行った物。
  • 安定版
    試験版のうち、使いでのありそうな機能を旧安定版に導入した物。
    • 初回起動時に学習データの再構築を行なう為、 10〜20秒程度の時間がかかります。
    • コーパスを倍増。
    • 用例辞書追加。
    • 文節区切りアルゴリズムに Dijkstra-文節数最小法 を追加。
    • 文節区切りアルゴリズムに MBR-Dijkstra法 を追加。
      デフォルトアルゴリズムを MBR-Viterbi から MBR-Dijkstra に変更。
    • pthread での2スレッド動作に対応。 デフォルトで不使用。
      configure --enable-pthread にて Dijkstra-文節数最小法,MBR-Dijkstra法のみで 2スレッド動作を行ないます、 でもあんまり効果ありません。
      MBR-Viterbi,前方n文節最小一致では非対応。
    • ブートストラップ学習を追加。
      コーパスから抽出した学習データを添付しています。 初回起動時に自動で読み込みます。 これにより、学習データを貯めていなくても それなりに学習が適用される様になります。
    • amd64系およびi386系のみ、 学習データの読み込みを mmap化して高速化。
    • 文字列の正規化を追加。
      単語辞書を読み書きする際に、 大文字/小文字/いわゆる全角/いわゆる半角、 平仮名/カタカナ、を、 区別しません。
      但し Unicode Technical Standard #10 UNICODE COLLATION ALGORITHM には 非対応です。
    • 郵便番号辞書関連。
      郵便番号辞書の不使用を選択可能。
      000-0000 形式で郵便番号辞書を検索する機能を追加。
      自動的に地名の付属語を付加する様に変更。
    • アルファベットを変換した際に、 自動的に名詞の付属語を付加する様に変更。
    • 文節区切りの時に、 用例辞書も利用する様に変更。
      従来はコーパス(MBRアルゴリズム)のみ利用していた。
    • 候補選択の時に、 コーパスの利用に際して読み仮名のハッシュも判定する様に変更。
      従来は漢字表記のハッシュのみで判定していた。
    • コーパス文節区切り/区切らない辞書の導入。
      従来は コーパスから抽出した品詞〜付属語の情報しか利用していませんでしたが、 コーパス文節区切り/区切らない辞書では コーパスから抽出した読み仮名〜付属語の情報も利用する様になります (読み仮名ベース変則単語 変則2グラム 〜 読み仮名ベース変則単語 変則3グラム)。
    • 学習データの保存形式を東京キャビネットに変更。
      XIM以外のフロントエンドを利用している場合に、 複数のアプリケーションで日本語入力を利用している際の動作が 高速化されます。
      学習データが貯まった時のリフレッシュ動作は遅くなります。
  • 試験版
    かな漢字変換 anthy で、 個人用学習データを活用して、 なんかもう思い付く事を何でもかんでも試してみて、 変換結果の改善を目指すパッチ。
    patch13/13B からさらに、 文節区切りアルゴリズムの設計思想を大幅に変更し コーパスを単語付きで利用しています。
    • 安定版で増えた機能全部。
    • 初回起動時に学習データの再構築を行なう為、 10〜20秒程度の時間がかかります。
    • 複合動詞を復活。
      諸刃の剣です。
    • 文節区切りアルゴリズムに 読み仮名文字 変則2グラム、読み仮名文字 変則3グラム、 を追加。
    • ハッシュ関数に *BSD や OpenSSL に付属の物を使用可能…… 意味ないけれど。

patch13 系列 旧安定版 :

anthy-9100h.patch13-stable-2019831.alt-depgraph-120315-angie.zipdic-201101.tar.xz (6MiB) (Sat,31 Aug,2019) 旧 安定版(STABLE)

2012Z15版より前のバージョンには学習データを壊すバグがあります。
お手数ですが 2012Z15版以降に更新の上、 学習データを削除(/bin/rm ${HOME}/.anthy/last-record*)して下さい。

こまかい事は同梱の AUTHORS.patch を読んで下さい。

alt-depgraph angie は 2012年3月辺りから GPL の辞書と CC BY-SA 2.1 の辞書の 両方が含まれています。
CC が混じるとまずい方は、単漢字辞書を無効に (mkworddic/dict.args.in および alt-cannadic/extra/Makefile.am から gt-kanji- を含む行を削除) して下さい。

本改造版に同梱の追加コーパス corpus.g.txt を、 拙作各種ソフトもしくは拙作改造版 anthy 以外で利用する場合の ライセンスは、 GNU AGPL v3 とします。

libiconv に依存しています。 別途インストールする必要があります。


patch13 系列 安定版 :

anthy-9100h.patch13-release-2019831.alt-depgraph-120315-angie.zipdic-201101.tar.xz (13MiB) (Sat,31 Aug,2019) 安定版(RELEASE)

2012Z15版より前のバージョンには学習データを壊すバグがあります。
お手数ですが 2012Z15版以降に更新の上、 学習データを削除(/bin/rm ${HOME}/.anthy/last-record*)して下さい。

こまかい事は同梱の AUTHORS.patch を読んで下さい。

alt-depgraph angie は 2012年3月辺りから GPL の辞書と CC BY-SA 2.1 の辞書の 両方が含まれています。
CC が混じるとまずい方は、単漢字辞書を無効に (mkworddic/dict.args.in および alt-cannadic/extra/Makefile.am から gt-kanji- を含む行を削除) して下さい。

本改造版に同梱の追加コーパス corpus.g.txt を、 拙作各種ソフトもしくは拙作改造版 anthy 以外で利用する場合の ライセンスは、 GNU AGPL v3 とします。

pthread に依存しています。

libiconv に依存しています。 別途インストールする必要があります。

TokyoCabinet に依存しています。 別途インストールする必要があります。
もし TokyoCabinet を使いたくなければ、 configure にて --disable-tokyocabinet オプションを 付けてください。 TokyoCabinetに依存した機能を無効にします。


patch13 系列 試験版 :

anthy-9100h.patch13-testing-2019831.alt-depgraph-120315-angie.zipdic-201101.tar.xz (16MiB) (Sat,31 Aug,2019) 試験版(CURRENT)

2012Z15版より前のバージョンには学習データを壊すバグがあります。
お手数ですが 2012Z15版以降に更新の上、 学習データを削除(/bin/rm ${HOME}/.anthy/last-record*)して下さい。

こまかい事は同梱の AUTHORS.patch を読んで下さい。

alt-depgraph angie は 2012年3月辺りから GPL の辞書と CC BY-SA 2.1 の辞書の 両方が含まれています。
CC が混じるとまずい方は、単漢字辞書を無効に (mkworddic/dict.args.in および alt-cannadic/extra/Makefile.am から gt-kanji- を含む行を削除) して下さい。

本改造版に同梱の追加コーパス corpus.g.txt を、 拙作各種ソフトもしくは拙作改造版 anthy 以外で利用する場合の ライセンスは、 GNU AGPL v3 とします。

pthread に依存しています。

libiconv に依存しています。 別途インストールする必要があります。

TokyoCabinet に依存しています。 別途インストールする必要があります。
もし TokyoCabinet を使いたくなければ、 configure にて --disable-tokyocabinet オプションを 付けてください。 TokyoCabinetに依存した機能を無効にします。


ソースコードのレポジトリ :

anthy 改造版のリポジトリの閲覧/旧版ダウンロード
ユーザ名は「Repository」、パスワードは「Repository」、です。

anthy 改造版の変更履歴一覧

Anthy関連の情報があるサイト:

  • anthy の総本山
  • alt-cannadic
    Anthy の主辞書。
  • 修正関連:
    • cannadic改(OSDN)
      vagus氏 による単語辞書および付属語辞書の改訂版。 alt-cannadic(単語辞書の改訂)及び alt-depgraph(付属語辞書の改訂)。
    • Modified Anthy
      utumi氏 による単語辞書の改訂版。
      バグの有る古いバージョンのまま放置されているので注意。
      こちらのサイトの場合、 システム辞書に追加辞書と頻度情報を付加する事で、 変換結果の改善を目指している模様。
      頻度情報の情報源は 「ウェブ検索でのヒット数」だそうなので、 その辺の適不適の判断は各自で行われたし。   誤用の字が高優先度で正しい字が低優先度になっている場合があります。

    Anthy 改造パッチの詳細解説と覚え書きと落書きとグチ(古い。更新停止)


■ depgraphdump : かな漢字変換 anthy の付属語グラフを検索/表示する

depgraphdump.cc(55KiB) Sat,16 May,2009

かな漢字変換 Anthy にて、例えば、
「|直すの|」(|なおすの|)の付属語は、 付属語グラフの、どの部分に該当するのだろう、
とか、
付属語が「すの」で終わる物には、どんな品詞が有るだろう、
と言った事を調べる為のソフト。

↑ の例だと、 「anthy-9100h + patch13Bptn23 + alt-depgraph-090506 + 2009年05月16日パッチ」 の場合、

% egrep "^なお " alt-cannadic/gcanna.ctd
なお #F14*400 なお 尚 #R5*301 治 #S5*301 直 #CJ*300 なお 尚 #R5*300 直 #S5*300 なお 治 #CJ*200 猶 #F14*200 猶 #R5*200 なお #JN*151 なお 直 #JN*150 尚 奈緒 #JN*100 奈央 奈穂 #JN*50 奈保
% grep -w "S5" src-worddic/wtab.h
{"#S5",POS_V,COS_NONE,SCOS_NONE,CC_S5,CT_HEAD,WF_INDEP    /* "サ行五段"*/},
% cat src-worddic/ptab.h | grep -w POS_V | grep -w CC_S5 | grep -w CT_HEAD
{"サ行5段活用動詞語幹",POS_V,COS_NONE,SCOS_NONE,CC_S5,CT_HEAD,WF_INDEP},
% depgraphdump -n "サ行5段活用動詞語幹" -w "すの" -e
End: サ行5段活用動詞語幹|すの H SzC  :0.0  @_サ行5段語幹後 "" @サ行5段終止形 "す" @_5段終止形(共通) "" @「の」終助 "の" Sz@
End: サ行5段活用動詞語幹|すの HnSeC  :0.0  @_サ行5段語幹後 "" @サ行5段連体形 "す" @_5段連体形(共通) "" Hn@「の」格助(準体) "の" Se@

とか

% depgraphdump -w "すの" -e -r
End: サ行5段活用動詞語幹|すの HnSeC  :0.0 @_サ行5段語幹後 "" @サ行5段連体形 "す" @_5段連体形(共通) "" Hn@「の」格助(準体) "の" Se@
End: サ行5段活用動詞語幹|すの H SzC  :0.0 @_サ行5段語幹後 "" @サ行5段終止形 "す" @_5段終止形(共通) "" @「の」終助 "の" Sz@

とかします。
なお、品詞から先頭ノード名を探す部分は、現在は完全手動です。 また、上記の先頭ノード名を探す方法は不完全で、 検索漏れが発生する可能性が有ります。


■ tomoe SIGSEGV修正パッチ

手書き文字認識エンジン tomoe の修正パッチです。

tomoe-0.6.0.patch Wed,08 Dec,2010 (1KiB)
tomoe-0.6.0 〜 tomoe-trunk(r1629 Wed Mar 18 2009) を gtk-2.2? 辺りのバージョンで使うと、 最初の1画目を書いた時点でいきなり Segmentation fault を出して 落ちる事があります。
本パッチはこれに対して、 対処療法で無理矢理 SIGSEGV を出さない様にして 処理を続行させるものです。


■ canna-agent : かんなプロトコルをしゃべる anthy-agent代替ソフト

canna-agent.2017204.tar.xz Sat,04 Feb,2017 (219KiB)
canna-agent の変更履歴一覧

anthy-agent と互換の操作方法で、 かんなプロトコルのかな漢字変換サーバに接続する クライアントソフトです。
3条項BSDライセンス。

作った本人が言うのもなんですが、 かんなプロトコルのかな漢字変換サーバのベンチマークテスト以外に 用途を思いつきません。

ビルドには C99 対応コンパイラの使用が必須です。

ソースコードのレポジトリ :
canna-agent のリポジトリの閲覧/旧版ダウンロード
ユーザ名は「Repository」、パスワードは「Repository」、です。


■ 各種スクリプト


Last modified on Sat,31 Aug,2019.
This contents was founded in Wed,07 Oct,1998.
FENIX ほめぱげ
G-HAL ほめぱげ
ソフトヱアに関するウダウダ
→→ 未整理なジャンクのうだうだ
Mail to, メールはこちらへ
Suggestion Box, 投書箱
BBS, 掲示板 UserName:BBS、Password:BBS
(C) 1998 G-HAL