Giter Site home page Giter Site logo

carrier-owl's Introduction

Carrier Owl

伝書フクロウという意味です。

不具合などがあればTwitterの #carrier_owl で情報共有を行っています。

About Carrier Owl

2日前のarxivから気になる論文にスコアを付けてslackに通知するシステムです。
通知の際に、abstractをDeepLで翻訳しています。
導入に必要なのはgithubアカウントだけです。10minぐらいで設定は終わります!!
スコアは、ターゲットとなるキーワードに重み付けをして決まります。(例 resnet=5, kaggle=3, audio=3)
ユーザーが好きな領域好きなキーワードを登録することで、通知される論文は変わります。

  • 登録キーワード例

    keywords:
        sound: 1
        audio: 1
        sound feature: 3
        audio feature: 3
        noise removal: 2
        spectrogram: 3
    
  • 通知例(score昇順)

Installation

step

  1. このリポジトリをフォークする

  2. GitHub Actionsを有効化する

    • Actionsタブをクリックし、有効化します。

  3. 通知先の設定 通知したいアプリケーションに応じて設定を行います。いくつでも設定可能です。

  4. webhook urlの設定

    • step3で取得した webhook url(または line token) を設定します。

    • 手順

      a. settings をクリック。

      b. Secrets をクリック。

      c. New repository secret をクリック。

      d. Nameを SLACK_ID(または LINE_TOKEN ) と入力。Valueを step2 で取得したwebhook url(また line token)を貼り付けます。

      e. 最後にAdd secretをクリックして登録完了です。

  5. 領域の設定

    • 通知させたいarxivの論文の領域を指定します。

    • (computer scienceの人はこの手順を飛ばしてstep8に進んでも構いません)

    • 手順

      1. 以下の表から通知を受け取りたいsubjectを選択して、urlをクリックしてください。
      subject category url
      Astrophysics astro-ph url
      Condensed Matter cond-mat url
      Physics physics url
      Mathematics math url
      Nonlinear Sciences nlin url
      Computer Science cs url
      Quantitative Biology q-bio url
      Quantitative Finance q-fin url
      Statistics stat url
      Electrical Engineering and Systems Science eess url
      Economics econ url
      1. さらに細かい分類を確認します

        • 以下の例は、subject = cs をクリックした場合です。cs.AIcs.CL などが細かな分類になります。
      2. config.yaml 内の、subject を2で確認した文字列に変更します。

        • デフォルトではcat:cs.*になっています。これは、cs以下の小分類すべてを通知するという設定になります。
        • 複数領域指定
          • 複数領域指定も可能です。以下のよう OR でつなぎます。
            • ex1) cat:cs.AI OR cat:cs.CV
            • ex2) cat:physics.* OR cat:cs.*
            • ex3) cat:physics.space-ph OR cat:cs.AI OR cat:q-bio.BM
  6. キーワードの設定

    • config.yaml にキーワードとそのキーワードのスコアを設定します。
    • 例(音に関する論文を通知してほしい場合)
      keywords:
          sound: 1
          audio: 1
          sound feature: 3
          audio feature: 3
          noise removal: 2
          spectrogram: 3
      
    • 仕組みとしては、以下のような感じです。
      1. abstractにキーワードが含まれているか

      2. 含まれていれば、キーワードの合計をscoreとし、昇順で通知

  7. 通知タイミングの調整

    • デフォルト設定では、日本時間の水木金土日の9時50分に通知されるようになっています。二日前のarxivを通知している&土日にarxivが更新されないという理由からこの設定になっています。この設定で問題ない方はこれで設定完了です。
    • 通知タイミングのカスタマイズは、こちらを変更することで可能です。
  8. push

    • ここまでの変更がmasterブランチに反映されていれば、これですべての設定が完了したことになります。次の通知タイミングでslackに通知されます。
  9. test

    • github actions の workflow_dispatch を使って通知タイミングを待たずにいつでも実行することができます。

    • Actionsタブでから、Run workflow をクリックすることでいつでも実行可能です。

その他の設定

  • score threshold 通知するスコアに閾値を設定することができます。score >= scrore_threshold を満たす論文のみ通知させることができま す。 config.yaml 内の、score_threshold で設定できます(デフォルトは0になっています)。

Thanks

  • hppさんのPRにより、github actionsを使うことにより github だけで動作するようになりました。

  • wakamezakeさんのPRにより、arxiv-apiを導入しました。

  • amagaeruさんのPRにより、LINE通知機能を実装しました。

carrier-owl's People

Contributors

dependabot[bot] avatar fkubota avatar hpprc avatar narugit avatar wakame1367 avatar yoshiintokyo avatar yujidn avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

carrier-owl's Issues

タイトルに改行が含まれる場合がある

