2016/08/06:追記 ... 発表に用いたスライドを以下の名前でアップロードしました。
WACODE5th_python.key
... keynote形式WACODE5th_python.pdf
... pdf形式
wikipediaの特定URLからN次までのリンクを全て取得し、それぞれの文書をベクトル化したデータに直すためのパッケージを作成します。
今回はhtmlを取得し、そのbodyの内容と内部に含まれるリンクの一覧を取得するだけでOKです。
すでに雛形は作成してあるので、関数の中身を記述して動作するようにしましょう。
気が向いた方はプルリクエストを送ったり送らなかったりしてください。
setup.py
... インストール、テストなどの要件を定義するファイル。どのファイルを配布物に含めたいか、より詳細に指定する場合はMANIFEST.in
という独自DSLで記述することになるが、はじめは必要ない。requirements.txt
... 依存パッケージを定義するファイル。docs/
...sphinx-quickstart
で生成したSphinxドキュメントのテンプレート.gitignore
... はじめはgithub推奨のものを使っておく。pythonに限らず有用LICENSE.txt
... ライセンスの全文。今回はMITライセンスtests/
テストを置く。examples/
... 大規模なフレームワークの場合、使用例を記述しておくと使いやすくなる。wiki_to_matrix/
... ソースコードのディレクトリ。
https://github.com/kennethreitz/samplemod
にパッケージの雛形が置いてあります。ipython
中でobject??
を実行すると、その中身を見ることができます。requests
やBeautifulSoup
の使用方法がわからない時はこれで参照しましょう。- このリポジトリの
answer
ブランチに解答例があります。
tests/
以下に置くテストは、設計が定まっていない段階で書くと全て無駄になる可能性があるため、あくまで大雑把な入出力にとどめておくことをおすすめします。
TDDのためのテストはdoctest
の方が多くの点で優れています。
Pokemon GoのWiki Pageを起点として、2次までの範囲にあるwikipediaページの英語版を処理した結果が以下になります。以降の解析に用いてください。
その際に用いたプログラムのソースコードはこちらにありますがまだ整理していないので参考にしすぎないでください。
余裕があったら以下にも挑戦してみましょう。
- 起点となるURLからリンクをたどりN次までの文書全てを取得するよう拡張する。(Scrapyの使用を考えても良い)
- 抽出したbodyのテキストを学習済みdoc2vecに入れてベクトル化したデータを取得する。
- html間のハイパーリンクを隣接行列で表ようにする。
__main__.py
を作成し、コマンドラインスクリプトとして実行することもできるようにする。async
あるいはmultiprocessing
を用いてパフォーマンスを向上する。