2010年03月23日

anthy で、「きょう?」で日付に変換する 【更新】3/31,4/27

-----
【更新】3/28
G-HAL 氏に反応を頂いたので(いつもお世話になります…)、実行時に学習履歴から古い日付エントリを削除するよう対応してみました。
自己責任でどうぞ。

datedic.t を更新した後、text の last-record* から日付エントリ(「きょう?」とか「ことし?」とか)の行を削除、その後、バイナリの last-record*.bin を削除します。
euc の場合も考慮したつもりですが、utf-8(last-record*.utf8)と euc の履歴ファイルが混在しているケースは考慮してません(普通、ないですよね?)

まぁ、作者が作者なので、一応、実行する前に ~/.anthy/ をバックアップしておくことをお勧めします。
一応、1世代だけバックアップ取るようにしてはありますが。

※以下の本文も若干変更しました。
P.S. 「言問橋」は「言問団子」等とともに登録させて頂きました。ありがとうございます。repo 公開準備ができるまでもうちょっとお待ちを。ここ 2ヶ月ほど格闘してるんですが、なかなかまとまらん…。でも多分もうすぐ

【更新】3/29
つまらないミスをしてコケてたので修正しました。

【更新】3/31
クォートをミスっていて、ケツの文字のない「きょう」や「きのう」等も履歴ファイルから削除されてしまっていたのを修正しました。確認したはずだったんですが…。すみません…。
ついでに、履歴ファイルが EUC、かつ、ruby1.9 を使った場合にエンコーディングがおかしくなるのも修正。

【更新】4/27
マジックコメントは "encoding" という文字列をキーにしてるんだから、"fenc" ではダメなんだよね、という訳で修正。
影響があるのは ruby1.9 系のみです。
-----

個人的には特に欲しい機能でもないんですが、「一応出来なくはない」のに「出来ない」と思われてるようなので、ruby の勉強がてら作ってみました。

datedic.rb.bz2 【更新】4/27

落として展開して実行権限付けて実行すると、

~/.anthy/imported_words_default.d/datedic.t

という辞書が作成されます(~/.anthy/imported_words_default.d/ がない場合は作成します)。

そのまま、「きょう?」と、読みのケツに "?" を付けて変換すると、「2010/3/23」や「平成22年3月23日」に変換できます。
「きょう?」で変換したところ
(画像は、「-f」オプションで全角数字の候補は出さないようにしたもの)

後は、「$ crontab -e」して自分の crontab に
@daily /path/to/datedic.rb
@reboot /path/to/datedic.rb
とか書いておけば宜しいかと。
(「/path/to/datedic.rb」は「datedic.rb の絶対パス」です。例えば「/home/vagus/bin/datedic.rb」とか。)
(「@daily」は「毎日0時0分に実行」。これだけだと、0時0分にマシンが起動していなかった場合には辞書が更新されないので、「@reboot」で起動時にも実行するようにする。
※ただ、その時間にスリープ中だった場合にはどうしようもないので、その場合は手動で実行する必要があります。)

[オプション]
-c "char" : 読みのケツに付ける文字(一文字限定)を char に変更。デフォルト: "?"
-h : 半角数字の候補を抑制
-f : 全角数字の候補を抑制
-w : 曜日の候補を抑制
-q "N" : 頻度の基準値を N に変更。デフォルト: 200


[変換できる読み]

ことし
きょねん
おととし
らいねん
さらいねん

こんげつ
せんげつ
せんせんげつ
らいげつ
さらいげつ

きょう
きのう
おととい
さきおととい
あした
あさって
しあさって

【追記】
ふと思った。
例えば今日、「きょう?」→「2010年3月23日」を確定した場合、学習が有効になっていると「2010年3月23日」を覚えちゃって、次の日(3/24)に「きょう?」を変換した場合に「2010年3月23日」が混ざっちゃったりするんだろうか…? → ビンゴ

ファイル名を「ng-datedic.t」とかにして、「ファイル名が "ng-" で始まる辞書からのエントリは学習しない」とか、何か小細工が必要かも。 → もちろん、自分には無理ですが。

