Microsoft Textworld - 基于文本的学习环境。
项目描述
TextWorld
TextWorld是一个基于文本的游戏生成器和可扩展的沙盒学习环境,用于训练和测试强化学习(RL)智能体。有关TextWorld及其创建者的更多信息,请访问aka.ms/textworld。对TextWorld有任何疑问或反馈?请发送至textworld@microsoft.com或使用上面列出的Gitter频道。
安装
TextWorld目前仅支持在Linux和macOS系统上使用Python 3.9/3.10/3.11/3.12。对于Windows用户,可以使用docker作为解决方案(见下面的Docker部分)。
需求
TextWorld需要一些系统库来支持其本地组件。在基于Debian/Ubuntu的系统上,可以使用以下命令安装:
sudo apt update && sudo apt install build-essential libffi-dev python3-dev curl git
而在macOS上,使用以下命令:
brew install libffi curl git
注意:我们建议用户使用虚拟环境来避免不同项目的Python包相互干扰。常用的选择有Conda环境和Virtualenv
安装TextWorld
安装TextWorld最简单的方式是通过pip
pip install textworld
或者,克隆仓库后,进入项目根目录(即与setup.py
在同一目录下)并运行:
pip install .
可视化
TextWorld附带了一些工具来可视化游戏状态。确保已安装所有依赖项,运行:
pip install textworld[vis]
然后,您需要安装Chrome或Firefox WebDriver(取决于您已安装的浏览器)。如果您已安装Chrome,可以使用以下命令安装chromedriver:
pip install chromedriver_installer
当前的可视化工具包括来自textworld.render
的take_screenshot
、visualize
和show_graph
。
Docker
最新的TextWorld版本可在DockerHub上找到。
docker pull marccote19/textworld
docker run -p 8888:8888 -it --rm marccote19/textworld
然后在浏览器中,导航到终端中显示的Jupyter笔记本链接。链接看起来应该是这样的:
http://127.0.0.1:8888/?token=8d7aaa...e95
注意:有关故障排除信息,请参阅docker文件夹中的README.md。
用法
生成游戏
TextWorld通过tw-make
脚本提供了生成简单基于文本游戏的简单方法。例如:
tw-make custom --world-size 5 --nb-objects 10 --quest-length 5 --seed 1234 --output tw_games/custom_game.z8
其中custom
表示我们想使用以下选项自定义游戏:--world-size
控制世界中的房间数量,--nb-objects
控制可以与之交互的对象数量(不包括门),--quest-length
控制获胜所需的最小命令数。完成后,游戏custom_game.z8
将保存在tw_games/
文件夹中。
(终端)玩游戏
要玩游戏,可以使用tw-play
脚本。例如,上一节生成游戏的命令为:
tw-play tw_games/custom_game.z8
注意:仅支持Z-machine游戏 (*.z1至*.z8)和Glulx游戏 (*.ulx)。
要在玩游戏时可视化游戏状态,使用--viewer [端口号]
选项。
tw-play tw_games/custom_game.z8 --viewer
应打开一个新的浏览器标签页,并跟踪您的游戏进度。
(Python + Gym-like API)玩游戏
以下是如何使用Gym-like API从Python内部与基于文本的游戏交互的示例。
import textworld.gym
# Register a text-based game as a new environment.
env_id = textworld.gym.register_game("tw_games/custom_game.z8",
max_episode_steps=50)
env = textworld.gym.make(env_id) # Start the environment.
obs, infos = env.reset() # Start new episode.
env.render()
score, moves, done = 0, 0, False
while not done:
command = input("> ")
obs, score, done, infos = env.step(command)
env.render()
moves += 1
env.close()
print("moves: {}; score: {}".format(moves, score))
注意:要使用没有Gym-like API的TextWorld玩游戏,请参阅Playing text-based games with TextWorld.ipynb
文档
有关TextWorld的更多信息,请参阅文档。
Visual Studio Code
您可以通过textworld-vscode扩展安装,该扩展可以为编辑.twl
和.twg
TextWorld文件启用语法高亮。
笔记本
查看框架提供的笔记本,以了解您可以使用它做什么。您需要Jupyter Notebook来运行它们。您可以使用以下命令安装:
pip install jupyter
引用TextWorld
如果您使用TextWorld,请引用以下BibTex:
@Article{cote18textworld,
author = {Marc-Alexandre C\^ot\'e and
\'Akos K\'ad\'ar and
Xingdi Yuan and
Ben Kybartas and
Tavian Barnes and
Emery Fine and
James Moore and
Ruo Yu Tao and
Matthew Hausknecht and
Layla El Asri and
Mahmoud Adada and
Wendy Tay and
Adam Trischler},
title = {TextWorld: A Learning Environment for Text-based Games},
journal = {CoRR},
volume = {abs/1806.11532},
year = {2018}
}
贡献
本项目欢迎贡献和建议。大多数贡献都需要您同意贡献者许可协议(CLA),声明您有权利,并且实际上确实授予我们使用您贡献的权利。有关详细信息,请访问https://cla.microsoft.com。
当您提交拉取请求时,CLA机器人将自动判断您是否需要提供CLA,并适当装饰PR(例如,标签,评论)。只需遵循机器人提供的说明。您只需在整个使用我们CLA的仓库中做一次。
本项目采用了微软开源行为准则。更多信息请参阅行为准则常见问题解答或通过opencode@microsoft.com发送任何额外问题或评论。
项目详情
textworld-1.6.1.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | daf10eda6a06b8546f1bd340ad430b499d535f3e69c965bce4364c264e1a53df |
|
MD5 | fc956fbcea2298ecf03e97529f8e9447 |
|
BLAKE2b-256 | 76d2ed04df06c6ac4e4c824deb9ba2b6a4b96e0696d88aaca207860a7c5cbf90 |