ScienceWorld ist eine textbasierte virtuelle Umgebung, in deren Mittelpunkt die Bewältigung von Aufgaben aus dem standardisierten naturwissenschaftlichen Grundlehrplan steht. Dieser Code liegt dem Papier „ScienceWorld: Is your Textual Agent Smarter than a 5th grader?“ bei.
Sie können ScienceWorld selbst über unseren HuggingFace Space ausprobieren oder einige der Durchspieltranskripte lesen.
@misc{scienceworld2022, title={ScienceWorld: Is your Agent Smarter than a 5th Grader?}, author={Ruoyao Wang and Peter Jansen and Marc-Alexandre C{^o}t{'e} and Prithviraj Ammanabrolu}, year={2022}, eprint={2203.07540}, archivePrefix={arXiv}, primaryClass={cs.CL}, url={https://arxiv.org/abs/2203.07540} }
Vor dem Ausführen: Auf Ihrem System muss Java 1.8+
(im Lieferumfang der meisten Linux-Distributionen enthalten) und Python 3.8+
installiert sein. Wir empfehlen, eine Conda-Umgebung wie diese zu erstellen:
conda create --name scienceworld python=3.8 Conda aktiviert Scienceworld
Installieren Sie dann ScienceWorld entweder von PyPi aus:
pip install scienceworld
oder aus der Quelle im Entwicklungsmodus:
git clone https://github.com/allenai/ScienceWorld.git cd ScienceWorld pip install .
Führen Sie einen Beispiel-Zufallsagenten für Aufgabe 13 (Klassifizierung: Legen Sie ein nicht lebendes Ding in eine Kiste) für 5 Episoden aus:
python examples/random_agent.py --task-num=13 --num-episodes=5 --simplifications-preset easy
Führen Sie bei Aufgabe 3 (Zustandsänderung: Schmelzen) eine Benutzerkonsole aus, über die Sie mit der Umgebung interagieren können:
python examples/human.py --task-num=3 --num-episodes=5
Es ist auch eine Webserver-Demo verfügbar, die den Betrieb einer ScienceWorld-Benutzerkonsole ermöglicht, mit der in einem Webbrowser interagiert werden kann.
So führen Sie die Webserver-Demo aus:
conda create --name scienceworld python=3.8 Conda aktiviert Scienceworld pip install scienceworld[webserver]
Führen Sie den Webserver aus:
python examples/scienceworld-web-server-example.py
Richten Sie Ihren Webbrowser auf: localhost:8080
ScienceWorld ist in Scala (2.12.9) geschrieben und wird mit sbt
in eine JAR-Datei kompiliert, die mit Java ausgeführt wird. Der Einfachheit halber wird eine Python-API bereitgestellt (Python >= 3.8), die über das py4j
Paket eine Schnittstelle herstellt.
Wenn Sie den Scala-Code geändert haben, können Sie die JAR-Datei neu kompilieren, indem Sie Folgendes ausführen:
./simulator/package.sh pip install -e .
In der folgenden Tabelle sind die Aufgaben mit der Anzahl ihrer Variationen aufgeführt. Mit env.load()
kann entweder die Task-ID oder deren Name für eine Task verwendet werden.
Aufgaben-ID | Aufgabenname | # Variationen |
---|---|---|
1-1 | kochen | 30 |
1-2 | schmelzen | 30 |
1-3 | einfrieren | 30 |
1-4 | den Zustand der Materie ändern | 30 |
2-1 | Gebrauchsthermometer | 540 |
2-2 | Den Schmelzpunkt einer bekannten Substanz messen | 436 |
2-3 | Messen Sie den Schmelzpunkt einer unbekannten Substanz | 300 |
3-1 | Leistungskomponente | 20 |
3-2 | Energiekomponente-erneuerbare-gegen-nicht-erneuerbare-Energie | 20 |
3-3 | Test-Leitfähigkeit | 900 |
3-4 | test-leitfähigkeit-unbekannter-substanzen | 600 |
4-1 | Lebewesen finden | 300 |
4-2 | Nicht-Lebendes-Ding finden | 300 |
4-3 | Find-Pflanze | 300 |
4-4 | Find-Tier | 300 |
5-1 | Pflanze wachsen lassen | 126 |
5-2 | Obst anbauen | 126 |
6-1 | Chemie-Mix | 32 |
6-2 | Chemie-Mischung-Farbe-Sekundärfarbe | 36 |
6-3 | Chemie-Mischung-Farbe-Tertiärfarbe | 36 |
7-1 | Lebensdauer-am längsten lebend | 125 |
7-2 | Lebensdauer am kürzesten | 125 |
7-3 | Lebensdauer – am längsten – dann am kürzesten | 125 |
8-1 | identifiziere-lebensphasen-1 | 14 |
8-2 | identifiziere-lebensphasen-2 | 10 |
9-1 | schiefe-ebene-winkel-bestimmen | 168 |
9-2 | Reibungsflächen mit geneigter Ebene | 1386 |
9-3 | Schiefe-Ebenen-Reibung-unbenannte-Oberflächen | 162 |
10-1 | Mendelsche-Genetik-bekannte-Pflanze | 120 |
10-2 | Mendelsche-Genetik-unbekannte-Pflanze | 480 |
DRRN: https://github.com/cognitiveailab/drrn-scienceworld
KG-A2C: https://github.com/cognitiveailab/kga2c-scienceworld
RUHE: https://github.com/cognitiveailab/calm-scienceworld
Verhaltensklonen und Entscheidungstransformator: https://github.com/cognitiveailab/t5-scienceworld