💬

arXivで公開された論文をslackから推薦するシステムを作ってみた

2024/06/02に公開

こんにちは。安川です。

朝の時間を使って直近に出た論文を読むようにしているのですが、いくつかの課題から習慣化できていませんでした。今回はそのうちの一つの課題にフォーカスして、毎日arXivに公開された論文からユーザに最適なものを推薦するシステムを作ってみました。
今回はそれに関して記事を書いて公開したいと思います。

本稿の内容

  • arXivNotificatorについて
    • コンセプトの説明
    • 実際の流れの説明

本稿で触れない内容

  • arXivNotificatorに使う各種APIのセッティング方法
    ※GPT-4o君と相談しながら一から全てセッティングしましたが、合計して3時間程度でセットアップできましたし、何より多くの記事がネットには転がっているのでそちらを参照してください

目的:解きたい課題は何か

この項目ではコンセプトの説明をするので、どう動いているのかを知りたい人は飛ばして問題ありません

前提

私は事業会社のR&Dに所属しています。リサーチ業務にも取り組んでいますが、リサーチ業務のみに時間を割ける訳ではありません。
一方で、他社に対して優位性を出すためにも最新の情報はキャッチアップする必要がありますし、その最新の情報は論文が一次情報として出る場合が多いです。

理想の姿

自分の興味のある分野の最新かつ有用な情報をキャッチアップし続け、自身の手元に蓄積している。

課題

キャッチアップに割ける時間に対して日々追加される情報量が圧倒的に多い。

今回の目的

課題の解決に向けて、まず課題の細分化をします。
理想の姿を目指すためには、以下の三つの項目を効率的かつ効果的に行う必要があると考えています。

  • 情報の探索
  • 情報の理解
  • 情報の記録

今回はこのうち、直近で特に課題を感じていた「情報の探索」に焦点を当てます。そして情報の探索の「自動化」と「最適化」を行い、課題解決を目指します。

冒頭でも述べた通り、朝の時間を使って情報のキャッチアップをするように心がけています。これは論文読みの日課についてという記事に影響を受けています。
一方で、論文の選び方の部分は少し状況が変わります。まず目的が最新の情報のキャッチアップのため、できれば直近に出たものから選びたいです。また筆者の会社での肩書はデータサイエンティストであり、業務時間中に論文読みの時間を多く取ることができないので、朝の時間で自身の業務に役立ちそうなものを読む必要があります。

これまではX(旧Twitter)で最近の論文に関して紹介してくれるアカウントをフォローしたり、おすすめタブに流れてくる論文から良さそうなものを都度Notionに記録し、そこから選ぶようにしていました。
しかしX(旧Twitter)には誘惑が多く、論文を探していたのに気付けば別のことをして30分経っていたということもしばしばあります。また業務が忙しい時期だと記録用のNotionが更新されず、読む論文がなくなるということもありました。

以上を踏まえ、前日にarXivで公開された論文の情報を取得し、その中からユーザがこれまで読んだ論文と類似した論文を自動でslackとnotionをUIとして推薦するシステムを作ることを目指しました。

作ったもの

arXivNotificator

https://github.com/iyo-0713/arXivNotificator

実際の流れ

0-a.各種APIサービスの利用登録

本プロジェクトではarXiv、Slack、Notion、OpenAIのAPIを使います。
内、Slack、Notion、OpenAIは利用のために利用登録する必要があります。

0-b.論文管理用のデータベースの新規作成

論文管理のデータベースがNotionにない場合、ここで作っておきます。

0-c.既読の論文を記録したjsonファイルの作成

もしNotion以外で記録していた場合、そこから"title"と"url"を含んだjsonファイルを作成します。
デフォルトでinitial_data.jsonがrepositoryに入っているので参考にしてください。

1.論文管理用データベースとの紐づけ

(Notionのインテグレーションの設定やコネクトは0-aで終わった前提です)
データベースのビューのオプションから、ビューのリンクをコピーします。

ビューのリンクは
https://www.notion.so/XXX?v=YYY&pvs=4
となっているので、このXXXの部分を.envのNOTION_DATABASE_IDとして登録します。
また論文のタイトルを入力するタイトルプロパティとarxivのURLを入力するURLプロパティの名前を取得し(なければ作成し)、config.jsonの "notion_title" と "notion_url" に記入します。
これによってNotionのデータベースへの記入が可能になります。

※書き込む項目をカスタマイズしたい場合は、/app/src/notion_api.pyのadd_arxiv_to_notion関数を書き換えてください。

2.システムのセットアップ

arXivNotificatorに記載の指示に従い、各種設定をした上でシステムのセットアップをしてください。

3.待つ

設定した時間になるまで待ちましょう。
すぐに論文の推薦をしたい場合は、コンテナの中で
python /app/src/main.py
をするとプログラムが実行されます。
※arXivは週末と祝日に論文が公開されないようになっています。特定の日付の論文を取得したい場合はmain.pyのyesterday = datetime.now() - timedelta(days=1)の部分を書き換えてください

4.推薦内容の確認

Notionの確認
以下の画面のようにNotionへ追加されていることが確認できます。((arXivNotificator)とついている一番上の論文です)
毎朝読むために追加しているので、ここでは最も類似度の高いもののみを選択していますが、config.jsonで数を変更できます。

Slackの確認
以下の画面のような形で推薦内容を確認できます。ここはNotionより少し広めに推薦してほしかったので、類似度が上位のものを複数投稿しています(デフォルトで3本)

