Annoy

Wie man arXiv-Artikel zusammenfasst und ähnliche Arbeiten entdeckt

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

Einführung

Das Volumen der Forschungsartikel auf Plattformen wie arXiv kann überwältigend sein für Akademiker, die versuchen, über die neuesten Erkenntnisse informiert zu bleiben. Dieses Tutorial führt Sie durch den Prozess der Zusammenfassung von langen arXiv-Artikeln zu Schlüsselpunkten und der Identifizierung ähnlicher Arbeiten. Diese Maßnahmen können Forschern helfen, den Kern eines Papiers schnell zu erfassen und es im breiteren akademischen Diskurs zu kontextualisieren, um ein umfassendes Verständnis sicherzustellen und redundante Forschungsanstrengungen zu vermeiden.

Dieser Artikel hat zwei Teile:

  • Erzeugen der Embeddings und Aufbau des Annoy-Index
  • Abfragen des Index, um verwandte Arbeiten zu finden und Zusammenfassungen zu erstellen

Teil 1: Aufbau des Annoy-Index

Voraussetzungen

Bevor Sie beginnen, stellen Sie sicher, dass Sie Python 3.9 und pip auf Ihrem System installiert haben.

Schritte

Installation der Python-Pakete

Installieren Sie die folgenden Python-Pakete mit pip:

pip install numpy pandas sentence-transformers annoy flask openai

Alternativ können Sie eine requirements.txt-Datei erstellen und die Pakete mit dem Befehl installieren:

pip install -r requirements.txt

mit folgendem Inhalt:

numpy
pandas
sentence-transformers
annoy
flask
openai

Kaggle arXiv-Datensatz

Um fortzufahren, erstellen Sie ein Kaggle-Konto und laden Sie den arXiv-Datensatz mit eingeschränkten Metadaten aus diesem Datensatz herunter. Nach dem Herunterladen entpacken Sie die Datei, um eine JSON-Datei zu finden.

Daten vorverarbeiten

Laden Sie Ihren Datensatz und verarbeiten Sie ihn in das gewünschte Format vor. Hier lesen wir eine JSON-Datei mit ArXiv-Metadaten und verketten Titel und Abstract mit einem '[SEP]'-Separator:

Embedding mit SBERT erzeugen

Initialisieren Sie das SBERT-Modell und erzeugen Sie Embeddings für Ihre vorverarbeiteten Daten. Wir verwenden das allenai-specter-Modell, das speziell für wissenschaftliche Artikel trainiert wurde. Für ungefähr ~2 Millionen Artikel von ArXiv bis Dezember 2022 dauerte es:

  • 8+ Stunden auf RTX3080
  • 6 Stunden auf RTX4090
  • 1.5 Stunden auf A100 (Cloud)

Passen Sie die batch_size basierend auf Ihrem GPU-Speicher an:

GPU Zeit zum Erzeugen von Embeddings:
RTX 3080 (16GB) - 8 Stunden
RTX 4090 (16GB) - 5 Stunden
A100 (80GB) (in der Cloud) - 1 Stunde

Index-Embeddings mit Annoy

Sobald Sie die Embeddings haben, ist der nächste Schritt, sie für eine schnelle Ähnlichkeitssuche zu indexieren. Wir verwenden die Annoy-Bibliothek wegen ihrer Effizienz:

Alternativ, wenn Sie keine GPU haben und mit dem ArXiv-Snapshot bis Dezember 2022 einverstanden sind, können Sie öffentliche S3-URLs verwenden, um die erforderlichen Datensätze herunterzuladen:

Datensatzbeschreibung
S3-URL
annoy_index.ann
Annoy-Index von 2M ArXiv-Artikeln mit der Datei arxiv-metadata-oai-snapshot.json
S3-URL: Link

arxiv-metadata-oai-snapshot.json
Datensatz von 2M Arxiv-Artikeln, die von Kaggle heruntergeladen wurden.
S3-URL: Link

