症例で見る!知識情報・図書館学類おさんぽマップ

この記事はポエムklis advent calendarの20日目の記事です.

 知識情報・図書館学類は文理融合を謳っており,そこには様々な種族の人々が集まります. 入学当初の思惑のまま進路を進む人がいれば,そうではない人もいます.
例えばは司書になるためにこの学類に入りましたが,今は機械学習の門を叩いています.

このエントリは,

「図書館学類にきちゃったけど図書館面白くないぞ...?」

とか

「図書館の勉強しに来たはずなのになんでプログラミングしてるんだ...?」

となっている人に向けて,その後の対処法を考える一つの参考になることを目的として作成しました.

 自分の経験を元にしているので,図書館系(情報経営・図書館主専攻)とシステム(知識情報システム主専攻)に関する話題がほとんどです. 知識科学主専攻については他の先輩に聞いてください.

図書館のことを学びたくて来たのに図書館への興味がなくなった

 悲しい話ですが,比較的よく聞く話でもあります(先述の通り僕もその内の一人です). しかし,この学類には図書館を学ぶ以外にも道があります.この学類には三つの主専攻があります.少し主専攻の話をしましょう.

 知識情報システム主専攻は最もプログラミングとともに過ごす時間が多い主専攻だと思います.ただし,システム主専攻だからプログラムをガンガン作るとはかぎりません. プログラミング演習を通してプログラミングに関心を持ったら主専攻ホームページを覗いてみると良いかもしれません.

 知識科学主専攻はとても広範な領域を扱っています. 図書館もプログラミングも嫌いだ!という方も面白いテーマに出会えるかもしれません. ホームページはこちら

プログラミングのことを考えると夜も眠れなくなる(悪い方)

 山場は1年生のプログラミング演習,2年生の知識情報演習です.友人を頼るなどして死ぬ気で生き残りましょう. KLCや先輩,他の学類の友人など,頼れるものはなんでも頼るべきです.総力戦です. ただし答えをそのまま教えてもらうことはあまりオススメしません. 図書館一筋でも,プログラミングが必要になってしまうことがあるかもしれないからです.

プログラミングのことを考えると夜も眠れなくなる(良い方)

 コードを書きましょう.また,書いたコードを積極的に公開すると良い気がします.
GitHubなどを使ってコードを公開すると優秀な人がコメントをくれたりします .*1

図書館についての勉強をしたすぎて心が荒む

 本学類の学生・教員は後輩にとても優しいです.積極的にコンタクトを取ってみると良いのではないでしょうか.
 また,本学類の学生・教員には図書館業界で有名な方が多いです.教員・上級生のコミュニティに潜り込むと図書館業界との距離が近づくかもしれません.

もっと情報系っぽいことしたくなってきちゃった

 システム主専攻は数学ができなくても生きていけます. 逆に言えば自分で何かしないと永久に数学的な知識が増えることはありません.
しかし,幸いなことに筑波大学は総合大学です.他の学類の授業に潜り込むことで数学を学ぶことができます.

 とにかく数学をしましょう.誰がなんと言おうと数学をしましょう.
この結論に至った時,僕はすでに3年生になってしまっていました.もう間に合わないかもしれないと半泣きになりながら日々を過ごしています.

この苦しみを共有するのは悲しいです. 有志がklis math clubを作ってくれました.興味があればご参加ください.

 繰り返しますが,筑波大学は総合大学です.極めて多くの分野に関する授業があります.興味がある分野があるなら授業を覗きに行くべきだと思います. この学類のカリキュラムはあまり厳しくないので,自分で必要な知識を得る努力をしましょう.(めちゃくちゃ耳が痛い)

 要約しましょう.

  • 図書館に興味が持てなくなっても悲観しない
  • 興味がある分野があったら他の学類を覗いてみる
  • 自分で勉強する

これができなかったから僕は今苦しい思いをしています. 専攻迷子のみなさんがんばりましょう.

*1:フォローしてくれても良いんですよhimkt on GitHub

図書館資料の自動分類(初級編)

「主専攻に迷って生きるのが辛いklis2年生の選択肢は神に委ねられた...」

gist.github.com


この記事はklis advent calenderの12日目の記事です。 www.adventar.org

まずはこちらの記事をごらんください。
タイ性風俗本購入に「出エジプト記」を旅行記に分類、海老名のTSUTAYA図書館が酷すぎて「#海老名市図書館風に分類してみる」タグまで登場 | BUZZAP!(バザップ!)

