ラベル 青空文庫 の投稿を表示しています。 すべての投稿を表示
ラベル 青空文庫 の投稿を表示しています。 すべての投稿を表示

2010年11月19日金曜日

作品IDとISBNの対応データ

青空文庫の底本に対するISBN検索結果をダウンロードできるようにしました。
http://aozoranavi.appspot.com/ISBN.zip

ZIPファイルにUTF-8でエンコードしたCSVファイル(ISBN.CSV)が一つだけアーカイブしてあります。ISBNデータが存在する作品だけをリストアップしています。

底本のISBNを検索して紐付け

 青空文庫の底本のISBNをAmazonのProduct Advertising APIで検索して紐付けしてみました。昨夜から、Aozoramazonの作品情報でISBNを表示しています。

  • 公開されている作品数 9617
  • ISBNと関連付けできた作品数 4902 (51%)
  • 関連付けが無い作品数 4715(49%)

関連付けされていない4715作品の内訳。

  • 底本と出版社が書かれている作品数 4550
  • 底本のみで出版社が未記載の作品数 17
  • 底本も出版社も未記載の作品数 148

関連付けできた作品はほぼ半分です。関連付けした作品の一部は手入力ですが(122作品、底本は『龍馬の手紙』)、他は底本タイトル、作者、出版社を指定して検索した結果をそのまま使っています。
 結果の正当性は数が膨大なので確認していません。検索条件に出版年や版数を入れていないので、『人間失格』等のように底本(1952年)と異なる改定版が関連付けられている場合もありますが、無関係の的外れな作品が紐付けされている例はあまり無いだろうと思っています。

毎日未明に走らせている更新スクリプトでもISBNを検索するようにしました。ただし、『海援隊約規』のように底本の著者が青空文庫作品の作者と異なる場合は、関連付けに失敗します。

2010年11月16日火曜日

底本とISBNの紐付け

 青空文庫の底本情報にISBNがあれば便利と書きましたが、公開されているDB項目(data_item.csv)を見たらISBNはありませんでした。Amazonの検索を使えばかなり整備できると思うので、独自にやってみようと思います。底本にISBNが無い場合もあるので、全ての作品を関連付けることは出来ません。でも、一度やっておけばAmazonのAPI呼び出し回数を劇的に減らせるので、Aozoramazonとしては充分にメリットがあります。

2010年11月15日月曜日

青空文庫の底本を検索してわかった事

 Aozoramazonは当初、検索結果が空振り(検索結果なし)だったり、 関係無い書籍がヒットして本来の底本が埋もれてしまう事が今以上に起きていました。底本検索の考え方や、精度向上のために行った工夫を書き残しておきます。


主な 元ネタは公開日に書き込んだtwitterのログです。
http://twilog.org/ThinTube/date-101107


  • 検索は2種類の方法でやっています。基本的にItemSearchという点では共通ですが、条件の与え方が違います。一つはタイトル、出版社、著者を指定した底本検索、もう一つはこれらをキーワードとして同列に列挙するキーワード検索。
  •  出版社名に「xx文庫、xx社」と入力されている場合が多いので、底本検索の検索条件に出版社を渡す場合は「、」の前を全て削除します。さもないと、まずヒットしません。
  • 文庫名と類似する問題ですが、底本名に著者名を入れてしまっている場合があり、これも検索の障害になります。最近登録された例では、「龍馬の手紙、宮地佐一郎」があります。作品に登録されている著者と書籍の著者が異なるのですが、底本情報に著者の項目が無いため、他の項目に紛れ込んでいます。底本のタイトルに読点を含む他の作品に影響するため、一概に「、」以降を削除する訳にも行きません。この対策は諦めて、キーワード検索にマッチする事に望みを繋いでいます。
  • 底本に「第五巻」とあるのをそのまま渡しても、AmazonのAPIでは大抵ヒットしません。Amazonでは「第5巻」のように巻数がアラビア数字になっている場合が多いです。そのままの底本名でヒットしない場合は漢数字をアラビア数字に置き換えて検索します。定量的に調べてはいませんが、これでずいぶんヒット率上がりました。あと、「巻」を省略することでヒットする事もあります。
  • 底本優先で探すので、Titleの条件は底本名の次に作品名をトライします。次に作品名をTitleとして検索します。
  • 底本がヒットしないとキーワード検索で適当に探します。新しい発見という意味では、その方が作品との出会いは増えますが、青空文庫の作品選択を助けるという意味では脱線気味です。
  • 底本検索は出版社と著者を指定するので、割と確度が高いです。それに比べるとキーワード検索はいいかげん。でも、底本が見つからない場合は仕方ないので表示しますし、関連商品との出会いも楽しいといえば楽しいので、作品毎のページでは両方を表示します。
  • 底本の情報にISBNがあれば、検索はとても楽、というか、検索するまでもなくカーリル等の書籍情報をダイレクトに表示できるはずです。 
  今でも検索結果が18禁のオンパレードとか、笑顔が引きつりそうなページを表示してしまう事が多々あります。Amazonの検索結果には対象年齢の情報もあるっぽいので、よい子が見ても大丈夫なように、そのうちフィルタリングをしようと思います。

