Wikipedia のダンプデータから知識のグラフ構造を取得したい
前置き
前置き長いので、読み飛ばしてもらって構いません。
何かの知識を得たいと思った時、その知識には前提がある。
その前提が何かを知るには、本を読んだり人に聞いたりする。
個人で勉強するときには、前提がわからないとその壁にぶつかってしまう。
僕は、その壁を取っ払うために何かいい手立てはないかと日々考えている。
完全な独学環境の整備
それが僕の一つの夢だ。
小恥ずかしいことを書いたが、いたって真剣だ。
私が知っている限りの研究としての取り組みでは妻鳥貴彦先生や、三好康夫先生のシラバスの可視化プロジェクトや学際マップという取り組みがあるというのを以前調べた。
Learning Path Finder の使い方 - Tokushima Univ.
あと海外の誰かが作成したこの Web 関係に関するスキルマップもとても面白い。
また、様々な方々が学問マップという形で一学問のマップを考えて作ってくれている例もある。
以下は、物理学などを教える YouTuber ヨビノリさんの動画でとても参考になる。
どの取り組みもそれぞれの知識をグラフ構造に落とし込むことによって知識と知識の連関を理解し、次の知識習得に結び付けようとしている。
これらの素晴らしい取り組みは、最近だとコグニカルというサービスに受け継がれているように見える。
自分も似たようなサービスを空想していただけに先を越された感と応援したい気持ちでいっぱいになった。
学問や学問内のスキルの依存関係を図示したいんだけど、その依存関係についてだれか調べた人とかいないのかなあ... あまり文献が見つからない... というか、探し方が悪いだけかもしれないが...
— cive@-13.6eV (@to4sh) 2020年1月3日
今回はそんな夢を実現するためのデータセットづくりとして、一つやってみたことがあったので記事にしてみた。
Wikipedia のダンプデータから、知識のグラフ構造を作成してみることをやってみたやりたかった。
という失敗談に近いかもしれない。 (正確には、今もデータを入れ続けているが、無限に終わらなさそう)
概要
概要としては、 Wikipedia のダンプデータから、リンクされた記事を取ってきて neo4j にデータを突っ込んでみるというだけである。
結果として、それらの知識同士のつながりあい度合いを可視化できると面白そうと思ってやってみた。
実施手順
実施した内容は簡単でこれだけである。
1. Wikipedia のダンプデータを取得し、 WikiExtractor を使用してリンクが取得できるように展開
2. 展開したデータから Wikipedia 内のリンクだけを取得し、それらのリンクを neo4j に投入
しかし、記事の数が膨大すぎて neo4j にすべてのデータを投入するには莫大な時間がかかりそうということがわかった。
以下は、ラズパイ上で実行中のログである。ちょっとずつ想定完了時間が伸びてきていて一年で完了するのかもわからない状態だ。
結果
簡単な結果だけだが、以下のようにそれぞれの記事同士のつながりを見てみる。
まず、私が、気になったのは数学や物理の知識がどのようにつながるかである。
当初の私の予想としては、数学の簡単な知識から難しい知識に至るまでのマップが形成されると予想していた。
だが、予想を裏切られた。
なぜか、日付や数学にまつわる人物の情報ばかりが出てきてしまった。
悔しいので、微分幾何学で検索してみた。
やはり、先ほどと同様の結果に近い。
なぜ、予想に反しているかといえば、図からもわかるようにまだ投入できていない記事の数が多いからだろうと思われる。
結果を受けて
現在検討中なのは、 neo4j に投入するデータを絞ることで、方法としては何となく思いついているのでちょっとやってみようと思っている。
To be continued?