Annoy

Comment résumer les articles arXiv et découvrir des articles similaires

A visual guide on summarizing arXiv articles and finding related research papers.

Introduction

Le volume d'articles de recherche sur des plateformes comme arXiv peut être écrasant pour les chercheurs qui essaient de rester à jour avec les dernières découvertes. Ce tutoriel vous guidera à travers le processus de résumé d'articles longs d'arXiv en points clés et d'identification de documents similaires. Ces actions peuvent aider les chercheurs à saisir rapidement l'essence d'un article et à le contextualiser dans le discours académique plus large, assurant une compréhension exhaustive et évitant les efforts de recherche redondants.

Cet article a deux parties :

  • Génération des embeddings et construction de l'index Annoy
  • Interrogation de l'index pour obtenir des articles connexes et génération de résumés

Partie 1 : Construction de l'index Annoy

Prérequis

Avant de commencer, assurez-vous d'avoir Python 3.9 et pip installés sur votre système.

Étapes

Installation des packages Python

Installez les packages Python suivants en utilisant pip :

pip install numpy pandas sentence-transformers annoy flask openai

Alternativement, vous pouvez créer un fichier requirements.txt et installer les packages en utilisant la commande :

pip install -r requirements.txt

avec le contenu suivant :

numpy
pandas
sentence-transformers
annoy
flask
openai

Jeu de données Kaggle arXiv

Pour procéder, créez un compte Kaggle et téléchargez le jeu de données arXiv avec des métadonnées limitées à partir de ce jeu de données. Après le téléchargement, dézippez le fichier pour trouver un fichier JSON.

Prétraitement des données

Chargez votre jeu de données et prétraitez-le dans le format souhaité. Ici, nous lisons un fichier JSON contenant des métadonnées ArXiv et concaténons les titres et les résumés avec un séparateur '[SEP]' :

Générer des embeddings avec SBERT

Initialisez le modèle SBERT et générez des embeddings pour vos données prétraitées. Nous utilisons le modèle allenai-specter, spécialement entraîné pour les articles scientifiques. Pour environ ~2 millions d'articles d'arXiv jusqu'en décembre 2022, il a fallu :

  • plus de 8 heures sur RTX3080
  • 6 heures sur RTX4090
  • 1,5 heures sur A100 (cloud)

Ajustez le batch_size en fonction de votre mémoire GPU :

GPU Temps pour générer des embeddings :
RTX 3080 (16 Go) - 8 heures
RTX 4090 (16 Go) - 5 heures
A100 (80 Go) (sur le cloud) - 1 heure

Indexer les embeddings avec Annoy

Une fois que vous avez les embeddings, la prochaine étape consiste à les indexer pour une recherche de similarité rapide. Nous utilisons la bibliothèque Annoy en raison de son efficacité :

Alternativement, si vous n'avez pas de GPU et que vous êtes d'accord avec l'instantané d'arXiv jusqu'en décembre 2022, vous pouvez utiliser des URL S3 publiques pour télécharger les jeux de données nécessaires :

Description du dataset
URL S3
annoy_index.ann
Index Annoy de 2M d'articles arXiv utilisant le fichier arxiv-metadata-oai-snapshot.json
URL S3 : lien

arxiv-metadata-oai-snapshot.json
Jeu de données de 2M d'articles Arxiv téléchargés depuis Kaggle
URL S3 : lien

embeddings.npy
Fichier numpy d'embedding. Contient des embeddings sérialisés de tous les 2M d'articles
URL S3 : lien

Partie 2 : Résumer et rechercher des articles similaires sur Arxiv

Description

Ce tutoriel vous guidera à travers le processus de résumé d'un article long d'arXiv en points clés, de génération d'une idée basée sur cela, et d'identification de documents similaires. Nous allons utiliser :

  • Transformers de phrases pour les embeddings
  • Annoy pour l'indexation
  • L'API OpenAI pour générer le résumé

Prérequis

Avant de continuer, assurez-vous d'avoir les éléments suivants :

  • Python 3+
  • Flask pour créer un point de terminaison
  • Connaissances en JSON, Annoy et Transformers de phrases

Étapes

Étape 1 : Configuration et installation des dépendances

Tout d'abord, installez les packages requis :

pip install flask

Étape 2 : Charger et prétraiter les métadonnées Arxiv

Pour résumer et trouver des articles similaires, nous avons besoin des métadonnées du jeu de données. La fonction de prétraitement le fait en :

  • Chargeant les données JSON
  • Extrayant les titres et les résumés
  • Les combinant en phrases

Étape 3 : Générer l'index Annoy

Annoy (Approximate Nearest Neighbors Oh Yeah) est utilisé pour rechercher des vecteurs similaires dans de grands jeux de données. Ici, nous chargeons un index Annoy donné un nom de fichier.

Étape 4 : Fonction de recherche

La fonction de recherche prend une requête, calcule son embedding en utilisant les Transformers de phrases, puis trouve les correspondances les plus proches dans notre index Annoy.

Étape 5 : Afficher les résultats

Une fois que nous avons trouvé les correspondances les plus proches, nous devons les formatter et les afficher.

Étape 6 : Utilisation d'OpenAI pour la summarisation

Nous utilisons l'API d'OpenAI pour générer un résumé de l'article Arxiv. L'article, son titre, son résumé et le contenu de la page sont envoyés à OpenAI.

Étape 7 : Point de terminaison Flask

Nous créons un point de terminaison dans Flask qui traite l'URL Arxiv, résume l'article, recherche des articles similaires, et renvoie une réponse HTML formatée.

Étape 8 : Exécution du serveur Flask

Enfin, exécutez votre application Flask. Ensuite, ouvrez un navigateur et naviguez vers :

http://127.0.0.1:5000/search?q=ARXIV_URL

remplaçant ARXIV_URL par l'URL de l'article Arxiv de votre choix.

Conclusion

Vous avez maintenant créé un outil qui résume les articles Arxiv et trouve des articles similaires en fonction de leur contenu. Cet outil peut être étendu avec d'autres fonctionnalités ou intégré dans de plus grandes applications pour aider les chercheurs et les universitaires.

Découvrez plus de tutoriels en IA pour tous les niveaux d'expertise, et testez vos compétences lors des hackathons IA sur la communauté lablab.ai !

Référence de tutoriel :

1. GitHub : arxiv-related-articles-summarizer

En lire plus

Visual representation of AI model training techniques and efficiencies.
Illustration of building a chatbot using Anthropic Claude with 100,000 tokens.

Laisser un commentaire

Tous les commentaires sont modérés avant d'être publiés.

Ce site est protégé par hCaptcha, et la Politique de confidentialité et les Conditions de service de hCaptcha s’appliquent.