科学世界
科学世界是一个以完成标准小学科学课程任务为中心的基于文本的虚拟环境。本代码是论文科学世界:你的文本智能体比五年级学生聪明吗?的附属代码。
演示和示例
你可以通过我们的HuggingFace空间亲自尝试科学世界,或阅读一些游戏过程记录。
引用
@misc{scienceworld2022,
title={科学世界:你的智能体比五年级学生聪明吗?},
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}
}
快速开始
**运行前:**你需要在系统上安装Java 1.8+
(大多数Linux发行版都自带)和Python 3.8+
。我们建议创建一个conda环境,如下所示:
conda create --name scienceworld python=3.8
conda activate scienceworld
然后,通过PyPi安装科学世界:
pip install scienceworld
或从源代码以开发模式安装:
git clone https://github.com/allenai/ScienceWorld.git
cd ScienceWorld
pip install .
运行一个随机智能体示例,在任务13(分类:将一个非生物体放入盒子中),进行5个回合:
python examples/random_agent.py --task-num=13 --num-episodes=5 --simplifications-preset easy
运行一个用户控制台,让你可以与环境交互,在任务3(状态变化:融化):
python examples/human.py --task-num=3 --num-episodes=5
Web服务器演示
还提供了一个Web服务器演示,允许运行一个可以在Web浏览器中交互的科学世界用户控制台。
要运行Web服务器演示:
conda create --name scienceworld python=3.8
conda activate scienceworld
pip install scienceworld[webserver]
运行Web服务器:
python examples/scienceworld-web-server-example.py
将您的网络浏览器指向:
localhost:8080
ScienceWorld设计
ScienceWorld使用Scala (2.12.9)编写,通过sbt
编译成JAR文件并用Java运行。为了方便起见,提供了Python API(Python >= 3.8),使用py4j
包进行接口连接。
如果您修改了Scala代码,可以通过运行以下命令重新编译JAR文件:
./simulator/package.sh
pip install -e .
任务
下表列出了任务及其变体数量。可以使用任务ID或名称通过env.load()
加载任务。
任务ID | 任务名称 | 变体数量 |
---|---|---|
1-1 | 煮沸 | 30 |
1-2 | 融化 | 30 |
1-3 | 冻结 | 30 |
1-4 | 改变物质状态 | 30 |
2-1 | 使用温度计 | 540 |
2-2 | 测量已知物质的熔点 | 436 |
2-3 | 测量未知物质的熔点 | 300 |
3-1 | 给组件供电 | 20 |
3-2 | 可再生与不可再生能源给组件供电 | 20 |
3-3 | 测试导电性 | 900 |
3-4 | 测试未知物质的导电性 | 600 |
4-1 | 寻找生物 | 300 |
4-2 | 寻找非生物 | 300 |
4-3 | 寻找植物 | 300 |
4-4 | 寻找动物 | 300 |
5-1 | 种植 | 126 |
5-2 | 种植果实 | 126 |
6-1 | 化学混合 | 32 |
6-2 | 混合油漆制作次级颜色 | 36 |
6-3 | 混合油漆制作第三级颜色 | 36 |
7-1 | 寿命最长 | 125 |
7-2 | 寿命最短 | 125 |
7-3 | 先寿命最长再寿命最短 | 125 |
8-1 | 识别生命阶段1 | 14 |
8-2 | 识别生命阶段2 | 10 |
9-1 | 斜面-确定角度 | 168 |
9-2 | 斜面-已知表面摩擦力 | 1386 |
9-3 | 斜面-未知表面摩擦力 | 162 |
10-1 | 孟德尔遗传学-已知植物 | 120 |
10-2 | 孟德尔遗传学-未知植物 | 480 |
基线代理
DRRN: https://github.com/cognitiveailab/drrn-scienceworld
KG-A2C: https://github.com/cognitiveailab/kga2c-scienceworld
CALM: https://github.com/cognitiveailab/calm-scienceworld
行为克隆和决策转换器: https://github.com/cognitiveailab/t5-scienceworld