電子辞書道楽(その4)
7月 2nd, 2003(前回からの続き)
試しに、ランダムハウス英語辞典(Amazon)に収録されている単語から、綴りの長いものを探してみることにした。
Jaammingの[環境設定]→[全体]→[最大表示数]を「50000」くらいにする。前方一致検索で「a」と入力すれば、「a」で始まる単語がすべてリストアップされる(言い忘れたが、JammingではEPWINGなどの辞書と同じようにランダムハウス英語辞典も扱える)。[Ctrl]+[B]を押して、リストの単語をクリップボードにコピーし、テキストエディタなどに貼り付ける。これを「a」から「z」まで繰り返せば、ランダムハウス英和辞典に含まれる見出しがすべてコピーできる。アクセント記号付きのアルファベットは外字で表示されているので、テキストエディタに貼り付けると化けてしまうが、まあとりあえずここでは無視しておく(検索結果をインデックスで表示すれば文字化けは起こらないが、その場合慣用句のスペースも詰めて表示されるので、どこまでが1単語かわからなくなる)。できたテキストデータから、音節の区切り(0xa5)と「ランダムハウス英語辞典」という文字列は削除しておいた。
この見出しリストを、次のようなRubyスクリプトに通す。これは、単語を文字数の多い順に並べるための超適当なスクリプトだ(スペース・カンマで区切られた項目は、最初のスペース・カンマの直前までを1つの単語としている)。
・lengthsort.rb
list = Array.new while line = $stdin.gets /^([^ ,]+)/ =~ line # 最初のカンマかスペースの直前までを一語とする。 list.push($1.chomp!.to_s) end list.sort!{ |a, b| b.length <=> a.length } list.each { |x| print x,"\n" }
(※本当は、外字を2バイトで1文字として扱わなければいけないのだけど、今回は適当に遊んでみるのが目的だったので、あまり厳密にやっていない。)
Windowsのコマンドプロントなどから、「ruby lengthsort.rb < 作成した見出しファイル > 出力するファイル」と入力すればいい。
外字が文字化けしているけれど、一番長い単語はやはり”pneumonoultramicroscopicsilicovolcanoconiosis”で、その次に”supercalifragilisticexpialidocious”が来ている。これは、「子供が賛意を表すため、あるいは英語で最も長い語を表すために用いる無意味な語」だそうだ。(続く)