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 !
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.