2010年11月11日木曜日

青空文庫の第3第4水準漢字注記をUnicodeに置き換える

 最近はWindowsもMacもJIS X 0213の第3第4水準を表示できるようなので、Aozoramazonで表示する作者名や作品名に含まれている青空文庫の注記をUnicodeに置き換えるようにしました。

で、そのために作ったPythonの変換モジュールとテーブルを置いておきます。

 コメントに書いてありますが、テーブルの元データはProject X0213からダウンロードしました。

2010年11月9日火曜日

50音別インデックスを追加

 Aozoramazonの作者別ページに、作品名の50音別インデックスを追加した。昨日の段階では実装途中だったので、選んだ文字で始まる作品が無い「外れ」ページがあるにもかかわらず、その存在が分かりにくかった。その後、作者毎に有効な作品名頭文字を予め調べておいて、有効な文字を強調表示するようにした。
 Aozoramazonの開発は、ここまでで一段落。作品長マップとか構想はあるけど、UIをどう用意するかまるで考えてないし、今すぐには取り掛かる気分じゃないのでまだやれない。

 本当は、「作品ページに表示されるQRコードを携帯で認識させるとiアプリをオンデマンドで生成してダウンロードできる仕組み」とかも作りたいけど(一度やってるのでたぶん作れるけど)、さらにハードルが高いので相当気合を入れないと無理。

2010年11月8日月曜日

作品一覧にキーワード検索を入れるか否か

 キーワード検索の結果にノイズが多いと思って、新着と作者別の作品一覧にキーワード検索を入れるのをやめてみた。結果、「龍馬の手紙」が完全に空振り。理由は、登録されている底本のタイトルが「龍馬の手紙、宮地佐一郎」で、著者名をタイトルの一部としてしまっているため。底本検索では、
  • Title
  • Author
  • Publisher
の全て、またはAuthorかPublishを省略した2つを検索パラメータに指定してProduct Advertising APIを読んでいる。Titleには青空文庫の作品名または底本タイトルを渡す。
「龍馬の手紙」は、Amazon上では
  • Author: 宮地佐一郎
  • Titel: 龍馬の手紙
であるため、いずれのパラメータの組み合わせでもヒットしない。ちなみに、ヒットしなかったパラメータの組み合わせは以下の通り。
{'Publisher': '講談社', 'Author': '坂本 竜馬', 'Title': '龍馬の手紙、宮地佐一郎'},
{'Publisher': '講談社', 'Title': '龍馬の手紙、宮地佐一郎'},
{'Publisher': '講談社', 'Author': '坂本 竜馬', 'Title': '手紙 109 慶応三年九月二十七日 本山只一郎あて'},
{'Publisher': '講談社', 'Title': '手紙 109 慶応三年九月二十七日 本山只一郎あて'},
{'Title': '龍馬の手紙、宮地佐一郎', 'Author': '坂本 竜馬'},
{'Title': '手紙 109 慶応三年九月二十七日 本山只一郎あて', 'Author': '坂本 竜馬'}
どの組み合わせを取ってもAmazonの商品情報と一致しない。

 根本的な問題は、青空文庫の底本情報が底本タイトル、出版社、発行日しか無いこと。この限られた項目の中に底本を特定するための情報を無理やり入れているため、出版社に「新潮文庫、新潮社」と出版社名以外の情報を入れたり、タイトルに編集者名を入れてしまう事になる。著者は作品の作者と同じだろうという前提で項目を省略しているのだと思うが、書籍となった場合は商品としての著者・編者は原作品の作者と異なってしまうこともある。
 出版社の方は比較的問題は簡単で、出版社名に句読点が入ることは常識的に無いので、「、」より前の部分を削除するとだいたい正確にマッチする。タイトルは自由度が高いので、そうはいかない。

 「龍馬の手紙」に限って言えば、「、」以降を削除することで検索が成功するだろう。しかし、このような一部の作品に特化した加工をすると、他の作品の検索でぼろが出る気がする。タイトルについてはこれ以上深入りはしない事にして、作品一覧上にキーワード検索を表示する動作に戻そうと思う。

