ScienceWorld est un environnement virtuel basé sur du texte centré sur l'accomplissement de tâches du programme scientifique élémentaire standardisé. Ce code accompagne l'article ScienceWorld : votre agent textuel est-il plus intelligent qu'un élève de 5e ?.
Vous pouvez essayer ScienceWorld vous-même via notre espace HuggingFace ou lire certaines des transcriptions des parties.
@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} }
Avant d'exécuter : vous devrez avoir Java 1.8+
installé sur votre système (livré avec la plupart des distributions Linux) et Python 3.8+
. Nous vous recommandons de créer un environnement conda comme celui-ci :
conda create --name scienceworld python=3.8 conda active le monde scientifique
Ensuite, installez ScienceWorld depuis PyPi :
pip install scienceworld
ou depuis les sources en mode développement :
git clone https://github.com/allenai/ScienceWorld.git cd ScienceWorld pip install .
Exécutez un exemple d'agent aléatoire, sur la tâche 13 (classification : placer un objet non vivant dans une boîte), pendant 5 épisodes :
python examples/random_agent.py --task-num=13 --num-episodes=5 --simplifications-preset easy
Exécutez une console utilisateur où vous pourrez interagir avec l'environnement, sur la tâche 3 (changement d'état : fusion) :
python examples/human.py --task-num=3 --num-episodes=5
Une démo de serveur Web est également disponible, qui permet d'exécuter une console utilisateur ScienceWorld avec laquelle il est possible d'interagir dans un navigateur Web.
Pour exécuter la démo du serveur Web :
conda create --name scienceworld python=3.8 conda active le monde scientifique pip installer scienceworld [serveur Web]
Exécutez le serveur Web :
python examples/scienceworld-web-server-example.py
Pointez votre navigateur Web vers : localhost:8080
ScienceWorld est écrit en Scala (2.12.9) et se compile à l'aide de sbt
dans un fichier JAR exécuté avec Java. Pour plus de commodité, une API Python est fournie (Python >= 3.8), qui s'interface à l'aide du package py4j
.
Si vous avez modifié le code Scala, vous pouvez recompiler le fichier JAR en exécutant :
./simulateur/package.sh pip install -e .
Les tâches sont répertoriées dans le tableau ci-dessous avec leur nombre de variantes. L'ID de la tâche ou son nom peuvent être utilisés pour une tâche avec env.load()
.
ID de tâche | Nom de la tâche | # Variantes |
---|---|---|
1-1 | bouillir | 30 |
1-2 | fondre | 30 |
1-3 | geler | 30 |
1-4 | changer-l'état-de-la-matière | 30 |
2-1 | utilisation-thermomètre | 540 |
2-2 | mesurer-le-point-de-fusion-substance-connue | 436 |
2-3 | mesurer-le-point-de-fusion-substance-inconnue | 300 |
3-1 | composant de puissance | 20 |
3-2 | composant-d'alimentation-énergie-renouvelable-vs-énergie-non-renouvelable | 20 |
3-3 | test de conductivité | 900 |
3-4 | test-de-conductivité-de-substances-inconnues | 600 |
4-1 | trouver-une-chose-vivante | 300 |
4-2 | trouver-une-chose-non-vivante | 300 |
4-3 | trouver une plante | 300 |
4-4 | trouver un animal | 300 |
5-1 | plante à cultiver | 126 |
5-2 | faire pousser des fruits | 126 |
6-1 | mélange chimique | 32 |
6-2 | chimie-mix-peinture-couleur-secondaire | 36 |
6-3 | chimie-mix-peinture-tertiaire-couleur | 36 |
7-1 | durée de vie la plus longue | 125 |
7-2 | durée de vie la plus courte | 125 |
7-3 | durée de vie-durée de vie la plus longue puis la plus courte | 125 |
8-1 | identifier-les-étapes-de-la-vie-1 | 14 |
8-2 | identifier-les-étapes-de-la-vie-2 | 10 |
9-1 | plan incliné-déterminer-l'angle | 168 |
9-2 | surfaces-nommées-de-frottement-à-plan incliné | 1386 |
9-3 | surfaces-sans-nom-de-frottement-à-plan incliné | 162 |
10-1 | génétique-mendélienne-plante-connue | 120 |
10-2 | génétique-mendélienne-plante-inconnue | 480 |
DRRN : https://github.com/cognitiveailab/drrn-scienceworld
KG-A2C : https://github.com/cognitiveailab/kga2c-scienceworld
CALME : https://github.com/cognitiveailab/calm-scienceworld
Clonage de comportement et transformateur de décision : https://github.com/cognitiveailab/t5-scienceworld