for article in articles:
url = article['arxiv_url']
title = article['title']
abstract = article['summary']
score, hit_keywords = calc_score(abstract, keywords)
if (score != 0) and (score >= score_threshold):
title_trans = get_translated_text('ja', 'en', title, driver)
abstract = abstract.replace('\n', '')
abstract_trans = get_translated_text('ja', 'en', abstract, driver)

でtitleも改行のreplaceを行なったほうがいいかもしれない、という提案になります。
60行目に以下を挿入するだけになります。

            title = title.replace('\n', '')

例えば以下の論文では改行置換ありなしでdeeplの結果が変わっていました。

url: http://arxiv.org/abs/2205.00779v1

改行置換なし

title:    ゼブラ ゼロブロックによるCNNアクセラレータのメモリ帯域幅の削減
   活性化マップの正則化
title_en:    Zebra: Memory Bandwidth Reduction for CNN Accelerators With Zero Block
 Regularization of Activation Maps

改行置換あり

title:    ゼブラ 活性化マップのゼロブロック正則化を用いたCNNアクセラレータのメモリ帯域幅の削減
title_en:    Zebra: Memory Bandwidth Reduction for CNN Accelerators With Zero Block  Regularization of Activation Maps

論文のタイトルには改行が含まれておらず、arxiv.queryの結果には含まれているのでarxiv.queryのところで何とかして欲しい気持ちですが、↓を見る限りは使う側で対処した方が良さそうかなという感じです。

lukasschwab/arxiv.py#48

アブストラクトの改行の有無について

出力されるアブストラクトに改行を入れていると思いますが、何か意図があるのでしょうか(slackだと見づらいなど)。
私は改行を取り除いてlineに通知していますが、他の方の意見も聞きたいと思いissueを立てました。

配信日固定案

(2日前の論文を送る場合)

月火水木金に送信するように設定を行うと、土日にarxivが更新されない以上、水木金にしか配信されない。
これを解消したい。

現在の案

  • 月火水木金にその前の木金月火水に出た論文を配信する仕様にする。
  • デメリットとしてはこの仕様だと、土日に論文が配信してほしい人に対応できない。

LINE通知対応

amagaeruさんのPR

SecretsにLINE_IDとして登録する。
Secretsが複数用意されていればそれら全てに通知がいくような仕様にする。

Comments をメッセージに含めるオプションをつけたい

赤枠の Comments の部分(通常既に会議に出ているかどうかが書かれている)は読むときの判断材料になりやすく、個人的にはチェックする部分なので、例えば include_comments みたいな bool 値を設定して、True のときは一緒に流せるようにできると嬉しいです。(やる気が出てきたら自分でPR出そうと思います)

スクリーンショット 2021-06-04 19 57 54

ChromedriverがChromeのversionに合わなくてGithub Actionがエラーで止まります

Carrier-Owlをクローンして利用させてもらっているものです。素敵なシステム作成ありがとうございます。

急にGithub Actionがエラーでワークしなくなったので確認したところ以下の画像のエラーが出ていました。
(私の環境だけでしたらすいません)

解決案として

  • chromedriver追従してアップデートする
  • (可能であれば)Github Actionで利用可能なGoogleのバージョンを固定する

の2つが考えられます。前者だと毎回アップデートのたびに追従するのが負担かなという懸念があります。
私の方でもchromedriverをアップデートしてPRしようとしましたがインストール時にコケてしまうのでまず報告だけさせてもらいました。

chromedriver-binary v87 -> v89
https://pypi.org/project/chromedriver-binary/89.0.4389.23.0/

image

Workflow が Run owl で失敗する

Workflow がしばしば失敗します。
エラーメッセージと、メッセージから推測できる直接的な原因を以下に記載します。

■エラーメッセージ

Run poetry run python src/carrier-owl.py
  poetry run python src/carrier-owl.py
  shell: /bin/bash -e {0}
  env:
    pythonLocation: /opt/hostedtoolcache/Python/3.8.6/x64
    LD_LIBRARY_PATH: /opt/hostedtoolcache/Python/3.8.6/x64/lib
    SLACK_ID: ***
Traceback (most recent call last):
  File "src/carrier-owl.py", line 188, in <module>
    main()
  File "src/carrier-owl.py", line 183, in main
    results = serch_keywords(id_list, config['keywords'])
  File "src/carrier-owl.py", line 64, in serch_keywords
    title = bs.find('meta', attrs={'property': 'og:title'})['content']
TypeError: 'NoneType' object is not subscriptable

Error: Process completed with exit code 1.

■直接的な原因
src/carrier-owl.py の serch_keywords()関数にて、
bs.find('meta', attrs={'property': 'og:title'}) の戻り値がNoneになっている

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.