P Study用中国語単語問題集

CEDICTを使って、P Study 8用の問題集を作ってみた。
変換は以下のRubyスクリプトで行なった。Rubyっぽくないが、ご容赦を。

#!/usr/bin/ruby -Ku

require 'nkf'

class Convert

  def read_file(filename)
    @lines = IO.read(filename) 
  end

  def write_file(filename)
    File.open(filename, 'wb') do |file|
      file.write NKF.nkf('-W -w16L -c', @lines)
    end
  end

  def convert
    kc = $KCODE
    begin
      $KCODE = 'u'
      result = []
      @lines.each_line do |line|
        next if line[0..0] == '#'
        answer = ''
        pronoun = ''
        question = ''
       
        if /^(\S*) (\S*) \[(.*)\] (\/.*\/)/ =~ line
          answer   = $~[2] if $~[2]
          pronoun  = $~[3] if $~[3]
          question = $~[4] if $~[4]
          result.push [answer, pronoun, question].join(',')
        end
      end
      @lines = HEADER + result.join("\n")
    ensure
      $KCODE = kc
    end
  end
 
  HEADER = <<'HEADER'
psscsvfile,100
CEDICT,,

a1,p1,q1
HEADER
end

### main
if __FILE__ == $0
  cv = Convert.new
  cv.read_file ARGV[0]
  cv.convert
  cv.write_file ARGV[1]
end

これをconvert.rbとして、

ruby convert.rb cedict_ts.u8 cedict.csv

とすると、cedict.csvをP Strudyの問題集エディタ(PssEditor 8)でインポートできるようになる。
ただし、このままだと件数が多過ぎて、スムーズ学習できない。1万件以上だと、できないようだ。
頻度が高い単語とか絞りたいんだけど、どこかに中国語単語用のSVL相当なデータとかが落ちてないだろうか。
そういえば、rubyでのNKFの使い方はるびまを参考にしたのだが、出力文字コードについての記述が、UTF-16LE NとUTF-16LE BOMで逆な気がする。