かんなの辞書をOSASKで使うためのメモ
注意:(´_ゝ`)が勝手に調子にのってやってるだけですので、あまり深く気にしないでください。
テキスト形式のかんな辞書ではできましたが、他の辞書ではどうやるのか知りません。
例として、とりあえずhttp://omaemona.sourceforge.net/packages/Zisyo/から、2ch.tを持ってきます。注意:03/08/27に更新されていますが、最近のものでは試していません。
$ vi 2ch.t
ddコマンドでコメント行を削除し、
:%s/#[^ ]*/\t/g
で整形する。viじゃなくてもいいと思う。
$ qkc -sm 2ch.t
で文字コードを合わせる。
OSASKのFDを挿入。
$ mount /mnt/floppy
$ cp /mnt/floppy/te_dict0.txt ./
$ cat te_dict0.txt 2ch.t > /mnt/floppy/te_dict0.txt
$ umount /mnt/floppy
再起動して、あとは!guide!.txtでも読んでください。
お叱り
- そういえばte_dicv0.binしたときに、error:insertとかたくさんでてたな。。。いちおう使えてますが、なんか多分間違えてます。馬鹿か?>自分 -- (´_ゝ`) 2003-08-29 (金) 15:32:37
- うーん!。これはなかなか面白い試みですねぇ。私も早速試してみよう。 -- hideyosi 2003-08-29 (金) 15:42:30
- そのエラーは同じ読みを検出したというエラーだと思います。心当たりはありますか? -- K 2003-08-29 (金) 15:50:29
- すみません。よく意味が分かりませんでした。できた辞書は使えることしか試してないもので。。オリジナルのte_dict0.txtには「入出力」や、「防衛」の行が重複しているようですが。。 -- (´_ゝ`) 2003-08-29 (金) 15:57:21
- すみません、おっしゃるとおりでした。重複はまずいのですが、それはerror:insertにはならないようです。・・・ちょっとまじめに調べてみました。そのエラーが出るのは、次のうちのどれかです。 -- K 2003-08-29 (金) 16:33:41
- 1.辞書サイズが僕の想定限界に近くなりすぎた(256KB)。2.変換対象のひらがなはあるが、変換先の漢字(漢字ではなくてもいいが)がない。3.一つの読みに対して、変換候補が多すぎる(最大60)。・・・ありそうなのは容量オーバですかね。重複削ればサイズは減りますし、要望があれば上限をもっと増やすこともできます。 -- K 2003-08-29 (金) 16:39:48
- 重複についてですが、例えば「あらし」が2ch.tでは次のように登録されています。 -- K 2003-08-29 (金) 16:46:06
あらし 荒らし あらし 荒ら氏 あらし 荒氏 あらし 新氏 あらし 嵐
- さらに読み「あらし」については、te_dicv0.txtにもあります。
あらし 嵐
- この結果、おそらく「あらし」を変換しても、この中のどれか一つしか変換候補に出てこないでしょう。もしこれを全部有効にしたければ、これらを一つにまとめる必要があります。
あらし 嵐 荒らし 荒ら氏 荒氏 新氏
- こうすればちゃんとこの順序で候補が出てきます。この辺の処理をやってくれるフィルターを作ればいいんですが、僕には面倒で・・・。
- 将来的には読みの重複もエラーにする予定です。もっとも、それより先に用言活用対応辞書にアップグレードするかもしれませんが(その場合でも、今の辞書はそのまま利用できるようにする予定です)。 -- K 2003-08-29 (金) 16:55:14
- 同じテキストファイル中で、同じ候補が縦にならんでいるのならば、Perlかなんかでちょちょっとやればすぐでは?ちなみに、現在のteditの辞書はSKKの辞書を整形したものに、川合さんが手を加えているかたちですね。 -- くーみん 2003-08-29 (金) 18:49:49
in_ar = [] while instr = gets in_ar << instr.chomp end in_ar.sort! hl = "" pt = "" in_ar.each {|s| if s != "" then if /^([^\/\s]+)(\s+)(.+)/ =~ s then key = $1 sth = $3 hl = key if hl == "" if hl == key then if pt == "" then pt = sth else pt = pt + " " + sth end else print hl + "\t" + pt + "\n" pt = sth hl = key end end end } print hl + "\t" + pt + "\n" if hl != ""
適当に名前を付けて(とりあえず tdicm.rb )保存、コマンドラインで以下のように実行。ファイルに入れる場合はリダイレクトかまして。
ruby tdicm.rb old.txt
Counter: 251,
today: 1,
yesterday: 0
初版日時: 2003-08-29 (金) 23:54:40
最終更新: 2009-11-17 (火) 00:00:00 (JST) (349d) by ゲスト
|
ぺージ情報 | 閲覧可 | 編集可 | |||
---|---|---|---|---|---|---|
ぺージ名 : | かんなの辞書をOSASKで使うためのメモ | グループ : | すべての訪問者 | グループ : | すべての訪問者 | |
ページ作成 : | ゲスト | ユーザー : | すべての訪問者 | ユーザー : | すべての訪問者 | |
ページ別名 : | 未設定 |