yiskw note

機械学習やプログラミングについて気まぐれで書きます

論文の日本語要約ツイートをslack / LINEに通知するアプリを作った


はじめに

定期的に論文の日本語要約ツイートを収集し,slackやLINEに通知するアプリを作成しました. 実装はこちらに公開しております.
こちらのアプリは,GitHubアカウントとtwitter API key / tokenがあれば誰でも利用可能です. 最新の論文のキャッチアップする手助けとなれば幸いです.

背景

論文の情報収集の手段の一つとしてTwitterが非常に有効で,論文の要約をまとめたツイートがよくタイムラインに流れてきます.
これらは論文の情報が端的にまとまっており,論文を発見するのに有益な一方で,他の雑多な投稿に埋もれてしまい,見逃してしまいやすいです.
また僕自身あまりSNSが得意ではなく,見る頻度も多くはないため,論文に関する有益な情報を逃してしまうことが多いです.
Twitterの検索で,「arxiv.org lang:ja」のようなクエリで検索を行うと,arXiv論文に言及している日本語ツイートを取得することが可能なのですが, 最近はそれすら面倒だと感じておりました.
これらの問題を解決するために,定期的に論文の日本語要約ツイートを収集し,slackやLINEに通知するアプリを作成しました.

github.com

アプリの概要

f:id:yiskw713:20211109161300p:plain

今回作成したアプリは,GitHub Actions, Twitter API, LINE / slack botを使用しております.
Twitter APIを使用して論文に関連するツイートを取得し,LINEやslackに通知する処理を,GitHub Actionsを使用して定期実行するものになっております.

GitHub Actionsによるjob scheduling

GitHub Actionsを使用して,1日に1回スクリプトを実行しています.
デフォルトでは日本時間の朝9時に実行されるようになっております.

ツイートの取得

Twitter APIを利用して,スクリプトが実行された時間から1日前の前までのツイートを取得しています.
Twitter APIを使用して取得するツイートは,以下の二つとなります.

  • 特定の学会や論文公開サイトのURL + lang:jaの検索結果で取得される,論文に言及している日本語ツイート
  • その他特定のユーザーからのツイート (英語で論文の情報を発信しているユーザーのツイートを取得するため)

この際,翻訳botなどのツイートは除外するような設定が可能です.

LINE / slackへの通知

上記で取得した結果を,LINEやslackに通知にします.
LINEに通知する際は,LINE Notifyを使用しています.
slackに通知する際は,slack-python-webhookを使用しています.

アプリの使い方

基本的にはこちらのレポジトリのREADMEの手順に沿って,
レポジトリのクローンを行い,Twitter API key / tokenとLINE / slackのtokenを登録することで,簡単に設定できるかと思います.

各種設定の方法

twitterの検索キーワードの設定

  • src/setting.pyの中に検索したいキーワード(KEYWORDS)を設定できます.
  • デフォルトではいくつかの学会,及びarXivのURLが記載されています.
  • github.com セグメンテーションといったようなキーワードを追加することで,セグメンテーションと記述されているgithubのレポジトリを引用したツイートを取得することができます.
KEYWORDS = [
    "openaccess.thecvf.com",
    "arxiv.org",
    "ojs.aaai.org",
    "iclr.cc",
    "nips.cc",
    "icml.cc",
    "aclweb.org",
]

ツイートを通知しないユーザーの設定

  • src/setting.pyの中で,ツイートを通知したくないアカウント(BLOCK_LIST)を設定することができます.
  • デフォルトではいくつかの翻訳botを追加しております.
BLOCK_LIST = set(
    [
        "arXiv_cs_CV_ja",
        "arXiv_cs_CL_ja",
        "hackernewsj",
    ]
)

キーワード検索の結果に関わらず,ツイートを通知したいユーザーの設定

  • src/setting.pyの中にツイートを取得したいユーザー(USERS)を設定できます.
  • デフォルトでは論文に関するツイートを多くしてくれるAKさん(@ak92501)からのツイートを取得するようになってます.
USERS = [
    "ak92501",
]

実行時間の設定

  • .github/workflows/notify.ymlの中のcronの値を変更することで,通知の日時を変更できます.
  • デフォルトでは日本時間の朝9時に通知されるようになっています.
name: paper-summary-tweet-notification

on:
  schedule:
    # 通知時間を変更したい場合は,以下を変更する
    # UTC 0時 -> 日本時間朝9時
    - cron:  '0 0 * * *'
  workflow_dispatch:

...

通知の結果

f:id:yiskw713:20211110223046p:plain:w300

毎日9時に上記のような通知が送られてきます!
通知はだいたい30~50件程度くる感じです.

まとめ

twitter上の論文に関する有益な情報を見逃さないために,定期的に論文の日本語要約ツイートを収集し,slackやLINEに通知するアプリを作成しました.
よければこちらのアプリを使用して,日頃の情報収集の手助けになれば幸いです.
何かバグやご不明な点などございましたら,気軽にご連絡いただけたらと思います.