lang_model-arxiv.ipynbで必要となるarxiv.csvとall_arxiv.pickleを取得する方法

ニッチすぎてこれが役に立つ人は果たして何人いるのだろう。。という記事ですが少し苦労したのでメモです。

何かと言うと、細々と続けている MOOC講座 fast.ai の part1 v2の lang_model-arxiv.ipynb でソースとなるファイルが見つからない問題です。

問題となる箇所

3つ目のセル

df_mb = pd.read_csv(f'{PATH}arxiv.csv')
df_all = pd.read_pickle(f'{PATH}all_arxiv.pickle')

jeremyがフォーラムのスレッドで次のようにコメントしてますが

You can download an arxiv dataset using this project: https://hackernoon.com/building-brundage-bot-10252facf3d1

このリンクに飛んで探しても all_arxiv.pickle は見つかりません..。

なぜなら、、

このページにリンクが張ってあるリポジトリのコードを自分で実行して作成する必要があるからです。。

arxiv.csvの取得

all_arxiv.pickleの前にまずarxiv.csvから

こちらは https://github.com/amauboussin/arxiv-twitterbot からリンクが張ってあるbrundage_bot.csvをダウンロードしてarxiv.csvにリネームすれば良さそうです

all_arxiv.pickleの取得

続いてall_arxiv.pickleです。 以下の手順で作成できました

  1. 必要なもの

    • python2
  2. プロジェクトを git clone する

     $ git clone https://github.com/amauboussin/arxiv-twitterbot.git
    
  3. 依存ライブラリのインストール

     $ conda install pandas
     $ conda install requests
     $ pip install feedparser
    
  4. job.pyの修正

    tweetに関する箇所は不要なのでコメントアウトします

     from time import sleep
    
     from get_arxiv import check_for_update, update_arxiv
     # from tweet_papers import tweet_day
    
     # if check_for_update():
     #     update_arxiv()
     #     sleep(2)
     #     tweet_day(dry_run=False)
     update_arxiv()
    
  5. get_arxiv.pyの修正

    pklファイルが元から存在している前提だったり、ループが終わらなかったり(?!)、ちょこちょこと修正する必要がありました :-)

    gist.github.com

  6. job.pyを実行する

    時間がかかりますが辛抱強く待つとall_arxive.pickleが作成されます

    $ python job.py
    

これで一応 lang_model-arxiv.ipynbは最後まで動かせました。 私が作成したall_arxive.pickleはここに置いてあるので面倒くさい方は使ってください