scim-anthy なら shift + enter (学習せずに確定)で一応回避できますが、{uim, ibus}-anthy では回避する手はないかも。ibus-anthy はしばらく更新してないので、最近のは未確認ですが。

後は、datedic.rb を実行するのと同じタイミングで、学習ファイルから日付のエントリを含むものを削除するとか。強引だけど…。
@daily /usr/bin/sed -i -r '/(ことし|きょねん|おととし|らいねん|さらいねん|こんげつ|せんげつ|せんせんげつ|らいげつ|さらいげつ|きょう|きのう|おととい|さきおととい|あした|あさって|しあさって)\?/d' $HOME/.anthy/last-record2_default.utf8
@reboot /usr/bin/sed -i -r '/(ことし|きょねん|おととし|らいねん|さらいねん|こんげつ|せんげつ|せんせんげつ|らいげつ|さらいげつ|きょう|きのう|おととい|さきおととい|あした|あさって|しあさって)\?/d' $HOME/.anthy/last-record2_default.utf8

sed の「-i」「-r」は GNU sed 限定か。
学習ファイルって複数できたりするんでしたっけ? 普段、学習 OFF なので分からない…。
posted by vagus at 01:16| 東京 ☀| Comment(10) | TrackBack(0) | 日本語入力 - アプリ | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
ibus-pinyin-1.3系列では、
rq=#${year}年${month}月${day}日
みたいな形でリアルタイムの年月日を表示できるようですね。
(たぶん"rq"で変換すると年月日が表示される)
http://code.google.com/p/ibus/
> Support user custom phrases phrases.txt
http://github.com/phuang/ibus-pinyin/blob/master/src/phrases.txt
Posted by ut at 2010年04月22日 05:34
なるほど。
こっちの方がスマートな感じがしますね(さすがに秒までは要らない気がしますが)。

python 分かれば ibus-anthy でも…と思うんですが、当分有り物で凌ぎます…。
Posted by vagus at 2010年04月23日 01:07
alt-depgraphのメンテナンスは終わっているかもしれませんが、
「迷惑そう中尾をしている」のように「形容動詞+そうな」が出にくかったので、
(=迷惑そうな顔をしている)、
adj-verb.depdefに次のエントリを足してみました。
//
@形動ダナ連体形 "そう" St@
@形動ダナ連体形 "そうな" St@
@形動ダナ連体形 "そうな" @_助動「ようだ」
@形動ダナ連体形 "そうな" Hn@形式名詞「こと」
@形動ダナ連体形 "そうな" Hn@形式名詞「せい」
@形動ダナ連体形 "そうな" Hn@形式名詞「ため」
@形動ダナ連体形 "そうな" Hn@形式名詞「もの」
@形動ダナ連体形 "そうな" Hn@形式名詞「わけ」
@形動ダナ連体形 "そうな" Hn@「の」格助(準体)
@形動ダナ連体形 "そうな" @「だけ」副助
@形動ダナ連体形 "そうな" @「ので」接助
@形動ダナ連体形 "そうな" @「のに」接助
@形動ダナ連体形 "そうな" @「ものの」接助
@形動ダナ連体形 "そうな" @「の」終助
@形動ダナ仮定形 "そうなら" Se@
@形動ダナ仮定形 "そうなら" @「ば」接助
//
Posted by ut at 2010年04月24日 09:33
> alt-depgraphのメンテナンスは終わっているかもしれませんが、
終わってるような、終わってないような…
ある程度変更が溜まったら G-HAL 氏に送って、G-HAL 氏の方で更新して貰おうかなと思ってます。patch が幾つもあるのは混乱の元なので。
UTUMI さんの方もそれで問題はないですよね?

> adj-verb.depdefに次のエントリを足してみました。
この辺は難しいところなんですよね…
N 文節最長一致とビタビとやらでも違うでしょうし…
こちらでは「迷惑そうな顔をしている」を例文登録して様子を見てみます

Posted by vagus at 2010年04月25日 01:31
> UTUMI さんの方もそれで問題はないですよね?
問題ないです。というより、
> G-HAL 氏に送って、G-HAL 氏の方で更新して貰おうかな
G-HALさんのご都合の方が問題かもしれません。

