今回もほとんどメモの小技です。悪しからず…
モチベーション
ライフサイエンスの略語を調べる時にとっても便利なAllieというサービスがあるのですが,
もっと多くの人に知ってもらいたいということで,略語のURL Listを作りました。
Allieとは?
以下引用です。
Allie(アリー)は生命科学分野において利用されている略語とその展開形を検索するサービスです。文献中に多く出現する略語は多義語であることが多く、特に専門外の読者には理解するのに困難を伴うことがあります。 Allieはこの問題に対する一つの解となるよう開発されています。 Allieは米国国立保健図書館(National Library of Medicine, NLM)の生物医学分野における書誌情報データベースであるMEDLINE®に含まれる全ての題目と要旨を対象として略語とその展開形を検索します。 MEDLINEは2000万件を超す書誌情報を収めており、実際の文献中に出現する領域固有の略語とその展開形を抽出するのに相応しいものとなっています。
詳しくは,こちら。(からご利用ください。)
もっと多くの人に使ってもらうためには?
Sagaceの経験上,クエリのリンク集を作っておくことが,検索エンジンのロボットさんにとっても良いらしいということが,わかったので,リストを作りました。こちらから,データをダウンロードして使いました。
(こうしたクエリのリンクのリストがあることで,ロボットがそのページがリンクされているということと,そのページが,何に関するページなのかということが分かるので,検索結果に良い影響を与えているらしいのです。検索エンジン経由でサービスを発見してくれる人の多さは侮れないので,今回SEO対策的にリストを作ってみたということです。略語を大手の検索エンジンで調べた時に,Allieの結果が上位に来たら,ハッピーになる人が増えるのではなかろうかと。)
10万行ごとに出力するファイルを変更するプログラム
最初に取得したデータをタブ区切りで配列に入れ,略語だけ取り出します。重複を除いたあとは,ループでまわして出力しています。その際に,出力するファイルを区別したかったので,最初にfilename = 'alice_url_0.txt'
とした後に,10万個ごとにファイル名を変更しその中に出力しています。
lineabAry = []
File.open("alice_output_130107.txt"){|file| #読み込み
while line = file.gets
lineAry = line.split("\t") #タブ区切り
lineabAry << lineAry[6].chomp
end
}
lineabAry.uniq!
filename = 'alice_url_0.txt' #最初のファイル名
lineabAry.each_with_index{ |elem,i|
if i % 10000 == 0 #10万個ごとにファイル名を変更する。
if i != 0
filename = "alice_url_" + i.to_s + ".txt"
end
end
File.open(filename,'a'){|f| #追記の"a"でする。
if i % 10000 == 0 #markdown形式の表を出力する。最初の行に説明を入れる。
f << "| Abbreviation | Allie URL |\n|:----------:|:------------:|\n"
end
f << "|"+ elem +"|[http://allie.dbcls.jp/short/exact/Any/"+ elem +".html](http://allie.dbcls.jp/short/exact/Any/"+ elem +".html)|\n"
}
}
リストが出来たよ
出力したファイルをアップしたら,こんな形で,リストが出来ました(≧∇≦)/ 分割したリストのページに飛べるページはこちら。