実際に推薦された上位三つの論文は以下の通りで、個人的にはこれまで読んだ論文と近しいものが推薦されていて満足しています。感覚的に類似度が低いように感じますが、私が紐づけたデータベースは日本語タイトルのものもあるので、ある程度仕方ない部分だと思っています。

昨日公開された論文の中から、貴方の興味のあるものを選んできました!!
====================
ID: 2405.20089
Title: The Fine-Tuning Paradox: Boosting Translation Quality Without,   Sacrificing LLM Abilities
Summary: Fine-tuning large language models (LLMs) for machine translation has shown, improvements in overall translation quality. However, it is unclear what is the, impact of fine-tuning on desirable LLM behaviors that are not present in neural, machine translation models, such as steerability, inherent document-level, translation abilities, and the ability to produce less literal translations. We, perform an extensive translation evaluation on the LLaMA and Falcon family of, models with model size ranging from 7 billion up to 65 billion parameters. Our, results show that while fine-tuning improves the general translation quality of, LLMs, several abilities degrade. In particular, we observe a decline in the, ability to perform formality steering, to produce technical translations, through few-shot examples, and to perform document-level translation. On the, other hand, we observe that the model produces less literal translations after, fine-tuning on parallel data. We show that by including monolingual data as, part of the fine-tuning data we can maintain the abilities while simultaneously, enhancing overall translation quality. Our findings emphasize the need for, fine-tuning strategies that preserve the benefits of LLMs for machine, translation.
Link:http://arxiv.org/abs/2405.20089v1
興味度: 0.372
====================
昨日公開された論文の中から、貴方の興味のあるものを選んできました!!
====================
ID: 2405.20215
Title: TS-Align: A Teacher-Student Collaborative Framework for Scalable,   Iterative Finetuning of Large Language Models
Summary: Mainstream approaches to aligning large language models (LLMs) heavily rely, on human preference data, particularly when models require periodic updates., The standard process for iterative alignment of LLMs involves collecting new, human feedback for each update. However, the data collection process is costly, and challenging to scale. To address this issue, we introduce the "TS-Align", framework, which fine-tunes a policy model using pairwise feedback data, automatically mined from its outputs. This automatic mining process is, efficiently accomplished through the collaboration between a large-scale, teacher model and a small-scale student model. The policy fine-tuning process, can be iteratively repeated using on-policy generations within our proposed, teacher-student collaborative framework. Through extensive experiments, we, demonstrate that our final aligned policy outperforms the base policy model, with an average win rate of 69.7% across seven conversational or, instruction-following datasets. Furthermore, we show that the ranking, capability of the teacher is effectively distilled into the student through our, pipeline, resulting in a small-scale yet effective reward model for policy, model alignment.
Link:http://arxiv.org/abs/2405.20215v1
興味度: 0.368
====================
昨日公開された論文の中から、貴方の興味のあるものを選んできました!!
====================
ID: 2405.19694
Title: Grade Like a Human: Rethinking Automated Assessment with Large Language,   Models
Summary: While large language models (LLMs) have been used for automated grading, they, have not yet achieved the same level of performance as humans, especially when, it comes to grading complex questions. Existing research on this topic focuses, on a particular step in the grading procedure: grading using predefined, rubrics. However, grading is a multifaceted procedure that encompasses other, crucial steps, such as grading rubrics design and post-grading review. There, has been a lack of systematic research exploring the potential of LLMs to, enhance the entire grading~process.,   In this paper, we propose an LLM-based grading system that addresses the, entire grading procedure, including the following key components: 1) Developing, grading rubrics that not only consider the questions but also the student, answers, which can more accurately reflect students' performance. 2) Under the, guidance of grading rubrics, providing accurate and consistent scores for each, student, along with customized feedback. 3) Conducting post-grading review to, better ensure accuracy and fairness. Additionally, we collected a new dataset, named OS from a university operating system course and conducted extensive, experiments on both our new dataset and the widely used Mohler dataset., Experiments demonstrate the effectiveness of our proposed approach, providing, some new insights for developing automated grading systems based on LLMs.
Link:http://arxiv.org/abs/2405.19694v1
興味度: 0.366
==================== 

Future work

今回は4日(有休二日+土日)という短い期間で開発したこともあり、様々な点で改善の余地があります。

  • 機能の改善
    • 現在はユーザ本人が投稿するようになっているので、botを導入したい
    • メンションなども使い、通知が来るようにしたい
    • 推薦アルゴリズムが「1. OpenAIのEmbeddingモデルを用いたタイトルの埋め込み表現の取得」→「2. データベースに登録された論文とarxivから取得した論文での埋め込み表現のcos類似度の計算」→「より高いcos類似度がより良い推薦に適した論文として推薦」という簡素な形になっているので、そこを作り込みたい
  • 機能の拡充
    • 論文のsummaryを翻訳してslackへ投稿できるようにしたい
    • 論文のsummary以外もslackへ投稿できるようにしたい
    • Notionへの記録を直でやるのではなく、「slackのメッセージを確認」→「そこから選択」→「Notionに記録」という段階を踏めるようにもしたい
  • 更なる課題の解決
    • 情報の理解、情報の記録の部分も改善していきたい
  • クラウドサービス上での実行
    • 本当はAWS上で構築したかったのですが、初心者なものでできませんでした……
    • lambda関数とかね。詳しい人がいたら教えてください……
  • 適切なデータベースの利用
    • データ量が増えても対応できる形にしたい

Contact

X(旧Twitter)やってます
@yasukawa0713

Discussion