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で逆な気がする。