つぎにこちらのツイートをごらんください。

どういう方法で分類したらこうなるのかよくわかりませんが、私は機械によって自動的に分類を行っているのでは?と考えました。
「とかげ」は比較的多くの日本人にとっては「文学作品」かもしれません。 しかし、「とかげ」という単語が最も多く出現するのは、動物学を擁するNDCの第一分類「4」であるだろうというのはなんとなく直感に則している気がします。

というわけで、このエントリーでは実際に図書館のデータを使って単語の出現頻度に基づく分類モデルを作ってみます。 作成したモデルを用いて書名から日本十進分類法の第一分類記号を予測してみることにします。

データ

まずはモデルを作るためのデータをどこかから集めてくる必要があります。国内で図書館APIといえば国立国会図書館のNDL APIが思い浮かぶかもしれません、しかし、今回は国立情報学研究所CiNii BooksのAPIを使います。(楽だった)

NDC10の第1分類(0から9まで)の各150,000件のデータを収集します。合計で1,500,000件のデータを取得することができました。

なお、このデータ収集を、皆さんが手元の環境で実行してみようと思ったとき、クロール先のサーバに負荷をかけていないか、よく確認してください。 このコードでは17行目と31行目でそれらしいことをしています。

gist.github.com

辞書の追加

次に、収集したデータを形態素ごとに分割します。例えば、IPAの辞書では、「社会学」という単語を「社会」「学」に分割してしまいます。
しかし、「社会学」は書名に出現した時は固有名詞な気がします。 というわけで固有名詞をmecabの辞書に追加します。
今回はwikipediaの見出語を用いてmecabの辞書を訓練することにします。

wget http://dumps.wikimedia.org/jawiki/latest/jawiki-latest-all-titles-in-ns0.gz
gunzip jawiki-latest-all-titles-in-ns0.gz

レコード数

wc jawiki-latest-all-titles-in-ns0
1587088  1587086 35503019 jawiki-latest-all-titles-in-ns0

コンバータ gist.github.com

辞書のビルド

.localに自分でビルドしたmecabのとき

.local/libexec/mecab/mecab-dict-index \
-d .local/lib/mecab/dic/ipadic \      
-u .local/lib/mecab/dic/wiki.dic \
-f utf-8 -t utf-8 dic_wikipedia/wikidic.txt

homebrewでインストールしたmecabのとき

/usr/local/Cellar/mecab/0.996/libexec/mecab/mecab-dict-index \
-d /usr/local/Cellar/mecab-ipadic/2.7.0-20070801/lib/mecab/dic/ipadic \
-u /usr/local/Cellar/mecab-ipadic/2.7.0-20070801/lib/mecab/dic/ipadic/wiki.dic \
-f utf-8 -t utf-8 wikidic.txt

形態素解析する

書籍のタイトルを形態素ごとに分割しましょう

wakati.rb · GitHub

ここまでで、形態素がどの分類記号のもとにどれくらいの頻度で出現するかを示す行列が出来上がりました。
f:id:h1mkt:20151210010240p:plain

(出現した形態素の種類 x 10(NDCの第一分類の種類))の行列です。

予測する

それでは張り切って「とかげ」がどの分類になるか、実際に予測してみましょう。
f:id:h1mkt:20151210010528p:plain

やはり我々の予想通り、NDCの「4」に分類....されませんでした。
この分類器はきちんと「とかげ」を文学作品であると判定しました。優秀ですね。ぱちぱちぱち。
理由はちょっと考えるとわかります。

テストする

さて、この分類器はどれだけ汎化性能を持っているのでしょうか?
今回各分類ごとに15万件ずつのデータを収集したので、10万件ずつを訓練データ、5万件ずつをテストデータとして性能を評価してみます。

gist.github.com

f:id:h1mkt:20151210011329p:plain

正解: 187581
不正解: 312419
精度: 約38%

ランダムに予測するなら10%なので、タイトルは多少のヒントにはなるようです。

まとめ

やっつけ仕事感がありますが、形態素の出現頻度に基づいて資料のタイトルから日本十進分類における第一分類を予想してみました。
単純なモデルだと微妙な感じですね。

多クラス(one vs all)なロジスティック回帰モデルを作るともう少し精度が上がりそうなので、暇があったらやってみようと思います。

