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