かんなの辞書を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: 492,
today: 2,
yesterday: 0
初版日時: 2003-08-29 (金) 23:54:40
最終更新: 2009-11-17 (火) 00:00:00 (JST) (660d) by ゲスト
|
ぺージ情報 | 閲覧可 | 編集可 | |||
|---|---|---|---|---|---|---|
| ぺージ名 : | かんなの辞書をOSASKで使うためのメモ | グループ : | すべての訪問者 | グループ : | すべての訪問者 | |
| ページ作成 : | ゲスト | ユーザー : | すべての訪問者 | ユーザー : | すべての訪問者 | |
| ページ別名 : | 未設定 | |||||