embeddings.npy
Embedding-Numpy-Datei, die serialisierte Embeddings aller 2M Artikel enthält.
S3-URL: Link

Teil 2: Zusammenfassen und Suchen nach ähnlichen Artikeln auf Arxiv

Beschreibung

Dieses Tutorial führt Sie durch den Prozess der Zusammenfassung eines langformatigen ArXiv-Artikels in Schlüsselpunkte, der Generierung einer Idee basierend darauf und der Identifizierung ähnlicher Arbeiten. Wir werden Folgendes nutzen:

  • Sentence Transformers für Embeddings
  • Annoy für Indizierung
  • Die OpenAI API für die Erstellung der Zusammenfassung

Voraussetzungen

Bevor Sie fortfahren, stellen Sie sicher, dass Sie Folgendes haben:

  • Python 3+
  • Flask zur Erstellung eines Endpunkts
  • Kenntnisse in JSON, Annoy und Sentence Transformers

Schritte

Schritt 1: Einrichten und Abhängigkeiten installieren

Zuerst installieren Sie die erforderlichen Pakete:

pip install flask

Schritt 2: Arxiv-Metadaten laden und vorverarbeiten

Um ähnliche Artikel zusammenzufassen und zu finden, benötigen wir die Metadaten des Datensatzes. Die Vorverarbeitungsfunktion erledigt dies durch:

  • Laden der JSON-Daten
  • Extrahieren von Titeln und Abstracts
  • Zusammenführen zu Sätzen

Schritt 3: Annoy-Index erzeugen

Annoy (Approximate Nearest Neighbors Oh Yeah) wird verwendet, um ähnliche Vektoren in großen Datensätzen zu suchen. Hier laden wir einen Annoy-Index basierend auf einem Dateinamen.

Schritt 4: Suchfunktion

Die Suchfunktion nimmt eine Abfrage, berechnet deren Embedding mithilfe von Sentence Transformers und findet dann die nächsten Übereinstimmungen in unserem Annoy-Index.

Schritt 5: Ergebnisse anzeigen

Sobald wir die nächsten Übereinstimmungen gefunden haben, müssen wir sie formatieren und anzeigen.

Schritt 6: Verwendung von OpenAI zur Zusammenfassung

Wir nutzen die API von OpenAI, um eine Zusammenfassung des Arxiv-Artikels zu erstellen. Der Artikel, sein Titel, Abstract und Seiteninhalt werden an OpenAI gesendet.

Schritt 7: Flask-Endpunkt

Wir erstellen einen Endpunkt in Flask, der die Arxiv-URL verarbeitet, den Artikel zusammenfasst, nach ähnlichen Artikeln sucht und eine formatierte HTML-Antwort zurückgibt.

Schritt 8: Flask-Server ausführen

Schließlich starten Sie Ihre Flask-Anwendung. Öffnen Sie dann einen Browser und navigieren Sie zu:

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

ersetzen Sie ARXIV_URL durch die gewünschte Arxiv-Artikels URL.

Fazit

Sie haben nun ein Tool entwickelt, das Arxiv-Artikel zusammenfasst und ähnliche Artikel basierend auf ihrem Inhalt findet. Dieses Tool kann um weitere Funktionen erweitert oder in größere Anwendungen integriert werden, um Forschern und Akademikern zu helfen.

Entdecken Sie weitere KI-Tutorials für alle Erfahrungsstufen und testen Sie Ihre Fähigkeiten bei KI-Hackathons in der lablab.ai-Community!

Tutorial-Referenz:

1. GitHub: arxiv-related-articles-summarizer

Weiterlesen

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

Hinterlasse einen Kommentar

Alle Kommentare werden vor der Veröffentlichung geprüft.

Diese Website ist durch hCaptcha geschützt und es gelten die allgemeinen Geschäftsbedingungen und Datenschutzbestimmungen von hCaptcha.