ピクシブに、いった

ピクシブ株式会社で開催された、summer boot camp (いわゆるインターンシップ) をしてきました。レポートします。

インターンの期間は2週間、参加者総合職・技術職を合わせては26人、4チームに別れて課題に取り組みました。 AndroidチームとiOSチームがそれぞれ2チームずつ、僕はiOSでした。

選考

私はGitHub選考という区分でインターンに応募しました。GitHub選考とはその名前の通り、自身のGitHubリポジトリで合格不合格が決まる選考です。応募は5分も掛からずに終わります。ちなみに、僕のGitHubアカウントはこんな感じ。周りの人がめちゃめちゃ強かったしどうして僕なんかが合格できたんだろう...次回インターンに申し込みたいけどGitHub選考は自信がないな...なんて思っている人も応募してみるべきだと思います。

課題

課題は大きく分けて2つありました。1つはプログラムを書かない課題、もう1つはプログラムを書く課題です。

1つ目の課題

プログラムを書かない課題では、グループのメンバーと一日中議論をしてました。ああいう体験は個人でプログラミングをしているだけでは絶対に得られないものだなぁと思っています。

2つ目の課題

プログラムを書く課題では、SNS系のiOSアプリを作りました。僕はRailsAPIサーバを開発してました。ピクシブにはRailsを使ったAPIサーバ開発のノウハウがあり、大量の知識を盗むことができました。めちゃ楽しかった。

エンジニア講義

ピクシブインターンでは、ほぼ毎日社員の方々が講義をしてくださる時間が設けられています。経営に関する話から技術に関する話まで本当にいろいろな話を聞くことができました。特にFromAtomさんのアプリ開発に関する講義とgeta6さんのReact x Fluxの講義が印象に残っています。最高。

オフィス環境

実際に作業するにあたって、オフィスの環境はとても大切ですよね。ピクシブのオフィスは作業環境も快適でした。オフィス全体が明るくてカラフルで、大きなデスクと高級なデスクチェア(Baron)を使えて時間の経過を忘れてコード書いてました。 フリードリンクとフリー味噌汁も良かった。チームのミーティング中みんなで味噌汁飲んだりしてた。

開発

APIサーバを作るのは初めてだったのでかなり不安でしたが、メンターさんのおかげで無事に完成させることができました。 結局iOSチームなのにSwiftを書かずにひたすらRubyを書いてました。

得たこと

技術的なこと

Ruby力の高い社員さんのおかげでRubyに関する知見が溜まりました。APIサーバ、あんなに簡単に作れるとは思いませんでした。 あと、社員さんの中にはVim力の高い人がたくさんいたので、私のVim力もけっこう上がったと思います。

技術以外のこと

インターン期間中、技術的なことをエンジニア以外の人に伝えることを必要とされました。 何を実装するのか、それにはどれくらいの時間がかかるのか。何を実装しないのか、またどうして実装しないのか。 限られた時間の中で与えられた課題を達成するためにはそういった実装以外のことにも力を注ぐ必要がありました。

総括

もっといろいろ書きたいんだけど(というか下書きにはもっといろいろ書いてあるんだけど)、書けば書くだけ文章が崩壊していくのであまり深くは書きませんでした。 議論を尽くし共に開発したチームのメンバー、つまずいたときに瞬時にヒントをくださったメンターさん、そして競いあった他のチームのみなさん、インターンに関わってくださった全ての社員のみなさんに感謝します。素晴らしい機会でした。 これからも様々なものを作って、成長していきます。どこかで出会ったらその時は宜しくお願いします。 聞きたいことがあったらhimktまでどうぞ。

極性分析ツールPolarisをrubygemにした

しました。

github.com

こんな感じです。

極性分析は、現在タグ付きの文章データを用いて学習したモデルを用いて行われていることが多いように思います。

しかし、別のアプローチとして、単語ひとつひとつに着目したアプローチもありそうです。このアプローチで分析をしているのがpolarisです。

言語処理のための機械学習入門の著者である高村先生の研究で作成・公開されたデータを用いています。

PN Table

本エントリは、polarisのrubygem化を報告するものです。

gem install polaris-nlp

で簡単にインストールできます。 データベースを構築するために、初回は

require 'polaris/nlp'
Polaris::Nlp.init

というrubyスクリプトを実行する必要があります。

OSXでもタイル型Window Managerを使いたい

