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 vise à vous guider à 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 document et à le contextualiser dans le discours académique plus large, garantissant une compréhension complète et évitant les efforts de recherche redondants.
Ce document est divisé en deux parties :
- Générer les embeddings et construire l'index Annoy
- Interroger l'index pour obtenir des articles connexes et générer des résumés
Partie 1 : Construction de l'index Annoy
Conditions préalables
Avant de commencer, assurez-vous d'avoir Python 3.9 et pip installés sur votre système.
Étapes
Installation des paquets Python
Installez les paquets Python nécessaires en utilisant pip :
pip install sentence-transformers annoy flask requests
Alternativement, vous pouvez créer un fichier requirements.txt
et installer les paquets en utilisant :
pip install -r requirements.txt
avec les contenus suivants :
sentence-transformers
annoy
flask
requests
Jeu de données Kaggle arXiv
Pour continuer, créez un compte Kaggle et téléchargez le jeu de données arXiv avec des métadonnées limitées. Après avoir téléchargé, décompressez le fichier pour trouver un fichier JSON.
Prétraiter les 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 d'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 documents scientifiques. Pour environ ~2 millions d'articles d'arXiv jusqu'en décembre 2022, cela a pris :
- RTX 3080 (16 Go) : 8 heures
- RTX 4090 (16 Go) : 5 heures
- A100 (80 Go) (dans le cloud) : 1 heure
Ajustez le batch_size
en fonction de votre mémoire GPU pour des performances optimales.
Indexer les embeddings avec Annoy
Une fois que vous avez les embeddings, l'étape suivante consiste à les indexer pour une recherche de similarité rapide. Nous utilisons la bibliothèque Annoy en raison de son efficacité :
En cas de non-disponibilité d'un GPU, vous pouvez également utiliser les URL S3 publiques pour télécharger les jeux de données nécessaires :
-
Index Annoy de 2 millions d'articles d'arXiv :
S3 URL: https://arxiv-r-1228.s3.us-west-1.amazonaws.com/annoy_index.ann
-
Jeu de données de 2 millions d'articles d'arXiv :
S3 URL: https://arxiv-r-1228.s3.us-west-1.amazonaws.com/arxiv-metadata-oai-snapshot.json
-
Fichier numpy d'embeddings :
S3 URL: https://arxiv-r-1228.s3.us-west-1.amazonaws.com/embeddings.npy
Partie 2 : Résumer et rechercher des articles similaires sur Arxiv
Description
Cette partie du tutoriel vous guide dans le résumé d'un article long d'arXiv en points clés et l'identification de documents similaires, en utilisant Sentence Transformers pour les embeddings et l'API OpenAI pour la résumation.
Conditions préalables
Avant de continuer, assurez-vous de disposer des éléments suivants :
- Python 3+
- Flask pour créer un point de terminaison
- Connaissances en JSON, Annoy et Sentence Transformers
Étapes
Étape 1 : Configuration et installation des dépendances
Tout d'abord, installez les paquets requis comme mentionné précédemment.
Étape 2 : Charger et prétraiter les métadonnées d'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, en extrayant les titres et les résumés, et en 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 ensembles de données. Chargez 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 Sentence Transformers, et 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, formatez et affichez-les à l'utilisateur.
Étape 6 : Utiliser OpenAI pour la résumation
Nous allons utiliser l'API d'OpenAI pour générer un résumé de l'article d'arXiv sélectionné. Le titre, le résumé et le contenu de l'article seront envoyés au modèle d'OpenAI.
Étape 7 : Point de terminaison Flask
Créez un point de terminaison dans Flask qui traite l'URL d'arXiv, résume l'article, recherche des publications similaires et renvoie une réponse HTML formatée.
Étape 8 : Exécution du serveur Flask
Enfin, exécutez votre application Flask et naviguez vers : http://127.0.0.1:5000/search?q=ARXIV_URL
, en remplaçant ARXIV_URL
par votre URL d'article d'arXiv spécifique.
Conclusion
Félicitations ! Vous avez maintenant créé un outil précieux qui résume les articles d'arXiv et trouve des travaux similaires en fonction de leur contenu. Cet outil peut être étendu avec des fonctionnalités supplémentaires ou intégré dans des applications plus importantes pour aider les chercheurs et les universitaires.
Découvrez d'autres tutoriels d'IA pour différents niveaux de compétence et mettez vos compétences à l'épreuve lors de hackathons IA au sein de la communauté lablab.ai !
Référence du tutoriel :
Auteur : [Votre nom ici]
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.