> この辺は難しいところなんですよね…
そうですね。足してみたけど誤変換する時は誤変換するし、
副作用がないとも言えません。

しかしGoogle IMEのLinux版要望が多いですね。
http://www.google.com/support/forum/p/ime/label?lid=5d55e2fc5bb6b0c1&hl=ja&sort=popularity
上から4番目に
> Linuxユーザーにこそ必要なものです。

いつか実現するんじゃないかと思っていて、
辞書は繋ぎのつもりで更新しています。
Posted by ut at 2010年04月25日 23:53
> G-HALさんのご都合の方が問題かもしれません。
勿論それは確認しますが、これまでは alt-depgraph を更新すると、G-HAL 氏の方もそれを使ったものに更新されてたので、それを考えると直接送っても同じことかなと。
alt-depgraph 自体、ほぼ出来上がりで、もうそんなに頻繁に更新することはないですし。

尤も、直接送るかどうかはまだ決めかねてるんですが。
考えが日替わりで変るので困る…。

> 辞書は繋ぎのつもりで更新しています。
Google のは「辞書は公開しないかも」とどっかで読んだ気がするので、私がモノが実際に出てきてから考えます。
それに、そもそも辞書に対する考え方が自分とは随分違うようなので、出てきても「かんけーないや」と思うだろうな、という気がしてます。今のところ。
Posted by vagus at 2010年04月27日 00:46
> 尤も、直接送るかどうかはまだ決めかねてるんですが。

G-HALさんのところのものが最新で、
alt-cannadic公式サイトのものが古いとなると、
ちょっと不思議な感じはしますね。

「最新版はG-HAL氏のサイトでダウンロードできます」と
サイトのどこかに書いておけば問題ないのかもしれませんが。
Posted by ut at 2010年04月27日 04:52
> 私がモノが
酔っ払った状態で書いたら日本語間違えました orz
「私はモノが」です。失礼をば…。

それと、大事なことを書き忘れてましたが、手元では「迷惑そうな顔をしている」を例文登録することで正しく出せるようになりました。
文章をちょっと変えるとまた変換できないかもしれませんが。

Posted by vagus at 2010年04月27日 15:48
> anthy で、「きょう?」で日付に変換する
新しい品詞をでっち上げて wtab.h の WF_* に「学習しないフラグ」を追加するのが、
学習してから学習を消す、よりは、スマートでエレガントな気がしますが、
そういう発言は何か自分の首をしめている様な気が……。
# 本気で欲しいと言う方がいらっしゃるのなら、気が向いた時に試してみますが、ほしょうはしません。

> alt-depgraph
私自身が使用しているソースパッケージをそのまま公開する事は可能で、現状はそうなっていますが、それ以上はできませんよ。alt-depgraph単体ですとか、原作版Anthy用版ですとか。

> 「迷惑そうな顔をしている」
用例辞書に追加する手も有ったりします。どの程度効果的なのかは不明ですが。

> Google-IME
OpenBSD版は出ないでしょうから、かんけーないや :-O
Posted by G-HAL at 2010年04月29日 23:55
> # 本気で欲しいと言う方がいらっしゃるのなら
今の所、いなさそうな気配ですね…。
自分も、どっかに「できない」と書かれてたのを見かけて「いや、できなくはないよ」ということを示したかっただけなので。

>> alt-depgraph単体ですとか、原作版Anthy用版ですとか。
いやいや、まさかそんな虫のいいことは考えておりません。
詳しくは後日メールを差し上げますので、もう少々お待ちを。

> 用例辞書に追加する手も有ったりします。
「迷惑」だけでなく、「不機嫌」等他の「な接続あり」の語のこともあるので(つまり、品詞コードレベルのつながりの問題だと思うので)、この場合は用例辞書より例文に登録する方が適切かなと思います。
用例辞書も、折角拡充(?)して頂いたので活用したいのですが、なかなかそこまで手が回りません…。

> かんけーないや :-O
お、同志発見? (笑
Posted by vagus at 2010年05月01日 00:20
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。

この記事へのトラックバック