使いたいですよね?

そんな時はAmethystを使いましょう。

brew-caskを導入すれば簡単にインストールできます。

brw-caskはGUIアプリケーションのパッケージマネージャです。

もしbrew-caskをインストールしていない場合は

brew install caskroom/cask/brew-cask

でインストールしてください。

Amethystをインストールします。

brew cask install amethyst

インストールできたらアプリケーションをクリックして起動します。

sf:id:h1mkt:20150823201623p:plain

あとはアプリケーションに導かれるままに設定をして導入完了。

メンテナンスもされていて良い感じだと思います。

図書館情報学を学んだけど図書館に就職したくない人はCDOに向いているかもしれない?

はじめに

以前、

satkap.hatenablog.com

という、とても面白いエントリを目にしました。 本記事はこちらのエントリを読んで思いついたものです。 こちらのエントリは司書課程についての話をしていますが、こちらは図書館情報学についての話をします。

本題

私は図書館情報学という学問を学ぶ学部の3年次に所属しています。

図書館情報学とはなんでしょうか。 Wikipediaでは以下のように述べられています。

図書館情報学は図書館学と情報学を融合・発展させた学問分野であり、図書館および情報に関するさまざまな課題を研究領域としている。図書というメディアに限定されず、情報そのものの格納、分類、検索、集約、解析等も含まれる。」

慶応義塾大学文学部 図書館・情報学専攻のホームページは以下のように述べています。

「図書館・情報学では、記録された知識や情報の性質、人間とのかかわり、情報メディア、情報探索の技術、それに図書館の制度などに関わる幅広い問題を研究対象にしています。情報という角度から社会や生活上の問題を分析し、解決できる人材の育成を目標としています。」

最後に、東京大学 図書館情報学研究室のホームページも見てみましょう。

図書館情報学は知識や情報を獲得するプロセスを研究する分野となっています。図書館で使用している分類体系や目録(OPAC)データベースのことを考えてみてください。また公立図書館は無料公開制によってあらゆる人々に知へのアクセスを保障する社会装置であり、大学や学校の図書館は学習者が文献や情報を自分で調査するための各種のツールを備え付けています。最近ではインターネット上に各種の電子図書館や公開のデータベースがつくられています。こうしたものの理論構築、開発や評価は図書館情報学の仕事です。

以上の3つの説明を踏まえて、図書館情報学について再度考察します。私は図書館情報学が扱う課題について、以下のようなものがあると考えました。

  • 情報を集めること
  • 集めた情報を整理すること
  • 整理した情報を、アクセス可能な状態にすること

ここからは2点目の、集めた情報を整理することに着目します。

図書館に配架されている資料には、請求記号や資料IDをはじめとした様々なメタデータが付与されています。 これらのメタデータを用いて分類された資料が、図書館の館内の書架に並んでいます。 つまり、図書館ははるか昔から図書を分類し、整理するタスクをこなしていたと言えると思います。

ところで、CDOとはなんでしょうか。 CDOとは、Chief Data Officerの略称であり、Griffin, Jane(2008)[1]はCDOについて

CDOs manage their companies' enterprise-wide data administration and data mining functions.

と述べています。ここで述べられているCDOの「所属する組織の広範なデータの管理・収集を行う」タスクは、まさに図書館情報学が扱う領域そのものであるように感じました。日本ではまだまだ馴染みのないCDOですが、アメリカでは多くの組織でこの役職が置かれているそうです(これは講演で聞いた話です。もし事実と異なる場合ご指摘いただけると幸いです)。

あらゆるデータが爆発的に増加し、ビッグデータという言葉が流行した昨今、組織にとって自分たちが抱えるデータを有効活用するのは重大なテーマであると思います。また、蓄積されていくデータを利用可能な形にすることは簡単なことではなく、高度なスキルが求められることだと思います。

結論

滋賀大学でデータサイエンス学部が作られるなど、いわゆるビックデータへの関心が高まっています。図書館情報学は古くからたくさんの情報を管理してきました。図書館情報学とビックデータは親和性が高いと思います。図書館情報学で情報管理の手法を学んだ人々が社会に必要とされる時代はもうすぐそこまで来ているのではないでしょうか。

参考

[1] Griffin, J. (2008). The role of the chief data officer. DM Review, 18(2), 28. Retrieved from http://search.proquest.com/docview/214672505?accountid=25225