ScienceWorld es un entorno virtual basado en texto centrado en la realización de tareas del plan de estudios de ciencias elemental estandarizado. Este código acompaña al artículo ScienceWorld: ¿Es su agente textual más inteligente que un alumno de quinto grado?
Puedes probar ScienceWorld tú mismo a través de nuestro HuggingFace Space o leer algunas de las transcripciones del juego.
@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} }
Antes de ejecutar: deberá tener Java 1.8+
instalado en su sistema (incluido con la mayoría de las distribuciones de Linux) y Python 3.8+
. Recomendamos crear un entorno conda como este:
conda crear --nombre scienceworld python=3.8 conda activar scienceworld
Luego, instala ScienceWorld desde PyPi:
pip install scienceworld
o desde la fuente en modo de desarrollo:
git clone https://github.com/allenai/ScienceWorld.git cd ScienceWorld pip install .
Ejecute un agente aleatorio de ejemplo, en la tarea 13 (clasificación: colocar un ser no vivo en una caja), durante 5 episodios:
python examples/random_agent.py --task-num=13 --num-episodes=5 --simplifications-preset easy
Ejecute una consola de usuario donde pueda interactuar con el entorno, en la tarea 3 (cambio de estado: derritiéndose):
python examples/human.py --task-num=3 --num-episodes=5
También está disponible una demostración del servidor web, que permite ejecutar una consola de usuario de ScienceWorld con la que se puede interactuar en un navegador web.
Para ejecutar la demostración del servidor web:
conda crear --nombre scienceworld python=3.8 conda activar scienceworld pip instalar scienceworld[servidor web]
Ejecute el servidor web:
python examples/scienceworld-web-server-example.py
Apunte su navegador web a: localhost:8080
ScienceWorld está escrito en Scala (2.12.9) y se compila usando sbt
en un archivo JAR que se ejecuta con Java. Para mayor comodidad, se proporciona una API de Python (Python >= 3.8), que interactúa mediante el paquete py4j
.
Si modificó el código Scala, puede volver a compilar el archivo JAR ejecutando:
./simulador/paquete.sh instalación de pip -e.
Las tareas se enumeran en la siguiente tabla junto con su número de variaciones. Se puede utilizar el ID de la tarea o su nombre para una tarea con env.load()
.
ID de tarea | Nombre de la tarea | # Variaciones |
---|---|---|
1-1 | hervir | 30 |
1-2 | derretir | 30 |
1-3 | congelar | 30 |
1-4 | cambiar-el-estado-de-la-materia-de | 30 |
2-1 | termómetro de uso | 540 |
2-2 | medir-punto-de-fusion-sustancia-conocida | 436 |
2-3 | medir-punto-de-fusion-sustancia-desconocida | 300 |
3-1 | componente de potencia | 20 |
3-2 | componente-energía-energía-renovable-vs-no-renovable | 20 |
3-3 | prueba de conductividad | 900 |
3-4 | prueba-de-conductividad-de-sustancias-desconocidas | 600 |
4-1 | encontrar-cosa-viva | 300 |
4-2 | encontrar-cosa-no-viva | 300 |
4-3 | encontrar-planta | 300 |
4-4 | encontrar-animal | 300 |
5-1 | planta de cultivo | 126 |
5-2 | crecer-fruta | 126 |
6-1 | mezcla de quimica | 32 |
6-2 | quimica-mezcla-pintura-color-secundario | 36 |
6-3 | quimica-mezcla-pintura-color-terciario | 36 |
7-1 | esperanza de vida más larga | 125 |
7-2 | esperanza de vida más corta | 125 |
7-3 | esperanza de vida más larga y luego más corta | 125 |
8-1 | identificar-etapas-de-la-vida-1 | 14 |
8-2 | identificar-etapas-de-la-vida-2 | 10 |
9-1 | plano-inclinado-determinar-ángulo | 168 |
9-2 | superficies-llamadas-de-fricción-en-plano-inclinado | 1386 |
9-3 | superficies-sin-nombre-de-fricción-en-plano-inclinado | 162 |
10-1 | genética-mendeliana-planta-conocida | 120 |
10-2 | genética-mendeliana-planta-desconocida | 480 |
DRRN: https://github.com/cognitiveailab/drrn-scienceworld
KG-A2C: https://github.com/cognitiveailab/kga2c-scienceworld
CALMA: https://github.com/cognitiveailab/calm-scienceworld
Clonación de comportamiento y transformador de decisiones: https://github.com/cognitiveailab/t5-scienceworld