専門用語の辞書を作りたい。そう考えるとPNEのkeywordとかはそのまま辞書の単語として登録できそうなので、引っこ抜いてくることにした。
原型はここを参考にしつつ。
nkfにファイルを渡しすぎて怒られたりしたので、ここを参考にどうにかした。
本体のスクリプト
# -*- coding: utf-8 -*- def extract(str) keywords = [] str.gsub!(/\n/,"") str.scan(/<キーワード>(.*?)<\/キーワード>/).each{|line| line[0].split(//|\//).each{|keyword| # 全角のスラッシュにマッチさせる keywords.push keyword } } return keywords end start_year = 1985 end_year = 2006 Dir.chdir("/Users/yasuhisa/Desktop/pne") (start_year..end_year).each{|year| # ファイルをコピーしてくる puts year system "cp #{year}*/**/*.txt ~/dbcls/pne_keyword/#{year}" } puts "finished copying files..." Dir.chdir("/Users/yasuhisa/dbcls/pne_keyword") (start_year..end_year).each{|year| # sjisからutfに変換 puts year Dir.chdir("/Users/yasuhisa/dbcls/pne_keyword/#{year}") system "ls | xargs -n1 -t nkf -S -w --overwrite" } puts "finished converting file encoding..." keywords = [] (start_year..end_year).each{|year| # keywordを抜き出す Dir.chdir("/Users/yasuhisa/dbcls/pne_keyword/#{year}") Dir.glob("*.txt").each{|f| old = File.open(f,"r") extract(old.read).each{|keyword| puts keyword keywords.push keyword } old.close } } puts "finished extracting from txt..." Dir.chdir("/Users/yasuhisa/dbcls/pne_keyword/") new_txt = File.open("keywords.txt","w") keywords.each{|keyword| new_txt.puts keyword } new_txt.close
これを実行したあとのファイルに「^M」が登場してしまうので
nkf -Lu -w --overwrite keywords.txt
で変換をし
cat keywords.txt | sort | uniq > uniq_keywords.txt
でできあがり。