慣用句のSKK辞書を作ってみる
ポケモン辞書から一転して実用的なSKK辞書でも作ろうと思い、慣用句辞書を生成してみた。
慣用句は複数の文節から成るが、脳内ではatomなので単語変換のSKKでも一発で変換できるべきだ。そう考えたのがきっかけ。
http://www.geocities.jp/tomomi965/が内容的に一番充実していて、ふりがなまで振っているから辞書生成にはうってつけのサイト。とにかく内容の充実ぶりには驚くばかり。ふりがなをつけるのは面倒だったと思うが、こういう形で二次利用に生かされる形になった。
どうもありがとうございます。
ここに置いたんでもってけ!
http://www.rubyist.net/~rubikitch/archive/SKK-JISYO.kannyouku
以下のスクリプトで生成。
#!/usr/local/bin/ruby -Ke require 'open-uri' require 'kconv' pages_data = [ [1..20, "http://www.geocities.jp/tomomi965/ko-jien01/a%02d.html"], [1..22, "http://www.geocities.jp/tomomi965/ko-jien02/ka%02d.html"], [1..19, "http://www.geocities.jp/tomomi965/ko-jien03/sa%02d.html"], [1..20, "http://www.geocities.jp/tomomi965/ko-jien04/ta%02d.html"], [1..11, "http://www.geocities.jp/tomomi965/ko-jien05/na%02d.html"], [1..17, "http://www.geocities.jp/tomomi965/ko-jien06/ha%02d.html"], [1..14, "http://www.geocities.jp/tomomi965/ko-jien07/ma%02d.html"], [1..6, "http://www.geocities.jp/tomomi965/ko-jien08/ya%02d.html"], [1..5, "http://www.geocities.jp/tomomi965/ko-jien08/ra%02d.html"], [1..2, "http://www.geocities.jp/tomomi965/ko-jien08/wa%02d.html"], ] PAGES = pages_data.inject([]){|ary, (range, fmt)| ary.concat range.map{|x| fmt % x }} class String def untag! gsub!(/<.+?>/, '') end end def gather entries = [] PAGES.each do |page| html = URI(page).read.toeuc html.scan(%r!^ +・([^<]+?)</B>((.+?)).+$!).each do |kanji,kanas| kanji.untag! kanas.untag! kanas.gsub!(/、/,'') next if kanji =~ /^[ぁ-んァ-ンー]+$/ next if kanas =~ /〜|[ァ-ン]/ kanas.split(/・/).each do |kana| entries << [kana, kanji] end end sleep 1 end entries end def generate_skk_entry(ary) entries = [ ";; okuri-ari entries.\n", ";; okuri-nasi entries.\n" ] entries.concat ary.map{|kana, kanji| "#{kana} /#{kanji}/\n" }.sort end puts generate_skk_entry(gather())