解析、执行和计算程序表单问题的预期信息增益。

expected-information-gain的Python项目详细描述


问题程序和预期信息增益

这是一个用于解析/执行问题和计算论文“Question Asking as Program Generation”中战舰数据集上定义的问题程序的预期信息增益(eig)的包。

此包提供纯Python版本(慢)和Python /C++混合版本(FAST)。两个版本都有相同的api,但实现不同。

安装

可以使用pip安装此软件包

pip install expected-information-gain

基本用法

下面的示例演示如何在给定的板上执行程序

# define a board using BattleshipHypothesisfromeig.battleshipimportShip,BattleshipHypothesis,Parser,Executorships=[Ship(ship_label=1,topleft=(0,0),size=2,orientation='V'),Ship(ship_label=2,topleft=(1,2),size=2,orientation='V')hypothesis=BattleshipHypothesis(grid_size=3,ships=ships)# the board looks like this# B W W# B W R# W W R# parse and execute the programquestion=Parser.parse("(bottomright (coloredTiles Red))")executor=Executor(question)executor.execute(hypothesis)# (2, 2)# we can also evaluate general arithmic and logical expressions, with whatever hypothesis providedquestion2=Parser.parse("(and (not (< 4 9)) (== (+ 1 3) 4))")executor2=Executor(question)executor.execute(hypothesis)# False

下一个示例演示如何计算部分显示的板上的预期信息增益

# first we need to construct a hypothesis space # We suggest to do this as an initialization step, and use this instance every time# Because this step is time consuming, and may take several seconds to finish.fromeig.battleshipimportBattleshipHypothesisSpacehypotheses=BattleshipHypothesisSpace(grid_size=6,ship_labels=[1,2,3],ship_sizes=[2,3,4],orientations=['V','H'])# suppose we have a program and a partly revealed boardimportnumpyasnpprogram="..."board=np.array([...])# next we can calculate EIG as followsfromeigimportcompute_eig_basicfromeig.battleship.programimportProgramSyntaxErrortry:score=compute_eig_basic(hypotheses,program,board)exceptProgramSyntaxError:# if the program is invalid, a ProgramSyntaxError will be raised# do somethingexceptRuntimeError:# if error happens during execution, a RuntimeError will be raised# do something

高级用法

我们还提供了一些高级接口,当用户需要计算许多 程序在一个给定的板上,它们还允许用户合并更复杂的分布。

# construct the hypothesis spacefromeig.battleshipimportBattleshipHypothesisSpacehypotheses=BattleshipHypothesisSpace(grid_size=6,ship_labels=[1,2,3],ship_sizes=[2,3,4],orientations=['V','H'])# calculate EIG as followsfromeigimportcompute_eig,Bayes,Contextfromeig.battleshipimportParser,Executorfromeig.battleship.programimportProgramSyntaxErrortry:ast=Parser.parse(program)# parse the program into abstract syntax treeexecutor=Executor(ast)# obtain an executor to execute the programprior=EqualSizesDistribution(ship_labels=[1,2,3])# a more cognitive inspired prior distributionbelief=eig.Bayes(hypotheses,prior)# a prior belief given the hypothesis spacecontext=eig.Context(hypotheses,belief)# context stores the posterior beliefcontext.observe(board)# update posterior belief given the boardscore=eig.compute_eig(executor,context)# compute EIG given program and posterior beliefexceptProgramSyntaxError:# if the program is invalid, a ProgramSyntaxError will be raised# do somethingexceptRuntimeError:# if error happens during execution, a RuntimeError will be raised# do something

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Thumbnailator库将图像转换为cmyk   Java反射从目录中的类运行测试   JavaEclipseJDT编译器说方法未定义,但EclipseIDE没有   重构如何重构一行重复的java代码   java Eclipse:使用删除线文本呈现自定义注释   java问题与ArrayList复制数据   java如何在swagger中传递访问令牌?   使用另一个java文件运行java文件时出错   java为什么谷歌云存储生成的上传链接在成功上传后不会失效?   java将我的客户端PC重定向到默认登录页面   java hibernate c3p0配置mysql问题   java和java之间的区别。尼奥。文件文件和java。伊奥。文件   列出java循环并向映射中添加值   java为什么OJ报告这段代码的运行时错误?