2010年11月6日土曜日

AozoramazonをAjax化した

 レスポンスの遅さ問題を緩和するためのAjax化を完了。作品リストに遅れて検索結果が現れるようになった。

 サービスの名前は、当初は青空ナビにでもしようと思ったが、ナビと言えるほど案内機能が充実していないので、青空文庫とAmazonをつなげる意味で、単純に名前を連結してAozoramazonとした。

 誰も見てないと思うけど、ここ

2010年11月4日木曜日

Amazonへのリンクが一応できた

 青空文庫の作品に関連するAmazon商品情報をリストアップする仕組みが大体できた。作者毎の作品リストで、各作品の底本とキーワード検索結果の画像を列挙し、画像からAmazonへリンクされるようになっている。
 これから作らなければならないもの。
  • タブメニュー
  • 新着情報
  • レビューのポップアップ
  • 作品単位のページ。今は青空文庫の作品カードへジャンプするが、関連商品の検索結果を経由するようにしたい。
  • 作品長、作品数で作家を分類してマッピングする仕組み。ジャンル関係なし、読むのに必要な時間をキーにしてエイヤッ!で選ぶような感じ。
  • 背景を実写青空写真に変更。
  • ロゴ画像

2010年10月23日土曜日

青空文庫リストDBの再構成

 青空文庫の作家別作品一覧CSVから作家リスト、作品リストを再構成するスクリプトがだいたい出来た。「翻訳者名等」のカラムが曲者で、作者不詳の外国作品等で翻訳者と著者を兼ねる人が居る、編集者もここに入るが翻訳者との区別がつかない等が問題。編集者としての存在は今のところ1作品だけなので無視して、著者と翻訳者しか居ないという前提で矛盾無く扱える手順はできた。
 CSVにはWeb上で公開されている読み仮名などの情報が無いので、各著者、作品毎に青空文庫をスクレイピングして情報を追加した。読み仮名はソートで必要になるし、生誕日がわかれば「今日はどの作家の誕生日」というトピックでお勧め作品のリストアップができる。没年月日も取り込んだけど、これは使わないだろうな。

 スクレイピングは、当初はBeautifulSoupを使っていたが、パースエラーが時々起きる上に、回避手段としてblog等に載っているhtml5libを使う手段が実はhtml5lib側で拒絶されてる事がわかり、lxmlを使う方法に改めた。結果、回りくどいやり方で取り出していた文字列がXPathを使って一発でできるようになり、パースエラー回避以外にもメリットがあった。lxmlはGAE上では使えないようだが、あちらではスクレイピングはしないだろう。

2010年10月20日水曜日

青空文庫の作品リスト

Amazon以前に青空文庫の作品リストにアクセスできる必要がある。
公開されているzipファイルをgetして展開し、csvをカラムに分解する部分は出来た。

JIS第3水準、第4水準の文字は、csvの中でも作品テキストと同様のマークアップがなされているが、これは後回し。まずはGAEのDatastoreで読み書きできるようにする。

2010年10月18日月曜日

青空文庫とAmazon

 昔、青空文庫のテキストをビューアと一緒にアプリ化して配布するサイトを運営していた事がある。当時、ユーザーから直接あるいはblog等で間接的に指摘されていたのが、「作品を選ぶ判断材料が無い」という事。作家とタイトルがあるだけで、読んでみるまで作品の概要も評判も分からないのである。
 ダウンロード数でソートする程度の事はできていたが、さほどアクセス数の多くないサイトだったので、指標としては当てにならない。おそらく、作家の名前を聞いたことがある程度の理由でダウンロードされた作品がほとんどだろうと思う。

 今、不本意ながら自由に使える時間が倍増したので、この機会に青空文庫タイトルとAmazonをつなぐサービスを作ってみようと思う。ヒントになったのは、今春公開されたカーリルである。カーリルは、図書館横断検索を統一的で使いやすいインターフェースで提供すると同時に、Amazonの持っているイメージやレビューを表示してくれる。自分としては、Amazonのユーザーズレビューが、その本を借りて読むべきか否かを判断する上で大いに役に立っている。カーリル出現以前は、Amazonを見てから図書館のネットサービスで予約するという手順を踏んでいた。これをワンストップの使いやすいインターフェースで実現して見せたカーリルは、私にとって衝撃的だった。

 図書館の蔵書をwebで予約する人は、借りてみるまで自分が求めている本であるかどうかわからない。カーリルがその判断材料をAmazonに求めたように、青空文庫とAmazonとリンクしたサービスがあれば、大量の作品を目の前にして作品選択に迷う人の役に立つのではないかと思う。